Feature request: expose effortValue in statusLine stdin JSON

Resolved 💬 2 comments Opened Apr 10, 2026 by umiyosh Closed Apr 10, 2026

Summary

The statusLine script receives session metadata via stdin JSON, but the current effort level (effortValue) is not included. This makes it impossible for custom status lines to display the active effort setting.

Current behavior

  • The statusLine stdin JSON includes: session_id, model, workspace, version, cost, context_window, rate_limits, etc.
  • effortValue is held only in the in-memory app state and is not passed to the statusLine script.
  • /effort low|medium|high writes to settings.json via effortLevel, but /effort max does not persist (because "max" is not a standard API effort value and the validation function returns undefined).
  • CLAUDE_CODE_EFFORT_LEVEL is set at process startup and never updated during the session.

As a result, there is no external mechanism to read the session-level effort value in real time from a statusLine script.

Expected behavior

Include the current effort level in the statusLine stdin JSON, e.g.:

{
  "session_id": "...",
  "model": "claude-opus-4-6",
  "effort": "max",
  ...
}

This would allow status line scripts to display the active effort setting and react to /effort changes dynamically.

Additional context

  • Tested on Claude Code v2.1.98 (macOS arm64)
  • Investigated the compiled binary (QV5 function) and confirmed effortValue is not serialized into the statusLine payload
  • A secondary issue: /effort max should also persist to settings.json for consistency with other effort levels

View original on GitHub ↗

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