Status line input JSON missing effort_level field
Summary
The status line input JSON does not include the current effort level, making it impossible for custom status line scripts to display the active effort setting — especially when changed mid-session via /effort.
Current behavior
The JSON piped to the status line command includes session_id, model, context_window, rate_limits, cost, etc. but no effort level field.
The only workaround is reading effortLevel from ~/.claude/settings.json, which only reflects the persisted default — not session-level changes from /effort.
Expected behavior
The status line input JSON should include an effort_level field (e.g., "effort_level": "max") that reflects the current session's effort level, including changes made via /effort.
Steps to reproduce
- Configure a custom status line script that dumps the input JSON:
``bash``
input=$(cat)
echo "$input" > /tmp/claude_statusline_debug.json
- Send a message in Claude Code
- Inspect
/tmp/claude_statusline_debug.json— no effort-related field exists
Dumped JSON (redacted)
{
"session_id": "...",
"model": { "id": "claude-opus-4-6[1m]", "display_name": "Opus 4.6 (1M context)" },
"cost": { "total_cost_usd": 0.52 },
"context_window": { "used_percentage": 3 },
"rate_limits": { ... }
// no effort_level field
}
Environment
- Claude Code v2.1.92
- macOS (Darwin 24.6.0)
- Model: Opus 4.6 (1M context)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗