Expose reasoning_effort and permissions_mode in status line JSON

Resolved 💬 3 comments Opened Mar 6, 2026 by alxsthrlnd Closed Mar 9, 2026

Feature Request

The custom status line script (~/.claude/statusline.sh) receives JSON via stdin with session metadata. It would be useful to have a couple more fields exposed:

1. reasoning_effort (or model.reasoning_effort)

The current reasoning effort level (e.g. "low", "medium", "high") is not included in the status line JSON. This would be helpful to display alongside the model name so users can see at a glance what effort level is active.

The /model UI already shows this (Medium effort (default)), but the status line JSON only has:

"model": {
  "id": "claude-opus-4-6",
  "display_name": "Opus 4.6"
}

2. permissions_mode

The current permissions mode (e.g. "default", "bypass", "plan") is displayed on a second line below the status bar but isn't available in the JSON. Exposing it would let users incorporate it into their custom status line layout.

Current JSON structure (v2.1.70)

{
  "session_id": "...",
  "cwd": "...",
  "model": { "id": "claude-opus-4-6", "display_name": "Opus 4.6" },
  "cost": { "total_cost_usd": 0, "total_duration_ms": 0, ... },
  "context_window": { "used_percentage": 19, ... },
  "version": "2.1.70",
  ...
}

Suggested additions

{
  "model": {
    "id": "claude-opus-4-6",
    "display_name": "Opus 4.6",
    "reasoning_effort": "medium"
  },
  "permissions_mode": "default"
}

This would enable richer custom status lines without needing to infer or hardcode these values.

View original on GitHub ↗

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