Skip to content

Keyboard shortcuts

Every keyboard shortcut in the web client, grouped the same way as the in-app help.

Some shortcuts bind different keys per platform: Mac / iPad uses Cmd, Windows / Linux uses Ctrl, and a few bindings are literal and identical everywhere. Where a row shows two columns, both are listed; where it shows one combo, it works on all platforms.

In-app help and customization

Open the command palette (Ctrl+Shift+P / Cmd+Shift+P, or F1 on Windows/Linux) or type /help to see the same list inside the app. Every binding can be rebound in Settings → Shortcuts (Ctrl+,); your overrides are synced to the server, so they follow you across browsers and devices.

iPad-reserved Cmd combos

iPadOS reserves some Cmd chords at the OS level — they never reach the web app, even in the PWA. Two of the app's bindings land on reserved chords, and each carries an additive fallback that always works: Settings is Ctrl+, everywhere, with Cmd+, riding along on macOS proper; Close tab is Alt+W everywhere, with Cmd+W on Mac and Ctrl+W on Windows/Linux. Note the fallback is not always a Ctrl chord — close-tab's is Alt+W, because Ctrl+W is itself taken in browsers. Other reserved chords (Cmd+Tab, Cmd+H, Cmd+Q, Cmd+M) are simply never bound; the grid switcher uses Alt+Tab on Mac/iPad precisely to stay clear of Cmd+Tab.

Sessions & Tabs

Action Mac / iPad Windows / Linux
New session Cmd+T Ctrl+T
Quick switcher Cmd+K / Cmd+P Ctrl+K / Ctrl+P
Browse Claude sessions Cmd+Shift+K Ctrl+Shift+K
Open File or Folder Cmd+O Ctrl+O
Command palette Cmd+Shift+P Ctrl+Shift+P / F1
All sessions grid (cycle forward) Alt+Tab Ctrl+Shift+]
All sessions grid (cycle backward) Alt+Shift+Tab Ctrl+Shift+[
Close tab Alt+W (both) or Cmd+W Alt+W (both) or Ctrl+W
Reopen last closed tab Cmd+Shift+T Ctrl+Shift+T
Clone session Cmd+N Ctrl+Shift+N
New scratch tab Ctrl+N Ctrl+N
Previous tab Cmd+[ Ctrl+[
Next tab Cmd+] Ctrl+]
Switch to tab 1–9 Cmd+1 … Cmd+9 Ctrl+1 … Ctrl+9

Note

Cmd+W closes the browser tab on macOS browsers — it only reaches the app in the PWA / standalone wrapper, which is why Alt+W exists as the universal close-tab binding. On Windows/Linux, clone is Ctrl+Shift+N because Ctrl+N is taken by "new scratch tab" (and Ctrl+N is deliberately literal on Mac too, where the Ctrl layer is mostly free).

Panels

Action Mac / iPad Windows / Linux
Toggle terminal Ctrl+` / Ctrl+\ Ctrl+` / Ctrl+\
New terminal Ctrl+Shift+` / Ctrl+Shift+C / Cmd+Shift+C Ctrl+Shift+` / Ctrl+Shift+C
Toggle rail menu (sidebar) Cmd+B Ctrl+B
File explorer Alt+F Alt+F
File preview (reopen last file) Alt+V Alt+V
Log explorer Alt+L Alt+L
Git panel Alt+G Alt+G
Active sessions Alt+S Alt+S
Cost analytics Alt+4 Alt+4
Discussion thread Alt+/ Alt+/
Browser widget Alt+B Alt+B
Debug console Alt+D Alt+D
Toggle Journal Alt+H Alt+H
Zen mode Alt+Z Alt+Z
Quick actions (radial menu) Ctrl+Q Ctrl+Q
Prompt explorer Alt+P / Ctrl+R Alt+P / Ctrl+R
Save input as draft Ctrl+Shift+S (both) or Cmd+Shift+S Ctrl+Shift+S
Skills panel Alt+K Alt+K
Commands panel Alt+Shift+K Alt+Shift+K
Thinking settings ++cmd+apostrophe++ ++ctrl+apostrophe++
Cycle effort (one-shot, next message) ++cmd+shift+apostrophe++ ++ctrl+shift+apostrophe++

Background tasks has a panel toggle action but ships with no default binding — assign one in Settings → Shortcuts if you want it on a key. Cmd+R is bound to page reload on Mac/iPad only, for the standalone PWA wrapper where there is no browser chrome (in a normal browser it just reloads, same as native).

Action Mac / iPad Windows / Linux
Search in conversation Cmd+F Ctrl+F
Search in files (project-wide) Cmd+Shift+F / Ctrl+Shift+F Ctrl+Shift+F
Find next Cmd+G Ctrl+G / F3
Find previous Cmd+Shift+G Ctrl+Shift+G / Shift+F3

Editor

Action Key
Toggle edit mode (file preview) E

E only fires when focus is not in an input, textarea, or terminal — i.e. while you are viewing a file preview, pressing E flips it into inline-edit mode.

Action Mac / iPad Windows / Linux
Previous user message Cmd+Up Ctrl+Up
Next user message Cmd+Down Ctrl+Down
Focus message input Cmd+/ Ctrl+/
Focus project field Cmd+L Ctrl+L
Reconnect (when disconnected) Cmd+Enter Ctrl+Enter
Back to sessions Backspace Backspace

Context gates worth knowing:

  • Previous/next user message only fire while a session view is active.
  • Focus input skips the CodeMirror editor, so Cmd+/ / Ctrl+/ still toggles comments in scratch tabs — but it does work from inside the terminal, as an escape hatch back to the chat input.
  • Reconnect only fires when the active session is disconnected; otherwise the key passes through to other handlers (e.g. send).
  • Back to sessions only fires when the back pill is visible and the message input is empty — it never steals Backspace while you are editing text.

Other

Action Key
Settings Ctrl+, (all platforms), plus Cmd+, on macOS
Close / cancel Esc
Allow pending permission Enter (only while a permission card is waiting)
Help no default binding — use the command palette or /help
Reload page (Mac/iPad only) Cmd+R

Esc is gated out of the terminal so it reaches your shell, vim, etc.

Allow pending permission is deliberately narrow: it fires only when an approve/deny card is actually waiting, never in the terminal, and — if focus is in a text field — only from an empty message box. That keeps Enter as Send while you're typing, and leaves it to the deny-guidance field when you're writing one.

How context gating works

Each shortcut declares a when context. The defaults:

Context Behavior
global (default) Fires everywhere except when the terminal is focused, so keystrokes pass through to the shell
always Fires everywhere, including inside the terminal (tab switching, quick switcher, …)
notInInput Suppressed while typing in any input or textarea
notInTerminal Suppressed only in the terminal
notInEditor Suppressed in the CodeMirror editor (lets the editor keymap win)
session Only while a chat session view is active
disconnected Only when a session exists and is disconnected — so once connected, the key passes through to other handlers (this is how Cmd+Enter can mean both Reconnect and Send)
permissionPending Only while an approve/deny permission card is waiting, never in the terminal, and from a text field only when it's the empty message box
backToSessionsContext Only when the back pill is visible, outside the terminal, and — in an input — only when it's empty, so Backspace is never stolen mid-edit

This is why Ctrl+B still works as your tmux prefix inside the terminal widget: the rail-menu toggle uses the default global context and stays out of the terminal's way.