Keybindings: add discrete actions for setting specific permission modes (not just cycling)
Feature Request
Add individual keybinding actions for setting specific permission modes, rather than only supporting chat:cycleMode which cycles through all modes sequentially.
Requested Actions
| Proposed Action | Behavior |
|---|---|
| chat:setDefaultMode | Switch directly to "Ask before edits" |
| chat:setPlanMode | Switch directly to "Plan mode" |
| chat:setAcceptEditsMode | Switch directly to "Auto-accept edits" |
| chat:setBypassMode | Switch directly to "Bypass permissions" |
Example keybindings.json
{
"bindings": [
{
"context": "Chat",
"bindings": {
"meta+alt+z": "chat:setPlanMode",
"meta+alt+x": "chat:setBypassMode",
"meta+alt+c": "chat:setDefaultMode"
}
}
]
}
Why This Matters
Permission modes are not equal — they serve fundamentally different workflows. A developer working with Claude Code constantly shifts between modes depending on the task at hand:
- Plan mode when thinking through architecture or exploring an unfamiliar area
- Auto-accept / bypass when executing a well-understood change (e.g., "rename this variable across the codebase")
- Ask before edits as the safe default when switching context
These transitions happen dozens of times per session. Currently, the only keyboard option is Shift+Tab (chat:cycleMode), which cycles sequentially through all modes. This means:
- You can never go backwards — if you overshoot, you cycle through all remaining modes to get back
- The number of keypresses is unpredictable — depending on your current mode, reaching your target mode takes 1, 2, or 3 presses
- There's no muscle memory — you can't build a reliable "Cmd+Option+Z = Plan mode" reflex because the same key does different things depending on current state
The result is that most users fall back to clicking the mode indicator with the mouse, which breaks keyboard flow entirely. For a tool that's built around staying in the terminal/keyboard, this is a significant friction point.
Direct mode keybindings would make mode switching as fast and reliable as hitting Cmd+S to save — one keystroke, deterministic result, instant muscle memory.
Current Workarounds
chat:cycleMode— works but is sequential and unpredictable- Clicking the mode indicator in VS Code — breaks keyboard flow
- Setting
claudeCode.initialPermissionModein VS Code settings — only affects startup, not runtime switching
None of these solve the core problem of fast, deterministic, keyboard-driven mode switching during a session.
Additional Context
This would also benefit accessibility — users who rely on keyboard navigation shouldn't need to reach for the mouse to select a specific mode.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗