AI dev workflow
Dani Reyes11 min read81 views

ccusage in 2026: what the Cost column actually measures

The Cost column in ccusage is a counterfactual: what your tokens would have cost at pay-per-use list prices, computed locally. On a Claude subscription it is not your bill, and ccusage's own introduction and Anthropic's own docs both say so. A field log on what the number measures, where the caveat is written, and where it is missing.

Flat editorial illustration on deep navy: a terminal window card with one lime green cost bar, a dotted line curving to a detached lime price tag, and a separate invoice card below it that the tag does not touch
Flat editorial illustration on deep navy: a terminal window card with one lime green cost bar, a dotted line curving to a detached lime price tag, and a separate invoice card below it that the tag does not touch
On this page

Quick answer

The Cost column in ccusage is a counterfactual. It is what your token volume would have cost at pay-per-use list prices, computed locally on your machine, and if you are on a Claude subscription it is not your bill and never was. This is not a bug and nobody is hiding it: ccusage's own introduction frames the question it answers as "What would I be paying on a pay-per-use plan?", and Anthropic's own documentation says the equivalent figure in Claude Code "isn't relevant for billing purposes" for Max and Pro subscribers. The number is real, it is useful, and it answers a different question than a dollar sign in a terminal implies. If you are on a subscription, the two things that answer your actual question are ccusage blocks and Claude Code's own /usage.

Anthropic I ran npx ccusage monthly on a Tuesday, saw a three-figure number in the Cost column, and felt the small cold drop you feel when a tool tells you something about your money. Then I remembered I am on a flat subscription and have not been billed a variable amount in months. So the number was not wrong. It was answering a question I had not asked, and I had spent about four seconds reading it as though it were my invoice. This is the field log of what that column actually measures, written on September 5, 2026, after going and reading the primary documents instead of the dashboard.

What the number actually is

Start with the vendor, because on this one the vendor is unusually clear.

Anthropic's Claude Code costs documentation, read on September 5, 2026, says this about the Session block in /usage:

"The Session block in /usage shows API token usage and is intended for API users. Claude Max and Pro subscribers have usage included in their subscription, so the session cost figure isn't relevant for billing purposes."

And on where the dollar figure comes from:

"Claude Code computes the dollar figure locally from token counts at list price, unless a modelPricing table is in effect."

And then, plainly:

"The figure is an estimate, so for authoritative billing see the Usage page in the Claude Console."

Three things fall out of that. The figure is computed on your laptop, not fetched from a billing system. It is priced at list price, which is the pay-per-use API rate card, not whatever you actually pay. And Anthropic itself scopes it to API users and says so in the sentence that introduces it.

ccusage reads that same world. In its display mode it surfaces the costUSD value Claude Code writes into its own local JSONL. In calculate mode it computes the figure itself from token counts using pricing pulled from LiteLLM, models.dev and built-in historical schedules. In the default auto mode it uses whichever is available per entry. Every one of those three paths lands on a list-price number.

So the column is honest arithmetic on the right tokens against the wrong price list, for a subscriber. That is a useful thing to have. It is just not a bill.

Where the caveat lives, and where it does not

This is the part I found genuinely interesting, and it is not a story about anyone being wrong.

ccusage's introduction page gets it exactly right. Its Problem section lists the questions the tool exists to answer, and one of them is, word for word, "What would I be paying on a pay-per-use plan?" The same page describes the output as estimated costs. That is precise, and it is the correct framing.

Now go one click away, to the README on GitHub, which is the result sitting at organic position 1 for the term. Its tagline is "Analyze coding (agent) CLI token usage and costs from local data." I counted, on the real README (the repo root file is a 24 byte pointer into a monorepo, which cost me a wasted fetch): across roughly 11,000 characters of content, the word subscription occurs zero times, estimated occurs zero times, and pay-per-use occurs zero times. For calibration on the same file, cost occurs 14 times and pricing 10, so the count is a real absence and not a broken grep.

Same on the detail pages. Across the cost-modes guide and the source-support page, subscription, pay-per-use and flat rate all occur zero times.

And then the number itself renders in your terminal as a dollar sign followed by digits, under a header that says Cost, with no caveat attached to it at all.

That is the actual shape of this. Every authoritative source states the caveat somewhere in prose, and not one of them states it at the point where you read the number.

Here is the sharpest version of the same misalignment, and I want to be careful to frame it as a documentation gap rather than a defect.

ccusage's cost-modes page has a Mode Selection Guide. Under when to use display mode, the first bullet is "Billing verification - Comparing with Claude charges" and the second is "Official costs only - Trusting Claude's calculations".

display mode is the one that reads Claude Code's pre-calculated costUSD values. Those are the values Anthropic documents as computed locally at list price and "not relevant for billing purposes" for subscribers.

So the mode the docs point you at for verifying your bill is the mode that reads the one number the vendor has explicitly said is not about your bill. Both pages are individually accurate. Read together, they send a subscriber somewhere unhelpful. Nobody had to make a mistake for this to happen, which is precisely why it survives.

What actually answers the subscription question

The constructive half, and it is better tooling than I expected.

Claude /usage inside Claude Code is now substantially more than a cost line. On a Pro, Max, Team or Enterprise plan it shows plan usage bars, activity stats, and a usage breakdown. The part I had not seen before is attribution: recent usage broken out by skills, subagents, plugins and individual MCP servers, each as a percentage of the total. If you have ever suspected one chatty MCP server of eating your window, that is the screen that tells you. It needs Claude Code v2.1.174 or later, and the VS Code extension surfaces the same shares in its Account and usage dialog.

Two more that were news to me. /insights analyses your usage patterns and runs on any plan and any provider, with the honest note in the docs that its own analysis tokens count against your plan. And /usage-credits shows spend against a monthly limit once usage credits are on, which requires signing in with a claude.ai subscription through /login and is not available with API key authentication.

Also worth knowing: /cost does not appear on that documentation page at all. Zero occurrences. /usage appears 21 times. If you have a muscle memory or a blog bookmark pointing at /cost, it has moved on without you.

On the ccusage side, the command that maps to the subscription reality is ccusage blocks, described in its own README as Claude Code 5-hour billing windows with active block monitoring. That is the unit Pro and Max plans actually ration against. It is the least-linked command in the tool and the most relevant one if you are trying to avoid hitting a wall mid-refactor.

The tool grew eighteen data sources while I was not looking

Worth updating your mental model. ccusage is no longer a Claude Code utility.

Its introduction now lists eighteen coding CLIs it reads: Claude Code, Codex, OpenCode, Amp, Droid, Codebuff, Hermes Agent, pi-agent, Goose, OpenClaw, Kilo, Kimi, Qwen, GitHub Copilot CLI, Gemini CLI, Antigravity, Grok Build CLI and ZCode. It aggregates all detected sources by default, with no special flag. The docs even note the name has been retrofitted: "The original 'cc' came from Claude Code usage and now also fits Codex CLI usage."

OpenCode The two most-cited third-party write-ups both describe a Claude-Code-only JSONL parser, which is what it was when they were written. If you run more than one agent CLI, the default output is now a merged view across all of them, and that changes what a total means.

There are two different tools called ccusage

Small, real, and it will bite exactly one kind of person.

npm npx ccusage gets you the tool above: local JSONL parsing, eighteen sources, estimated costs.

PyPI pip install ccusage gets you a different program by a different author. It is wakamex/ccusage, version 0.1.12, and it does close to the opposite thing: it fetches your real rate limit data from Anthropic's API and renders it in the statusline. Its sample output shows a plan name, a session percentage, weekly percentages per model family, reset timers and an extra-usage figure.

I want to be honest about scale rather than dress this up as a rivalry. The PyPI package had 3 stars when I looked and was last pushed on August 15, 2026. It is a small personal project, not a competitor. But it is genuinely closer to what a subscriber wants, because percentages against your plan limits are the thing that determines whether you get rate-limited, and it is sitting in the package namespace people reach for reflexively. If you are a Python person who typed the obvious install command and got something unfamiliar, that is why.

The blind spot they share

Both approaches read local session history on this machine. Anthropic's docs spell out the consequence for the native figure: usage from other devices or claude.ai is not included. The same is structurally true of ccusage, which parses local files by definition.

I work across a laptop and a desktop. Neither tool has ever shown me a complete picture, and until I read that sentence I did not know I was looking at a partial one. That is not a criticism of either. It is a property of local-first accounting, and it is the reason the Console remains the authoritative surface.

The scoreboard

Scroll to see more

What I checkedWhat I foundWhere
What the Cost column prices atList price, computed locallyAnthropic docs, Sep 5, 2026
Is it a subscriber's billNo, explicitly notAnthropic docs, Sep 5, 2026
How ccusage frames the question"What would I be paying on a pay-per-use plan?"ccusage guide, Sep 5, 2026
subscription on the ranking README0 occurrences in ~11,000 charsGitHub README, Sep 5, 2026
Mode the docs suggest for billing checksdisplay, which reads the non-billing numberccusage cost modes, Sep 5, 2026
Data sources supported today18 coding CLIsccusage guide, Sep 5, 2026
/cost in current Claude Code docs0 occurrences; /usage appears 21 timesAnthropic docs, Sep 5, 2026
Tools named ccusage2, different authors, different questionsnpm and PyPI, Sep 5, 2026

What I actually changed

I stopped reading the Cost column as spend and started reading it as relative burn. As a comparison between two weeks, or between two projects, or before and after I turned a noisy MCP server off, it is excellent, because the pricing error is a constant that cancels out. As an absolute figure it was only ever going to mislead me.

Then I put ccusage blocks in my shell history instead of ccusage monthly, because the five-hour window is the thing that can actually interrupt my afternoon.

And I went and looked at /usage attribution properly, which is the one concrete win in this whole exercise. It turned out one MCP server was responsible for a share of my usage I would not have guessed, and I would never have found that from a cost total. I wrote up which statusline fields survived a similar cull in the statusline I actually read, and the same principle held here: the number that looks most important is rarely the one that changes a decision.

One correction I had to make to myself

I went into this expecting the ecosystem write-ups to be the villain, because the highest-ranking one is titled "ccusage: Finally Know How Much Claude Code Is Actually Costing You", which promises exactly the thing the vendor documentation says the number is not.

Then I read it. The article is right. It opens by naming the subscription situation directly, "You're paying a flat monthly fee", and it correctly identifies rolling five-hour windows as what actually governs whether you get rate-limited, "not your total monthly spend". Its body is more careful than its headline.

I was one step away from using a title as evidence about a body, in a post whose entire argument is about reading primary sources instead of summaries. Catching that changed the conclusion for the better, because the real finding is not that anyone is wrong. It is that the caveat lives in prose, in three separate places, and never in the one place where the dollar sign appears.

Sources

  • Anthropic, "Manage costs effectively" (code.claude.com/docs/en/costs), read September 5, 2026: the /usage session block, list-price local computation, plan usage breakdown and attribution, /insights, /usage-credits.
  • ccusage documentation, Introduction and Cost Modes (ccusage.com/guide/), read September 5, 2026: the eighteen supported data sources, the pay-per-use framing, and the auto / calculate / display modes.
  • ccusage README (github.com/ccusage/ccusage, apps/ccusage/README.md), read September 5, 2026: command list including blocks, and the term counts quoted above.
  • ccusage on PyPI (pypi.org/project/ccusage/), version 0.1.12, read September 5, 2026.
  • Steven Gonsalvez, "ccusage: Finally Know How Much Claude Code Is Actually Costing You", dev.to, April 26, 2026.

P.S. I did check whether my four-second panic was justified by going and reading the Console. It was not. I am, as ever, the least reliable instrument in my own setup.

D

Written by

Dani Reyes

Dani Reyes writes DevMoment field notes on AI dev workflow, tested on real work rather than demos.

Frequently asked questions

Does ccusage show what I actually pay for Claude Code?

No, not if you are on a subscription. The Cost column is computed locally from your token counts at pay-per-use list prices. ccusage's own introduction describes the question it answers as what you would be paying on a pay-per-use plan, and Anthropic's Claude Code documentation, read on September 5, 2026, states that the equivalent session cost figure is intended for API users and that Max and Pro subscribers have usage included in their subscription, so the figure is not relevant for billing purposes. For authoritative billing Anthropic points to the Usage page in the Claude Console.

Where does the dollar figure in Claude Code come from?

Anthropic's documentation states that Claude Code computes the dollar figure locally from token counts at list price, unless an administrator has set a modelPricing table in managed settings so the figure uses contracted rates. It also calls the figure an estimate. Because ccusage in its display and auto modes reads that same pre-calculated costUSD value out of Claude Code's local JSONL files, both surfaces are showing you arithmetic on list prices rather than a billing record.

What should I use instead if I am on a Pro or Max plan?

Two things. Inside Claude Code, the /usage command shows plan usage bars and a usage breakdown, including attribution of recent usage to skills, subagents, plugins and individual MCP servers as percentages, which requires Claude Code v2.1.174 or later. In ccusage, the blocks command reports Claude Code five-hour billing windows, which is the unit subscription rate limits actually operate on. Note that the older /cost command does not appear on Anthropic's current costs documentation page at all.

Is ccusage still just a Claude Code tool?

No. As of September 5, 2026 its introduction lists eighteen coding agent CLIs it reads, including Claude Code, Codex, OpenCode, Amp, Droid, Codebuff, Hermes Agent, pi-agent, Goose, OpenClaw, Kilo, Kimi, Qwen, GitHub Copilot CLI, Gemini CLI, Antigravity, Grok Build CLI and ZCode, and it aggregates every detected source by default with no special flag. The two most-cited third-party write-ups describe a Claude Code only JSONL parser, which is what it was when they were published.

Why does pip install ccusage give me a different tool?

Because it is a different program by a different author that happens to share the name. The PyPI package ccusage is wakamex/ccusage, version 0.1.12 when checked on September 5, 2026, and it fetches real rate limit data from Anthropic's API to display in the Claude Code statusline rather than parsing local JSONL files. It is a small project, 3 stars at the time of writing, but it sits in the package namespace many Python developers reach for first. The widely used tool is the npm one, run with npx ccusage.

AI dev workflow

OpenCode Go in 2026: three sources, three different limits

OpenCode Go's own page states usage limits as requests per five hours, per model, across fourteen models running 110 to 45,300. The two third-party pages that rank for the term describe the same plan as a three-tier dollar budget on a lineup that has largely turned over. A field log on which source to trust and why.

10 min read100