Claude Code Terminal Setup: Make the CLI Feel Like Home
Claude Code terminal setup explained: what /terminal-setup actually does, fixing Shift+Enter, notifications, themes, a status line and custom keybindings.
Claude Code works in any terminal with zero configuration — terminal setup is purely about comfort: making Shift+Enter insert a newline, getting a ping when Claude finishes, matching your color theme, and putting useful numbers in a status line. The built-in /terminal-setup command handles the most annoying part (keybindings in VS Code-family terminals) in one shot.
I resisted tuning my terminal for weeks, on the proud-beginner theory that defaults are fine. Then one /statusline command later I could see my context usage at a glance, and I stopped getting surprised by auto-compaction mid-thought. Ten minutes of setup, permanent quality-of-life. Here's the whole tour.
What does /terminal-setup actually do?
In VS Code, Cursor, Devin Desktop, Alacritty, and Zed, /terminal-setup writes a Shift+Enter keybinding into the terminal's configuration file so the key inserts a newline instead of submitting. In the VS Code family it also turns off terminal GPU acceleration (prevents garbled text) and tunes scroll sensitivity. In Apple Terminal, the first-run prompt that offers 'Option+Enter for newlines and visual bell' runs it for you — enabling Option-as-Meta and a visual bell. In iTerm2 it enables clipboard access so /copy works. Existing bindings are never overwritten, and one rule matters: run it in the host terminal directly, not inside tmux or screen.
Good news if your terminal is Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, or Windows Terminal: Shift+Enter already works there with no setup at all. And in any terminal whatsoever, Ctrl+J inserts a newline, as does typing \ and pressing Enter.
How do you bring up Claude Code in the terminal?
Navigate to your project folder and type claude — that's the entire ritual. On first run you'll sign in with /login and accept the workspace trust dialog. A typical opening looks like this:
$ cd ~/my-project $ claude > /login # first time only: sign in via browser > what does this project do? > /theme # pick a theme matching your terminal > /terminal-setup # if you're in VS Code, Cursor, Alacritty or Zed
How do you set the model from the terminal?
Two ways: inside a session, run /model to open the interactive picker (arrow keys change effort level, 's' applies a model to this session only). Or decide before launch with a flag:
claude --model sonnet
Starts Claude Code with the model you name. Inside the session, /model switches at any time — handy for dropping to a faster model for routine cleanups and back up for the hard parts.
How do you set it up in the VS Code terminal?
Run /terminal-setup once inside Claude Code in VS Code's integrated terminal: it fixes Shift+Enter and the GPU-acceleration glitches in one go. Two VS Code-specific warnings from the docs: very large pastes can silently drop characters in the integrated terminal, so for long logs write them to a file and ask Claude to read it; and on macOS add "terminal.integrated.macOptionIsMeta": true to VS Code settings so Option-key shortcuts (like Option+P for the model picker) actually arrive.
Notifications, theme, and a status line
When Claude finishes or needs permission, it fires a notification event. Ghostty, Kitty, and iTerm2 forward it to your OS notification center by default (iTerm2 needs 'Notification Center Alerts' plus 'Send escape sequence-generated alerts' enabled in Settings → Profiles → Terminal). In other terminals, set preferredNotifChannel to terminal_bell in settings — or go fancy with a Notification hook:
{ "hooks": { "Notification": [ { "hooks": [ { "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" } ] } ] } }Drop this into ~/.claude/settings.json. Now a glass chime announces every finished task and permission prompt — works in Warp, the VS Code terminal, anywhere.
/statusline show model name, current folder and context percentage
Describe what you want and Claude Code generates the script in ~/.claude/ and wires it into settings itself. The status line runs locally, costs zero tokens, and can show git branch, session cost, rate-limit usage — anything from the JSON it receives.
Ctrl+J inserts a newline in every terminal on earth, no configuration required — so does typing \ then Enter. If Shift+Enter ever betrays you in an SSH session or some exotic emulator, these two never will.
Custom keybindings, if defaults annoy you
Run /keybindings to create and open ~/.claude/keybindings.json. It's a list of contexts (Chat, Global, Confirmation and so on) mapping keystrokes to actions like chat:submit or chat:newline — which means you can even swap Enter and Shift+Enter if you prefer chat-app behavior. Set an action to null to unbind it, use chords like ctrl+x ctrl+e, and edits apply live without restarting. Ctrl+C and Ctrl+D are reserved and can't be rebound; /doctor flags any conflicts you create.
The whole setup in five minutes
- 1Open your terminal in a project folder, run claude, and sign in with /login if it's your first time.
- 2Run /terminal-setup if you work in VS Code, Cursor, Alacritty, or Zed — or skip it in Ghostty, Kitty, iTerm2, Warp, and Windows Terminal, where Shift+Enter already works.
- 3Run /theme and pick the auto option so colors follow your terminal's light/dark mode.
- 4Run /statusline with a sentence describing what you want to see — model, folder, and context percentage is a great default.
- 5Open /config to switch on anything else you fancy: vim editor mode, notification preferences, and more.
Practical kicker: do the five steps above right now, then deliberately paste a long prompt and hit Ctrl+J between paragraphs. The first time a multi-line prompt goes out exactly when you meant it to — not three sentences early — you'll understand why this page exists.

Author
Evgeny Arsentyev
PhD · Chief Product Officer at a healthtech company
▌ Reading is the blue pill
Want to actually build this?
Guides explain. The free course transforms — personalized, gamified, and built to get you shipping fast.
◉ Take the red pill →