Add a default status line showing model, context usage, and git branch
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
Claude Code has a powerful status line system (/statusline, custom scripts via settings.json), but no status line is shown by default. When you first install Claude Code, the bottom of the terminal is completely empty — there's no indication of which model you're using, how much context you've consumed, or even which directory you're in.
This means users have no visibility into critical session state:
- Which model am I using? (Especially important when switching between Opus, Sonnet, Haiku, or 1M context variants)
- How much context have I consumed? (Hitting the limit mid-task with no warning is a poor experience)
- What branch am I on? (Essential for any git-based workflow)
Every terminal-based tool with session state (vim, tmux, htop) shows a status bar by default. Claude Code should too.
Proposed Solution
Add a built-in default status line that renders automatically without any configuration. It should display:
- Model name — e.g.,
Opus 4.6,Opus 4.6 (1M context),Sonnet 4 - Current directory / project name — basename of the working directory
- Git branch — if inside a git repo
- Context usage — percentage and token counts (e.g.,
22% (44,000/200,000 tokens))
The data is already available — the status line JSON input includes model.display_name, workspace.current_dir, and context_window with context_window_size, total_input_tokens, total_output_tokens, and used_percentage.
Users who configure a custom statusLine in settings would override the default, preserving full customizability. This is purely additive — it just provides a sensible out-of-the-box experience.
Example output:
[Opus 4.6 (1M context)] 📁 my-project | main | Context: 22% (44,000/200,000 tokens)
Alternative Solutions
Currently the only way to get a status line is:
- Discover that
/statuslineexists or thatsettings.jsonsupports astatusLinekey - Write a custom Python/bash script that parses the JSON input
- Configure it in
settings.json
This is a non-trivial setup that most users won't discover on their own. I wrote a custom Python script to achieve this, but it shouldn't require custom scripting for such fundamental information.
Priority
Medium - Would be very helpful
Feature Category
Interactive mode (TUI)
Use Case Example
- I start Claude Code in a project directory on a feature branch
- I switch to the 1M context model variant via
/model - I start a long refactoring session, reading many files and making changes
- Partway through, I wonder: "How much context have I used? Am I close to the limit?"
- There's no indication anywhere — the bottom of the terminal is blank
- I have to guess, or run
/costto get partial info
With a default status line, I'd see at a glance:
[Opus 4.6 (1M context)] 📁 my-project | feature/refactor | Context: 45% (450,000/1,000,000 tokens)
I'd know exactly where I stand without breaking my flow.
Additional Context
Here's what my custom status line looks like (this required writing a Python script and configuring settings.json manually):
The status line infrastructure already exists and is well-designed — the JSON input passed to custom scripts includes rich data (model, context_window, workspace, cost, etc.). A built-in default would just need to render a subset of this data.
Similar tools for reference:
- vim shows filename, mode, line/col, and file percentage by default
- tmux shows window list, hostname, and time by default
- htop shows CPU, memory, and process info by default
All allow customization, but ship with useful defaults.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗