Agent Usage BarShows how much of your Claude Code and Codex plan is left, in the VS Code status bar. Both numbers come from the account rather than from anything counted locally, so usage you spent on another machine, in a terminal, or in another editor still shows up here.
What it showsOne status bar item per provider, each with its own monochrome glyph:
The item turns yellow past the warning threshold and red past the error threshold, both measured on the percentage used whichever way you display it. It also turns red, with a reason, whenever a provider reports the account as stopped — a spend limit or a hard rate limit — however low the percentage happens to be. Hover for a tooltip with a themed bar per window — filled to the percentage and colored by the same thresholds as the item — the plan name, exact reset times, the pace, any credit balance, the reason the last refresh failed if one did, and links to refresh or to open the settings. Click either item for a menu that toggles a provider, refreshes, or opens the settings. PaceBeside each window's reset time, the tooltip says where that window is heading:
Only the 5-hour window is forecast, because it opens on your first message — the time it has been open is time spent working. The weekly window opens on a calendar anchor and runs through nights and days off, so extrapolating across it would read a strong Monday as a limit blown by Thursday; it says how much of the week has gone instead, to read against the percentage above it. Nothing is stated until a window has been open long enough for its percentage to be a rate rather than rounding, and One reading for every windowEvery VS Code window runs its own copy of an extension, so six open windows normally means six of everything: six timers, six requests, and six items that disagree with each other for a few seconds after each one lands. This extension does not work that way. The windows of a profile share one reading and one schedule:
There is no leader and nothing is elected, so there is nothing to get stuck. See Sharing between windows for how it works. Requirements
Neither is required for the other. A provider that is not installed or not signed in says so in its tooltip; switch it off in the settings and its item disappears. InstallFrom the Marketplace, or from a
SettingsRun Agent Usage Bar: Open settings, or click either status bar item and pick Open settings.
In Dates and times follow VS Code's display language when the locale setting is empty, which is not the same as the regional settings your operating system holds — VS Code in English shows US dates on a machine set to anything else. Write a language tag such as Each provider is drawn with its own monochrome mark. Set a label if you would rather see your own text; it accepts a plain string or a codicon reference such as TroubleshootingEvery failure keeps the last good numbers on screen rather than blanking the item, so the tooltip is where the reason lives.
A macOS keychain prompt was declined. That is respected rather than retried: the read is not attempted again for half an hour, so declining does not turn into a prompt every five minutes. Run Agent Usage Bar: Refresh usage to ask again immediately. The numbers look old. A history icon and a note in the tooltip appear once a reading is more than ten minutes old, so a stale number never passes as current. Refresh from the menu to force a read that ignores the usual floor. Nothing appears at all in a Remote-SSH, WSL, or dev container window. The extension runs on the machine your editor runs on, which is where both agents keep their sign-ins. See Platform scope. Data accessThis extension reads a credential, so the boundary is worth stating exactly. Usage is a property of the account rather than of this machine, so both providers are asked about the account instead of a local scoreboard being counted up. CodexThe extension starts Claude CodeThe extension reads the token Claude Code stores, spends it on one request, and drops it. That request goes to The token is never logged, cached, or written back — not to the shared state, not to settings, not to the extension's secret storage. Keeping a copy would trade one file read every five minutes for a second place a credential lives: one that goes stale when Claude Code rotates the token, and that would have to be invalidated on sign-out. It is also never refreshed, deliberately. A refresh rotates the stored token, so racing Claude Code for it would sign Claude Code itself out. When the token is expired or rejected, the extension says so and leaves the renewing to Claude Code. Where the token lives depends on the platform:
Reading the macOS keychainThe keychain is read through the tool macOS ships for it: The file is tried first even on macOS, because it is the cheaper question and Claude Code falls back to it where the keychain is not available. An ordinary macOS read therefore starts one short-lived process, and an ordinary read anywhere else starts none. If macOS puts a prompt in front of that read, the answer is respected rather than worked around:
Agent transcripts
Codex also pushes an Every automatic read sits behind a floor of thirty seconds per provider, whichever trigger asked for it: a single long turn writes its transcript in bursts, and the percentages it moves are not worth a request each. A refresh you ask for from the menu ignores the floor. Sharing between windowsEach reading is stored in the extension's own state, which VS Code shares between the windows of a profile, together with the moment the read was started. A window that finds a reading younger than the floor displays it rather than asking again, and a rate-limit wait is honoured by all of them at once. The background interval is the machine's rather than each window's: whichever window notices it has run out does the reading, so a window closed mid-read costs one cycle rather than a stalled status bar. There is no leader and nothing to elect — the window that read last simply keeps a few seconds of head start, which is enough for the reading to settle on one of them. Two windows arriving in the same instant both write their claim and then re-read it before spending a request, so all but one stand down. That is not a lock and cannot be one; on a rare tie the cost is a second request, not a wrong number. What is stored, and what never leavesThat one endpoint is the only network target in the extension. It persists exactly two things, both through VS Code's own APIs:
Neither carries a token, a prompt, or any file content. There is no telemetry, no runtime dependency, no custom credential path, and no custom update mechanism. No prompt, code, or file content ever leaves the machine. Resets, staleness, and rate limitsA reading is a point-in-time snapshot, so a percentage can predate a window reset. The extension detects that from the recorded reset time, shows When the Claude usage service rate limits a request, the Platform scopeVersion 0.1.0 is developed and hand-tested on desktop VS Code on Windows. Both other desktop platforms are implemented rather than assumed: the Codex install layouts and the macOS keychain read are covered by tests that run on all three CI runners, and the file watcher is exercised against the real The extension runs on the machine your editor is running on, which is where both agents keep their sign-ins. In a Remote-SSH, WSL, or dev container window it therefore reports the usage of the local account. If your agents run on the remote side, their usage is not what you will see. There is no web build. It reads local files and starts a local process, neither of which exists in a browser. ContributingSetup, the architecture, the scripts, and how the provider glyphs are built are all in CONTRIBUTING.md. Security reports go through SECURITY.md. License and trademarksMIT; see LICENSE. The icon font in Claude and Anthropic are trademarks of Anthropic. Codex and OpenAI are trademarks of OpenAI. The monochrome provider glyphs are used solely to identify the services whose usage is being displayed. This project is independent and is not affiliated with, endorsed by, or sponsored by Anthropic or OpenAI. Either provider glyph can be replaced with custom text or a VS Code codicon through the |