Expose current reasoning effort level in statusLine stdin JSON
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!
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗