Feature: include effort level in statusline JSON input
Request
Add the current effort level to the JSON data passed to custom statusline scripts via stdin.
Context
The effort level (low / medium / high / max) significantly affects Claude's behavior — it controls thinking depth, number of tool calls, and output verbosity. Users who build custom statuslines (via settings.json statusLine config) have no way to display the active effort level.
Claude Code already shows effort next to the spinner ("with max effort"), but this information isn't available to custom statusline scripts.
Proposed addition
Add an effort field to the statusline JSON input:
{
"model": { "id": "claude-opus-4-6", "display_name": "Opus" },
"effort": "max",
...
}
The value should reflect the effective effort level for the current turn, accounting for the full precedence chain:
CLAUDE_CODE_EFFORT_LEVELenv var- Active skill/agent frontmatter
effortoverride - Session level (
/effort,--effort) - Model default
Why this matters
- Effort affects cost and latency — users monitoring sessions need to see it
- Skill/agent frontmatter can silently change effort — invisible without this
- The statusline already has
model,cost,context_window,rate_limits— effort is the missing piece for full observability - Custom HUD plugins (like statusline scripts that track plan progress) want to show effort alongside model name
Current workarounds (insufficient)
- Read
effortLevelfromsettings.json— misses/effortsession overrides and skill/agent frontmatter - Read
CLAUDE_CODE_EFFORT_LEVELenv var — only works if explicitly set, misses all other sources - Neither captures skill/agent frontmatter overrides
Environment
- Claude Code v2.1.79
- Opus 4.6 (1M context)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗