Claude Code is Anthropic's official AI coding agent, used by developers at companies from startups to Fortune 500. Learn more →
Claude Code FeaturesClaude Code Keyboard Shortcuts: Complete Guide
Stop clicking through menus. Learn the keyboard shortcuts that make Claude Code faster, from essential commands everyone should know to custom keybindings for power users.
The five essential Claude Code shortcuts are Shift+Tab to cycle permission modes, Ctrl+C to cancel, Ctrl+D to exit, Esc to interrupt a response, and @ to reference files. Beyond these, Claude Code has dozens more for navigation, model switching, and session control.
This guide covers every keyboard shortcut organized by category, the five you should memorize first, and how to create custom keybindings that match your workflow.
What Are Claude Code Shortcuts?
Claude Code keyboard shortcuts are key combinations that trigger actions instantly. They work in the terminal interface and fall into several categories:
- Session control: Cancel operations, exit, manage background tasks
- Mode switching: Cycle through permission modes
- Navigation: History, autocomplete, file references
- Configuration: Model picker, theme, settings
Some shortcuts are fixed (like Ctrl+C to cancel), while others can be customized to match your preferences.
The 5 Essential Shortcuts
If you learn nothing else, memorize these five:
Shift+Tab
Cycle through permission modes: Normal, Auto-Accept, Plan. This is the single most important shortcut. It controls whether Claude asks before editing, auto-approves edits, or operates in read-only mode.
Ctrl+C
Cancel the current operation. If Claude is running a command, analyzing files, or generating a response, this stops it immediately.
Ctrl+D
Exit Claude Code entirely. This ends your session and returns you to your regular terminal.
Cmd+P (Mac) / Meta+P
Open the model picker. Switch between Sonnet, Opus, and Haiku, and adjust the thinking effort level.
Ctrl+R
Open history search. Find and re-run previous commands from your session history.
Complete Shortcut Reference
Session Control
| Shortcut | Action | Notes |
|---|---|---|
Ctrl+C |
Cancel/interrupt | Cannot be rebound |
Ctrl+D |
Exit Claude Code | Cannot be rebound |
Ctrl+T |
Toggle task list | Show/hide background tasks |
Ctrl+O |
Toggle transcript | Show verbose output |
Ctrl+B |
Background task | Send current task to background |
Mode Switching
| Shortcut | Action | Notes |
|---|---|---|
Shift+Tab |
Cycle permission modes | Normal, Auto-Accept, Plan |
Cmd+T / Meta+T |
Toggle thinking mode | Extended reasoning on/off |
Cmd+P / Meta+P |
Open model picker | Change model and effort |
Windows note: On Windows without VT mode (Node <24.2.0/<22.17.0, Bun <1.2.23), mode switching defaults to Meta+M instead of Shift+Tab.
Model Picker Controls
When the model picker is open (Cmd+P), use arrow keys to adjust the effort level slider:
| Shortcut | Action | Notes |
|---|---|---|
Left |
Decrease effort level | Low = faster, cheaper |
Right |
Increase effort level | High = deeper reasoning |
Effort levels (low, medium, high) control Opus 4.6's adaptive reasoning. Lower effort is faster and cheaper for straightforward tasks; higher effort provides deeper reasoning for complex problems.
Chat Input
| Shortcut | Action | Notes |
|---|---|---|
Enter |
Submit message | Send your prompt to Claude |
Escape |
Cancel input | Clear current input |
Ctrl+G |
External editor | Open prompt in your editor |
Ctrl+S |
Stash prompt | Save current prompt for later |
Ctrl+V |
Paste image | Alt+V on Windows |
Ctrl+_ |
Undo | Undo last action |
History Navigation
| Shortcut | Action | Notes |
|---|---|---|
Ctrl+R |
Search history | Opens history search mode |
Up |
Previous item | Navigate history backward |
Down |
Next item | Navigate history forward |
Autocomplete
| Shortcut | Action | Notes |
|---|---|---|
Tab |
Accept suggestion | Complete the current suggestion |
Escape |
Dismiss menu | Close autocomplete |
Up |
Previous suggestion | Navigate suggestions |
Down |
Next suggestion | Navigate suggestions |
Confirmation Dialogs
| Shortcut | Action | Notes |
|---|---|---|
Y or Enter |
Confirm (Yes) | Approve the action |
N or Escape |
Decline (No) | Reject the action |
Tab |
Next field | Move between options |
Shift+Tab |
Cycle modes | Change permission mode |
Ctrl+E |
Toggle explanation | Show permission details |
Diff Viewer
| Shortcut | Action | Notes |
|---|---|---|
Escape |
Close diff | Exit diff viewer |
Left / Right |
Navigate sources | Switch between diff sources |
Up / Down |
Navigate files | Move between changed files |
Enter |
View details | Open file diff |
Mode Switching Explained
The Shift+Tab shortcut cycles through three permission modes:
| Mode | Edits | Commands | Use When |
|---|---|---|---|
| Normal | Ask | Ask | Default, review everything |
| Auto-Accept | Auto | Ask | Trust edits, verify commands |
| Plan | Blocked | Blocked | Read-only analysis |
Press Shift+Tab repeatedly to cycle: Normal, Auto-Accept, Plan, Normal...
The current mode shows in your terminal status. Watch for indicators like "auto-accept on" or "plan mode on" to confirm the switch.
I documented all my Claude Code productivity shortcuts and workflows in a free guide — it covers the full setup from installation to daily use.
Customizing Keybindings
You can customize most keyboard shortcuts to match your preferences.
Step 1: Open the Configuration File
Run /keybindings in Claude Code. This creates or opens ~/.claude/keybindings.json.
Step 2: Add Your Bindings
{
"$schema": "https://platform.claude.com/docs/schemas/claude-code/keybindings.json",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+e": "chat:externalEditor",
"ctrl+s": null
}
}
]
}
Step 3: Save
Changes apply automatically. No restart required.
Configuration Structure
The keybindings file has this structure:
- $schema: Optional schema URL for editor autocompletion
- bindings: Array of binding blocks, each with a context and key mappings
Each binding block specifies:
- context: Where the bindings apply (Chat, Global, Autocomplete, etc.)
- bindings: Object mapping keystrokes to actions
Available Contexts
| Context | Description |
|---|---|
Global |
Applies everywhere in the app |
Chat |
Main chat input area |
Autocomplete |
Autocomplete menu open |
Confirmation |
Permission and confirmation dialogs |
HistorySearch |
History search mode (Ctrl+R) |
DiffDialog |
Diff viewer navigation |
ModelPicker |
Model selection and effort level |
Task |
Background task running |
MessageSelector |
Rewind and summarize dialog |
Transcript |
Transcript viewer |
Settings |
Settings menu |
ThemePicker |
Theme picker dialog |
Attachments |
Image/attachment bar navigation |
Footer |
Footer indicator navigation |
Select |
Generic select/list components |
Plugin |
Plugin dialog (browse, manage) |
Keystroke Syntax
Modifiers connect with +:
ctrl+k- Control + Kshift+tab- Shift + Tabmeta+p- Command/Meta + Pctrl+shift+c- Multiple modifiers
Modifier names:
ctrlorcontrolalt,opt, oroptionshiftmeta,cmd, orcommand
Special keys: escape, enter, tab, space, up, down, left, right, backspace, delete
Unbinding Shortcuts
Set an action to null to unbind it:
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+s": null
}
}
]
}
Key Chords
Create multi-key sequences with spaces:
"ctrl+k ctrl+s": "chat:stash"
This requires pressing Ctrl+K, releasing, then Ctrl+S.
Real Examples
Example 1: Vim-Style Navigation
{
"bindings": [
{
"context": "MessageSelector",
"bindings": {
"k": "messageSelector:up",
"j": "messageSelector:down",
"K": "messageSelector:top",
"J": "messageSelector:bottom"
}
}
]
}
Example 2: Quick External Editor
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+e": "chat:externalEditor"
}
}
]
}
Example 3: Disable Accidental Exits
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+q": null
}
}
]
}
Reserved Shortcuts
These shortcuts cannot be rebound:
| Shortcut | Reason |
|---|---|
Ctrl+C |
Hardcoded interrupt/cancel |
Ctrl+D |
Hardcoded exit |
Terminal Conflicts
Some shortcuts may conflict with terminal multiplexers:
| Shortcut | Conflict |
|---|---|
Ctrl+B |
tmux prefix (press twice to send) |
Ctrl+A |
GNU screen prefix |
Ctrl+Z |
Unix process suspend |
Tip: If you use tmux, you may need to press Ctrl+B twice: once for tmux prefix, once for Claude Code background task.
Common Mistakes
- Forgetting Shift+Tab exists: Many people manually change modes through settings.
Shift+Tabis instant and does the same thing. - Using Ctrl+C to clear input:
Ctrl+Ccancels operations. UseEscapeto clear your input without interrupting Claude. - Not using history search:
Ctrl+Rlets you search previous prompts. Faster than scrolling or retyping. - Missing the model picker:
Cmd+Popens the model picker instantly. No need to type/model. - Invalid keybindings.json: Run
/doctorto check for keybinding errors. The file must be valid JSON.
FAQ
Why does Shift+Tab not work on Windows?
Older Node versions on Windows without VT mode use Meta+M instead. Update Node to version 24.2.0+ (or 22.17.0+) or Bun 1.2.23+ for Shift+Tab support.
Can I use vim keybindings in Claude Code?
Yes. Run /vim to enable vim mode for text editing. Vim mode handles input (cursor movement, modes), while keybindings handle app actions (submit, toggle). They work independently.
How do I reset keybindings to default?
Delete ~/.claude/keybindings.json. Claude Code returns to default shortcuts.
Do keybindings sync across machines?
No. Keybindings are stored locally in ~/.claude/keybindings.json. Copy the file to sync between machines.
Where can I see all available actions?
Actions follow the namespace:action format. Common namespaces include app:, chat:, history:, and confirm:. The official documentation lists all actions by context.
Quick Reference Card
Essential Shortcuts
Shift+Tab |
Cycle permission modes |
Ctrl+C |
Cancel operation |
Ctrl+D |
Exit Claude Code |
Cmd+P |
Model picker |
Cmd+T |
Toggle thinking |
Ctrl+R |
History search |
Ctrl+G |
External editor |
Tab |
Accept autocomplete |
Escape |
Cancel/dismiss |
Y / N |
Confirm/decline |
Ctrl+B |
Background current task |
Left / Right |
Adjust effort level (in model picker) |
Related Guides
- How to Set Up Claude Code Permissions - configure what Claude can do
- How to Use Plan Mode - read-only analysis mode
- Slash Commands in Claude Code - command reference
- What Is Claude Code? - the fundamentals
Free: The AI Growth Breakdown
See how one business went from 0 to 600 daily visitors in 14 days using AI. The exact tools and results.
Get the Free Breakdown →