[FEATURE] Expose session navigation as bindable actions in keybindings.json
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
The ~/.claude/keybindings.json system is well-designed and extensible — it covers chat:*, app:*, modelPicker:*, tabs:*, history:*, and many other namespaces. But there is no session:* namespace, which means session navigation cannot be bound to a key at all.
Currently the only keyboard path to session switching in the CLI is:
- Type
/resumeand navigate interactively, or Ctrl+Rto reverse-search command history
Neither is bindable, and neither allows cycling through sessions directly like tabs in a terminal emulator or browser.
Proposed Solution
Add a session:* action namespace to the keybindings system exposing at minimum:
| Action | Description |
|---|---|
| session:next | Cycle to the next session (wraps around) |
| session:previous | Cycle to the previous session (wraps around) |
| session:picker | Open the /resume session picker directly |
This would allow users to bind session switching however they prefer in ~/.claude/keybindings.json:
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+shift+]": "session:next",
"ctrl+shift+[": "session:previous",
"ctrl+shift+r": "session:picker"
}
}
]
}
Alternative Solutions
/resumeshortcut: Allow a keybinding to invoke a named slash command directly (e.g.,"ctrl+r": "/resume"). Less precise but more general and would unblock this use case as a side effect.- Arrow navigation in session list: When the session picker is open, the list already supports arrow keys — but there's no way to open it without the mouse or typing
/resume.
Priority
Medium - Would be very helpful
Feature Category
Interactive mode (TUI)
Use Case Example
I work with several concurrent Claude Code sessions — one per feature branch, or one per project. Switching between them currently requires either reaching for the mouse (Desktop sidebar) or typing /resume and navigating the picker. With bindable session actions, I could cycle sessions with Ctrl+Shift+]/[ exactly like terminal tabs.
Additional Context
Relationship to #45690 — "Add keyboard shortcut for switching between Code sessions in Claude Desktop"
These two requests address the same pain point from different angles and are complementary, not duplicates:
| | #45690 | This issue |
|---|---|---|
| Surface | Claude Desktop GUI (Electron app) | CLI / TUI (~/.claude/keybindings.json) |
| Mechanism | System-level app keybinding (e.g., Cmd+Shift+]) navigates the Desktop sidebar | Bindable session:* TUI actions in keybindings.json |
| Config required | None — works out of the box for Desktop users | Opt-in — power users configure their own bindings |
| Who benefits | All Claude Desktop users, especially keyboard-first users | CLI users and those who already use keybindings.json customization |
They are mutually exclusive in implementation scope — the Desktop app shortcut lives in Electron and navigates a GUI sidebar; this feature lives in the terminal UI keybinding layer and doesn't exist there at all. Implementing one does not implement the other.
They are mutually beneficial without each other — a Desktop user gets value from #45690 even if this issue is never implemented; a CLI-only user gets value from this issue even if #45690 is never implemented. Together, they provide full keyboard-driven session switching across all Claude Code surfaces.
See also: #45689 — [BUG] Ctrl+V no longer works as "preview" in /resume session picker — a related regression that highlights existing investment in keyboard interactions within the session picker.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗