Add effort level to statusline JSON input

Resolved 💬 3 comments Opened Apr 23, 2026 by stdunn Closed Apr 24, 2026

Summary

The custom statusline command (statusLine setting) receives a JSON object via stdin with fields like model, workspace, context_window, cost, rate_limits, etc. — but does not include the current effort level.

Problem

There's no way to display the per-instance effort level in a custom statusline because:

  1. The effort level is not in the statusline JSON input
  2. settings.json only has the global default — not the per-session override
  3. The --effort CLI argument and /effort command both set session-scoped values that are invisible to the statusline script

Reading effortLevel from settings.json is a partial workaround, but breaks when:

  • Multiple Claude Code instances run with different effort levels
  • Effort is set via --effort <level> CLI argument
  • Effort is changed mid-session via /effort <level>

Proposed Solution

Add an effort_level (or effort) field to the JSON object passed to the statusline command:

{
  "effort_level": "max",
  ...existing fields...
}

This should reflect the current session's effective effort level, accounting for CLI args and /effort overrides.

Context

The statusline already exposes output_style.name — effort level is a similar per-session setting that users would want to display.

View original on GitHub ↗

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