Add effort_level and mode to status line JSON
Resolved 💬 4 comments Opened Feb 22, 2026 by chriscoey Closed Apr 13, 2026
Summary
The status line script receives session state as JSON via stdin, but two useful fields are missing: effort level and current mode.
Motivation
The status line is great for operational awareness — you can see model, context usage, cost, git state, etc. at a glance. But two pieces of state that significantly affect Claude's behavior are invisible:
- Effort level (
low/medium/high/max) — Controls thinking depth and token spend. When you're debugging a hard problem atmaxeffort vs doing quick edits atlow, it's useful to see this without running/model. Currently the only workaround is readingCLAUDE_CODE_EFFORT_LEVELfrom the environment, which doesn't reflect changes made via/modelduring a session.
- Current mode — The active permission/interaction mode (e.g.
plan,bypassPermissions,default, etc.). Different modes change what Claude can do, and it's easy to forget which mode you're in during a long session — especially after toggling plan mode on and off.
Proposed fields
{
"effort_level": "high",
"mode": "plan"
}
Both are simple scalar values that are already tracked internally — just not exposed to the status line script.
Current schema for reference
The status line JSON currently includes: model, workspace, cost, context_window, output_style, vim, agent, exceeds_200k_tokens, session_id, transcript_path, version.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗