Claude Code terminal: how to open it, the best terminal for it, and the setup that matters

Ghostty, Kitty or iTerm2: in all three, Shift+Enter starts a new line and Claude Code sends desktop notifications with no setup. On Windows, use Windows Terminal and turn on the bell or a hook for notifications. In VS Code's, Cursor's or Zed's terminal run /terminal-setup once, and in any terminal Ctrl+J also makes a new line.

Dmitriy Solodukha · checked against Caprock v0.140.0

terminals that need no setup at all
3
terminals that need no setup at all
Ghostty, Kitty and iTerm2
command for VS Code's, Cursor's or Zed's terminal
1
command for VS Code's, Cursor's or Zed's terminal
/terminal-setup, once
lines in ~/.tmux.conf
3
lines in ~/.tmux.conf
passthrough and extended keys
a new line in every terminal
Ctrl+J
a new line in every terminal
or \ then Enter

From Claude Code's terminal docs and each terminal's own page, read 20 October 2026.

Best terminal for Claude Code

What Claude Code gets in each terminal

The two things it does all day: you write prompts of several lines, and it stops to ask you something while you are in another window.

Terminals for Claude Code: Shift+Enter and notifications from Anthropic's terminal docs, platforms and licences from each terminal's page, read 20 October 2026
TerminalRuns onLicence and priceShift+EnterNotifications
GhosttymacOS, LinuxMIT, freeyesnative, over SSH too
KittymacOS, LinuxGPL-3.0, freeyesnative, over SSH too
iTerm2macOSGPL-2.0, freeyesnative; over SSH after one setting
WezTermmacOS, Linux, WindowsMIT, freeyesbell or hook
WarpmacOS, Linux, WindowsAGPL-3.0 client; free, or $20 a month ($18 yearly)yesbell or hook
Apple TerminalmacOSships with macOSyesbell or hook
Windows TerminalWindowsMIT, freeyesbell or hook
AlacrittymacOS, Linux, WindowsApache-2.0, free0.16+; older after setupbell or hook
VS Code, Cursor, Zedthe editor's terminal—after /terminal-setupbell or hook
GNOME Terminal, JetBrainsLinux; the IDE—no: use Ctrl+Jbell or hook
Caprock appmacOS, Windows, LinuxApache-2.0, freeyesits own, for permission prompts
“Bell or hook”: set the terminal bell or a Notification hook, below. Over SSH, iTerm2 needs Profiles → Terminal → “Send escape sequence-generated alerts”. Alacritty 0.16 needs Claude Code 2.1.269 or later for Shift+Enter. The Caprock row is from Caprock's source.

Claude Code terminal setup

Shift+Enter, notifications and tmux: the commands

Only where your terminal needs them. Each is explained in the guide below.

  • Shift+Enter in VS Code, Cursor, Zed or an older Alacritty

    inside Claude Code, once

  • Notifications in any terminal: the bell

    in ~/.claude/settings.json

  • tmux: notifications pass through, Shift+Enter works

    in ~/.tmux.conf, then reload it

  • Flicker: full-screen rendering

    inside Claude Code

Decide

Which terminal to use for Claude Code

Which terminal fits which need, read 20 October 2026
If you wantUse
No setup on a MacGhostty, Kitty or iTerm2
No setup on LinuxGhostty or Kitty
WindowsWindows Terminal, with the bell or a hook
You live in VS Code, Cursor or Zedits terminal, after /terminal-setup
Sessions over SSH or kept runningtmux, with the three lines above
Several sessions, and which one is waitingthe Caprock app

Caprock

A terminal for many Claude Code sessions

With several sessions open, the problem stops being the terminal and becomes finding the one that is waiting on you. Caprock is a free, open-source desktop app for macOS, Windows and Linux built around that.

A session and a shell in one tab, split. The macOS app replaying a real Caprock work session; example figures.
  • A tab per session, split up to four panes

    New agent starts Claude Code, Codex, OpenCode, Gemini CLI or another agent in a terminal tab of its project; ⌘E and ⇧⌘E split it. Closing a tab ends an idle agent, its conversation saved, and asks about one still working.

  • The keys Claude Code needs

    Shift+Enter, Option+Enter and Ctrl+J add a new line. ⌘F finds in the terminal; a file dropped on it is typed at the prompt as a quoted path.

  • What is waiting comes first

    Sessions stopped on a permission prompt lead the sidebar, ⌘J jumps to the next, and on macOS and Linux a notification for one Caprock started carries Deny, and Approve when it shows the whole request.

  • Beside the terminal you have

    A session's Terminal button opens it in Ghostty, iTerm2, WezTerm, kitty, Warp or Terminal on macOS, your Linux terminal, or Windows Terminal. Sessions you start anywhere show up with their cost.

Free, Apache-2.0, macOS, Windows and Linux

Download for Mac

Notarized by Apple. One file for Apple silicon and Intel, macOS 13 or later.

Or run it yourself:

curl -fsSL https://caprock.dev/mac.sh | sh

Paste in Terminal: it installs Caprock and opens it.Or with Homebrew: brew install --cask dspv/tap/caprock-app

Rather keep your own terminal? caprock statusline install puts the model, context, session cost and plan windows under Claude Code's prompt in any of them. More on the status line in setting up the Claude Code status line.

The full guide

Terminal, step by step

Claude Code runs in any terminal, but three need no setup at all: Ghostty, Kitty and iTerm2. In all three, Shift+Enter starts a new line and Claude Code sends desktop notifications when it needs you. WezTerm, Warp, Apple Terminal and Windows Terminal handle Shift+Enter too but need a notification hook; VS Code, Cursor and Zed need /terminal-setup once. In any terminal, Ctrl+J or \ then Enter also makes a new line.

Open Claude Code in a terminal

Claude Code is a terminal program: there is no window to open, you start it inside a terminal, in the folder you want it to work on. Open one: on macOS press Cmd+Space, type Terminal and press Enter; on most Linux distributions press Ctrl+Alt+T; on Windows press Win+X and pick Terminal or PowerShell.

  1. 1

    Go to your project

  2. 2

    Start Claude Code and sign in on first run

If the shell says command not found: claude, it is not installed or not on your PATH yet: how to install Claude Code. Type /help for commands, Esc to interrupt, and exit to leave. To skip the terminal entirely, Anthropic's desktop app runs Claude Code in a window of its own.

The best terminal for Claude Code: what each one supports

Terminals and what Claude Code gets in each, from Anthropic's terminal docs and each terminal's own page, read 20 October 2026.
TerminalRuns onShift+EnterNotifications
GhosttymacOS, Linuxyesyes
KittymacOS, Linuxyesyes
iTerm2macOSyesyes; over SSH after one setting
WezTermmacOS, Linux, Windowsyesbell or hook
WarpmacOS, Linux, Windowsyesbell or hook
Apple TerminalmacOSyesbell or hook
Windows TerminalWindowsyesbell or hook
AlacrittymacOS, Linux, Windows0.16 and later; before, after setupbell or hook
VS Code, Cursor, Zedin the editorafter setupbell or hook
GNOME Terminal, JetBrains IDEsLinux; in the IDEno — use Ctrl+Jbell or hook
Caprock appmacOS, Windows, Linuxyesits own, for permission prompts
"After setup" means running /terminal-setup once, below. The Caprock row is from Caprock's own source, checked 20 October 2026. Shift+Enter needs Claude Code 2.1.269 or later in Alacritty 0.16 and other terminals that speak the kitty keyboard protocol, such as foot.

The choice comes down to two things Claude Code does all day: you write prompts of several lines, and it stops to ask you something while you are in another window. A terminal that handles both without setup is the one with the least friction; the rest get there with the steps below.

Shift+Enter for a new line

Where Shift+Enter does not work out of the box, run this once inside Claude Code, outside tmux or screen:

/terminal-setup

In VS Code, Cursor and Devin Desktop it also turns off the terminal's GPU acceleration. Where nothing helps — GNOME Terminal, JetBrains — use Ctrl+J. You can rebind the keys with the chat:newline and chat:submit keybindings.

Option as Meta on a Mac

Claude Code's Alt shortcuts need the Option key to send Meta:

  • Apple Terminal: Settings → Profiles → Keyboard → "Use Option as Meta Key". /terminal-setup sets it for you and turns off the audible bell.
  • iTerm2: Settings → Profiles → Keys → General, set Left and Right Option to "Esc+".
  • VS Code: "terminal.integrated.macOptionIsMeta": true.

Notifications when Claude needs you

Ghostty, Kitty and iTerm2 show a native notification with no setup, and pass it on to your machine from a session over SSH; for that, iTerm2 needs Settings → Profiles → Terminal → "Notification Center Alerts" → "Filter Alerts" → "Send escape sequence-generated alerts". Everywhere else, pick the terminal bell or a hook in ~/.claude/settings.json:

{ "preferredNotifChannel": "terminal_bell" }

A Notification hook can run any command instead, such as a system notification or a sound.

Claude Code in tmux

Add three lines to ~/.tmux.conf and reload it. Passthrough lets notifications and the progress bar reach the outer terminal; extended keys make Shift+Enter work:

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

The best Windows terminal for Claude Code

Use Windows Terminal: it is free and MIT-licensed, Shift+Enter starts a new line with no setup, and notifications come once you turn on the terminal bell or add a Notification hook, as above. WezTerm, Warp, Alacritty and the Caprock app run on Windows too.

Claude Code runs natively on Windows 10 1809 or later, in PowerShell or CMD, and in WSL. Git for Windows is optional and gives Claude Code Git Bash for its shell tool, otherwise it uses PowerShell. If Backspace deletes a whole word, set CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0. Install steps: how to install Claude Code.

Flicker, themes and long pastes

  • Flicker: /tui fullscreen or CLAUDE_CODE_NO_FLICKER=1 switches to full-screen rendering.
  • Theme: /theme; "Auto" follows the terminal's light or dark background.
  • Vim keys: /config → Editor mode, or "editorMode": "vim".
  • Pastes over 800 characters or three lines collapse to one line such as "[Pasted text #1 +120 lines]". The VS Code terminal can drop characters from a very large paste.
  • Status line: a row of your choice under the prompt — setting up the status line.

Caprock: a terminal for many sessions

A session and a shell in one tab, split. The macOS app replaying a real Caprock work session. Example figures.

With several sessions open, the terminal stops being the problem; finding the one that is waiting on you is. Anthropic's own desktop app is a window for one agent, free with a plan. Caprock is a free desktop app for macOS, Windows and Linux built on the record of every agent on the machine — the sessions it did not start included, how close each subscription is to its limit, each pull request's CI state and cost — and its terminal is how you live with that record.

  • A tab per session. New agent starts Claude Code, Codex, OpenCode, Gemini CLI, Grok Build or Hermes Agent in a real terminal tab of its project, beside plain shells (⌘T). ⌘E and ⇧⌘E split a tab, up to four panes. Tabs come back when you reopen the app; closing one ends an idle agent, its conversation saved, and asks about one still working.
  • The keys Claude Code needs. Shift+Enter, Option+Enter and Ctrl+J add a new line. ⌘F finds in the terminal; drop a file from Finder, Explorer or your file manager and its quoted path is typed at the prompt.
  • Scrolled up stays put. New output never moves what you are reading; a "↓ N new lines" pill takes you back down.
  • What is waiting first. Sessions stopped on a prompt or waiting for your answer lead the sidebar, ⌘J jumps to the next, and the Dock badge counts them.
  • The look. Settings → Terminal: eleven colour palettes or Match app, the font, size, line height and cursor. The defaults match the JetBrains IDE terminal: JetBrains Mono, 13 px, line height 1.2.

It also works beside the terminal you already use:

  • Open in terminal: a session's Terminal button opens it in your own terminal — Ghostty, iTerm2, WezTerm, kitty, Warp or Terminal.app on macOS; Ghostty, GNOME Terminal, Konsole, kitty, WezTerm, Alacritty or xterm on Linux; Windows Terminal, PowerShell or cmd on Windows.
  • Sessions from any terminal appear in the app with their cost; it types only into the sessions it started.
  • In every terminal: caprock statusline install puts the model, context, session cost and plan-limit windows under the prompt, and never replaces a status line you already have.

Free, open source; nothing leaves your machine unless you switch on a phone or an alert. Install Caprock.

Questions people ask

How do I open Claude Code in the terminal?
Open a terminal (Terminal on macOS, Ctrl+Alt+T on most Linux distributions, Windows Terminal or PowerShell on Windows), cd into your project and type claude. The first run asks you to sign in.
What is the best terminal for Claude Code?
Ghostty, Kitty or iTerm2 if you want no setup: Shift+Enter and native notifications work out of the box. iTerm2 is macOS only. On Windows, Windows Terminal, with the terminal bell or a notification hook.
How do I make Shift+Enter add a new line in Claude Code?
It works natively in Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal and Windows Terminal. In VS Code, Cursor, Zed and older Alacritty run /terminal-setup once. Ctrl+J works everywhere.
Does Claude Code work in tmux?
Yes. Set allow-passthrough on and extended-keys on, and add the extkeys terminal feature in ~/.tmux.conf, so notifications pass through and Shift+Enter works.
How do I get notified when Claude Code needs input?
Ghostty, Kitty and iTerm2 show native notifications. Elsewhere set preferredNotifChannel to terminal_bell, or add a Notification hook that runs a command.
Does Claude Code work in Windows Terminal?
Yes. Claude Code runs natively in PowerShell or CMD on Windows 10 1809 or later, and Shift+Enter works in Windows Terminal without setup.

Sources