[FEATURE] Per-phase effort levels for opusplan (separate plan-mode and execution effort)
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
opusplan switches the model automatically at the plan boundary (planner model in plan mode, sonnet for execution), but effort level is a single session-wide value that does not switch with it. There is no way to configure e.g. "plan at low effort, execute at medium/high effort".
This matters because the two phases have opposite cost/depth profiles: with ANTHROPIC_DEFAULT_OPUS_MODEL=claude-fable-5, opusplan lets a large frontier model do the planning — where a low/medium effort is often sufficient and keeps token spend controlled — while the execution model (Sonnet 5) benefits from higher effort on the actual implementation.
The manual workaround is also blocked at exactly the wrong moment: while the plan-approval dialog is displayed, the input box belongs to the dialog, so /effort cannot be run at the plan→execute transition. The only options are interrupting execution right after accepting (Esc → /effort high → "continue") or re-setting effort before the final planning turn.
Proposed Solution
Allow effort to be specified per phase for opusplan (and any future hybrid aliases), for example:
{
"model": "opusplan",
"effortLevel": { "plan": "low", "execute": "medium" }
}
(keeping the current string form as shorthand for both phases). Equivalent /effort plan low / /effort execute medium commands and --effort flag forms would make it adjustable mid-session. When the model switches at the plan boundary, Claude Code would apply the phase's configured effort automatically.
Alternative Solutions
- Per-model effort memory: persist the last
/effortchosen per model and re-apply it when opusplan switches models. Less explicit, but requires no new settings shape. - Allow
/effort(and/model) to be invoked while the plan-approval dialog is open, so the user can adjust at the boundary manually. - Current workarounds: session-wide medium as a compromise;
ultrathinkkeyword per prompt; accept → Esc →/effort high→ "continue".
Priority
Medium — workflow friction and token-cost control for hybrid-model users; workarounds exist but are clunky.
Feature Category
Model configuration / settings
Use Case Example
- User sets
model: opusplanwithANTHROPIC_DEFAULT_OPUS_MODEL=claude-fable-5(documented alias redirection), so Fable 5 plans and Sonnet 5 executes. - User wants planning at low effort (Fable 5 is strong enough at low for most plans; high-effort Fable planning is expensive) and execution at medium/high.
- Today: one
effortLevelapplies to both; the approval dialog prevents changing it at the transition; user must interrupt execution to bump effort, then remember to lower it again before the next planning session (effort persists across sessions).
Additional Context
Docs referenced: https://code.claude.com/docs/en/model-config (opusplan, ANTHROPIC_DEFAULT_OPUS_MODEL resolving the plan-phase model, single effortLevel, per-model effort defaults applied on first run).