Customize keyboard shortcuts changedkeybindings
Nearest release: v2.1.284, published 6 hours before upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 28 Sep 2026 23:18 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 28 Sep 2026 23:37 UTC.
Upstream edited
Recorded here
Lines+213added
Lines−210removed
From line
10
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits27to this page, all time
The whole hunk
from line 10, old and new numbered
/
The two sides of this change are more than 400 edits apart, too far apart to line up, so this is the differ's own diff of it and the words inside a line are not marked.
from line 10
1010
1111<Note>Changes to the keybindings file are automatically detected and applied without restarting Claude Code.</Note>
1212
13| Field | Description |
14| :--------- | :------------------------------------------------- |
15| `$schema` | Optional JSON Schema URL for editor autocompletion |
16| `$docs` | Optional documentation URL |
17| `bindings` | Array of binding blocks by context |
13| Field | Description |
14| :- | :- |
15| `$schema` | Optional JSON Schema URL for editor autocompletion |
16| `$docs` | Optional documentation URL |
17| `bindings` | Array of binding blocks by context |
1818
1919This example binds `Ctrl+E` to open an external editor in the chat context, and unbinds `Ctrl+U`:
2020
from line 38
3838
3939Each binding block specifies a **context** where the bindings apply:
4040
41| Context | Description |
42| :---------------- | :----------------------------------------------------------- |
43| `Global` | Applies everywhere in the app |
44| `Chat` | Main chat input area |
45| `Autocomplete` | Autocomplete menu is open |
46| `Settings` | Settings menu |
47| `Confirmation` | Permission and confirmation dialogs |
48| `Tabs` | Tab navigation components |
49| `Help` | Help menu is visible |
50| `Transcript` | Transcript viewer |
51| `HistorySearch` | History search mode (Ctrl+R) |
52| `Task` | Background task is running |
53| `ThemePicker` | Theme picker dialog |
54| `Attachments` | Image attachment navigation in select dialogs |
55| `Footer` | Footer indicator navigation (tasks, teams, diff, artifacts) |
56| `MessageSelector` | Rewind and summarize dialog message selection |
57| `DiffDialog` | Diff viewer navigation |
58| `DiffPanel` | The [diff panel](/docs/en/interactive-mode#diff-panel) is open |
59| `ModelPicker` | Model picker effort level |
60| `EffortSlider` | Effort slider opened by `/effort` |
61| `Select` | Generic select/list components |
62| `Plugin` | Plugin dialog (browse, discover, manage) |
63| `Agents` | [Agent view](/docs/en/agent-view) (`claude agents`) |
64| `Scroll` | Conversation scrolling and text selection in fullscreen mode |
41| Context | Description |
42| :- | :- |
43| `Global` | Applies everywhere in the app |
44| `Chat` | Main chat input area |
45| `Autocomplete` | Autocomplete menu is open |
46| `Settings` | Settings menu |
47| `Confirmation` | Permission and confirmation dialogs |
48| `Tabs` | Tab navigation components |
49| `Help` | Help menu is visible |
50| `Transcript` | Transcript viewer |
51| `HistorySearch` | History search mode (Ctrl+R) |
52| `Task` | Background task is running |
53| `ThemePicker` | Theme picker dialog |
54| `Attachments` | Image attachment navigation in select dialogs |
55| `Footer` | Footer indicator navigation (tasks, teams, diff, artifacts) |
56| `MessageSelector` | Rewind and summarize dialog message selection |
57| `DiffDialog` | Diff viewer navigation |
58| `DiffPanel` | The [diff panel](/docs/en/interactive-mode#diff-panel) is open |
59| `ModelPicker` | Model picker effort level |
60| `EffortSlider` | Effort slider opened by `/effort` |
61| `Select` | Generic select/list components |
62| `Plugin` | Plugin dialog (browse, discover, manage) |
63| `Agents` | [Agent view](/docs/en/agent-view) (`claude agents`) |
64| `Scroll` | Conversation scrolling and text selection in fullscreen mode |
6565
6666Before v2.1.205, a `Doctor` context and a `doctor:fix` action existed for the `/doctor` diagnostics screen.
6767
from line 73
7373
7474Actions available in the `Global` context:
7575
76| Action | Default | Description |
77| :--------------------- | :-------- | :----------------------------------------------------------------------------------------------------------- |
78| `app:interrupt` | Ctrl+C | Cancel current operation |
79| `app:exit` | Ctrl+D | Exit Claude Code. Press twice within 800ms to confirm |
80| `app:redraw` | (unbound) | Force terminal redraw |
81| `app:toggleTodos` | Ctrl+T | Toggle visibility of Claude's to-do checklist. This is not the [`/tasks`](/docs/en/commands) background-task view |
82| `app:toggleTranscript` | Ctrl+O | Toggle verbose transcript |
76| Action | Default | Description |
77| :- | :- | :- |
78| `app:interrupt` | Ctrl+C | Cancel current operation |
79| `app:exit` | Ctrl+D | Exit Claude Code. Press twice within 800ms to confirm |
80| `app:redraw` | (unbound) | Force terminal redraw |
81| `app:toggleTodos` | Ctrl+T | Toggle visibility of Claude's to-do checklist. This is not the [`/tasks`](/docs/en/commands) background-task view |
82| `app:toggleTranscript` | Ctrl+O | Toggle verbose transcript |
8383
8484### History actions
8585
8686Actions for navigating command history:
8787
88| Action | Default | Description |
89| :----------------- | :------ | :-------------------- |
90| `history:search` | Ctrl+R | Open history search |
91| `history:previous` | Up | Previous history item |
92| `history:next` | Down | Next history item |
88| Action | Default | Description |
89| :- | :- | :- |
90| `history:search` | Ctrl+R | Open history search |
91| `history:previous` | Up | Previous history item |
92| `history:next` | Down | Next history item |
9393
9494### Chat actions
9595
9696Actions available in the `Chat` context:
9797
98| Action | Default | Description |
99| :-------------------- | :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
100| `chat:cancel` | Escape | Cancel current input |
101| `chat:clearInput` | Ctrl+L | Force a full screen redraw, preserving input and conversation |
102| `chat:clearScreen` | Cmd+K | Same as `chat:clearInput`. See [Clear the conversation](/docs/en/fullscreen#clear-the-conversation) for how Cmd+K behaves on iTerm2 and Terminal.app |
103| `chat:killAgents` | Ctrl+X Ctrl+K | Stop all running [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) in this session and turn off [artifact auto-replies](/docs/en/artifacts#let-claude-reply-to-comments-on-its-own) for the rest of it |
104| `chat:cycleMode` | Shift+Tab\* | Cycle permission modes |
105| `chat:modelPicker` | Meta+P | Open model picker |
106| `chat:fastMode` | Meta+O | Toggle fast mode |
107| `chat:thinkingToggle` | Meta+T | Toggle extended thinking |
108| `chat:submit` | Enter | Submit message |
109| `chat:queueSubmit` | Ctrl+X Enter | Submit the message, marked to wait its turn: while Claude is working, Claude Code [queues it](/docs/en/interactive-mode#queue-messages-while-claude-works) and never interrupts the turn. Unlike `chat:submit`, it submits the draft even while an autocomplete suggestion is highlighted. Requires v2.1.247 or later |
110| `chat:sendNow` | Ctrl+Enter, Ctrl+X Ctrl+S | Send your [queued messages](/docs/en/interactive-mode#queue-messages-while-claude-works), and your draft with them, right away. [When Claude Code sends what you queued](/docs/en/interactive-mode#when-claude-code-sends-what-you-queued) covers what happens to the turn Claude is working on. When nothing is running, the key submits the draft, and in [shell mode](/docs/en/interactive-mode#shell-mode-with-prefix) it only queues the command. Terminals that don't report extended keys deliver `Ctrl+Enter` as plain `Enter`, so `Ctrl+X Ctrl+S` is the binding that works in any terminal. Requires v2.1.275 or later |
111| `chat:newline` | Ctrl+J | Insert a newline without submitting |
112| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Undo last action |
113| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Open in external editor. The [agent view dispatch input](/docs/en/agent-view#keyboard-shortcuts) follows this action's single-keystroke bindings too |
114| `chat:stash` | Ctrl+S | Stash current prompt |
115| `chat:imagePaste` | Ctrl+V (Alt+V on Windows and WSL) | Paste image from clipboard. On WSL, both shortcuts are bound by default |
98| Action | Default | Description |
99| :- | :- | :- |
100| `chat:cancel` | Escape | Cancel current input |
101| `chat:clearInput` | Ctrl+L | Force a full screen redraw, preserving input and conversation |
102| `chat:clearScreen` | Cmd+K | Same as `chat:clearInput`. See [Clear the conversation](/docs/en/fullscreen#clear-the-conversation) for how Cmd+K behaves on iTerm2 and Terminal.app |
103| `chat:killAgents` | Ctrl+X Ctrl+K | Stop all running [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) in this session and turn off [artifact auto-replies](/docs/en/artifacts#let-claude-reply-to-comments-on-its-own) for the rest of it |
104| `chat:cycleMode` | Shift+Tab\* | Cycle permission modes |
105| `chat:modelPicker` | Meta+P | Open model picker |
106| `chat:fastMode` | Meta+O | Toggle fast mode |
107| `chat:thinkingToggle` | Meta+T | Toggle extended thinking |
108| `chat:submit` | Enter | Submit message |
109| `chat:queueSubmit` | Ctrl+X Enter | Submit the message, marked to wait its turn: while Claude is working, Claude Code [queues it](/docs/en/interactive-mode#queue-messages-while-claude-works) and never interrupts the turn. Unlike `chat:submit`, it submits the draft even while an autocomplete suggestion is highlighted. Requires v2.1.247 or later |
110| `chat:sendNow` | Ctrl+Enter, Ctrl+X Ctrl+S | Send your [queued messages](/docs/en/interactive-mode#queue-messages-while-claude-works), and your draft with them, right away. [When Claude Code sends what you queued](/docs/en/interactive-mode#when-claude-code-sends-what-you-queued) covers what happens to the turn Claude is working on. When nothing is running, the key submits the draft, and in [shell mode](/docs/en/interactive-mode#shell-mode-with-prefix) it only queues the command. Terminals that don't report extended keys deliver `Ctrl+Enter` as plain `Enter`, so `Ctrl+X Ctrl+S` is the binding that works in any terminal. Requires v2.1.275 or later |
111| `chat:newline` | Ctrl+J | Insert a newline without submitting |
112| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Undo last action |
113| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Open in external editor. The [agent view dispatch input](/docs/en/agent-view#keyboard-shortcuts) follows this action's single-keystroke bindings too |
114| `chat:stash` | Ctrl+S | Stash current prompt |
115| `chat:imagePaste` | Ctrl+V (Alt+V on Windows and WSL) | Paste image from clipboard. On WSL, both shortcuts are bound by default |
116116
117117\*On Windows without VT mode (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), defaults to Meta+M.
118118
from line 120
120120
121121Actions available in the `Autocomplete` context:
122122
123| Action | Default | Description |
124| :---------------------- | :------ | :------------------ |
125| `autocomplete:accept` | Tab | Accept suggestion |
126| `autocomplete:dismiss` | Escape | Dismiss menu |
127| `autocomplete:previous` | Up | Previous suggestion |
128| `autocomplete:next` | Down | Next suggestion |
123| Action | Default | Description |
124| :- | :- | :- |
125| `autocomplete:accept` | Tab | Accept suggestion |
126| `autocomplete:dismiss` | Escape | Dismiss menu |
127| `autocomplete:previous` | Up | Previous suggestion |
128| `autocomplete:next` | Down | Next suggestion |
129129
130130### Confirmation actions
131131
132132Actions available in the `Confirmation` context:
133133
134| Action | Default | Description |
135| :---------------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
136| `confirm:yes` | Enter | Confirm action |
137| `confirm:no` | Escape | Decline action |
138| `confirm:previous` | Up | Previous option |
139| `confirm:next` | Down | Next option |
140| `confirm:nextField` | Tab | Next field |
141| `confirm:previousField` | (unbound) | Previous field |
142| `confirm:toggle` | Space | Toggle selection |
143| `confirm:cycleMode` | Shift+Tab\* | Cycle permission modes. On a file permission prompt, closes an open [comment field](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt); with no field open, selects the option that allows the action for the rest of the session, when the prompt offers that option |
134| Action | Default | Description |
135| :- | :- | :- |
136| `confirm:yes` | Enter | Confirm action |
137| `confirm:no` | Escape | Decline action |
138| `confirm:previous` | Up | Previous option |
139| `confirm:next` | Down | Next option |
140| `confirm:nextField` | Tab | Next field |
141| `confirm:previousField` | (unbound) | Previous field |
142| `confirm:toggle` | Space | Toggle selection |
143| `confirm:cycleMode` | Shift+Tab\* | Cycle permission modes. On a file permission prompt, closes an open [comment field](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt); with no field open, selects the option that allows the action for the rest of the session, when the prompt offers that option |
144144
145145\*On Windows without VT mode (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), defaults to Meta+M.
146146
from line 174
174174
175175Actions available in the `Confirmation` context for permission dialogs:
176176
177| Action | Default | Description |
178| :----------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------ |
177| Action | Default | Description |
178| :- | :- | :- |
179179| `permission:toggleDebug` | (unbound) | Toggle permission debug info. The previous default of Ctrl+D was removed in v2.1.146 because it shadowed `app:exit` |
180180
181181### Transcript actions
182182
183183Actions available in the `Transcript` context:
184184
185| Action | Default | Description |
186| :------------------------- | :---------------- | :---------------------- |
187| `transcript:toggleShowAll` | Ctrl+E | Toggle show all content |
188| `transcript:exit` | q, Ctrl+C, Escape | Exit transcript view |
185| Action | Default | Description |
186| :- | :- | :- |
187| `transcript:toggleShowAll` | Ctrl+E | Toggle show all content |
188| `transcript:exit` | q, Ctrl+C, Escape | Exit transcript view |
189189
190190`transcript:toggleShowAll` applies in the classic renderer only; in [fullscreen rendering](/docs/en/fullscreen), the transcript viewer doesn't offer a show-all toggle.
191191
from line 193
193193
194194Actions available in the `HistorySearch` context:
195195
196| Action | Default | Description |
197| :------------------------- | :---------- | :---------------------------------------- |
198| `historySearch:next` | Ctrl+R | Next match |
199| `historySearch:accept` | Escape, Tab | Accept selection |
200| `historySearch:cancel` | Ctrl+C | Cancel search |
201| `historySearch:execute` | Enter | Execute selected command |
202| `historySearch:cycleScope` | Ctrl+S | Cycle scope: session, project, everywhere |
196| Action | Default | Description |
197| :- | :- | :- |
198| `historySearch:next` | Ctrl+R | Next match |
199| `historySearch:accept` | Escape, Tab | Accept selection |
200| `historySearch:cancel` | Ctrl+C | Cancel search |
201| `historySearch:execute` | Enter | Execute selected command |
202| `historySearch:cycleScope` | Ctrl+S | Cycle scope: session, project, everywhere |
203203
204204The `historySearch:next`, `historySearch:accept`, `historySearch:cancel`, and `historySearch:execute` defaults apply to the inline history search in the classic renderer, which always searches prompts from all projects. `historySearch:cycleScope` takes effect only in [fullscreen rendering](/docs/en/fullscreen), where `Ctrl+R` opens a search dialog instead and `Ctrl+S` cycles its scope. The dialog's other keys are fixed and can't be rebound: `Enter` or `Tab` places the highlighted match in the prompt input and `Esc` cancels.
205205
from line 207
207207
208208Actions available in the `Task` context:
209209
210| Action | Default | Description |
211| :---------------- | :-------------------- | :------------------------------------------------------------------------------- |
210| Action | Default | Description |
211| :- | :- | :- |
212212| `task:background` | Ctrl+B, Ctrl+X Ctrl+B | Background current task. The Ctrl+X Ctrl+B chord avoids the tmux prefix conflict |
213213
214214### Theme actions
215215
216216Actions available in the `ThemePicker` context:
217217
218| Action | Default | Description |
219| :------------------------------- | :------ | :------------------------- |
220| `theme:toggleSyntaxHighlighting` | Ctrl+T | Toggle syntax highlighting |
218| Action | Default | Description |
219| :- | :- | :- |
220| `theme:toggleSyntaxHighlighting` | Ctrl+T | Toggle syntax highlighting |
221221
222222### Help actions
223223
224224Actions available in the `Help` context:
225225
226| Action | Default | Description |
227| :------------- | :------ | :-------------- |
228| `help:dismiss` | Escape | Close help menu |
226| Action | Default | Description |
227| :- | :- | :- |
228| `help:dismiss` | Escape | Close help menu |
229229
230230### Tabs actions
231231
232232Actions available in the `Tabs` context:
233233
234| Action | Default | Description |
235| :-------------- | :-------------- | :----------- |
236| `tabs:next` | Tab, Right | Next tab |
234| Action | Default | Description |
235| :- | :- | :- |
236| `tabs:next` | Tab, Right | Next tab |
237237| `tabs:previous` | Shift+Tab, Left | Previous tab |
238238
239239In a tabbed dialog, `tabs:next` and `tabs:previous` switch tabs while the tab row has focus. In some dialogs, such as `/help` and `/sandbox`, the tab-switching keys also work from inside the tab's content.
from line 244
244244
245245Actions available in the `Attachments` context:
246246
247| Action | Default | Description |
248| :--------------------- | :---------------- | :------------------------- |
249| `attachments:next` | Right | Next attachment |
250| `attachments:previous` | Left | Previous attachment |
251| `attachments:remove` | Backspace, Delete | Remove selected attachment |
252| `attachments:exit` | Down, Escape | Exit attachment navigation |
247| Action | Default | Description |
248| :- | :- | :- |
249| `attachments:next` | Right | Next attachment |
250| `attachments:previous` | Left | Previous attachment |
251| `attachments:remove` | Backspace, Delete | Remove selected attachment |
252| `attachments:exit` | Down, Escape | Exit attachment navigation |
253253
254254### Footer actions
255255
256256Actions available in the `Footer` context:
257257
258| Action | Default | Description |
259| :---------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
260| `footer:next` | Right | Next footer item |
261| `footer:previous` | Left | Previous footer item |
262| `footer:up` | Up | Navigate up in footer (deselects at top) |
263| `footer:down` | Down | Navigate down in footer |
264| `footer:openSelected` | Enter | Open selected footer item |
265| `footer:clearSelection` | Escape | Clear footer selection |
266| `footer:dismiss` | (unbound) | Removed in v2.1.281. A `keybindings.json` that still names the action remains valid, and the binding does nothing. Before v2.1.281, Backspace and Delete dismissed the selected artifact link from the footer |
258| Action | Default | Description |
259| :- | :- | :- |
260| `footer:next` | Right | Next footer item |
261| `footer:previous` | Left | Previous footer item |
262| `footer:up` | Up | Navigate up in footer (deselects at top) |
263| `footer:down` | Down | Navigate down in footer |
264| `footer:openSelected` | Enter | Open selected footer item |
265| `footer:clearSelection` | Escape | Clear footer selection |
266| `footer:dismiss` | (unbound) | Removed in v2.1.281. A `keybindings.json` that still names the action remains valid, and the binding does nothing. Before v2.1.281, Backspace and Delete dismissed the selected artifact link from the footer |
267267
268268While a footer item is selected, such as a row in the agent panel below the prompt, `Enter` opens it even when you rebind `Enter` in the `Chat` context to `chat:queueSubmit` or `chat:newline`.
269269
from line 294
294294
295295Actions available in the `DiffDialog` context:
296296
297| Action | Default | Description |
298| :-------------------- | :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |
299| `diff:dismiss` | Escape | Close diff viewer; from the detail view, returns to the file list instead |
300| `diff:previousSource` | Left | Previous diff source |
301| `diff:nextSource` | Right | Next diff source |
302| `diff:previousFile` | Up, K | Previous file in the file list; scroll up one line in the detail view |
303| `diff:nextFile` | Down, J | Next file in the file list; scroll down one line in the detail view |
304| `diff:back` | (unbound) | Go back in diff viewer. Escape performs the back action via `diff:dismiss`. The previous default of Left in the detail view was removed in v2.1.203 |
297| Action | Default | Description |
298| :- | :- | :- |
299| `diff:dismiss` | Escape | Close diff viewer; from the detail view, returns to the file list instead |
300| `diff:previousSource` | Left | Previous diff source |
301| `diff:nextSource` | Right | Next diff source |
302| `diff:previousFile` | Up, K | Previous file in the file list; scroll up one line in the detail view |
303| `diff:nextFile` | Down, J | Next file in the file list; scroll down one line in the detail view |
304| `diff:back` | (unbound) | Go back in diff viewer. Escape performs the back action via `diff:dismiss`. The previous default of Left in the detail view was removed in v2.1.203 |
305305
306306The file list also responds to the [Select actions](#select-actions), through their default keys and your `Select` bindings. `select:previous` and `select:next` move to the previous and next file, and `Enter` opens the selected file's diff through `select:accept`. To change one of those keys for the file list alone, bind the Select action in a `DiffDialog` block.
307307
from line 309
309309
310310The diff detail view also binds pager-style keys to the standard [scroll actions](#scroll-actions). These bindings are part of the `DiffDialog` context and apply only in the detail view; the `Scroll` context defaults listed under [Scroll actions](#scroll-actions) are unchanged.
311311
312| Action | Default | Description |
313| :-------------------- | :------------- | :-------------------------- |
314| `scroll:pageUp` | PageUp | Scroll up half a viewport |
315| `scroll:pageDown` | PageDown | Scroll down half a viewport |
316| `scroll:fullPageUp` | Shift+Space, B | Scroll up a full viewport |
317| `scroll:fullPageDown` | Space | Scroll down a full viewport |
318| `scroll:top` | G, Home | Jump to the top |
319| `scroll:bottom` | Shift+G, End | Jump to the bottom |
312| Action | Default | Description |
313| :- | :- | :- |
314| `scroll:pageUp` | PageUp | Scroll up half a viewport |
315| `scroll:pageDown` | PageDown | Scroll down half a viewport |
316| `scroll:fullPageUp` | Shift+Space, B | Scroll up a full viewport |
317| `scroll:fullPageDown` | Space | Scroll down a full viewport |
318| `scroll:top` | G, Home | Jump to the top |
319| `scroll:bottom` | Shift+G, End | Jump to the bottom |
320320
321321### Diff panel actions
322322
323323Actions for the [diff panel](/docs/en/interactive-mode#diff-panel) that `/diff` opens in fullscreen rendering. `app:cycleDiffBase` is in the `DiffPanel` context, which is active while the panel is open; the others are `Global`. The panel requires Claude Code v2.1.260 or later.
324324
325| Action | Default | Description |
326| :-------------------------- | :------------------- | :------------------------------------------------------------------------ |
327| `app:toggleReplTab` | (unbound) | Open or close the diff panel, the same as running `/diff` |
328| `app:cycleDiffBase` | Ctrl+X B | Cycle the panel's comparison base: this session, uncommitted, then branch |
329| `app:diffFileListUp` | Ctrl+Up, Meta+Up | Scroll the panel's file list up when it overflows |
330| `app:diffFileListDown` | Ctrl+Down, Meta+Down | Scroll the panel's file list down when it overflows |
331| `app:toggleDiffNoiseFilter` | (unbound) | Show or hide test and generated files in the panel |
332| `app:toggleDiffPreSession` | (unbound) | Expand or collapse the changes from before this session |
325| Action | Default | Description |
326| :- | :- | :- |
327| `app:toggleReplTab` | (unbound) | Open or close the diff panel, the same as running `/diff` |
328| `app:cycleDiffBase` | Ctrl+X B | Cycle the panel's comparison base: this session, uncommitted, then branch |
329| `app:diffFileListUp` | Ctrl+Up, Meta+Up | Scroll the panel's file list up when it overflows |
330| `app:diffFileListDown` | Ctrl+Down, Meta+Down | Scroll the panel's file list down when it overflows |
331| `app:toggleDiffNoiseFilter` | (unbound) | Show or hide test and generated files in the panel |
332| `app:toggleDiffPreSession` | (unbound) | Expand or collapse the changes from before this session |
333333
334334### Model picker actions
335335
336336Actions available in the `ModelPicker` context:
337337
338| Action | Default | Description |
339| :---------------------------- | :------ | :------------------------------------------- |
340| `modelPicker:decreaseEffort` | Left | Decrease effort level |
341| `modelPicker:increaseEffort` | Right | Increase effort level |
342| `modelPicker:thisSessionOnly` | s | Apply highlighted model to this session only |
338| Action | Default | Description |
339| :- | :- | :- |
340| `modelPicker:decreaseEffort` | Left | Decrease effort level |
341| `modelPicker:increaseEffort` | Right | Increase effort level |
342| `modelPicker:thisSessionOnly` | s | Apply highlighted model to this session only |
343343
344344### Effort slider actions
345345
346Actions available in the `EffortSlider` context, the slider that opens when you run `/effort` with no arguments. The slider's Left, Right, Enter, and Escape keys can't be rebound.
347
348| Action | Default | Description |
349| :----------------------------- | :------ | :---------------------------------------------------------------------------------------------------------------------- |
350| `effortSlider:thisSessionOnly` | s | Apply the focused [effort level](/docs/en/model-config#adjust-effort-level) to this session only. Requires v2.1.257 or later |
346Actions available in the `EffortSlider` context, the slider that opens when you run `/effort` with no arguments. The slider's Enter and Escape keys can't be rebound.
347
348| Action | Default | Description |
349| :- | :- | :- |
350| `effortSlider:decreaseEffort` | Left | Move the slider to the next lower effort level. Requires v2.1.284 or later |
351| `effortSlider:increaseEffort` | Right | Move the slider to the next higher effort level. Requires v2.1.284 or later |
352| `effortSlider:toggleUltracode` | Tab | Turn [ultracode](/docs/en/workflows#let-claude-decide-with-ultracode) on or off for this session, when the slider [offers it](/docs/en/model-config#when-ultracode-is-available). Requires v2.1.284 or later |
353| `effortSlider:thisSessionOnly` | s | Apply the focused [effort level](/docs/en/model-config#adjust-effort-level) to this session only. Requires v2.1.257 or later |
351354
352355### Select actions
353356
354357Actions available in the `Select` context:
355358
356| Action | Default | Description |
357| :---------------- | :-------------- | :---------------------------- |
358| `select:next` | Down, J, Ctrl+N | Next option |
359| `select:previous` | Up, K, Ctrl+P | Previous option |
360| `select:pageUp` | PageUp | Move up one page of options |
361| `select:pageDown` | PageDown | Move down one page of options |
362| `select:first` | Home | First option |
363| `select:last` | End | Last option |
364| `select:accept` | Enter | Accept selection |
365| `select:cancel` | Escape | Cancel selection |
359| Action | Default | Description |
360| :- | :- | :- |
361| `select:next` | Down, J, Ctrl+N | Next option |
362| `select:previous` | Up, K, Ctrl+P | Previous option |
363| `select:pageUp` | PageUp | Move up one page of options |
364| `select:pageDown` | PageDown | Move down one page of options |
365| `select:first` | Home | First option |
366| `select:last` | End | Last option |
367| `select:accept` | Enter | Accept selection |
368| `select:cancel` | Escape | Cancel selection |
366369
367370In list panels such as `/skills` and `/mcp`, Claude Code applies your `select:pageUp`, `select:pageDown`, `select:first`, and `select:last` bindings. In most other lists, such as the `/model` picker, your `select:first` and `select:last` bindings apply. PageUp and PageDown page through the options in those lists regardless of your bindings.
368371
from line 375
372375
373376Actions available in the `Plugin` context:
374377
375| Action | Default | Description |
376| :---------------- | :------ | :------------------------------------------------------------------------- |
377| `plugin:toggle` | Space | Toggle plugin selection |
378| `plugin:install` | I | Install selected plugins |
379| `plugin:favorite` | F | Favorite the selected plugin so it sorts near the top of the Installed tab |
378| Action | Default | Description |
379| :- | :- | :- |
380| `plugin:toggle` | Space | Toggle plugin selection |
381| `plugin:install` | I | Install selected plugins |
382| `plugin:favorite` | F | Favorite the selected plugin so it sorts near the top of the Installed tab |
380383
381384### Settings actions
382385
383386Actions available in the `Settings` context. The `select:accept` and `confirm:no` actions are reused from the [Select](#select-actions) and [Confirmation](#confirmation-actions) contexts with Settings-specific behavior: changes apply to each setting as soon as you change it, so Escape closes the panel with your changes saved rather than declining.
384387
385| Action | Default | Description |
386| :---------------- | :----------- | :---------------------------------------------- |
387| `settings:search` | / | Enter search mode |
388| `settings:retry` | R | Retry loading usage data on error |
389| `select:accept` | Enter, Space | Change the selected setting or open its submenu |
390| `confirm:no` | Escape | Close the panel. Changes are already saved |
388| Action | Default | Description |
389| :- | :- | :- |
390| `settings:search` | / | Enter search mode |
391| `settings:retry` | R | Retry loading usage data on error |
392| `select:accept` | Enter, Space | Change the selected setting or open its submenu |
393| `confirm:no` | Escape | Close the panel. Changes are already saved |
391394
392395### Agents actions
393396
394397Actions available in the `Agents` context, which applies in [agent view](/docs/en/agent-view), opened with `claude agents`. Requires v2.1.257 or later.
395398
396| Action | Default | Description |
397| :------------------ | :------ | :-------------------------------------------------------------------------------------- |
398| `agents:switchView` | Ctrl+S | Switch [session grouping](/docs/en/agent-view#organize-the-list) between state and directory |
399| `agents:togglePin` | Ctrl+T | [Pin or unpin](/docs/en/agent-view#organize-the-list) the selected session |
399| Action | Default | Description |
400| :- | :- | :- |
401| `agents:switchView` | Ctrl+S | Switch [session grouping](/docs/en/agent-view#organize-the-list) between state and directory |
402| `agents:togglePin` | Ctrl+T | [Pin or unpin](/docs/en/agent-view#organize-the-list) the selected session |
400403
401404While agent view is open, Claude Code uses the `Agents` binding for any key the `Agents` context binds, and it ignores a `Chat` or `Global` binding on the same key. For example, pressing Ctrl+S in agent view switches the session grouping rather than triggering the default `chat:stash`.
402405
from line 411
408411
409412Actions available in the `Chat` context when [voice dictation](/docs/en/voice-dictation) is enabled:
410413
411| Action | Default | Description |
412| :----------------- | :------ | :------------------------------------------------------- |
413| `voice:pushToTalk` | Space | Dictate a prompt. Hold or tap depending on `/voice` mode |
414| Action | Default | Description |
415| :- | :- | :- |
416| `voice:pushToTalk` | Space | Dictate a prompt. Hold or tap depending on `/voice` mode |
414417
415418### Scroll actions
416419
417420Actions available in the `Scroll` context when [fullscreen rendering](/docs/en/fullscreen) is enabled:
418421
419| Action | Default | Description |
420| :-------------------------- | :------------------- | :-------------------------------------------------------------------------------------------------------- |
421| `scroll:lineUp` | `wheelup` | Scroll up one line. Mouse wheel scrolling triggers this action |
422| `scroll:lineDown` | `wheeldown` | Scroll down one line. Mouse wheel scrolling triggers this action |
423| `scroll:pageUp` | PageUp | Scroll up half the viewport height |
424| `scroll:pageDown` | PageDown | Scroll down half the viewport height |
425| `scroll:top` | Ctrl+Home | Jump to the start of the conversation |
426| `scroll:bottom` | Ctrl+End | Jump to the latest message and re-enable auto-follow |
427| `scroll:halfPageUp` | (unbound) | Scroll up half the viewport height. Same behavior as `scroll:pageUp`, provided for vi-style rebinds |
428| `scroll:halfPageDown` | (unbound) | Scroll down half the viewport height. Same behavior as `scroll:pageDown`, provided for vi-style rebinds |
429| `scroll:fullPageUp` | (unbound) | Scroll up the full viewport height |
430| `scroll:fullPageDown` | (unbound) | Scroll down the full viewport height |
431| `selection:copy` | Ctrl+Shift+C / Cmd+C | Copy the selected text to the clipboard |
432| `selection:clear` | (unbound) | Clear the active text selection. Requires v2.1.234 or later |
433| `selection:extendLeft` | Shift+Left | Extend the active selection one column left |
434| `selection:extendRight` | Shift+Right | Extend the active selection one column right |
435| `selection:extendUp` | Shift+Up | Extend the active selection one row up. Scrolls the viewport when the selection reaches the top edge |
436| `selection:extendDown` | Shift+Down | Extend the active selection one row down. Scrolls the viewport when the selection reaches the bottom edge |
437| `selection:extendLineStart` | Shift+Home | Extend the active selection to the start of the line |
438| `selection:extendLineEnd` | Shift+End | Extend the active selection to the end of the line |
422| Action | Default | Description |
423| :- | :- | :- |
424| `scroll:lineUp` | `wheelup` | Scroll up one line. Mouse wheel scrolling triggers this action |
425| `scroll:lineDown` | `wheeldown` | Scroll down one line. Mouse wheel scrolling triggers this action |
426| `scroll:pageUp` | PageUp | Scroll up half the viewport height |
427| `scroll:pageDown` | PageDown | Scroll down half the viewport height |
428| `scroll:top` | Ctrl+Home | Jump to the start of the conversation |
429| `scroll:bottom` | Ctrl+End | Jump to the latest message and re-enable auto-follow |
430| `scroll:halfPageUp` | (unbound) | Scroll up half the viewport height. Same behavior as `scroll:pageUp`, provided for vi-style rebinds |
431| `scroll:halfPageDown` | (unbound) | Scroll down half the viewport height. Same behavior as `scroll:pageDown`, provided for vi-style rebinds |
432| `scroll:fullPageUp` | (unbound) | Scroll up the full viewport height |
433| `scroll:fullPageDown` | (unbound) | Scroll down the full viewport height |
434| `selection:copy` | Ctrl+Shift+C / Cmd+C | Copy the selected text to the clipboard |
435| `selection:clear` | (unbound) | Clear the active text selection. Requires v2.1.234 or later |
436| `selection:extendLeft` | Shift+Left | Extend the active selection one column left |
437| `selection:extendRight` | Shift+Right | Extend the active selection one column right |
438| `selection:extendUp` | Shift+Up | Extend the active selection one row up. Scrolls the viewport when the selection reaches the top edge |
439| `selection:extendDown` | Shift+Down | Extend the active selection one row down. Scrolls the viewport when the selection reaches the bottom edge |
440| `selection:extendLineStart` | Shift+Home | Extend the active selection to the start of the line |
441| `selection:extendLineEnd` | Shift+End | Extend the active selection to the end of the line |
439442
440443## Keystroke syntax
441444
from line 559
556559
557560These shortcuts cannot be rebound:
558561
559| Shortcut | Reason |
560| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
561| Ctrl+C | Hardcoded interrupt/cancel |
562| Ctrl+D | Hardcoded exit |
563| Ctrl+M | Claude Code always receives it as Enter |
564| Ctrl+\[ | Claude Code always receives it as Escape. In terminals that use the Kitty keyboard protocol, this requires v2.1.242 or later |
565| Ctrl+I | Claude Code always receives it as Tab |
566| Ctrl+H | Sends the ASCII backspace byte. [How Claude Code reads it on Windows](/docs/en/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) depends on your terminal and the [`CLAUDE_CODE_BS_AS_CTRL_BACKSPACE`](/docs/en/env-vars) environment variable |
567| Caps Lock | Not delivered to terminal applications |
562| Shortcut | Reason |
563| :- | :- |
564| Ctrl+C | Hardcoded interrupt/cancel |
565| Ctrl+D | Hardcoded exit |
566| Ctrl+M | Claude Code always receives it as Enter |
567| Ctrl+\[ | Claude Code always receives it as Escape. In terminals that use the Kitty keyboard protocol, this requires v2.1.242 or later |
568| Ctrl+I | Claude Code always receives it as Tab |
569| Ctrl+H | Sends the ASCII backspace byte. [How Claude Code reads it on Windows](/docs/en/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) depends on your terminal and the [`CLAUDE_CODE_BS_AS_CTRL_BACKSPACE`](/docs/en/env-vars) environment variable |
570| Caps Lock | Not delivered to terminal applications |
568571
569572## Terminal conflicts
570573
571574Some shortcuts may conflict with terminal multiplexers:
572575
573| Shortcut | Conflict |
574| :------- | :-------------------------------- |
575| Ctrl+B | tmux prefix (press twice to send) |
576| Ctrl+A | GNU screen prefix |
577| Ctrl+Z | Unix process suspend (SIGTSTP) |
576| Shortcut | Conflict |
577| :- | :- |
578| Ctrl+B | tmux prefix (press twice to send) |
579| Ctrl+A | GNU screen prefix |
580| Ctrl+Z | Unix process suspend (SIGTSTP) |
578581
579582## Text fields
580583
581584
No line in this hunk matches that.