effortLevel "max" not serialized to settings.json and not passed to statusLine stdin
Bug Description
When setting effort level to "max" (available for Opus 4.6 models), two issues prevent custom statusLine scripts from detecting it:
sI6serializer doesn't handle "max" — the effort value is not persisted tosettings.jsonePzstatusLine data builder doesn't include effort —effortLevel/effortValueis absent from the JSON passed to statusLine commands via stdin
Steps to Reproduce
- Select Opus 4.6 model with "max" effort (via
/modelor Set model menu) - Confirm right-side built-in display shows
max · /effort - Check
~/.claude/settings.json→ still shows"effortLevel": "high"(previous value) - Custom statusLine script receives no effort information via stdin JSON
Root Cause (from source analysis, v2.1.74)
Issue 1: sI6 serializer
The valid effort levels array includes "max":
a46 = ["low", "medium", "high", "max"];
But the serializer function sI6 (which saves to settings.json) was not updated:
function sI6(A) {
if (A === "low" || A === "medium" || A === "high") return A;
return; // "max" → undefined, not persisted!
}
This means:
- Setting effort to "max" stores
undefinedin settings → the old value remains - If settings.json is manually edited to
"effortLevel": "max", Claude Code reads it throughsI6→ getsundefined→ falls back to model default, effectively changing the actual effort level (unexpected side effect)
Issue 2: ePz statusLine data builder
The ePz function constructs the JSON object passed to statusLine commands via stdin. It includes model, cost, context_window, cwd, workspace, etc., but does not include effortLevel or effortValue at all.
The internal app state does track effortValue correctly (the built-in right-side display works), but this value is never forwarded to statusLine.
Expected Behavior
sI6should serialize "max" like other valid valuesePzshould include the current effort level in the statusLine JSON, e.g.:
``json``
{
"effortLevel": "max",
...
}
Environment
- Claude Code version: 2.1.74 (Build: 2026-03-11T23:30:02Z)
- OS: Windows 11 Pro
- Model: Opus 4.6 (1M context)
Workaround
None currently available. Custom statusLine scripts cannot detect "max" effort level from either stdin JSON or settings.json fallback.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗