BlogTerminals and tmux

What is the best terminal for Claude Code on Mac?

For most Mac users, Ghostty or iTerm2. Both get Claude Code's desktop notifications without setup, both handle Shift+Enter for a newline, and both have native tabs and splits. Choose iTerm2 if you rely on tmux or want agent-team split panes; choose Ghostty for a fast, native terminal with little to configure. Claude Code works in any terminal, so this is about comfort, not compatibility.

What matters for Claude Code

Claude Code itself runs the same everywhere. The terminal decides four things:

  1. Shift+Enter for a newline in the prompt.
  2. Desktop notifications when Claude finishes or waits on you.
  3. Tabs and splits to run several sessions.
  4. Option key shortcuts such as Option+Enter or Option+P.

Ctrl+J, or \ then Enter, adds a newline in every terminal if Shift+Enter doesn't.

How the common Mac terminals compare (as of October 2026)

Terminal Shift+Enter Default desktop notification Notes
Ghostty works yes native macOS tabs and splits, Metal rendering
iTerm2 works yes; enable its alert forwarding if none appear split panes, tmux -CC integration, agent-team split panes
Kitty works yes
WezTerm works no, use bell or hook
Warp works no, use bell or hook
Apple Terminal works bell only when its audible bell is off Option as Meta needs a setting
VS Code terminal run /terminal-setup once no, use bell or hook

Sources: Claude Code's terminal configuration and settings reference.

Without Kanbell: set up your terminal

Ghostty

Ghostty supports multiple windows, each with its own tabs and splits, using native macOS components. Notifications reach the Notification Center without setup. For Option shortcuts, look for its Option-as-Alt setting in the config file.

iTerm2

  1. Notifications: Settings → Profiles → Terminal, check Notification Center Alerts, then Filter Alerts → Send escape sequence-generated alerts.
  2. Option key: Settings → Profiles → Keys → General, set Left and Right Option to Esc+.
  3. Clipboard: running /terminal-setup in iTerm2 enables clipboard access so /copy works. Restart iTerm2 after.
  4. tmux: tmux -CC shows tmux windows as native iTerm2 tabs.

Apple Terminal

Settings → Profiles → Keyboard, check Use Option as Meta Key. Claude Code's first-run terminal setup does this for you and turns off the audible bell. For notifications, set:

{ "preferredNotifChannel": "terminal_bell" }

Any terminal

A Notification hook works everywhere:

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

Agent-focused terminals (as of October 2026)

  • cmux (open source, GPL) is a macOS terminal built on libghostty. Panes get a ring and tabs light up when an agent needs attention, and a sidebar shows branch, PR status and the latest notification. It reads your Ghostty config.
  • Claude Code Desktop isn't a terminal, but its Code tab has an integrated terminal pane next to the chat, diff and file editor.

If you run agent teams

Split-pane mode needs tmux, or iTerm2 with the it2 CLI and its Python API enabled. It isn't supported in Ghostty, VS Code's integrated terminal or Windows Terminal. The default in-process mode works anywhere.

Limits of a general-purpose terminal

A terminal shows you text. With several agents running, what you're missing is not a faster renderer:

  • Which tab is waiting? Notifications fire once, and by default only when you seem to be away.
  • Which project is this tab? Tabs don't group by repository.
  • What did this agent change? You switch to another tab and run git diff.
  • How much usage is left? You run /usage in one of the sessions.

With Kanbell

Kanbell is not a terminal emulator to replace Ghostty or iTerm2 for everything you do. It is a macOS workstation (Apple Silicon) for running coding agents, with real terminals inside:

  • One window per project, with terminals in panes and tabs.
  • Agent state: for Claude Code, working, waiting or done, and whether it waits on a question or a permission. Codex CLI and Gemini CLI show state and permission waits. Other CLI agents run without tracking.
  • Waiting is visible: orange dot in the window, menu bar and overview, a macOS notification, and ⌘⇧J to jump to the next waiting agent.
  • Next to the terminals: git changes, diffs, history and worktrees; a local or GitHub Issues board; Claude Code subscription usage for the session and the week; markdown notes per project.

You can keep your usual terminal for everything else. Kanbell has no account and no Kanbell server.

FAQ

Does Claude Code work in Terminal.app?

Yes. Claude Code works in any terminal. Shift+Enter works in Apple Terminal without setup; Option shortcuts need Use Option as Meta Key, which Claude Code's first-run /terminal-setup turns on.

Why don't I get notifications in Warp or the VS Code terminal?

Claude Code sends desktop notifications by default only in Ghostty, Kitty and iTerm2. Elsewhere, set preferredNotifChannel to terminal_bell or add a Notification hook.

Which terminal supports agent team split panes?

Split-pane mode needs tmux or iTerm2 with the it2 CLI. It isn't supported in Ghostty, VS Code's integrated terminal or Windows Terminal.

How do I make Option+Enter work?

Enable Option as Meta: in Apple Terminal, Settings > Profiles > Keyboard; in iTerm2, set the Option keys to Esc+ under Settings > Profiles > Keys > General.