Add permission_mode to status line JSON data

Resolved 💬 3 comments Opened Apr 3, 2026 by mina-ima Closed Apr 6, 2026

Feature Request

Summary

Add the current permission mode (e.g., auto, plan, default, acceptEdits) to the status line JSON payload so users can display it in their custom status line.

Motivation

When using Claude Code in the terminal, the status line at the bottom is highly customizable and shows useful information like model name, context usage, and working directory. However, the current permission mode is not included in the JSON data passed to the status line command.

As users frequently switch between modes (e.g., Plan mode for reviewing changes vs. Auto mode for autonomous work), being able to see the current mode at a glance in the status line would significantly improve the UX — especially for users who aren't yet familiar with the Shift+Tab shortcut to cycle modes.

Current status line JSON fields

{
  "session_id": "...",
  "cwd": "...",
  "model": { "id": "...", "display_name": "..." },
  "workspace": { ... },
  "cost": { ... },
  "context_window": { ... },
  "rate_limits": { ... },
  "output_style": { "name": "..." }
}

Proposed addition

Add a permission_mode (or mode) field:

{
  "permission_mode": "auto",
  ...
}

Example use case

Users could then configure their status line to show:

~ | [AUTO] Shift+Tab to switch | claude-opus-4-6[1m] | Context: [██░░░░] 15%

Bonus: ModeChange hook event

It would also be useful to have a ModeChange hook event that fires when the user switches permission modes (via Shift+Tab or UI), enabling automation workflows tied to mode transitions.

Environment

  • Claude Code v2.1.87
  • macOS (Terminal CLI)

View original on GitHub ↗

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