statusLine: expose live permission mode (Shift+Tab toggle) in stdin payload

Status Closed — duplicate
Maintainer reply None cached
Activity 1 comment · opened Jul 22, 2026 · closed Aug 20, 2026

Feature request

The statusLine hook's stdin JSON payload currently does not include the live permission mode that's toggled at runtime via Shift+Tab (auto-accept / manual / plan / bypass-permissions).

I confirmed this empirically on v2.1.217: captured 45 statusLine invocations across two sessions to a debug file and inspected the JSON keys. The payload includes session_id, transcript_path, cwd, prompt_id, effort, session_name, model, workspace, version, output_style, cost, context_window, exceeds_200k_tokens, fast_mode, thinking, and rate_limits — but nothing reflecting the current permission/approval mode.

The only related value available anywhere is permissions.defaultMode in ~/.claude/settings.json, which is just the startup default and does not update when the mode is toggled mid-session.

Request

Add a field (e.g. permission_mode or mode.current) to the statusLine stdin payload reflecting the live, current permission mode (auto-accept, manual, plan, bypass-permissions, etc.), updated in real time as the user toggles it with Shift+Tab.

Use case

Custom statusLine scripts want to render a live badge showing whether the session is currently in auto-accept or manual-approval mode, since this materially affects how actions are being taken. Right now this is impossible to build accurately — only a stale "configured default" can be shown.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗