Expose current reasoning effort level in statusLine stdin JSON

Resolved 💬 3 comments Opened Apr 17, 2026 by alok-worktrace Closed Apr 21, 2026

Feature request

Add the current reasoning effort / thinking level to the JSON payload passed on stdin to statusLine command scripts.

Motivation

Effort level is one of the most useful pieces of session state to surface in a status line — users frequently toggle it mid-session (e.g. via /effort) depending on task complexity, and it directly affects both cost and latency. Today there's no way to display the current effort in a statusline:

  • The statusLine stdin schema exposes model identification, context window, cost, rate limits, git state, etc., but nothing about reasoning configuration.
  • ~/.claude.json, ~/.claude/sessions/*.json, and session-env state files don't store it in any accessible form.
  • Transcript entries don't include it either.

This forces users to maintain a separate static config key (e.g. a custom effortLevel in settings.json) that doesn't reflect runtime changes — defeating the purpose of showing it.

Proposed change

Add a field to the statusLine stdin JSON, e.g.:

{
  "reasoning": {
    "effort": "high"    // "off" | "low" | "medium" | "high"
  }
}

Or nest it under the existing model object as model.effort. Exact naming doesn't matter much — the key requirement is that it reflects the current runtime effort (including any mid-session changes), not just the startup value.

Alternatives considered

  • Writing runtime effort to a known file path that statusline scripts could read → less clean than extending the JSON schema that's already the established contract.
  • A dedicated statusline refresh hook on effort change → already covered by existing debounced event updates, but needs the field to actually be present.

Thanks!

View original on GitHub ↗

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