Statusline input missing effortLevel field
Resolved 💬 3 comments Opened Mar 14, 2026 by Zheckan Closed Mar 14, 2026
Problem
The statusline command's JSON input (via stdin) does not include the current effortLevel. This makes it impossible for custom statusline scripts to display the active effort level accurately.
Current behavior
effortLevelis not included in the statusline JSON input- The only way to read it is from
~/.claude/settings.json, but: maxandautoeffort levels are session-only and never persist tosettings.json- Changes via
/effort,/model, or Option+P don't updatesettings.jsonfor these values, causing the statusline to show a stale value
Expected behavior
The statusline JSON input should include the effective effort level for the current session, e.g.:
{
"model": {
"id": "claude-opus-4-6[1m]",
"display_name": "Opus 4.6 (1M context)",
"effort_level": "max"
},
}
Reproduction
- Start a session (e.g. with
effortLevel: "high"insettings.json) - Change effort to
maxorautovia/effortor/model - Custom statusline reads
effortLevelfromsettings.json→ still shows "high" - No field in the stdin JSON reflects the change
Environment
- Claude Code v2.1.76
- macOS (25.3.0)
- Custom statusline via
statusLine.type: "command"
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗