← AUTOMATER NEWSROOM

JetBrains IDEs Swap Their Built-In Terminal to libghostty in 2026.3: Shift+Enter, Modifier Keys and Theme Sync Now Work for Claude Code and Codex

Starting with 2026.3, JetBrains IDEs use libghostty instead of JediTerm for terminal emulation. Agent CLIs get the Kitty keyboard protocol, theme notifications and almost 50 newly handled control sequences. Here is what changes and how to check it.

Flow diagram: agent CLIs (Claude Code, Codex, Pi) and TUI apps (Neovim, tmux) send output to libghostty, which handles parsing and terminal state in place of JediTerm. libghostty passes it to the JetBrains IDE, which handles rendering and integrations. Three panels below list the key, theme and rendering improvements.Flow diagram: agent CLIs (Claude Code, Codex, Pi) and TUI apps (Neovim, tmux) send output to libghostty, which handles parsing and terminal state in place of JediTerm. libghostty passes it to the JetBrains IDE, which handles rendering and integrations. Three panels below list the key, theme and rendering improvements.
In 2026.3, libghostty takes over terminal parsing and state in JetBrains IDEs while the IDE keeps rendering. Original illustration based on the JetBrains Platform blog.

If you run Claude Code, Codex or another terminal agent inside IntelliJ IDEA, PyCharm or WebStorm, the terminal underneath it is changing. JetBrains announced on its Platform blog that, starting with 2026.3, the built-in terminal runs on libghostty, the emulation library behind the Ghostty terminal. It replaces JediTerm, the emulator JetBrains used for many years.

This matters for agent users because the blog post names them directly. JetBrains says AI coding agents like Claude Code and Codex, along with Neovim and tmux, “push the terminal harder than a shell prompt ever did” and rely on modern protocols that JediTerm never supported. The fixes it lists cover the problems those tools hit most: multi-line prompts, modifier keys, theme detection and broken rich output.

JetBrains Platform blog post titled The Terminal in JetBrains IDEs Now Runs on libghostty.
JetBrains Platform blog: the announcement that the built-in terminal in JetBrains IDEs now runs on libghostty, starting with 2026.3. · Original source

What actually changed

JetBrains describes a split of responsibilities. libghostty now handles parsing and terminal state, while the IDE still handles rendering and the higher-level features and integrations. The Ghostty repository, which JetBrains also hosts a copy of on GitHub, describes libghostty as a cross-platform, zero-dependency C and Zig library for building terminal emulators. Its first component, libghostty-vt, covers exactly that job: parsing terminal sequences and keeping terminal state.

The changes that matter in practice, as JetBrains lists them:

Area Before (JediTerm) 2026.3 (libghostty)
Shift+Enter in an agent prompt Could send a half-written message Inserts a new line, via the Kitty keyboard protocol
Ctrl, Shift or Alt combinations Could arrive mangled Reach the app intact; xterm modifyOtherKeys is also supported
Dark or light theme Tools had to guess or be set up by hand Terminal answers the dark/light query (CSI ? 996 n) and sends mode 2031 change notifications
Palette queries OSC 10/11 only Adds OSC 4 and Kitty OSC 21
Rich output Missing characters, stray colons, garbage text Almost 50 more control sequences handled

The keyboard change is the one most agent users will notice first. With the Kitty keyboard protocol, apps can tell Enter, Shift+Enter and Ctrl+Enter apart, and can ask for key-release and repeat events. JetBrains says Claude Code, Codex, Pi, the fish shell and Neovim all use this protocol.

On theme sync, the post says Claude Code, OpenCode, Pi, Neovim and tmux subscribe to theme-change notifications, so most of them should switch with the IDE when you toggle dark mode. It also says Junie CLI asks whether the terminal is dark or light, and OpenCode and Pi read the palette. Programs can now set the extended palette colors 16 to 255 with OSC 4, while colors 0 to 15 stay tied to the IDE theme.

The rendering bugs it fixes

JetBrains gives three concrete examples of what JediTerm got wrong:

  • REP (CSI Ps b): ncurses uses it for runs of seven or more identical characters, so some lines rendered with characters missing.
  • Colon-separated SGR colors (38:2::r:g:b): JediTerm printed the colons and applied the digits to the wrong attribute.
  • Unknown APC, SOS and PM strings: JediTerm printed them as text. They are now dropped silently.

The post also lists left and right margins (DECSLRM), protected areas, tab-stop control, insert mode, XTSAVE/XTRESTORE, the Kitty CSI 22 J scroll-and-clear and X10 mouse reporting. Cursor blink mode (?12) is now respected. JetBrains’ summary is that borders and separators no longer break, colored output no longer shows stray colons, and invisible codes no longer appear as junk. That is the kind of damage agent TUIs with boxes, diffs and status lines tend to take.

How to check it yourself

According to JetBrains, the libghostty engine is on by default in the reworked terminal in 2026.3 EAP builds and will stay on through Beta, Release Candidate and the stable release. Stable 2026.3 is not out yet, so this means running a pre-release IDE build for now.

Once you have a 2026.3 pre-release build, open the terminal and run a few checks:

# REP: should print seven a characters (one a, then repeated six times)
printf 'a\033[6b\n'

# Colon-form truecolor SGR: should print orange text with no visible colons
printf '\033[38:2::255:140:0mcolon truecolor\033[0m\n'

Then start your agent in the same terminal. In Claude Code, type part of a prompt, press Shift+Enter and confirm you get a new line rather than a submitted message. Switch the IDE between light and dark themes while the session is open and check whether the agent’s colors follow. Our Claude Code keyboard shortcuts guide covers the bindings worth testing.

One config detail to look at: if you or your team turned on the old IDE setting that sent Esc+CR on Shift+Enter as a workaround, JetBrains says it “is no longer needed and is ignored.” The setting will not break anything, but anyone documenting setup should drop it from their instructions so new machines don’t depend on it.

If something breaks

This is still a pre-release change. JetBrains gives a way back: go to Help | Find Action, open Registry…, and turn off terminal.use.ghostty.emulator to return to JediTerm. JetBrains asks people who do this to report what went wrong on IJPL-218849 or in a bug report. If a team is rolling out 2026.3 pre-releases to agent users, write down that registry key so people can recover without waiting for a fix.

Where this fits with the Claude Code plugin

The terminal change is separate from editor integration. Anthropic’s Claude Code overview describes a plugin for IntelliJ IDEA, PyCharm, WebStorm and other JetBrains IDEs that adds interactive diff viewing and shares your selection as context. The plugin requires the Claude Code CLI to be installed separately. The CLI still runs in a terminal, and in a JetBrains IDE that is often the built-in one. libghostty improves that layer. If you are choosing between an editor extension and the plain CLI elsewhere, our Claude Code VS Code extension vs terminal CLI comparison walks through the trade-offs.

What comes next

JetBrains says libghostty already parses several sequences the IDE does not act on yet: OSC 52 clipboard, desktop notifications (OSC 9/777), ConEmu progress bars, Kitty graphics, and styled and colored underlines. The blog gives an agent example: a notification when Claude finishes processing a prompt and is waiting on you. That is groundwork, not a shipped feature. JetBrains only says parsing is no longer the bottleneck and these features should arrive faster than they would have with JediTerm.

The Ghostty README adds a caveat for anyone building on the library: libghostty has not been tagged with a version and its API signatures are still changing, even though the functionality is stable. For IDE users that is JetBrains’ integration problem, not theirs. It does explain why the rollout runs through EAP and Beta before the stable release.

Sources

  1. The Terminal in JetBrains IDEs Now Runs on libghostty - The JetBrains Blog
  2. GitHub - JetBrains/ghostty: 👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration. · GitHub
  3. Overview - Claude Code Docs