Add a default status line showing model, context usage, and git branch

Resolved 💬 3 comments Opened Feb 24, 2026 by maxdhs Closed Mar 25, 2026

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:

  1. Model name — e.g., Opus 4.6, Opus 4.6 (1M context), Sonnet 4
  2. Current directory / project name — basename of the working directory
  3. Git branch — if inside a git repo
  4. 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:

  1. Discover that /statusline exists or that settings.json supports a statusLine key
  2. Write a custom Python/bash script that parses the JSON input
  3. 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

  1. I start Claude Code in a project directory on a feature branch
  2. I switch to the 1M context model variant via /model
  3. I start a long refactoring session, reading many files and making changes
  4. Partway through, I wonder: "How much context have I used? Am I close to the limit?"
  5. There's no indication anywhere — the bottom of the terminal is blank
  6. I have to guess, or run /cost to 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.

View original on GitHub ↗

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