2026-11-11 Claude Epic Status Line v2.3.0 - 5 processes instead of 113
Canonical version: 2026-11-11 Claude Epic Status Line v2.3.0 - 5 processes instead of 113.
I've just shipped v2.3.0 of Claude Epic Status Line, my status line for Claude Code. It started with a bug on my Windows machine: the status line showed 354k of context and 244 requests, while the session was already at 359k and 247.
The cause was speed: a status line that can't finish a render in time keeps showing old numbers.
What was wrong
One render started 113 processes. In Git Bash on Windows, a process costs about 60 ms, so a render took about 9 seconds.
Why does that matter? Claude Code debounces status line updates at 300 ms, and it cancels a render that is still running when the next update arrives. So during an active session, my renders kept being cancelled, and the line stayed behind.
Faster renders
I rebuilt the render path. One jq call reads the whole stdin payload, one git status --porcelain=v2 --branch call reads the repository, and bash builtins do everything else. That's 5 processes instead of 113.
Measured on the same machines:
- Windows (Git Bash): 9 s → 0.8 s
- Linux: 178 ms → 65 ms
The usage API request (per-model weekly limits, extra-usage credits) no longer runs during a render either. A render reads a cached digest. When that digest is older than the TTL (60 s by default), one background job refreshes it for the next render (stale-while-revalidate). The side effect: on a machine with no cache yet, those rows appear on the second render.
Windows support
Windows (Git Bash) is now supported. The directory used to show up as C://Users//me//My Drive//Notes//Vault. Now it shows …/Notes/Vault, with the home directory as ~.
A warning when the prompt cache goes cold
The per-turn figure (e.g., 24k/turn) assumes a warm prompt cache: the context you re-send on every turn is read at the cache-read rate, 5% of the input price on Opus 5.5. But the cache only lives 5 minutes or 1 hour (each request renews it). Once that time has passed, your next message re-writes the WHOLE context at the cache-write rate, which is above the input price.
Claude Code (2.1.251 or newer) now sends prompt_cache.expires_at and recache_tokens_if_cold, so the status line can tell you:
- While the cache is warm, the context hint ends with
cache warm until 2:42pm - Once it's cold, the line shows
486k next turn (cache cold), plus a hint:prompt cache expired at 2:42pm — the next turn re-writes 486k at the cache-write rate, not ~24k — /clear first if you have switched task CESL_SHOW_CACHE=0turns it off
Claude Code only re-runs the status line on events. If you want to see the cold state on an idle session, set refreshInterval (in seconds) in the statusLine block of ~/.claude/settings.json.
Fixes
- The Fable weekly row was hidden. The usage API marks the Fable weekly allowance
is_active: falsewhile it counts usage, and the script dropped inactive limits. A per-model row now shows when the limit is active or has usage. In the v2.2.1 post, I wrote that the per-model rows show the Fable cap when the usage API returns it; on my account, they didn't until this release - The context percentage now matches Claude Code. The script truncated (35%) where Claude Code rounds (36%); it now uses
context_window.used_percentage - Renders cancelled during an API request no longer leave
usage-cache.json.<pid>files behind - A
git statusstopped by the 2-second bound is now marked with…instead of looking complete
Tests
v2.3.0 also comes with a test suite: bash tests/run.sh runs 103 checks, with fixtures, a fixed clock and a fake curl (no network). CI runs it on Linux, macOS (stock bash 3.2) and Windows (Git Bash). I tested this release on Linux, Windows and bash 3.2; macOS is only covered by CI. There's also a new version subcommand.
Get it
You need jq, curl, git and bash 3.2+, on Linux, macOS or Windows (Git Bash).
Already using it? Run git pull in your clone, then bash install.sh again. The installer keeps your config file.
New here? Clone the repository and run bash install.sh.
- Source code: https://github.com/dsebastien/claude-epic-status-line
- Release: https://github.com/dsebastien/claude-epic-status-line/releases/tag/v2.3.0
That's it for today! ✨
References
- Release: https://github.com/dsebastien/claude-epic-status-line/releases/tag/v2.3.0
- Documentation: https://dsebastien.github.io/claude-epic-status-line/
- Source code: https://github.com/dsebastien/claude-epic-status-line
- Claude Code status line documentation: https://code.claude.com/docs/en/statusline
Related
- Claude Epic Status Line
- Claude Code
- Claude Code Prompt Caching
- Git Bash
- 2026-11-10 Claude Epic Status Line v2.2.1 - the right per-turn cost on Fable 5.2
About Sébastien
Ready to get to the next level?
Found this valuable? Share it with someone who needs it.