Include effort level in statusLine hook input

Resolved 💬 6 comments Opened Mar 6, 2026 by oria-ai Closed Apr 24, 2026

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.

View original on GitHub ↗

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