StatusLine JSON input missing session effort level
Summary
The statusline JSON input (passed to custom statusLine.command on stdin) does not include the current session effort level. This makes it impossible for statusline scripts to reflect effort changes made via the /effort command.
Current behavior
The statusline JSON contains these top-level keys:
session_id, transcript_path, cwd, model, workspace, version,
output_style, cost, context_window, exceeds_200k_tokens, rate_limits
When a user runs /effort max (or any /effort level), no field in this JSON changes. The output_style.name field remains "default" regardless of effort level.
Expected behavior
The statusline JSON should include the current session effort level, e.g.:
{
"effort_level": "xhigh",
...
}
This would allow custom statusline scripts to display the active effort level and react to session-level changes made via /effort.
Workaround
Currently the only option is reading the persisted effortLevel from ~/.claude/settings.json, which misses session-only overrides set via /effort.
Environment
- Claude Code version: 2.1.117
- Model: claude-opus-4-6[1m]
- Platform: macOS (Darwin 25.4.0)
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗