# The Terminal in JetBrains IDEs Now Runs on libghostty

> Source: <https://blog.jetbrains.com/platform/2026/10/jetbrains-terminal-now-uses-ghostty/>
> Published: 2026-10-27 09:36:36+00:00

## JetBrains Platform

Plugin and extension development for JetBrains products.

[IntelliJ Platform](https://blog.jetbrains.com/platform/category/intellij-platform/)

[News](https://blog.jetbrains.com/platform/category/news/)

# The Terminal in JetBrains IDEs Now Runs on libghostty

More and more of your terminal work now runs through tools that push the terminal harder than a shell prompt ever did: AI coding agents like Claude Code and Codex, full-screen apps like Neovim and tmux, system monitors and dashboards. These tools lean on modern terminal protocols, the kind today’s best standalone terminals are built on.

Starting with 2026.3, the built-in terminal in JetBrains IDEs speaks that same language. It now runs on [`libghostty`](https://ghostty.org/docs/about#libghostty), the terminal emulation library that powers Ghostty itself.

[Many projects](https://github.com/Uzaaft/awesome-libghostty) already embed `libghostty`, and it’s widely regarded as a reliable, performant library, so we preferred it over the other options we considered.

In our IDEs, `libghostty` replaces JediTerm, the terminal emulator we relied on for many years. TUI apps increasingly depend on modern protocols that JediTerm never supported. That gap felt more like a minor inconvenience, since the experience didn’t quite match other terminals, but it wasn’t disruptive enough to warrant a bug report. Now libghostty takes over parsing and terminal state in our IDEs, while the IDE still handles rendering, and higher-level features and integrations.

Here is what those changes mean in practice.

## Multi-line prompts and keybindings work the way the docs say

With support for the [Kitty keyboard protocol](https://sw.kovidgoyal.net/kitty/keyboard-protocol/), terminal apps can now distinguish among `Enter`, `Shift`+` Enter`, and `Ctrl`+` Enter``modifyOtherKeys`, an older keyboard protocol that Vim uses.

For you, this means `Shift`` Enter` `Ctrl`, `Shift`, or `Alt` with other keys reach the app intact. Terminal-based editors and tools respond the way they should, with no IDE settings to adjust. The old setting that sent `Esc`+` CR` on `Shift`+` Enter` is no longer needed and is ignored.

## Your tools follow your IDE theme

Switching the IDE to *Dark* mode used to leave terminal apps guessing, and you ended up with dark text on a dark background or a bright color scheme inside a dark IDE, unless you configured each tool by hand.

Now the terminal answers the dark/light query (`CSI ? 996 n`) from the current IDE theme and sends a notification through mode 2031 when you switch. Claude Code, OpenCode, Pi, Neovim, and tmux subscribe to these theme-change notifications, so most of them switch automatically with the IDE. 

The terminal also answers OSC 4 palette queries and the Kitty OSC 21 color query, in addition to the OSC 10/11 queries that JediTerm already handled. OpenCode and Pi read the palette, and Junie CLI asks whether the terminal is dark or light. Programs can now set the extended palette colors 16 to 255 with OSC 4, while colors 0 to 15 stay under the control of the IDE theme.

## Terminal applications with rich output now draw better

AI agents, system monitors, file managers, and dashboards are only as good as the terminal that renders them. The new engine handles almost 50 control sequences that JediTerm either ignored or misread. A few you may have hit:

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

Also supported are left/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 respected now; before, the cursor always blinked. There’s much more – to see the full list of supported escape-sequences, please refer to [this table](https://youtrack.jetbrains.com/issue/IJPL-218849/Consider-using-Libghostty-for-terminal#focus=Comments-27-14563824.0-0).

In summation: lines, borders, and separators no longer come out broken, colored output no longer shows stray colons or the wrong colors, and leftover invisible codes no longer show up as garbage text.

## And this is just the start

The `libghostty` library already parses many sequences that the IDE doesn’t act on yet: OSC 52 clipboard, desktop notifications (OSC 9/777), ConEmu progress bars, Kitty graphics, and styled and colored underlines. Parsing is no longer the bottleneck. Only the IDE side is left, so expect these to arrive faster than they did with JediTerm.

In practice, that groundwork covers features you may know from standalone terminals: copying to your clipboard from a program running on a remote server, getting notified when the app in the terminal finishes a task (for example, Claude finishes processing a prompt and is waiting on you), seeing a progress bar for long tasks, and showing images directly in the terminal.

## Try it now, enabled by default in 2026.3

The `libghostty`-based engine is already on by default in the reworked terminal in the 2026.3 EAP builds of your IDEs, and it will stay that way through the Beta and Release Candidate builds and in the stable release.

If something goes wrong, you can switch back to JediTerm: go to *Help | Find Action*, open *Registry…*, and turn off `terminal.use.ghostty.emulator`. We’d appreciate it if you also let us know what happened by leaving a comment on [IJPL-218849](https://youtrack.jetbrains.com/issue/IJPL-218849) or by filing a bug report. 

## Thank you, Ghostty

This story began with the Ghostty team, who approached us at a conference last year and asked whether we would consider using their emulator at the IntelliJ IDEA Conf. Since then, they stayed engaged through every discussion that followed. Many thanks to Mitchell Hashimoto, Tim Culverhouse, and all the Ghostty contributors. You built `libghostty` as a reusable library and kept improving it while we integrated it. Over the past months, `libghostty` also gained features that JediTerm users relied on, which made the switch possible. We’re glad to build on your work, and we look forward to contributing back.

#### Subscribe to JetBrains Platform updates
