- Shift+Enter submits instead of inserting a newline
- Option-key shortcuts do nothing on macOS
- No sound or alert when Claude finishes
- You run Claude Code inside tmux
- Display flickers or scrollback jumps
- You want Vim keys in the prompt
Enter multiline prompts
Pressing Enter submits your message. To add a line break without submitting, press Ctrl+J, or type\ and then press Enter. Both work in every terminal with no setup.
In most terminals you can also press Shift+Enter, but support varies by terminal emulator:
For VS Code, Cursor, Devin Desktop, Alacritty, and Zed,
/terminal-setup writes Shift+Enter and other keybindings into the terminal’s configuration file. On the first run you see a confirmation such as Installed VSCode terminal Shift+Enter key binding. Existing bindings are left in place; if you see a message such as VSCode terminal Shift+Enter key binding already configured, no change was made. Run /terminal-setup directly in the host terminal rather than inside tmux or screen, since it needs to write to the host terminal’s configuration.
In VS Code, Cursor, and Devin Desktop, /terminal-setup also updates two editor settings: it sets terminal.integrated.gpuAcceleration to "off" to prevent garbled text in the integrated terminal, and it sets terminal.integrated.mouseWheelScrollSensitivity for smoother scrolling in fullscreen mode. To undo the GPU acceleration change, set it back to "auto" and reload the editor window.
If you are running inside tmux, Shift+Enter also requires the tmux configuration below even when the outer terminal supports it.
To bind newline to a different key, or to swap behavior so Enter inserts a newline and Shift+Enter submits, map the chat:newline and chat:submit actions in your keybindings file.
Enable Option key shortcuts on macOS
Some Claude Code shortcuts use the Option key, such as Option+Enter for a newline or Option+P to switch models. On macOS, most terminals do not send Option as a modifier by default, so these shortcuts do nothing until you enable it. The terminal setting for this is usually labeled “Use Option as Meta Key”; Meta is the historical Unix name for the key now labeled Option or Alt.- Apple Terminal
- iTerm2
- VS Code
Open Settings → Profiles → Keyboard and check “Use Option as Meta Key”.If you accepted Claude Code’s first-run terminal setup prompt, this is already done. That prompt runs
/terminal-setup for you, which enables Option as Meta and turns off the audible bell in your Apple Terminal profile.In screen reader mode, /terminal-setup leaves the bell setting unchanged so the terminal bell stays audible. Before v2.1.211, /terminal-setup turned the bell off even in screen reader mode. If an earlier run turned the bell off, turn it back on under Settings → Profiles → Advanced → “Audible bell”.Get a terminal bell or notification
When Claude finishes a task or pauses for a permission prompt, and you appear to be away from the terminal, it fires a notification event. See when each notification type fires for the exact timing. Surfacing this as a terminal bell or desktop notification lets you switch to other work while a long task runs. By default Claude Code sends a desktop notification only in Ghostty, Kitty, and iTerm2. In other terminals, setpreferredNotifChannel to "terminal_bell" to ring the terminal bell instead, or configure a Notification hook for a custom sound or command. The following settings entry turns on the terminal bell:
~/.claude/settings.json
1
Open iTerm2 notification settings
Go to Settings → Profiles → Terminal.
2
Enable alerts
Check “Notification Center Alerts”, then click “Filter Alerts” and enable “Send escape sequence-generated alerts”.
Play a sound with a Notification hook
In any terminal you can configure a Notification hook to play a sound or run a custom command when Claude needs your attention. Hooks run alongside the built-in notification rather than replacing it, so terminals that do not receive a desktop notification, such as Warp or the VS Code integrated terminal, can use a hook or setpreferredNotifChannel to "terminal_bell" instead.
The example below plays a system sound on macOS. The linked guide has desktop notification commands for macOS, Linux, and Windows.
~/.claude/settings.json
Configure tmux
When Claude Code runs inside tmux, two things break by default: Shift+Enter submits instead of inserting a newline, and desktop notifications and the progress bar never reach the outer terminal. Add these lines to~/.tmux.conf, then run tmux source-file ~/.tmux.conf to apply them to the running server:
~/.tmux.conf
allow-passthrough line lets notifications and progress updates reach the outer terminal instead of being swallowed by tmux. The extended-keys lines let tmux distinguish Shift+Enter from plain Enter so the newline shortcut works.
Match the color theme
Use the/theme command, or the theme picker in /config, to choose a Claude Code theme that matches your terminal. Selecting the auto option detects your terminal’s light or dark background, so the theme follows OS appearance changes whenever your terminal does. Claude Code does not control the terminal’s own color scheme, which is set by the terminal application.
To customize what appears at the bottom of the interface, configure a custom status line that shows the current model, working directory, git branch, or other context.
Create a custom theme
In addition to the built-in presets,/theme lists any custom themes you have defined and any themes contributed by installed plugins. Select