Allow customizing chat:cycleMode permission mode list

Status Closed — not planned
Maintainer reply None cached
Activity 8 comments · opened Mar 9, 2026 · closed Jun 21, 2026

Feature Request

Shift+Tab (chat:cycleMode) currently cycles through only 3 hardcoded permission modes: defaultacceptEditsplan.

The dontAsk mode is excluded from the cycle and can only be set via /config or settings.json. For users who frequently switch between dontAsk and other modes during a session, this is inconvenient.

Proposal

Allow users to customize which modes chat:cycleMode includes, for example in ~/.claude/settings.json:

{
  "cycleModes": ["default", "acceptEdits", "dontAsk"]
}

Or alternatively, add a new keybinding action like chat:setMode(dontAsk) that can be bound to a specific key combo in keybindings.json.

Use Case

  • Users who work in dontAsk mode most of the time but occasionally want to switch to plan or default for review
  • The current workaround (opening /config menu) breaks flow compared to a quick Shift+Tab toggle

Environment

  • Claude Code on macOS (CLI)
  • Permission mode: dontAsk set as default in settings.json

View original on GitHub ↗

7 Comments

github-actions[bot] · 5 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/29961
  2. https://github.com/anthropics/claude-code/issues/8292
  3. https://github.com/anthropics/claude-code/issues/31448

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

rssprivacy-commits · 5 months ago

This is not a duplicate of the linked issues. Here's why:

  • #8292 / #29961 are about filtering built-in modes out of the cycle (e.g., skipping acceptEdits if you never use it). The cycle still only rotates through the hardcoded built-in modes.
  • #31448 is about the defaultMode setting not being respected when cycling — a bug/inconsistency in how the cycle interacts with config.

This issue (#32604) has a distinct proposal that none of the above cover:

A parameterized keybinding action like chat:setMode(dontAsk) that can be bound to a specific key combo in keybindings.json.

This is fundamentally different from cycle customization — it's about direct mode switching via dedicated shortcuts, bypassing the cycle entirely. For example, binding Ctrl+1default, Ctrl+2dontAsk, Ctrl+3plan — no cycling needed at all.

The configurable cycleModes array proposed here also differs from #29961 in that it allows adding modes not in the default cycle (like dontAsk), whereas #29961 only discusses removing modes from the existing set.

k-thornton · 4 months ago

This appears to be the only open issue representing what's been requested across several closed/locked issues (#8292, #15747, #31448, #35251, #43281). Upvoting to keep it visible.

My specific need is simple: I launch with "defaultMode": "dontAsk" and once I Shift+Tab out of it, I can't cycle back without restarting the session. Just including dontAsk in the default cycle is sufficient for my needs, but I understand why it would be helpful to be able to specify your own cycle + dedicated keyboard shortcuts.

Doryski · 4 months ago

+1 for this. My specific use case: I only ever want to toggle between Plan Mode and Bypass Permissions — I never use default or acceptEdits interactively. Every Shift+Tab cycle forces me through two modes I don't want, and it's easy to accidentally land on the wrong one.

A configurable cycleModes array (e.g. ["plan", "bypassPermissions"]) in settings.json would fully solve this. Dedicated shortcuts like chat:setMode(plan) would be even better, but the array alone would be a big UX win.

donataskasp · 3 months ago

+1 on this. My workflow only uses plan and bypassPermissions — cycling through the other three modes on every shift+tab adds friction with no upside. Configurable cycle list would fix it cleanly.

github-actions[bot] · 2 months ago

Closing for now — inactive for too long. Please open a new issue if this is still relevant.

tmccombs · 2 months ago

Why isn't there any warning before an issue is closed?

Showing cached comments. Read the full discussion on GitHub ↗