Strategy & GuidesFIELD NOTE · 16 MIN

The Best Terminal for Claude Code Knows It's Waiting

Ghostty, iTerm2, kitty, Warp, cmux and tmux compared on what Claude Code needs from a terminal in November 2026: knowing a session waits on you.

AITerm 16 min read

The best terminal for Claude Code in November 2026 is the one that tells you a session is waiting on you. For one session, Ghostty or kitty. For several, iTerm2 3.7.5 or later, which displays the status Claude Code reports since version 2.1.295. Past five sessions, use a workspace built for it.

Updated November 4, 2026 · by the AITerm team

28 days

from the OSC 7501 proposal (October 6) to a second Mac terminal showing it in a stable release (kitty 0.50.0, November 3)

2 of 7

tools in our table that display Claude Code's session status in a stable release today: iTerm2 and kitty. Ghostty 1.4 parses it and ignores it

12,902

Homebrew installs of cmux, a terminal built for watching agents, in the 90 days to November 4. Kitty got 10,246

Key takeaways

  • Speed stopped being the question. Every terminal on this list renders Claude Code fine. What differs is whether it notices a session waiting for you.
  • iTerm2 3.7.5 (October 14) shows Claude Code's state per tab and hosts agent teams in split panes. It is the best plain terminal for several sessions right now.
  • Ghostty 1.4 is still our pick for a single session. Its app ignores the new status protocol for now.
  • tmux on a local Mac hides more than it adds: notifications, Shift+Enter and the status protocol all break without extra config.
  • Past five or six sessions, a sidebar beats tabs. cmux and AITerm both do this, differently.
Tool Desktop alert Status per session Agent teams in split panes Price
iTerm2 3.7.7After enabling alertsYes, OSC 7501 since 3.7.5Yes, with the it2 CLIFree, GPLv2
kitty 0.50.0Yes, no setupYes, in the tab bar since Nov 3No, in-process onlyFree, GPLv3
Ghostty 1.4Yes, no setupParsed, not shownNo, in-process onlyFree, MIT
WarpWith its Claude Code pluginTab bar, via the pluginNo, in-process onlyFree terminal, AI plans paid
tmux (in any terminal)Only with passthroughDroppedYesFree
cmuxYes, plus rings on the paneSidebar, from hooks and OSC 9/99/777Native panes, per cmuxFree, GPL
AITermYes, one per waiting episodeSidebar, from Claude Code hooksNo, one worktree per agent instead9.99 euros/mo after 7 days

Desktop alert and split-pane columns follow Claude Code's own terminal and agent teams docs. Status column from each project's release notes, read November 4, 2026. Versions from Homebrew the same day. Yes, AITerm is ours: the table says where it loses too.

What is the best terminal for Claude Code?

It depends on how many sessions you keep open, and that is the honest answer, not a dodge. One session: Ghostty or kitty, done in five minutes. Two to five: iTerm2. More than that: a workspace with a sidebar, because a row of six identical tabs is hard to read at a glance.

The best terminal for Claude Code in 2026 depends on session count. For one session, Ghostty 1.4 or kitty 0.50 send Claude Code's desktop notification with no setup. For several, iTerm2 3.7.5 or later displays each session's status through the OSC 7501 protocol and supports agent teams in split panes. For six or more, AITerm, a native macOS workspace, shows a live status for every Claude Code and Codex session in one sidebar.

Here's the thing. Most "best terminal for Claude Code" pages still rank terminals on startup time and GPU rendering. That made sense in June. Claude Code prints a few hundred lines a minute, and any terminal from this decade keeps up with that. Rendering is a solved problem for this workload.

What is not solved: you start a refactor in one tab, switch to email, and twenty minutes later find out it stopped at minute two to ask whether it may run npm install. That lost time is the real cost of the wrong terminal. So we ranked on it.

The protocol that changed the ranking in October

On October 6, Mitchell Hashimoto (Ghostty's author) proposed OSC 7501, the Program Status Protocol. A program writes one escape sequence to say it is idle, working, done, blocked or in error, and the terminal decides how to show it. His post names the use case directly: people now run many long agents, and each one "works for a while and then stops to ask for permission, ask a question, or report it's done."

Turns out the ecosystem moved fast. Claude Code shipped support two days later. Then the terminals followed, one at a time.

OSC 7501, FROM PROPOSAL TO YOUR TAB BAR (2026) Oct 6 proposed Oct 8 Claude Code 2.1.295 Oct 14 iTerm2 3.7.5 shows it Oct 27 Ghostty 1.4 parses, hides Nov 3 kitty 0.50.0 shows it Spacing is proportional to days. Orange = supported in the library, not in the app.
Sources: mitchellh.com (October 6, 2026), Classmethod on Claude Code 2.1.295 (October 8), iTerm2 changelog (3.7.5, October 14), Ghostty 1.4.0 release notes (October 27), kitty changelog (0.50.0, November 3).

Nothing to turn on in Claude Code. At startup it asks the terminal whether it speaks the protocol, and only reports state if the terminal answers. You need Claude Code 2.1.295 or later, and three things silently disable it, per the official docs:

01

Running inside tmux

Claude Code asks tmux, not your terminal. tmux does not answer, and allow-passthrough does not help here.

02

Background sessions

A session started with claude --bg reports to agent view, not to your terminal, even while attached.

03

A title override

CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 also turns status reporting off. Unset it.

Which terminals show Claude Code's status today?

Two stable Mac terminals, as of November 4: iTerm2 since 3.7.5 and kitty since 0.50.0. Ghostty 1.4 parses the sequence in libghostty, and its release notes say plainly that the app ignores it for now. Warp and cmux get the same information another way, through Claude Code hooks and older notification sequences.

We checked one more thing before trusting any of this. A mid-October survey by Stackness listed kitty support as "on master only" and Ghostty's app as not displaying it. Both claims were right at the time. Kitty then shipped it in a stable release on November 3, less than three weeks later. A September roundup is already stale on this topic.

# 1. are you on a Claude Code that reports status?
claude --version          # needs 2.1.295 or later

# 2. kitty 0.50: put the status in the tab title (kitty.conf)
tab_title_template "{tab.program_status} {title}"

In practice, the status is the difference between glancing at six tabs and reading six tabs. A dot that turns yellow when a session blocks on a permission prompt does not sound like much. Over a working day it is most of the value.

Ghostty, fast and still half-blind

Ghostty is our pick for a single Claude Code session, and it is the terminal Mac developers install most: 76,739 Homebrew installs in the 90 days to November 4, against 48,038 for iTerm2. Shift+Enter works out of the box. Claude Code's desktop notification lands in Notification Center with no setup, even over SSH.

Two gaps matter once you add sessions. The app does not show OSC 7501 yet, so every tab looks the same whether Claude is working or stuck. And Claude Code's docs list Ghostty as unsupported for agent teams in split panes, which means teammates stay in-process, inside one terminal, behind the arrow keys.

Tip. On macOS, Claude Code's Option shortcuts (Option+Enter for a newline, Option+P to switch models) do nothing until your terminal sends Option as Alt. In Ghostty, that is one line in the config: macos-option-as-alt = true.

Honestly, if you run one session at a time, stop reading here. Install Ghostty, check that notifications reach you, and get back to work. Our best terminal app for Mac roundup has the general-purpose comparison and the Homebrew numbers behind it.

iTerm2 is the comeback nobody planned

A year ago, the advice for Claude Code was "leave iTerm2 for something faster." That advice is now wrong for anyone running parallel sessions. iTerm2 3.7, released September 10, added a Session Status feature that shows Claude Code's state on each tab with a colored dot. Then 3.7.5, on October 14, added OSC 7501, "done" and "error" states, one notification per task that needs you, and Codex CLI tracking.

It is also the only terminal emulator, besides tmux, that Claude Code's docs support for agent teams in split panes. Every teammate gets its own pane, and you click into one to talk to it. Here is the setup Claude Code's docs describe:

# iTerm2 → Settings → General → Magic → Enable Python API
# then install the it2 CLI (github.com/mkusaka/it2)

# ~/.claude/settings.json
{
  "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" },
  "teammateMode": "iterm2"
}

And yes, the notifications need one more step. iTerm2 shows Claude Code's alerts only after you check "Notification Center Alerts" under Settings, Profiles, Terminal, then enable "Send escape sequence-generated alerts" under Filter Alerts. Skip it and you get the dot but no banner.

Our take. iTerm2 is now the best plain terminal for running several Claude Code sessions on a Mac, and it is free. It is not the fastest. For this job, a correct status beats a faster frame. We planned this article under the title "The Best Terminal for Claude Code Is Not iTerm2". The October changelog killed that title.

Do you need tmux for Claude Code?

Not on a local Mac, and we will go further: tmux is the wrong default there in 2026. The consensus setup you will read everywhere, Ghostty plus tmux, quietly turns off the three things that make a terminal good for agents. tmux still earns its place on remote boxes, where a session must survive a dropped connection.

Look at what breaks by default, straight from Claude Code's terminal docs. Shift+Enter submits instead of adding a newline. Desktop notifications never reach the outer terminal. And the OSC 7501 status is gone entirely, because Claude Code queries tmux, which does not answer. If you keep tmux, this is the minimum:

# ~/.tmux.conf
set -g allow-passthrough on
set -g focus-events on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'

# apply to the running server
tmux source-file ~/.tmux.conf

That fixes notifications and Shift+Enter. It does not bring the status back. You are probably thinking agent teams need tmux anyway. On iTerm2 they don't, and in-process mode works in any terminal. The one case where tmux wins locally: you want split-pane teammates and refuse to use iTerm2.

Warp and kitty, two different bets

Kitty bet on the protocol. Version 0.50.0, released November 3, displays OSC 7501 through a new tab.program_status field in the tab title. It already sent Claude Code's desktop notification with no setup. If you live in a keyboard-driven, config-file terminal, kitty is now a real option for parallel sessions, minus split-pane agent teams.

Warp bet on its own plugin. Claude Code shows no desktop notification in Warp by default, per Anthropic's docs. Warp's answer is a Claude Code plugin that adds alerts for approvals and errors, plus status indicators in the tab bar:

# from your shell (requires jq: brew install jq)
claude plugin marketplace add warpdotdev/claude-code-warp
claude plugin install warp@claude-code-warp
# then restart Claude Code, or run /reload-plugins

It works. The trade-off is that Warp's terminal is the free part of a product whose paid plans sell agent usage, and Claude Code sessions do not show up in Warp's own agent management panel. If you already pay Anthropic for Claude Code, Warp mostly adds a second AI you will not use.

The VS Code terminal is the worst seat in the house

Plenty of people run Claude Code in the editor's integrated terminal because it is already open. It is the setup with the most friction on this page. Shift+Enter needs /terminal-setup, which also turns the integrated terminal's GPU acceleration off to prevent garbled text. No desktop notification arrives when Claude finishes. And Anthropic's docs warn that the VS Code terminal can drop characters from very large pastes.

So, keep the editor for reading diffs and run the agent in a real terminal next to it. If you must stay in the editor, add a Notification hook so at least something tells you Claude is done:

// ~/.claude/settings.json
{
  "hooks": {
    "Notification": [
      { "hooks": [{ "type": "command",
                    "command": "afplay /System/Library/Sounds/Glass.aiff" }] }
    ]
  }
}

The same hook rescues Apple Terminal and Warp without its plugin. It is a sound, not a status, and it will not tell you which of four sessions made it.

What is the best terminal to run multiple Claude Code sessions at once?

Up to five sessions, iTerm2 3.7.5 or later. Beyond that, tabs with colored dots stop being readable, and you want every session in one list with its state and its branch. Three tools do this today: Claude Code's own agent view, cmux, and AITerm.

To run many Claude Code sessions at once, give each one its own git worktree and watch them from a single list. Claude Code's built-in agent view (claude agents) groups background sessions by state. cmux, a free libghostty-based terminal, adds notification rings and a sidebar. AITerm, a native macOS workspace from the AITerm team, shows a live status for every Claude Code, Codex, Gemini CLI and OpenCode session and keeps one isolated worktree per agent.

FREE, BUILT IN

Agent view

claude agents lists background sessions as needs input, working, completed or failed. Research preview, Claude Code only, and each session uses your quota on its own.

FREE, OPEN SOURCE

cmux

Built on libghostty, so Ghostty-grade rendering. Vertical tabs with branch and ports, rings on the pane that needs you, session restore for Claude Code, Codex and OpenCode.

OURS, PAID

AITerm

A native workspace: status per session in a sidebar, isolated worktrees, Claude Code and Codex quota gauges. 9.99 euros a month after a 7-day trial with no card.

Developers are voting with their installs. cmux reached 12,902 Homebrew installs in the 90 days to November 4, ahead of kitty at 10,246, a long-established terminal. The best independent write-up we found, Alex Dunlop's, lands on a similar Mac split (cmux for many sessions, Ghostty for one or two) while noting he only tested cmux hands-on. Fair enough. Reading docs is how most of these comparisons get made, ours included for Warp.

How AITerm gets its status is worth explaining, because it is the part we got wrong first. Since August 18, every Claude Code pane we launch gets five hooks injected through --settings (prompt submitted, tool start, tool end, notification, stop). Each one writes a single word to a per-session file. The sidebar folds that stream into a state, so "waiting for you" is something the CLI asserts, not something we guess.

Our mistake, twice. Until August 10, a Claude Code session blocked on a question showed as "working" in our own sidebar, because the CLI writes its message to the transcript only after you answer. The fix read the dialog on screen, checked on 150 captured frames of Claude Code 2.1.226. Then on September 27 we found four code paths that flipped a waiting session back to "working" with nothing changed. One was any keystroke counting as an answer. A status that lies is worse than no status.

One more admission, since you would find it anyway. As of today, AITerm does not read OSC 7501. It gets the same facts from Claude Code's hooks, which also work for older CLI versions, but a terminal that speaks the protocol natively is simpler. If you only run Claude Code and stay under five sessions, iTerm2 gives you most of this for free. AITerm earns its price when you mix Claude Code with Codex or Gemini CLI and want worktrees, quotas and statuses in one window. The method side, worktrees and merge order, lives in our guide to running multiple AI coding agents.

Our setup, in four steps

This is what we would hand a new teammate today. Ten minutes, nothing exotic.

01

Update Claude Code

claude update, then check for 2.1.295 or later. Older versions never report status.

02

Pick by session count

One: Ghostty or kitty. Two to five: iTerm2 3.7.7. Six or more, or mixed agents: a sidebar workspace.

03

Prove the alert works

Ask Claude for something that needs a permission, switch apps, wait. No banner means a setting is missing.

04

One worktree per session

claude --worktree api-refactor. Two agents in one checkout will overwrite each other, whatever the terminal.

The short version: the terminal matters less than whether it tells you the truth about each session. Test that first, before themes and fonts. And if you are still choosing the agent itself, our Cursor vs Claude Code comparison and the Claude Code agent teams guide come before any of this. If you try this setup and something breaks, tell us: hello@aiterm.app.

Going further

Sources

  1. Configure your terminal for Claude Code, Claude Code docs, read November 4, 2026: Shift+Enter support by terminal, default notifications (Ghostty, Kitty, iTerm2), OSC 7501 session status and its three blockers, tmux configuration, VS Code paste limits.
  2. Orchestrate teams of Claude Code sessions, Claude Code docs: in-process vs split-pane mode, split panes require tmux or iTerm2 with the it2 CLI, unsupported in Ghostty, Windows Terminal and VS Code.
  3. Manage multiple agents with agent view, Claude Code docs: claude agents, background sessions, states, research preview.
  4. A Terminal Protocol for Program Status (OSC 7501), Mitchell Hashimoto, October 6, 2026.
  5. Claude Code v2.1.294 to v2.1.295 updates, Classmethod, October 9, 2026: OSC 7501 support added in 2.1.295 (October 8).
  6. iTerm2 downloads and changelog, iterm2.com: 3.7.5 (October 14, 2026: OSC 7501, done and error statuses, per-task notifications, Codex CLI tracking, floating panes), 3.7.6 (October 15).
  7. iTerm2 3.7 released with Claude Code integration, AlternativeTo, September 10, 2026: Session Status per tab.
  8. Ghostty 1.4.0 release notes, ghostty.org, October 27, 2026: OSC 7501 parsed in libghostty, ignored by the app for now.
  9. kitty changelog, 0.50.0, November 3, 2026: Program Status Protocol support, tab.program_status in tab titles.
  10. Claude Code in Warp, Warp docs: warp@claude-code-warp plugin, alerts, tab bar status.
  11. cmux, official site: free, GPL, built on libghostty, notifications from OSC 9, 99, 777 and agent hooks.
  12. OSC 7501 program status, Stackness, October 15, 2026: adoption table across terminals and agents.
  13. Best Terminal for Claude Code, Alex Dunlop, updated October 30, 2026.
  14. Homebrew Formulae analytics, formulae.brew.sh, read November 4, 2026: 90-day installs for ghostty, iterm2, cmux and kitty, and current versions.

Frequently asked questions

What is the best terminal for Claude Code?

For one session, Ghostty or kitty: both are fast, free, and send Claude Code's desktop notification with no setup. For several sessions on a Mac, iTerm2 3.7.5 or later, because it shows each session's status (working, waiting, done) through the OSC 7501 protocol Claude Code has spoken since version 2.1.295, and it supports agent teams in split panes. Past five or six sessions, a dedicated workspace such as cmux or AITerm is easier to read.

What is the best terminal for Claude Code on Mac?

iTerm2 3.7.7 if you run more than one session, Ghostty 1.4 if you run one. iTerm2 shows Claude Code's state on each tab and can host agent teams in native split panes with the it2 CLI. Ghostty is faster and needs no setup for notifications, but as of November 4, 2026 its app ignores the session status that Claude Code reports.

Do you need tmux for Claude Code?

Not on a local Mac. tmux helps when a session must survive a dropped SSH connection or a closed lid. Locally it costs you things: by default it swallows Claude Code's desktop notifications and breaks Shift+Enter, and it drops the OSC 7501 status entirely, according to Claude Code's terminal configuration docs. If you keep it, add allow-passthrough and extended-keys to your tmux.conf.

Is Claude Code better in the terminal or in VS Code?

In a real terminal. The VS Code integrated terminal needs /terminal-setup for Shift+Enter, has GPU acceleration turned off by that same command to avoid garbled text, gets no desktop notification from Claude Code, and can drop characters from very large pastes. Run Claude Code in Ghostty, iTerm2 or kitty next to the editor and keep VS Code for reading diffs.

Why don't I get a notification when Claude Code finishes?

It depends on the terminal. Ghostty and kitty show it with no setup. iTerm2 needs Notification Center Alerts and escape sequence alerts turned on in its profile settings. Apple Terminal, Warp without its plugin and the VS Code terminal show nothing. Inside tmux you also need set -g allow-passthrough on. As a fallback, a Notification hook in ~/.claude/settings.json can play a sound in any terminal.

Do Claude Code agent teams work in Ghostty?

Only in in-process mode, where every teammate lives inside one terminal and you switch with the arrow keys. Split-pane mode, with one pane per teammate, requires tmux or iTerm2 with the it2 CLI and its Python API enabled. Claude Code's docs list Ghostty, Windows Terminal and the VS Code terminal as unsupported for split panes.

How do I see which Claude Code session needs my input?

Three ways. Run claude agents to open agent view, which groups your background sessions by state (needs input, working, completed). Use a terminal that displays OSC 7501, such as iTerm2 3.7.5 or kitty 0.50.0, to get a status per tab. Or use a workspace like cmux or AITerm, which show a status for every pane in a sidebar.

Related articles