Independent buyer guide

Best Terminal for Claude Code on Mac (2026)

Claude Code runs in any terminal. The good ones get newlines, notifications, and many parallel sessions right without extra work.

Last updated · By

For most Mac developers, Ghostty is the best terminal for Claude Code: it is free and native, Shift+Enter inserts a newline without setup, and Claude Code sends it desktop notifications by default, which Anthropic documents for only Ghostty, Kitty, and iTerm2. If you run several Claude Code sessions at once, Agentastic (Ghostty-based terminals with a git worktree per agent) or cmux (an agent-focused terminal built on libghostty) does the juggling for you. iTerm2 remains the pick for tmux -CC on remote machines, and Warp for agent-aware features that also run on Linux and Windows.

Claude Code works in any terminal, so "best" here means the fewest workarounds for the things Claude Code actually exercises: multi-line prompts, alerts when a session needs you, smooth rendering of long transcripts, and keeping several sessions straight.

The short list#

#TerminalBest forShift+Enter newlineClaude Code alertsPlatformsLicense and price
1GhosttyOne to a few sessions, speed, zero fussWorks out of the boxBuilt-in desktop notificationsmacOS, LinuxFree, MIT
2AgentasticMany parallel sessions, each in its own worktreeSends a newlineInbox, pane rings, and macOS alerts from Claude hooksmacOS 14+Free, closed source
3cmuxAn agent-focused terminal without an IDENot listed by AnthropicPane rings, badges, and macOS alerts via OSC or hooksmacOSFree, GPL-3.0-or-later
4WarpAgent-aware UI on Mac, Linux, and WindowsWorks out of the boxThrough Warp's Claude Code pluginmacOS, Linux, WindowsFree tier; client AGPL-3.0
5iTerm2tmux -CC and deep customizationWorks out of the boxBuilt-in desktop notificationsmacOS 13+Free, GPL-2.0
6KittyKeyboard-driven, scriptable setupsWorks out of the boxBuilt-in desktop notificationsmacOS, Linux, BSDsFree, GPL-3.0
7WezTermCross-platform with a built-in multiplexerWorks out of the boxTerminal bell or a hookmacOS, Linux, Windows, BSDsFree, MIT
8Terminal.appNothing to installWorks out of the boxTerminal bell or a hookmacOSIncluded with macOS
9tmuxSessions that survive disconnectsNeeds extended-keysNeeds allow-passthroughmacOS, Linux, BSDsFree, ISC
10ZellijA friendlier multiplexerNot listed by AnthropicNot listed by AnthropicmacOS, Linux, WindowsFree, MIT

The Shift+Enter and alerts columns come from Anthropic's terminal configuration guide, except for Agentastic, cmux, and Warp, where they come from each product's own documentation.

How we ranked them#

We reviewed each tool against its first-party documentation and Anthropic's Claude Code docs on October 5, 2026. We did not run benchmarks, so nothing below claims one terminal is faster than another. The criteria:

  1. Input. Does Shift+Enter add a newline without configuration, and do Option-key shortcuts work?
  2. Alerts. Does Claude Code's built-in desktop notification reach you when a session finishes or asks for permission, locally and over SSH?
  3. Rendering. Claude Code redraws constantly; Anthropic says its flicker-free fullscreen mode helps most in the VS Code terminal, tmux, and iTerm2.
  4. Many sessions. Beyond tabs and splits: status per session, alerts that route you to the right pane, and isolation between sessions.
  5. Persistence, platforms, and price. Whether sessions survive a closed window or a dropped connection, where the tool runs, and what it costs.

1. Ghostty: best overall terminal for Claude Code#

Ghostty is a free, MIT-licensed terminal with a native GUI on each platform: Swift and AppKit on macOS, GTK4 on Linux, sharing a core library called libghostty. It renders with Metal on macOS, uses native tabs and splits, ships hundreds of themes, and adds Mac touches such as a drop-down Quick Terminal, AppleScript automation, and secure keyboard entry for password prompts.

For Claude Code specifically, Ghostty needs almost no setup. Shift+Enter works out of the box, Claude Code sends desktop notifications to Ghostty by default, and those notifications reach your Mac even when Claude runs on a remote host over SSH. The exception is Option-key shortcuts, which need Ghostty's Option-as-Alt setting. Ghostty also implements the kitty keyboard protocol and synchronized rendering, both of which Ghostty's feature list calls out for terminal app developers.

Where it falls short: Ghostty is a terminal, not an agent manager. It does not know which tab holds a waiting Claude session, it does not create worktrees, and sessions end with their window unless you run them inside tmux. Windows support is planned but not available.

Choose it if you run one to a few sessions and want the cleanest out-of-the-box experience. It is also the engine underneath the next two picks.

2. Agentastic: best for many Claude Code sessions in parallel#

Agentastic is a native macOS multi-agent workspace whose terminals use Ghostty by default on supported systems, with WezTerm, xterm.js, and SwiftTerm as alternative backends. The difference from a plain terminal is structure: every agent gets its own git worktree and its own set of terminal tabs, so switching to an agent switches to its terminals, scrollback, and processes.

What that means for Claude Code:

  • Alerts without configuration. Claude's lifecycle hooks (permission requests, notifications, stop events) feed a durable attention inbox: a colored ring on the pane, a dot on the tab, and a macOS notification while the app is in the background. Shift-Command-U jumps to the next session that needs you, and you do not have to edit ~/.claude/settings.json.
  • A chat view of the same session. Any terminal running Claude Code or Codex can flip to a structured chat view and back without interrupting the agent.
  • Resume what you started by hand. Type claude in any Agentastic terminal and shell integration recognizes it, so the tab's menu offers a Resume action that re-runs claude --resume.
  • tmux as native tabs. Run tmux -CC and each tmux pane becomes a real terminal view in an editor tab, over SSH and inside containers too. Our explainer on how tmux -CC works covers the protocol.
  • Input and output details. Shift+Enter sends a newline, printed file paths and images preview on hover, and Claude Code's voice dictation inherits the app's microphone permission.

The same window also holds diffs, AI code review, an agent-drivable browser, containers, and SSH or cloud execution, for Codex and Gemini as well as Claude.

Where it falls short: Agentastic is a full workspace, which is more than you need for a single session. It runs only on macOS 14 or later and is closed source. It is free; you bring your own Claude subscription.

Choose it if you regularly run three or more agents and want isolation, alerts, and review in one place. For the full workflow, see how to run multiple Claude Code agents in parallel.

3. cmux: best lightweight terminal built for agents#

cmux is a free, open-source macOS terminal written in Swift and AppKit that renders with libghostty and reads your existing Ghostty config. Its sidebar of vertical tabs shows each workspace's git branch, working directory, ports, and latest notification text. When an agent needs input, cmux lights a ring around the pane, adds a badge, and posts a macOS notification, triggered by standard terminal escape sequences or by hooks.

It is also built to be scripted. A CLI and a Unix socket API can create workspaces, split panes, send input, read the screen, and drive a browser pane. cmux restores windows, panes, and agent sessions after a restart, opens workspaces over SSH, attaches to remote tmux sessions (in beta), and shows Claude Code agent-team members as their own panes. An iOS companion is in beta on TestFlight.

Where it falls short: cmux is macOS only for now. It does not create worktrees on its own; its custom commands documentation includes an example that branches a worktree and starts Claude Code and Codex in it, which you adapt yourself. There is no editor or diff review, and early access to its iOS app and cloud VMs is tied to cmux Founder's Edition, which funds development.

Choose it if you want agent awareness while staying in a terminal. We compare the two approaches in Agentastic vs cmux.

4. Warp: best agent-aware terminal on macOS, Linux, and Windows#

Warp describes itself as an agentic development environment that grew out of a terminal. Its client is now open source under AGPL-3.0, with its UI framework under MIT, according to the Warp repository. The free plan includes the terminal and lets you bring your own AI; paid plans add credits for Warp's own agent.

For Claude Code, Warp's third-party agent support detects the CLI and adds a toolbar with a larger input editor (Ctrl-G), inline code review comments you can send to the agent, code attached as context, vertical tabs with agent status, saved tab configurations, and remote control. Shift+Enter works without setup. Desktop alerts for Claude Code come through Warp's plugin rather than Claude Code's built-in notification, which Anthropic says Warp does not receive. Warp offers to install the plugin with one click, or you can install it yourself:

bash
claude plugin marketplace add warpdotdev/claude-code-warp claude plugin install warp@claude-code-warp

Where it falls short: Warp is much more than a terminal. Its own agent, cloud agents, and team features are part of the product, which some developers want and others will switch off; Warp lets you disable its AI features in settings.

Choose it if you work across operating systems or want a GUI around CLI agents without adopting a full workspace. See Agentastic vs Warp for how the two differ.

5. iTerm2: best for tmux -CC and deep customization#

iTerm2 is the long-standing free macOS terminal (GPL-2.0; the current stable release needs macOS 13 or later). It offers split panes, a hotkey window, triggers that react to output, badges, shell integration, and Notification Center alerts.

Its standout feature for Claude Code is tmux integration. Run tmux -CC on a server and tmux windows open as regular iTerm2 windows and tabs; if iTerm2 quits or the SSH connection drops, tmux keeps running, and tmux -CC attach brings everything back. That is a good fit for Claude Code sessions on a remote dev box.

Claude-specific notes from Anthropic's guide: Shift+Enter works without setup, and desktop notifications work by default locally. Over SSH, turn on Settings → Profiles → Terminal → "Notification Center Alerts", then enable "Send escape sequence-generated alerts" under Filter Alerts.

Where it falls short: macOS only, a very large settings surface, and one conflict to know about: Claude Code's fullscreen rendering does not work inside iTerm2's tmux -CC mode, so keep the classic renderer there.

6. Kitty: best keyboard-driven, scriptable terminal#

Kitty is a GPU-based terminal for Linux, macOS, and the BSDs, licensed GPL-3.0. It is scriptable from the shell, extensible with Python "kittens", and supports startup sessions plus programmable tabs, splits, and layouts. Kitty also pioneered the terminal graphics protocol and the comprehensive keyboard handling that other terminals have since adopted.

With Claude Code, Kitty behaves like Ghostty: Shift+Enter works without setup, desktop notifications are on by default, and they forward from SSH sessions without extra configuration. Copy with Cmd+C also works in Claude's fullscreen mode, because Kitty speaks the kitty keyboard protocol.

Where it falls short: configuration lives in kitty.conf, and there is nothing agent-specific. Choose Kitty if you already think in keybindings and want the same terminal on Linux.

7. WezTerm: best cross-platform terminal with a built-in multiplexer#

WezTerm is a GPU-accelerated terminal written in Rust and released under MIT. It runs on Linux, macOS, Windows 10, FreeBSD, and NetBSD, is configured in Lua, and includes a multiplexer that keeps panes, tabs, and windows alive on local and remote hosts. Remote SSH domains need a compatible WezTerm installed on the server.

Shift+Enter works without setup. WezTerm is not among the terminals that receive Claude Code's desktop notification by default, so set the terminal bell or a Notification hook, as shown in the tips below.

Where it falls short: Lua configuration has a learning curve, and there are no agent features. Choose it when one config file should work on every operating system you use.

8. Terminal.app: fine when you cannot install anything#

Apple's Terminal ships with macOS and covers windows, tabs, and profiles. Shift+Enter works without setup. If you accepted Claude Code's first-run terminal prompt, it already enabled "Use Option as Meta Key" for Option shortcuts and turned off the audible bell in your Terminal profile. Notifications need the terminal bell or a hook.

It is fine for trying Claude Code; beyond one or two agents, the options above save time.

Multiplexers: tmux and Zellij#

A multiplexer runs inside your terminal and keeps sessions alive after you close the window or lose a connection. Anthropic's Remote Control guide recommends starting Claude inside tmux or screen on a remote machine for exactly that reason.

9. tmux#

tmux is the standard multiplexer: free under the ISC license, running on macOS, Linux, and the BSDs, with detach and reattach at its core. Out of the box it gets in Claude Code's way: Shift+Enter submits instead of adding a newline, and notifications never reach the outer terminal. The three-line fix is in the setup tips below. Two more details from Anthropic's fullscreen rendering guide: mouse-wheel scrolling in fullscreen mode needs set -g mouse on, and tmux releases through 3.6 do not implement synchronized output, so you may see more flicker than outside tmux.

tmux also pairs well with the GUI options: iTerm2 and Agentastic can both render tmux -CC sessions as native windows or tabs.

10. Zellij#

Zellij is a free, MIT-licensed multiplexer for Linux, macOS, and Windows with floating and stacked panes, layouts defined in KDL files, a session manager, session resurrection that survives reboots, and a built-in web client. Anthropic's guide does not cover Zellij, so test Shift+Enter, Ctrl+J, and alerts in your own setup before relying on them.

Claude Code terminal setup tips#

Everything in this section comes from Anthropic's terminal configuration guide.

Multi-line prompts#

  • Ctrl+J, or typing \ and then Enter, inserts a newline in every terminal with no setup.
  • Shift+Enter works out of the box in Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, and Windows Terminal.
  • In VS Code, Cursor, Zed, and Alacritty before 0.16, run /terminal-setup once. Run it in the host terminal, not inside tmux.
  • Shift+Enter is not available in gnome-terminal or JetBrains IDE terminals; use Ctrl+J there.
  • To swap Enter and Shift+Enter, map chat:newline and chat:submit in Claude Code's keybindings file.

Option-key shortcuts on macOS#

Shortcuts such as Option+P (switch models) need the Option key to act as Meta. In Apple Terminal, check "Use Option as Meta Key" under Settings → Profiles → Keyboard. In iTerm2, set both Option keys to "Esc+". In Ghostty and Kitty, look for the Option-as-Alt setting in the config file.

Notifications when Claude finishes#

Claude Code sends desktop notifications by default only in Ghostty, Kitty, and iTerm2. In other terminals, either ring the terminal bell by adding this to ~/.claude/settings.json:

json
{ "preferredNotifChannel": "terminal_bell" }

or run your own command with a Notification hook, such as playing a system sound on macOS:

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

Hooks run alongside the built-in notification rather than replacing it. If alerts still do not appear, check that the terminal has notification permission in System Settings, and inside tmux, enable passthrough as shown next.

tmux settings for Claude Code#

Add these lines to ~/.tmux.conf, then run tmux source-file ~/.tmux.conf:

bash
set -g allow-passthrough on set -s extended-keys on set -as terminal-features 'xterm*:extkeys'

The first line lets notifications and progress updates through to the outer terminal; the other two let tmux tell Shift+Enter apart from Enter.

Flicker and jumping scrollback#

If the screen flickers or the scroll position jumps while Claude works, switch to fullscreen rendering with /tui fullscreen, or start Claude with CLAUDE_CODE_NO_FLICKER=1 claude. It draws on the alternate screen like vim, keeps memory flat in long conversations, and adds mouse support. Skip it inside iTerm2's tmux -CC mode, where it does not work correctly.

Which terminal should you pick?#

Your situationPick
One or two sessions, want speed and no setupGhostty
Three or more sessions, each in its own worktree, with reviewAgentastic
Many sessions, terminal only, scriptablecmux
You also work on Linux or Windows and want agent-aware UIWarp
Claude Code on remote servers over SSHiTerm2 with tmux -CC, or any terminal plus tmux
Keyboard-driven setup shared with LinuxKitty or WezTerm
A locked-down Mac where you cannot install appsTerminal.app
Sessions that must survive disconnectstmux or Zellij inside any of the above

Still choosing between a terminal and Anthropic's own GUI? Read Claude Code Desktop vs CLI; the Desktop app's Code tab needs no terminal at all.

Sources#

First-party documentation, reviewed October 5, 2026:

Continue the research:

Frequently asked questions#

What is the best terminal for Claude Code on Mac?#

Ghostty is the best general choice. It is free, native, and GPU-accelerated, supports Shift+Enter without setup, and receives Claude Code's desktop notifications by default. For many parallel sessions, Agentastic and cmux add per-session status and alerts on top of Ghostty-based terminals.

How do I add a new line in Claude Code without sending the message?#

Press Ctrl+J, or type a backslash and then press Enter; both work in every terminal. Shift+Enter also works without setup in Ghostty, Kitty, iTerm2, WezTerm, Warp, and Apple Terminal, and running /terminal-setup once adds it to VS Code, Cursor, and Zed.

How do I set up tmux for Claude Code?#

Add set -g allow-passthrough on, set -s extended-keys on, and set -as terminal-features 'xterm*:extkeys' to your tmux.conf, then reload it with tmux source-file. Notifications can then reach your outer terminal, and tmux can tell Shift+Enter apart from Enter.

Is Ghostty good for Claude Code?#

Yes. Anthropic lists Ghostty among the terminals where Shift+Enter works without setup and where Claude Code sends desktop notifications by default, including over SSH. Ghostty does not track agents or worktrees, so heavy parallel users often pair it with tmux or an agent workspace.

How do I get notified when Claude Code finishes?#

In Ghostty, Kitty, and iTerm2, Claude Code sends a desktop notification by default. In other terminals, set preferredNotifChannel to terminal_bell in your Claude Code settings, or add a Notification hook that plays a sound or runs a command.

What is the best terminal for multiple Claude Code sessions?#

Pick a tool that shows which session needs you. cmux adds vertical tabs and notification rings to a Ghostty-based terminal, while Agentastic adds a git worktree per agent, an attention inbox, and diff review. With a plain terminal, tmux plus claude --worktree is the do-it-yourself version.

Is cmux better than Ghostty?#

They do different jobs. cmux renders with Ghostty's libghostty and adds agent features such as vertical tabs, notification rings, a scriptable browser, and a socket API, but it is macOS only. Ghostty is a general-purpose terminal for macOS and Linux.

Give every Claude Code session its own worktree

Agentastic is free and pairs Ghostty-based terminals with a git worktree per agent, attention alerts, and diff review.

Try Agentastic on macOS