Include effort level in statusLine hook input
Problem
The statusLine hook receives a JSON object with session metadata (model, context window, cost, etc.), but it does not include the current reasoning effort level.
The effort level is tracked internally (effortLevel in settings, effortValue in state) and displayed in the SDK's built-in ▪▪▪ High indicator, but it's not passed to custom statusLine hooks.
Current workaround
We set a CLAUDE_EFFORT env var at launch time and read it in the statusLine hook. This is stale if the user changes effort mid-session via Shift+Tab or /model.
Requested change
Add an effort field to the statusLine hook input JSON:
{
"session_id": "...",
"model": { "id": "claude-opus-4-6", "display_name": "Opus 4.6" },
"effort": { "level": "high", "display_name": "High" },
"context_window": { ... },
...
}
This would let custom statusLine hooks display effort alongside the model, with live updates when it changes mid-session — same as model already works today.
Context
The statusLine input is constructed in CBz (cli.js). The effort value is already available via h88() / effortLevel in settings — it just needs to be included in the output object.
This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗