claude-code - 💡(How to fix) Fix Make /effort auto context-adaptive (currently it just resolves to the model's static default)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Root Cause

Default /effort xhigh on Opus 4.7 produces ~89% of output_tokens in extended thinking blocks (measured locally over 4 weeks of mixed coding sessions by parsing ~/.claude/projects/*/*.jsonl and estimating thinking share from the gap between reported output_tokens and the visible characters in text + tool_use blocks of each assistant message).

For users running mixed workloads — complex debugging in one session, mechanical Jira/email/log updates in another — the static default systematically overspends on routine work.

Per-session /effort is now correctly isolated as of v2.1.133 (thanks for that fix!), but users still need to manually adjust before each task, which in practice nobody does consistently.

RAW_BUFFERClick to expand / collapse

Background

/effort auto already exists as a documented option (see model-config docs), but its current semantics are minimal: it resets the session effort to the model's hardcoded default — xhigh on Opus 4.7, high on Opus 4.6 / Sonnet 4.6. The user-visible behavior is identical to setting /effort xhigh (on Opus 4.7), making the keyword effectively redundant.

Why this matters

Default /effort xhigh on Opus 4.7 produces ~89% of output_tokens in extended thinking blocks (measured locally over 4 weeks of mixed coding sessions by parsing ~/.claude/projects/*/*.jsonl and estimating thinking share from the gap between reported output_tokens and the visible characters in text + tool_use blocks of each assistant message).

For users running mixed workloads — complex debugging in one session, mechanical Jira/email/log updates in another — the static default systematically overspends on routine work.

Per-session /effort is now correctly isolated as of v2.1.133 (thanks for that fix!), but users still need to manually adjust before each task, which in practice nobody does consistently.

Proposal

Re-purpose /effort auto to mean "Claude Code adapts effort per turn based on the current prompt and recent conversation context", instead of "reset to model default".

Concrete suggestion:

  • When the session is in auto mode, Claude Code uses a lightweight classifier (heuristic, small model, or letting Opus self-classify the request) to pick one of low / medium / high / xhigh for the current turn.
  • The classification could weight signals like: recent turns (mechanical edits → low), presence of ambiguous design questions in the prompt (→ high), pasted code blocks for analysis (→ high), simple slash-command invocations (→ low), prompt length, etc.
  • The current static "use model default" behavior could move under a new keyword (e.g. /effort default) or be deprecated.

The hooks API in v2.1.133 already exposes effort.level to UserPromptSubmit hooks, but those hooks cannot return a new level — they're read-only for effort. A user-space implementation of this feature is therefore not possible today, which is why this needs to be in Claude Code core (or via a new hook output field — see alternative below).

Impact

For users on Opus 4.7 with mixed workloads, this could realistically halve session cost without any quality regression on tasks that genuinely need high effort (those would still classify as high/xhigh).

Alternative if the existing auto semantics need to stay

Add effort as a valid output field in UserPromptSubmit hook JSON (alongside the existing decision, reason, additionalContext, sessionTitle). That alone would let users write their own classifier as a hook and keep /effort auto as-is. Would also be the smaller-scope change.

Environment

  • Claude Code v2.1.133, Windows 11
  • Opus 4.7 with 1M context, daily mixed-workload usage

Thanks!

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix Make /effort auto context-adaptive (currently it just resolves to the model's static default)