Claude Usage Status Bar

Your Claude Code rate limits, always visible, without leaving the editor.
The Claude Code extension's chat panel does not render the statusLine setting. If you
configured a status line for the terminal, it is simply invisible in the panel — there is
no rendering code for it there at all. This extension closes that gap using VS Code's own
status bar, so you can see how much headroom you have while you work.
✨ Features
📊 Status bar — always visible
Both rate-limit windows, refreshed every 60 seconds. The parenthesised figure is how long
until the 5-hour window resets.
| Situation |
What you see |
| Normal |
✻ 5h 12% (4h51m) · 7d 36% |
| Approaching the limit (≥ 80%) |
Same text on an amber background |
| At the limit (≥ 95%) |
Same text on a red background |
| Starting up |
✻ … |
| No 7-day figure reported |
✻ 5h 12% (4h51m) |
| A refresh failed, earlier numbers known |
Last known numbers stay; the tooltip explains |
| A refresh failed, nothing known yet |
✻ ⚠ |
| claude-dashboard not installed |
✻ ⚠ not installed, with instructions in the tooltip |
Severity follows whichever window is higher, so a quiet 5-hour window will not hide a
nearly-exhausted 7-day one.
🔍 Details on hover
Your plan appears next to the title. It is detected from your local Claude Code account
files; if that fails you are asked once and the answer is remembered.
🖱 Click to refresh
No waiting for the next poll. Clicking reuses an in-flight request rather than starting a
second one, so impatient clicking cannot pile up processes.
🛟 Calm under failure
When a refresh fails, the last known numbers stay on screen instead of blanking out,
and the severity colour is not escalated. A brief network blip should not make the
status bar flicker or cry wolf. The failure is reported in the tooltip along with the time
of the last successful update, so you can still tell when the numbers went stale.
📋 Requirements
This extension reads claude-dashboard's check-usage.js to get its numbers and ships none
of its code. To install the plugin, run this in Claude Code:
/plugin install claude-dashboard
Without it, the status bar says ✻ ⚠ not installed and the tooltip tells you the same
thing — it fails visibly rather than silently.
📦 Installation
From the Marketplace — search for Claude Usage Status Bar in the Extensions view, or:
code --install-extension barahana10.claude-code-usage-statusbar
From a VSIX — download a release and:
code --install-extension claude-code-usage-statusbar-0.1.3.vsix
From source:
git clone https://github.com/barahana25/Claude-Usage-Statusbar
cd Claude-Usage-Statusbar
npm install && npm test
npx vsce package
🖱 Usage
| Action |
Result |
| Hover the status bar item |
Both windows, reset times, your plan, last update |
| Click the status bar item |
Refresh immediately |
| Claude Usage: Refresh in the Command Palette |
The same refresh, without aiming at the bar |
⚙️ Configuration
| Setting |
Type |
Default |
Description |
claudeUsageStatusBar.refreshSeconds |
number |
60 |
How often to refresh, in seconds. Minimum 60. |
claudeUsageStatusBar.plan |
auto | pro | max |
auto |
Which Claude subscription you have. |
{
// claude-dashboard caches API responses for 60 seconds, so a shorter
// interval just returns the same values. 60 is the enforced minimum.
"claudeUsageStatusBar.refreshSeconds": 120,
// "auto" reads your local Claude Code account files and asks once if it
// cannot tell. The plan only labels the tooltip — it never changes which
// limits are displayed.
"claudeUsageStatusBar.plan": "auto"
}
🔍 How it works
every 60s ──▶ resolve the newest installed claude-dashboard
│
▼
node <plugin>/dist/check-usage.js --json
│
▼
parse → fold into view state → render
The path is resolved on every refresh rather than cached at startup, so updating or
uninstalling claude-dashboard is picked up on the next poll without reloading the window.
Versions are ordered by comparing each component numerically — a plain string sort would
rank 1.9.0 above 1.31.1.
Every failure mode — a missing plugin, a spawn failure, a non-zero exit, unparsable output,
a timeout — is normalized into one result type, so rendering the status bar can never be
interrupted by an exception. In-flight work is aborted when the extension shuts down, so no
child process outlives it.
🔒 Privacy
Everything is local.
- The extension makes no network requests of its own and sends nothing anywhere.
- It runs
check-usage.js as a child process; that plugin talks to Anthropic on your
behalf, using credentials Claude Code already stores.
- It reads your Claude Code config files only to determine your plan, and only the fields
that name it.
❓ Known limitations
Context-window usage for the current session (42K/200K) is not shown. Those numbers
reach the terminal status line through a payload that Claude Code hands it on stdin, and
nothing outside the CLI can tell which session a given editor window belongs to. Guessing
would produce a number that looks authoritative and is quietly wrong, so it is left out.
Usage for other CLIs (Codex, Gemini, and so on) is fetched by the underlying plugin but
is not displayed here. This extension is about Claude's limits.
🛠 Development
npm install
npm test # compiles, then runs the suite
npx vsce package
Zero runtime dependencies — Node built-ins and the vscode API only. Five of the six
source modules never import vscode, which is why almost all of the logic is covered by
fast Node tests with no VS Code harness.
📄 License
MIT © barahana25
An unofficial, community-built extension. Not affiliated with, endorsed by, or supported by
Anthropic.