[FEATURE] Add chat:cycleEffort / chat:increaseEffort / chat:decreaseEffort actions for single-key effort switching

Status Open
Maintainer reply None cached
Activity 7 comments · opened May 23, 2026

Preflight Checklist

  • [x] I have searched existing requests — this has been filed three times before but all instances were auto-closed by the stale bot without maintainer review.
  • [x] This is a single feature request.

Problem Statement

There is no global keybinding action to change reasoning effort level from the chat input. The existing modelPicker:increaseEffort / modelPicker:decreaseEffort actions only fire inside the ModelPicker context — i.e., only after the picker is already open via cmd+p. This forces a minimum 3-keystroke flow (cmd+p, →, enter) for what should be a single-key adjustment.

The /effort slash command works but requires typing and can't be bound to a hotkey.

Proposed Solution

Add three new actions in the Chat context that mirror the existing chat:cycleMode pattern (which already provides single-key mode cycling via shift+tab):

| Action | Behavior |
|---|---|
| chat:cycleEffort | Cycle through effort levels (low → medium → high → max → low) |
| chat:increaseEffort | Bump effort up one level (clamped at max) |
| chat:decreaseEffort | Bump effort down one level (clamped at low) |

Users could then bind whatever keys fit their terminal:

{
  "context": "Chat",
  "bindings": {
    "ctrl+shift+e": "chat:cycleEffort"
  }
}

This is a small surface-area addition — the underlying state mutation already exists (the model picker uses it, and /effort invokes it). Just expose it as Chat-context actions.

Alternative Solutions

  • /effort slash command — works, but not bindable to a hotkey.
  • cmd+p → arrow → enter — three keystrokes, breaks flow for power users adjusting mid-session.
  • Terminal-side macro (e.g., Warp custom shortcut that types the keystroke sequence) — fragile; depends on terminal product and doesn't survive switching terminals.

Prior Art (please don't auto-close as duplicate of locked issues)

This has been requested multiple times. All prior issues were auto-closed by the stale bot without any maintainer response, and are now locked so further signal can't accumulate on them:

  • #31519 — canonical request, auto-closed as not_planned due to inactivity, then locked. 4 👍, no maintainer reply.
  • #41160 — duplicate-closed into #31519
  • #49257 — duplicate-closed into #41160
  • #32735 — duplicate-closed; specifically asks for Option+1/2/3 direct-set bindings
  • Related: #38966 (single-key model cycling), #50323 (mode-aware effort)

Filing fresh because the locked issues can no longer collect 👍s or comments. Recurring asks from independent users across ~3 months is signal.

Priority

Medium — productivity papercut for power users who adjust effort frequently. Comparable to chat:cycleMode which already has the exact pattern.

Feature Category

Interactive mode (TUI) — keybindings

Use Case

Power users (especially those running Opus 4.7 at varying effort tiers) frequently dial effort up for hard architectural questions and back down for quick edits. The current 3-keystroke picker flow is slow enough that many users either (a) stay at one effort all session, or (b) use /effort which breaks the input flow. A single-key cycle would make effort switching as fast as mode switching is today via shift+tab.

View original on GitHub ↗

5 Comments

github-actions[bot] · 4 months ago

Found 1 possible duplicate issue:

  1. https://github.com/anthropics/claude-code/issues/50843

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

gpk00 · 4 months ago

👎 to the duplicate suggestion — #50843 is not a separate prior issue; it's itself part of the chain this filing already cites. Per its own comment thread, #50843 was auto-flagged as a duplicate of #49257 / #31519 / #41160 (the exact issues listed in this filing's "Prior Art" section) and locked without any maintainer response.

So the count is now five independent users filing the same request over ~3 months, with the stale bot auto-closing each one and locking the thread before any human review:

  1. #31519 (canonical, not_planned via inactivity)
  2. #41160 (closed as duplicate of #31519)
  3. #50843 (closed as completed — but per its own thread it was just another duplicate of the same chain)
  4. #49257 (closed as duplicate of #41160)
  5. #61904 (this issue)

This pattern itself is the signal: when the same small UX gap keeps getting filed independently and the only response is auto-closure, the triage process is filtering out a real recurring ask. Please leave this one open long enough for a maintainer to look.

PaulRBerg · 3 months ago

Posting solely to keep this open — this comment exists only to prevent the stale bot from auto-closing the thread, since #61904 is the last remaining issue in this chain that can still accumulate 👍s and comments.

For context, I filed the canonical version of this request back in March (#31519). It was auto-closed as not_planned for inactivity and then locked, despite multiple +1s and no maintainer reply. The same thing happened to every subsequent instance (#41160, #49257, #50843, #32735) — five independent users, one real ask, now scattered across five locked duplicates.

@anthropics team: please consider disabling (or substantially loosening) the stale-bot auto-close for enhancement issues. Auto-closing valid feature requests before any human triage doesn't shrink the backlog — it fragments a single recurring request into a pile of locked duplicates and makes the issue board considerably messier to search and reason about. "Stale" is not the same as "resolved" or "unwanted," and locking the threads means the signal can't even consolidate in one place.

NubeBuster · 2 months ago

I am slightly disturbed this is still not added...

NubeBuster · 22 days ago

Not stale

Showing cached comments. Read the full discussion on GitHub ↗