Claude Code Status Line (2026)
The Claude Code status line is the persistent bar at the bottom of your terminal when running Claude Code. It shows real-time information about the current session: model in use, token count, cost, session duration, and tool activity. Understanding and customizing the status line helps you monitor your sessions and catch cost or context issues early.
What the Status Line Shows
The default status line displays several pieces of information from left to right:
Model Indicator
Shows which Claude model is active:
- Sonnet 4: The default model
- Opus 4: Shown when you switch with
/model opus - Haiku 3.5: Shown when you switch with
/model haiku
The model indicator updates immediately when you switch models mid-session.
Token Counter
Displays the total tokens consumed in the current session:
- Input tokens: Tokens sent to Claude (your messages + conversation history + tool results)
- Output tokens: Tokens generated by Claude (responses + tool calls + thinking tokens)
- Total tokens: Combined input + output
The counter updates after each message exchange. For long sessions, watching the token count helps you decide when to use /compact to free context space.
Cost Estimate
Shows the estimated dollar cost of the current session based on:
- Tokens consumed
- Current model pricing
- Whether you are using subscription or API key
The cost is an estimate. Actual billing may differ slightly due to prompt caching, rounding, and rate changes. For detailed cost tracking, see our token usage audit guide.
Session Duration
A timer showing how long the current Claude Code session has been active. Useful for tracking work time and estimating when you might approach usage limits.
Tool Activity Indicator
Shows when Claude is executing a tool:
- Reading: Claude is reading a file
- Searching: Claude is running a Glob or Grep search
- Executing: Claude is running a Bash command
- Writing: Claude is creating or editing a file
- Thinking: Claude is using extended thinking
The activity indicator helps you understand what Claude is doing during longer operations, especially when the terminal appears quiet during tool execution.
Context Usage Bar
Some versions display a visual progress bar showing how much of the context window is consumed:
Context: [████████░░░░░░░░░░░░] 42%
When this approaches 80%+, consider using /compact to summarize the conversation and free context space.
Reading the Status Line
Here is what a typical status line looks like during a session:
Sonnet 4 | 12.4K tokens ($0.08) | 23m | Context: 38%
This tells you:
- Model: Sonnet 4
- Tokens: 12,400 tokens used so far
- Cost: Approximately $0.08
- Duration: 23 minutes into the session
- Context: 38% of the 200K window is consumed
When to Take Action
| Status Line Signal | Action |
|---|---|
| Context > 70% | Use /compact to free space |
| Cost > your budget | Consider switching to Haiku or starting fresh |
| Duration > 2 hours | Check if context is still relevant or start new session |
| Model shows Opus | Verify you need Opus; switch to Sonnet if not |
Customization
Configuring What Shows
Claude Code’s status line display can be customized through settings. Edit ~/.claude/settings.json:
{
"statusLine": {
"showModel": true,
"showTokens": true,
"showCost": true,
"showDuration": true,
"showContextBar": true
}
}
Set any field to false to hide that element from the status line.
Minimal Status Line
For a cleaner look with less distraction:
{
"statusLine": {
"showModel": true,
"showTokens": false,
"showCost": true,
"showDuration": false,
"showContextBar": false
}
}
This shows only the model and cost.
Color Customization
The status line uses your terminal’s color scheme. If elements are hard to read:
- Check your terminal’s background/foreground color contrast
- Try a different terminal theme
- Some terminals allow per-application color overrides
Terminal-Specific Rendering
The status line renders differently depending on your terminal:
| Terminal | Rendering |
|---|---|
| iTerm2 (Mac) | Full color, icons supported |
| Terminal.app (Mac) | Basic colors, no icons |
| Windows Terminal | Full color support |
| VS Code integrated | Full support |
| tmux | May need set -g status off to avoid conflicts |
| screen | Status line may overlap with screen’s status bar |
Working with Terminal Multiplexers
tmux
If you use tmux, the Claude Code status line may conflict with tmux’s own status bar. To fix:
Option 1: Disable tmux status bar:
tmux set -g status off
Option 2: Move tmux status bar to the top:
tmux set -g status-position top
Option 3: Increase tmux pane height to give both status bars room.
screen
GNU Screen has a similar conflict. Use:
# In ~/.screenrc
hardstatus off
Troubleshooting
Status Line Not Showing
Cause 1: Terminal too narrow
The status line needs minimum width to render. Resize your terminal to at least 80 columns.
Cause 2: Non-interactive mode
When running Claude Code with --print (non-interactive mode), no status line is shown. This is by design for piping output.
Cause 3: Outdated version
Earlier versions of Claude Code had limited status line features. Update:
npm update -g @anthropic-ai/claude-code
Cause 4: Terminal compatibility
Some terminals do not support the escape sequences used for the status line. Try a different terminal emulator. iTerm2 and Windows Terminal have the best support.
Status Line Shows Wrong Cost
The cost estimate uses the current model’s pricing. Issues can arise when:
- Model switching: Cost calculation may not perfectly track mid-session model switches. The overall session cost shown is an estimate.
- Prompt caching: If your session benefits from prompt caching, actual cost may be lower than displayed.
- Subscription vs API: The status line may show per-token cost even when you are on a subscription plan where individual messages do not have separate charges.
For accurate cost data, use the /cost command or check your Anthropic console.
Status Line Flickering
Cause: Terminal refresh rate conflicts or rapid tool execution.
Fixes:
- Reduce terminal refresh rate if configurable
- Check for competing processes that write to the terminal status area
- Try a different terminal emulator
- Disable the context bar (the most update-intensive element):
{
"statusLine": {
"showContextBar": false
}
}
Status Line Overlaps with Content
Cause: Terminal height too small or terminal does not properly support alternate screen buffer.
Fixes:
- Increase terminal window height
- Use a terminal that supports alternate screen buffer (most modern terminals do)
- If in tmux/screen, see the multiplexer section above
Token Count Seems Too High
If the token count seems inflated:
- Context replay: Each message in a conversation replays the full history. A 20-message conversation replays all 20 messages with each new exchange.
- Tool definitions: Tool definitions add tokens to every request.
- File reads: When Claude reads large files, those tokens count as input.
- Extended thinking: Thinking tokens count as output tokens.
Use /compact to reduce the context size, which also reduces future token counts.
Need the complete toolkit? The Claude Code Playbook includes 200 production-ready templates.
Status Line vs /cost Command
The status line shows a running estimate. The /cost command provides more detailed information:
/cost
Output:
Session cost breakdown:
Model: claude-sonnet-4-20250514
Input tokens: 8,234
Output tokens: 3,891
Total tokens: 12,125
Estimated cost: $0.083
Session duration: 18m 42s
Messages exchanged: 7
Use /cost when you need precise numbers. Use the status line for at-a-glance monitoring.
Integration with Monitoring
Logging Session Costs
Combine the status line data with hooks to log session costs:
#!/bin/bash
# Stop hook: Log session cost on exit
# .claude/hooks/log-cost.sh
echo "{\"timestamp\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\"session\":\"$CLAUDE_SESSION_ID\"}" >> ~/.claude/session-log.jsonl
Team Cost Tracking
For teams, aggregate session costs from multiple developers:
- Each developer logs sessions via Stop hooks
- Collect logs into a shared dashboard
- Set per-developer or per-project budget alerts
- Review weekly to optimize model usage
Status Line in CI/CD
When running Claude Code in CI/CD pipelines (claude --print "prompt"), the status line is disabled. CI environments are non-interactive and typically pipe output. Cost information for CI runs can be captured from the API response metadata.
For CI cost tracking:
# Capture Claude Code output and cost in CI
claude --print "Run tests and report results" 2>claude-stderr.log >claude-output.txt
# Cost info may appear in stderr log
Frequently Asked Questions
Can I completely hide the status line?
Not entirely via settings alone, but setting all display fields to false effectively removes all visible elements. Some terminal padding may remain.
Does the status line affect performance?
No. The status line updates are lightweight text rendering operations. They do not impact Claude Code’s processing speed or token usage.
Is the cost shown inclusive of prompt caching savings?
The displayed cost is typically the gross cost before caching discounts. Actual billed cost may be lower if prompt caching is active.
Can I export status line data?
Not directly from the status line. Use the /cost command for exportable data, or implement a Stop hook to capture session metrics.
Does the status line work in VS Code terminal?
Yes. The VS Code integrated terminal supports the status line with full color and formatting.
Why does the token count jump between messages?
Each new message replays the entire conversation history. A jump from 5,000 to 8,000 tokens means the conversation history + your new message + Claude’s response added 3,000 tokens total.
Can I add custom elements to the status line?
Not currently. The status line elements are built into Claude Code. For custom monitoring, use hooks to display information in the terminal output.
Does the status line show MCP tool usage?
Yes. When Claude calls MCP server tools, the activity indicator shows the tool name and execution status.
How does the status line relate to the 5-hour usage limit?
The status line shows session-level token usage. The 5-hour usage limit is account-level across all sessions. The status line does not show your remaining plan allocation, only the current session’s consumption.