StatusLine JSON input missing session effort level

Resolved 💬 2 comments Opened Apr 22, 2026 by PaoloQura Closed Apr 24, 2026

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)

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗