Status line input JSON missing effort_level field

Resolved 💬 3 comments Opened Apr 7, 2026 by vikramchandra Closed Apr 11, 2026

Summary

The status line input JSON does not include the current effort level, making it impossible for custom status line scripts to display the active effort setting — especially when changed mid-session via /effort.

Current behavior

The JSON piped to the status line command includes session_id, model, context_window, rate_limits, cost, etc. but no effort level field.

The only workaround is reading effortLevel from ~/.claude/settings.json, which only reflects the persisted default — not session-level changes from /effort.

Expected behavior

The status line input JSON should include an effort_level field (e.g., "effort_level": "max") that reflects the current session's effort level, including changes made via /effort.

Steps to reproduce

  1. Configure a custom status line script that dumps the input JSON:

``bash
input=$(cat)
echo "$input" > /tmp/claude_statusline_debug.json
``

  1. Send a message in Claude Code
  2. Inspect /tmp/claude_statusline_debug.json — no effort-related field exists

Dumped JSON (redacted)

{
  "session_id": "...",
  "model": { "id": "claude-opus-4-6[1m]", "display_name": "Opus 4.6 (1M context)" },
  "cost": { "total_cost_usd": 0.52 },
  "context_window": { "used_percentage": 3 },
  "rate_limits": { ... }
  // no effort_level field
}

Environment

  • Claude Code v2.1.92
  • macOS (Darwin 24.6.0)
  • Model: Opus 4.6 (1M context)

View original on GitHub ↗

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