Add effortLevel to statusline JSON input

Resolved 💬 3 comments Opened Mar 5, 2026 by michelzandonai Closed Mar 8, 2026

Feature Request

Problem

The statusline script receives session data via JSON stdin, but the current effort level (effortLevel) is not included in the input schema.

This means custom statusline scripts cannot display the effort level per session — they can only read the global ~/.claude/settings.json, which is shared across all terminals.

Use case: When running multiple Claude Code sessions in parallel (e.g., different terminals), each session may use a different effort level (changed via the UI selector). The statusline should reflect the actual effort level of each session, not just the global setting.

Current workaround

# Can only read global setting — not per-session
effort=$(jq -r '.effortLevel // "high"' ~/.claude/settings.json)

Proposed solution

Add effort_level (or effortLevel) to the JSON object piped to the statusline command:

{
  "model": { "id": "claude-opus-4-6", "display_name": "Opus" },
  "effort_level": "high",
  ...
}

Available data reference

Per the docs, the statusline already receives: model, workspace, version, session_id, cost, context_window, exceeds_200k_tokens, vim.mode, agent.name, output_style.

Adding effort_level would complete the picture for users who want to monitor their session configuration at a glance.

Environment

  • Claude Code on macOS
  • Using custom statusline script with jq

View original on GitHub ↗

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