Support persistent "max" effort level in settings.json
Status Closed — not planned
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 5 comments · opened Apr 18, 2026 · closed Apr 19, 2026
Summary
The VSCode extension UI exposes five effort levels (low, medium, high, xhigh, max), but the effortLevel setting in ~/.claude/settings.json accepts only four — "max" is excluded from the schema enum, so it can't be persisted as a default. Users who pick "Max" in the UI get it for the current session only; every new tab starts at xhigh.
Repro
- Set
"effortLevel": "max"in~/.claude/settings.json. - Open a new Claude tab in VSCode on Opus 4.7.
- Observe: tab opens at "Extra high" (xhigh), not "Max". The setting is silently ignored.
Evidence (extension v2.1.114)
claude-code-settings.schema.json—effortLevelenum:["low","medium","high","xhigh"]webview/index.jsFN0 label map:{low:"Low", medium:"Medium", high:"High", xhigh:"Extra high", max:"Max"}— UI has "max"- No
CLAUDE_CODE_EFFORT_LEVELenv var exists to override
Requested change
Either:
- (a) add
"max"to theeffortLevelenum in the schema and CLI validation, or - (b) introduce a
defaultEffortLevelsetting that accepts all five UI values.
Use case
Max-plan subscriber on Opus 4.7 wants every new tab to start at Max without per-tab manual selection.
5 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
"max"being missing from theeffortLevelenum insettings.jsonschema while being present in the VS Code extension UI is an inconsistency between the UI and the persistence layer — the UI exposes an option the user can select, but that selection silently resets toxhighon every new tab becausemaxcannot be stored.This is the same category of silent config discard as:
/modelpersistingeffortLevelas a side effect/effortnot being session-scoped/model defaultresolving to wrong modelmaxnot in schema, silently ignoredIn all cases, the user's declared configuration is not honored, and they discover this only by observing incorrect behavior.
The fix is a one-line schema change: Add
"max"to theeffortLevelenum inclaude-code-settings.schema.json:And ensure the CLI validation also accepts
"max"as a valid value (currently it validates against the schema enum).The broader issue: The UI's effort level label map includes
maxbut the schema does not — this suggestsmaxwas added to the UI in one PR and the schema update was missed. A CI test that validates UI-exposed values against the settings schema would prevent this class of discrepancy.Workaround:
The env-var route bypasses the schema enum that rejects
maxon the typedeffortLevelfield, and it persists across sessions.Credit @relanderolli — original comment.
Closing as duplicate of #35904 — the workaround posted by @alibi85 works. Verified in
claude-cliv2.1.114: the binary exposesprocess.env.CLAUDE_CODE_EFFORT_LEVELvia an internaljMH()reader that accepts"max"and overrides the session effort level (thesettings.effortLevelpath uses a separatessHvalidator scoped tolow|medium|high|xhigh, which is why the inconsistency exists).Thanks @0xbrainkid and @alibi85.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.