[FEATURE] Bind effort level to permission mode (xhigh in plan mode, default elsewhere)
Preflight Checklist
- [x] I have searched existing issues. Related: #75389 (per-phase effort for
opusplan), #90222 (per-activity effort). This request is narrower and needs no model switch: bind effort to the permission mode so that any model runs at a higher effort in plan mode. - [x] This is a feature request, not a bug report.
Problem Statement
There is no way to bind the effort level to the permission mode. I want plan mode to run at xhigh effort and the other modes (default, acceptEdits, auto) to run at their default effort automatically.
Today this needs a manual /effort toggle each way. Since 2.1.252 /effort persists per model, so a forgotten revert leaks into future sessions. 2.1.257 added s in /effort for session-only changes, which helps, but the toggle is still manual on every Shift+Tab. No hook event fires on a permission-mode change, and no hook or setting can set effort programmatically (hooks receive effort.level / $CLAUDE_EFFORT read-only).
Proposed Solution
A settings key that maps permission modes to effort levels, for example:
"effortLevel": "medium",
"effortByPermissionMode": {
"plan": "xhigh"
}
When the permission mode changes (Shift+Tab, --permission-mode, ExitPlanMode), Claude Code applies the mapped effort for that mode and restores the previous effort when the mode is left. Modes not listed keep the current effort.
Alternative Solutions
- A
PermissionModeChangedhook event plus a hook output field that can set effort. More general, but heavier for users. - Extending
opusplansemantics. Rejected: this request is model-independent.
Priority
Medium
Feature Category
Configuration / settings
Use Case Example
/effort mediumis the saved default.- Press Shift+Tab into plan mode. Effort becomes
xhighautomatically. The plan is written with deep reasoning. - Accept the plan (ExitPlanMode). Effort returns to
mediumfor implementation. - Nothing to remember, nothing leaks into the next session.
Additional Context
- Claude Code 2.1.258, macOS (arm64), native install.
- Prior art for mode-conditional behavior:
opusplanalready switches the model in plan mode.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗