Expose current effort level to statusline JSON and session JSONL
Summary
The effort level (standard / high / x-high / max) set via /effort is only visible inside the running Claude Code UI. It is not available to any external tooling.
What's missing
The effort level is not included in:
- The JSON piped to
statusLine.commandscripts (containsmodel,output_style,context_window,cost,rate_limits, but noeffort) - The per-session JSONL at \
~/.claude/projects/*/*.jsonl\(assistant messages have \model\on each entry but no effort) - \
~/.claude.json\project settings - \
~/.claude/sessions/*.json\session state files
The flags \unpinOpus47LaunchEffort\ and \effortCalloutV2Dismissed\ exist in \~/.claude.json\ but they're UI-dismissal booleans, not the active setting.
Use case
I run a dashboard that aggregates stats across multiple Claude Code sessions on different machines (desktop and laptop). It pulls context %, model, cwd, and session title from the JSONL files via a background scanner. I'd like to also surface the effort level so I can see at a glance "laptop is on max, desktop is on x-high" — particularly useful when running ping-pong workflows between machines with different effort budgets.
Without effort exposed in the statusline JSON or JSONL, there's no way for external tooling to read it.
Proposal
- Simplest: Add an \
"effort"\field to the statusline JSON alongside \model\, \output_style\, etc. This unblocks any custom statusline script immediately. - More useful: Also persist effort in the session JSONL on each assistant message (or at least when it changes), so historical/cross-session analysis can see effort-per-turn.
Either (1) alone would be enough for most live-dashboard use cases.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗