Statusline payload reports wrong effort level after /effort change
Status Closed — duplicate
Reported on v2.1.220
Maintainer reply None cached
Activity 1 comment · opened Aug 3, 2026 · closed Aug 15, 2026
Description
The statusline JSON payload's effort.level field does not reflect the current effort level after changing it via /effort. It remains stuck at "high" regardless of the configured level.
Steps to reproduce
- Configure a custom statusline command that reads
effort.levelfrom the JSON payload (per statusline docs) - Change effort level via
/effort xhigh(or any other level) - Confirm the setting is saved —
settings.jsonshows"effortLevel": "xhigh" - Observe the statusline still displays
"high"
Expected behavior
The effort.level field in the statusline JSON payload should reflect the current effort level ("xhigh" in this case), both:
- Immediately after a
/effortchange within the same session - In new sessions that inherit the saved
effortLevelfrom settings.json
Actual behavior
The payload always reports {"effort":{"level":"high"}} regardless of the actual configured effort level. This persists across new sessions even when settings.json correctly contains "effortLevel": "xhigh".
Debug payload captured
{
"effort": {"level": "high"},
...
}
Meanwhile settings.json contains:
{
"effortLevel": "xhigh",
...
}
Environment
- Claude Code version: 2.1.220
- OS: Linux 7.0.0-28-generic
- Model: Opus 4.6 (1M context)
Statusline script (for reference)
The script correctly reads .effort.level via jq — the issue is in the payload, not the consumer:
effort=$(printf '%s' "$input" | jq -r '.effort.level // "-"')This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗