Expose activePermissionMode in statusline stdin JSON payload
Is your feature request related to a problem?
The statusline stdin JSON payload includes model, rate_limits, context_window, cost, output_style, and version — but not the current permission mode.
This means no statusline tool can show whether the user is in default, acceptEdits, plan, or bypassPermissions mode. I surveyed 8 popular statusline projects on GitHub — none of them can display the permission mode because it's simply not exposed.
The transcript JSONL logs an initial permission-mode entry at session start, but Shift+Tab mode changes are not appended to the transcript, so reading the transcript only gives the startup mode.
Describe the solution you'd like
Add activePermissionMode (or permission_mode) to the JSON object piped via stdin to statusLine.command:
{
"session_id": "...",
"model": { "id": "claude-sonnet-4-6", "display_name": "Sonnet 4.6" },
"permission_mode": "acceptEdits",
...
}
This field should reflect the current runtime mode, updating when the user presses Shift+Tab — not just the startup mode.
Ideally, also append a new {"type": "permission-mode", "permissionMode": "..."} line to the session transcript JSONL on every Shift+Tab change (currently only the initial mode is logged).
Prior issues
- #4719 — requested for
PreToolUsehooks (closed by inactivity bot, not implemented) - #6227 — requested for hooks + statusline (closed as duplicate of #4719, also by inactivity bot)
- #16494 — also closed as duplicate
This has been requested multiple times and keeps getting auto-closed. The feature gap is real — every statusline author would benefit from this.
Additional context
- Claude Code version: 2.1.100
- Current stdin keys:
session_id,transcript_path,cwd,model,workspace,version,output_style,cost,context_window,exceeds_200k_tokens,rate_limits - Also useful: expose
permission_modein hook payloads (PreToolUse,PostToolUse,Notification, etc.)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗