Feature request: expose an activity/state field (Ready/Thinking/Working/Error) in statusLine stdin JSON
Summary
The statusLine command's stdin JSON currently has no field describing what Claude is actively doing right now (e.g. idle/ready, extended-thinking in progress, running a tool, or the last turn errored). The documented schema (session/model/workspace/context_window/effort/thinking.enabled/rate_limits/vim/agent/pr/worktree) is entirely about static session state — nothing reflects live turn activity.
The TUI itself already renders this as a spinner + hint text (e.g. "Thinking…", tool-run hints), so the underlying state clearly exists internally — it's just not exposed to the statusLine hook for custom rendering.
Request
Add something like:
"turn_state": {
"phase": "idle" | "thinking" | "tool_use" | "responding" | "error",
"detail": "string" // optional, e.g. tool name or spinner hint text
}
Given the statusLine command already supports event-driven re-runs (plus an optional every-N-seconds timer), this would let custom statusLines surface a live Ready/Thinking/Working/Error indicator instead of only static session metrics.
Motivation
Users running custom statusLine scripts (colorized rate limits, model/effort display, etc.) have no way to fold in "what is Claude doing right now" without guessing from side channels like transcript_path mtime, which is unreliable and can't distinguish states like "thinking" vs "errored."
Alternatives considered
Polling transcript_path file mtime as a liveness proxy — rejected because it's not a real signal (can't detect specific phases, and is unrelated to editing-in-progress vs error states).