[FEATURE] Expose session navigation as bindable actions in keybindings.json

Resolved 💬 2 comments Opened Apr 9, 2026 by harshita-gupta Closed May 22, 2026

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:

  1. Type /resume and navigate interactively, or
  2. Ctrl+R to 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

  • /resume shortcut: 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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗