[FEATURE] Expose Thinking Mode and Reasoning Effort in Status Line JSON
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Summary
Add thinking_mode and reasoning_effort fields to the JSON data provided to custom status line scripts, allowing users to display the current reasoning configuration in their terminal status line.
Motivation
Users who customize their Claude Code status line (via statusline-command setting) currently have no way to see:
- Whether extended thinking is enabled or disabled
- What reasoning effort level is active (low, medium, high)
This information is valuable because:
- Awareness - Users may toggle thinking mode (Tab key) and forget the current state
- Cost visibility - Higher reasoning effort consumes more tokens; seeing this helps users make informed decisions
- Debugging - When responses seem brief or overly detailed, knowing the reasoning state helps diagnose why
- Workflow optimization - Power users switch between modes for different tasks and benefit from visual confirmation
Current Behavior
The status line JSON includes model information but not reasoning configuration:
{
"model": {
"id": "claude-opus-4-5-20251101",
"display_name": "Claude Opus 4.5"
}
}
Environment
- Claude Code CLI
- Status line customization via statusline-command setting
Proposed Solution
Proposed Enhancement
Add reasoning state fields to the JSON:
{
"model": {
"id": "claude-opus-4-5-20251101",
"display_name": "Claude Opus 4.5",
"thinking_enabled": true,
"reasoning_effort": "medium"
}
}
Field definitions:
| Field | Type | Values | Description |
|------------------|---------|---------------------------|-----------------------------------------------|
| thinking_enabled | boolean | true / false | Whether extended thinking is currently active |
| reasoning_effort | string | "low" / "medium" / "high" | Current reasoning effort level |
Example Use Case
With these fields, a status line script could display:
✨ Opus 4.5 🧠 thinking (high) # Thinking enabled, high effort
✨ Opus 4.5 💤 no-think # Thinking disabled
✨ Sonnet 4 🧠 thinking (low) # Thinking enabled, low effort
Implementation Notes
- These values are already tracked internally (Tab toggles thinking, trigger words set effort)
- Simply exposing them in the existing status line JSON payload
- No breaking changes to existing scripts (new fields are additive)
- Minimal performance impact (reading existing state)
Alternative Solutions
_No response_
Priority
Medium - Would be very helpful
Feature Category
CLI commands and flags
Use Case Example
_No response_
Additional Context
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗