Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>Codaude — Claude Code & Codex Token Usage TrackerNew to Visual Studio Code? Get it now.
Codaude — Claude Code & Codex Token Usage Tracker

Codaude — Claude Code & Codex Token Usage Tracker

Noah jang

|
12 installs
| (0) | Free
Track Claude Code and Codex token usage and rate limits in real time from the VS Code status bar. Local logs only, no API keys.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Codaude

Codaude

Codex + Claude, in one status bar.

Codaude tracks how much of your Claude Code and Codex usage limits you have burned inside VS Code. It reads the session logs both CLIs already write to your disk. No API keys and no model requests are required.

Codaude usage panel

Features

Status bar

Two numbers, always visible: the percentage of each tool's 5-hour limit you have used right now.

 Claude 42%  |   Codex 17%

If a tool has never reported a limit (not installed, or never fetched), Codaude falls back to the raw token count for the last 5 hours instead.

Hover tooltip

Hover the status bar for the full picture without opening anything:

  • 5-hour and weekly limit bars drawn in block characters, with the exact percentage
  • resets in 4h / resets in 5d countdowns, matching what the CLIs themselves print
  • a 7-day sparkline of per-day token spend
  • a · 3h old marker when the limit snapshot the CLI cached has gone stale (30+ minutes)
  • one-click links to open the panel or a floating window

Usage panel

Open with Codaude: Show Token Usage, or click the status bar. Four sections:

◉ Usage by AI — per tool: a donut of your weekly limit, split by day with one colour per day; a 5-hour progress bar; today's spend as a slice of the weekly limit; and a pacing callout that answers the only question that matters mid-week —

Day 3 · 50% used — 10% per day for the remaining 5 days (today included) Save 4% per day compared with the average (14%)

☷ Usage by prompt — your recent prompts, newest first, each with the share of the 5-hour limit it consumed. A prompt over 1M tokens is bolded. Shows 5 at a time with a Show more (+5) button.

▣ Usage by project — token totals per project folder across the weekly window, ranked with medals, split Claude vs Codex, in a horizontal card slider.

↔ Claude vs Codex — one bar for the last 5 hours, one for the week, split by each tool's share.

Floating window

Codaude: Open Token Usage in New Window renders the same panel into an editor tab and immediately detaches it into its own OS window — keep it on a second monitor while you work.

Live updates

FileSystemWatchers sit on both log directories, ~/.claude.json, and the optional Claude statusline bridge directory. Recursive watchers fire repeatedly for a single write, so each burst of events is debounced by 1.5 s, and a rescan is never delayed more than 5 s while a tool keeps writing. The logs are also rescanned every minute, so countdowns stay current and a dropped watcher recovers. The panel is re-rendered only while it is actually visible.

Both CLIs only fetch fresh limit numbers at certain moments, such as when a session starts or when you open /usage. So every 5.5 minutes, and whenever you press Refresh, Codaude asks the installed CLIs for fresh numbers:

  • Claude Code — claude -p /usage with session persistence, hooks, and MCP servers turned off. Claude Code fetches your plan usage and rewrites its own cache in ~/.claude.json, which Codaude then reads.
  • Codex — a short-lived codex app-server with plugins turned off answers account/rateLimits/read. No thread is started.

Neither run sends a model request or uses tokens. Claude Code does not rewrite its cache if the last fetch is less than 5 minutes old, so the interval is slightly longer than that. Turn this off with codaude.refreshLimitsFromCli.

How it works

Codaude reads everything locally and never uploads or sends anything itself. The only network traffic comes from the Claude Code and Codex CLIs it runs to refresh limits (see Live updates).

Tool Sources
Claude Code ~/.claude/projects/**/*.jsonl (usage), ~/.claude.json (limit cache, refreshed with claude -p /usage), ~/.codaude/claude-limits/*.json (optional statusline bridge)
Codex ~/.codex/sessions/**/*.jsonl (usage + rate_limits), codex app-server account/rateLimits/read (live limits)

Only files modified in the last 7 days are scanned; older logs are skipped by mtime.

Claude Code writes one line per assistant message, but the same message reappears in resumed or streamed sessions — Codaude dedupes on message.id + requestId, then sums input_tokens, output_tokens, cache_read_input_tokens, and cache_creation_input_tokens.

Codex logs a running total_token_usage on every token_count event, so a turn's cost is the delta against the previous event in the same rollout file. cached_input_tokens is a subset of input_tokens there (unlike Claude's cache fields), so it is subtracted out instead of double-counted. A counter reset counts as the full value, never a negative delta.

Limits are the providers' own numbers, not our estimate. Claude Code caches its /usage response in ~/.claude.json. Optionally, Claude Code's documented statusline input can be passed through the Codaude bridge; the bridge stores only rate_limits and timestamps the observation locally. Codex stamps rate_limits onto token_count events and also returns them from codex app-server. When several sources report the same window, the most recently fetched one wins. Codaude reads the reported percentage and reset time, and every window is measured backwards from that reset time — not from midnight, and not from "now". When a tool has never reported limits, it falls back to a plain rolling 5 hours / 7 days ending now, and the panel labels that range estimated.

The bridge does not make an API request or access credentials. It only receives the latest rate-limit data that Claude Code already passed to its statusline command. It cannot refresh an idle Claude Code session or include usage from another machine until Claude Code receives a newer response.

Optional Claude statusline bridge

The bridge only works for Claude Code running in a terminal (claude). The Claude Code VS Code extension panel does not run statusline commands, so if you use the panel, the CLI refresh described in Live updates keeps your limits current instead.

Run Codaude: Install Claude Statusline Bridge. If an existing user-level Claude Code statusLine.command is found, Codaude installs the bridge and wraps that command automatically. Start a new Claude Code session afterward. If no compatible command is found, place the installed bridge before your existing command manually:

{
  "statusLine": {
    "type": "command",
    "command": "node ~/.codaude/codaude-statusline.js <your-existing-statusline-command>"
  }
}

The bridge keeps the original command's output and exit code unchanged. It writes per-session snapshots with directory mode 0700 and file mode 0600. It never writes prompts, paths, models, tokens, credentials, or the original statusline input.

Windows are matched by length (window_minutes), not by primary/secondary, so the 5-hour and weekly bars stay correct whichever order a provider lists them in.

Requirements

  • VS Code 1.135.0 or newer
  • Claude Code and/or Codex installed and used at least once

Only one of the two is enough — a tool that has never run simply shows no data.

Commands

Command What it does
Codaude: Show Token Usage Focus the Codaude panel
Codaude: Open Token Usage in New Window Open the panel as a detached floating window
Codaude: Install Claude Statusline Bridge Install the optional bridge for terminal Claude Code sessions

Extension Settings

Setting Default What it does
codaude.refreshLimitsFromCli true Run claude -p /usage and codex app-server on Refresh and every 5.5 minutes to fetch fresh limit numbers

Privacy

Codaude never makes a network request of its own, never reads credentials, and never asks for an API key. To refresh limits it runs the Claude Code and Codex CLIs you are already signed in to, and those CLIs contact their providers the same way they do when you open /usage or start Codex. Turn this off with codaude.refreshLimitsFromCli. Your prompts are read from local log files and rendered only inside the VS Code webview on your own machine. The optional bridge receives data from Claude Code locally and stores only non-secret quota fields.

Known Issues

  • Limit percentages are as fresh as the last CLI refresh (every 5.5 minutes or on Refresh). The panel identifies the source as CLI cache, Codex app-server, live bridge, or rollout log and marks snapshots older than 30 minutes as Xm old.
  • Pressing Refresh again within 5 minutes may not change Claude's numbers, because Claude Code does not rewrite its cache more often than that.
  • If a CLI cannot be found or is signed out, the panel shows a note under that tool. When claude is not on your PATH, Codaude uses the copy bundled with the Claude Code VS Code extension, and does the same for Codex with the Codex extension.
  • OpenAI marks codex app-server as experimental, so a future Codex release may break the live Codex refresh. Codaude then falls back to the rollout logs.
  • Each VS Code window runs its own refresh.
  • Claude's bridge data is latest-observed data, not a forced /usage refresh. It only runs for Claude Code in a terminal, is unavailable until that session produces a statusline update, and may not cover activity from another machine.
  • The bridge updates only the user-level statusLine.command; managed or project settings may override it.
  • The bridge uses Node.js and does not require jq.
  • Codex per-turn cost is a delta of a running counter, so a session that resets its baseline mid-file charges that one turn at full value.
  • Per-day colours in the donut split the provider's weekly percentage in proportion to the tokens Codaude counted, so a day's slice is an attribution of the real total, not a separately reported number.

Release Notes

0.0.1

Initial release — status bar tracking, hover tooltip, usage panel (by AI / by prompt / by project / head-to-head), floating window, live log watching.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft