Skip to content

Status Bar and Limits

Yogeswaran Amsavalli edited this page Oct 3, 2026 · 1 revision

Status Bar and Limits

Clayo draws live session info in its own UI, not in the terminal: per session in the pane header, and your account's limits in the sidebar footer. It shows only what Claude Code hands its status line. Clayo never calls Anthropic's API and never opens your credentials.

The pane header

From left to right:

  • Status light, the same colours as the sidebar (see Sessions and Branching).
  • Session name.
  • Status strip, the fields below.
  • Attach files…, Branch from here, ✕ (close the session).
Field Example Where it comes from
Model Opus 5.5 1M model.display_name from the status line payload. "(1M context)" is shortened to "1M".
Branch and diff main +12 −3 git rev-parse --abbrev-ref HEAD and git diff --numstat in the pane's folder, read every 3 s while the window is visible. Empty outside a git repo.
Context used ctx 340k/1M 34% Input, cache-creation and cache-read tokens of the last request, over context_window.context_window_size (200k if missing).
Effort xhigh effort.level in the payload, else the CLAUDE_CODE_EFFORT_LEVEL variable, else effortLevel in your Claude settings.json, else medium.
5-hour and 7-day limits 5h 62% ↻ 1h20m Shown here only while the sidebar footer is off.

A pane Claude hasn't reported on yet shows an empty strip, not zeros. Hover a field for a tooltip, for example "Context: 340k of 1M tokens used (34%)".

The diff counts are git diff --numstat without --cached, so staged changes aren't included. Binary files count nothing, and with nothing uncommitted only the branch shows.

The sidebar footer

Your 5-hour and 7-day limits sit above New session. They are the account's, not a session's, so they show whichever pane is open, and with none.

  • The number is the percent used, rounded down. Beside it is the time to the reset: 4d10h, 1h20m, 20m or now.
  • The countdown runs down every 30 s between Claude's reports.
  • Stale: once a limit's reset time has passed and Claude hasn't reported since, the number is the old window's. It is dimmed and its tooltip says "reset since the last report, which said N%".
  • Nothing shows until something has reported limits.

Turn the footer off in Settings and the limits move into the pane header instead.

Colours

Percent used Colour
Under 50 Green
50 to 69 Yellow
70 to 89 Orange
90 and up Red

A limit past your reserve reads red whatever its band (StatusStrip.BandFor, Meter.Band).

Themes

Pick one in Settings › Status bar › Theme. It changes both the pane header and the footer (StatusStripView.cs).

Theme Pane header Footer
Numbers (default) Fields as text, ruled off from each other; limits with their reset time Two ruled columns: 5h 62% ↻ 1h20m
Bars A 4 px bar per meter, effort as five rising bars A row per limit: name, bar, percent, reset
Rings A ring gauge per meter, effort as five rising bars Two cards: a ring with the number in it, then "resets in …"
Chips Each field in a pill, tinted by its colour band Two tinted cards: name and percent, then "resets in …"

Warn near a limit

Settings › Status bar › Warn near a limit: Off (default), 70%, 80% or 90%, and which limits it watches (5-hour, 7-day).

At or past the threshold:

  • The limit reads red wherever it shows, and its tooltip adds "Past your N% reserve".
  • The island says so once per limit window: 5h at 82% · past your reserve. See The Island.
  • A stale limit is past nothing.

It is a warning only. Prompts still go through.

Where the data comes from

The status line relay

Every Claude pane Clayo starts gets --settings '<file>' on its claude command (SessionLauncher.Plan). That file holds one setting, a statusLine command:

"<path to clayo.exe>" --statusline --pass | {
<your own statusLine command>
}

On every status refresh, Claude Code pipes the session's JSON to clayo --statusline (StatusRelay.cs). Clayo passes the same bytes straight on to your command and saves a copy to %LOCALAPPDATA%\Clayo\status\<session id>.json. Program.Main answers --statusline before any WPF code loads, because it runs on every refresh.

  • Your own status line still runs and looks as it always has inside the pane. Clayo copies the rest of your statusLine block (padding and the like) as it is.
  • With no status line of your own, the command is only clayo --statusline, which prints nothing.
  • The file is rebuilt each time a pane starts, so a pane follows your current statusLine.
  • Your settings.json (in CLAUDE_CONFIG_DIR, or ~/.claude) is only read, never written. The --settings file lives in %LOCALAPPDATA%\Clayo\statusline.json (statusline.dev.json for a Debug build).
  • Sessions you start outside Clayo don't have the relay, so they show no strip.

StatusStore.cs watches the status folder and parses each file. A half-written or foreign file is ignored, and the last good status stays.

Limits

The limits are the account's, so the newest report from any session wins. A session that hasn't called the API yet has none and doesn't blank the ones Clayo has.

Some accounts' Claude Code sends no rate_limits at all. Then Clayo reads %TEMP%\claude\statusline-usage-cache.json if a status line script of yours saves one, with five_hour and seven_day objects holding utilization and resets_at (StatusStore.UsageCachePath). Whichever is newer wins: Claude's report or that file. Clayo only reads the file. It never fetches limits itself.

Clone this wiki locally