Expose session effortLevel in statusline stdin JSON
Resolved 💬 2 comments Opened Apr 1, 2026 by olucasbusch Closed Apr 24, 2026
Feature Request
Expose the current session's effortLevel in the JSON payload passed to statusline scripts via stdin.
Current behavior
The statusline script receives this structure on stdin:
{
"model": { "display_name": "Claude Opus 4.6" },
"context_window": { ... },
"rate_limits": { ... },
"cost": { ... }
}
There is no field for the session's effort/reasoning level.
Desired behavior
Include the active session effort level in the payload:
{
"model": { "display_name": "Claude Opus 4.6" },
"effort_level": "high",
"context_window": { ... },
"rate_limits": { ... },
"cost": { ... }
}
Why
- The effort level affects model behavior significantly (token usage, reasoning depth, cost)
- Users who customize their statusline want to see which effort level is active alongside the model name
- The global
effortLevelin~/.claude/settings.jsondoes NOT reflect the current session value — it's the default, not the runtime state - When toggling with
/fastor switching effort mid-session, there is no way for the statusline to reflect the change - Model + effort are a pair — knowing "Opus 4.6" without knowing if it's running at "low" or "high" effort is incomplete information
Suggested field name
effort_level — string, one of "low", "medium", "high" (matching the existing effortLevel setting values).
Alternatively, nest it under model:
{
"model": {
"display_name": "Claude Opus 4.6",
"effort_level": "high"
}
}
Environment
- Claude Code CLI v1.0.33
- macOS
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗