Your CLIs show you a usage bar. They do not tell you which repo burned the money, which model was overkill, or the one thing that decides whether any of it matters: how much is prepaid on a subscription and how much is a metered API bill. One command reads the history already on your machine and tells you.
Want to read it first? Inspect the script or run --dry-run to print the exact payload before anything is sent.
Every number comes from the session files on your own disk, priced per model with the current API-equivalent rate card. No estimates from an industry average, no survey data, no telemetry we collected earlier.
Illustrative figures. Your report is computed entirely on your machine.
On a flat plan, tokens are prepaid: one more turn costs nothing, and "waste" is capacity you already bought. On an API key, every token is charged to a card. Same tokens, completely different decision. The scan reads how each CLI is signed in and splits your spend across both.
Claude Pro, Max 5x and Max 20x. ChatGPT Plus, Pro and Team. Gemini, Cursor, Grok and the OpenCode connectors. It reads the plan tier, not just the fact that you are signed in, because Max 5x and Max 20x differ by $100 a month.
Your real return on the plans you pay for, as a multiple. Whether a subscription is idle enough that cancelling it is free money. And whether metered API spend is quietly running alongside a plan that already covers the work.
Enum fields only: the plan tier, the auth mode, whether a key is present. No token, key, refresh token, account id, or email address is ever read into the report, and the server drops them again on the way in.
Both credentials configured for one provider? It says mixed and leaves that spend unattributed, rather than guessing which one served a turn.
Each finding names the observed quantity behind it, prices the counterfactual with the same rate card as the real spend, and states its own confidence. You can check the arithmetic, which is the point.
Cache writes cost roughly 12x what a cache read costs. Restarting a session per task pays that premium every time. The scan measures your write:read ratio and prices the gap.
It measures the average turn size on each model. Small turns on your most expensive model are routine work paying frontier prices, and it names the next tier down that you already use.
Reasoning tokens bill at the output rate. An effort dial left at maximum for routine turns is charged in full, and shows up as a thinking-to-answering ratio well above the norm.
Runs of prompts that tell the agent it got it wrong, rather than moving the task forward. Every turn inside one re-pays for work already bought once.
Sessions that opened, loaded the repo, and never got a second prompt. Sub-agent threads and scripted one-shot runs are excluded, because those are one prompt by design.
A subscription whose token value came in under its own monthly fee. This is the rare finding that is real cash: cancel it, or move work onto it until it earns out.
API-key spend running alongside a subscription that already covers the work. Every one of those tokens is charged to a card while prepaid capacity sits unused.
Models running with no published rate. That spend appears in no total anywhere, including this report's, which makes it the one number worth chasing down first.
The scan runs locally and prints the whole report to your terminal. It only offers to email you a copy afterwards, and it shows you what that copy contains before you decide.
Run it with --dry-run and it prints the exact JSON it would send, then exits. Run it with --local-only and it never asks at all.
Your prompts. The agent's replies. Any file contents, diffs, or code. File paths. Repository contents. Your username, hostname, or machine identifier. No API key, OAuth token, refresh token, account id, or email from any credential file.
The aggregate numbers already printed in your terminal: totals, per-model and per-repo dollar figures, the findings, your detected plan names (Claude Max 20x) and billing rails, and bare repository folder names. Pass --anonymize-repos and even those become repo-1, repo-2.
Continuum is what fixes them: one warm session per repo so context survives between turns, per-turn model routing instead of one model per session, and a live spend meter across Claude, Codex, Gemini, Cursor, and Grok in one place.
The scan is free and standalone. You do not need Continuum to run it or to read the report.