Ian Provencher
Listen to the podcast
Operating Stack

The Claude HUD · VS Code extension

The instrument that watches the session.

A long agent session spends money and fills a context window whether or not anyone is watching, and by the time either one becomes obvious it is already the problem. This is a VS Code extension I built to make both visible while there is still a decision to make: live gauges for the Claude Code session running in that window.

It computes its figures in the editor process and reads a few files off disk. No server, no port, no credentials, nothing listening.

What it shows

5

Each card's coloured left edge names its scope, because the same number means different things at different scales — how much of a five-hour account window is gone is a different question from how full this one conversation is, and a panel that mixes them teaches you to read neither.

Account-wide

Account limits

The rolling five-hour and seven-day windows as gauges, with pace and a projection — not just how much is spent but whether the current rate lands inside the window.

This conversation

Context pressure

How full this conversation’s window is and how fast it is filling, which is the number that decides whether a long session is about to lose its footing.

This conversation

Cache warmth and reuse

How much of each request is being served from a warm cache rather than re-sent and re-charged — the single biggest cost lever on a long session.

This conversation

Subagent breakdown

What each delegated agent this conversation spawned actually cost, so a fan-out that did not pay for itself is visible rather than absorbed into one total.

Who is working

Credential profile

Which account is doing the work, with a one-click switch — because the wrong profile spends the wrong budget and nothing else on screen would say so.

Two readouts, and neither repeats the other

This panel and the terminal status line both describe one session, which is the setup that usually produces two half-trusted numbers for the same thing. So the division is strict rather than tidy: the status line shows only what the HUD physically cannot see, and the panel gave up everything it could not compute for itself.

Five figures reach the tool's own status-line command and are recorded nowhere else, so nothing reading a transcript can reproduce them — the billed total, its own tally of lines it edited, the percentage used against the real window size, the cache read on the request in flight, and the model variant. Those stayed in the terminal. Everything else — the rate limits with their pace and projection, cache reuse, the per-agent breakdown — moved here, where a gauge can say more than a number can.

The panel now needs the status line for nothing at all, and a test proves it: the extension is blinded to both files it once read, and is required to render anyway.

Terminal keeps

  • BILL
  • EDITS
  • CONTEXT
  • CACHE
  • MODEL

Written nowhere else on the machine.

Panel keeps

  • Account limits
  • Context pressure
  • Cache warmth and reuse
  • Subagent breakdown
  • Credential profile

Everything it can compute for itself.