The --no-cost flag removes cost not only from the table but from the JSON fields as well - so the report can be shown to someone without disclosing the sums.
The Data Goes Nowhere
This is stated on the documentation's front page as a separate point: it reads local logs without uploading your data.
The only thing it needs the network for is model pricing, and even that can be cut. The --offline mode works from pre-cached prices, with no network connection at all.
The caveat is honest, though: the documentation does not promise the offline prices are always current. A cache is a cache; refreshing it means one run with the network.
What to Know in Advance
The status line is beta. It is marked so in the README itself. The other reports carry no such marker.
There is no licence badge on the repository page. GitHub does not show one, but not because there is no licence: the root LICENSE is a symlink to apps/ccusage/LICENSE, and the detector does not follow it. Inside is ordinary MIT.
The project is moving to native builds. The repository holds a directory of Rust code and six separate platform packages: macOS and Linux on two architectures each, Windows on two. The tool is gradually ceasing to be just a Node script.
Bun is recommended but not required. The minimum is Bun 1.3, while Node.js is needed for Node package runners and for a global install.
The development environment is unusual. It is built on Nix with nix-direnv, and tasks run through just. Cloning and running npm install will not do - you need direnv allow.
Configuration works four ways: flags, environment variables, configuration files and data directory paths. The JSON configuration files support editor autocomplete and validation.
First-Encounter Mistakes
Installing globally on the first try. The documentation says outright that it is optional and recommends bunx.
Assuming it is only about Claude Code. There are sixteen sources, and two of the six reports really are Claude-only.
Comparing months in the default mode. For comparable numbers you want --mode calculate, or some periods come from ready costs and others from token maths.
Forgetting --offline when working without a network. Without it the tool goes looking for prices and stumbles.
Expecting current prices offline. They come from the cache, refreshed by one run with the network.
Showing a colleague a report with the sums in it. --no-cost exists and cleans both the table and the JSON.
Looking for a licence badge on GitHub. There is none because of the symlink; the licence inside is ordinary MIT.
Cloning the repository and installing dependencies the usual way. The environment is built on Nix; the way in is direnv allow.
To put it in one sentence: this is the rare tool that does exactly one thing and does it honestly - it shows the bill for your agents' work without taking your data and without inventing numbers where it does not know them.
Sources
This article was checked against the ccusage/ccusage repository (branch main) on 25 August 2026: apps/ccusage/README.md, docs/index.md, docs/guide/installation.md, docs/guide/getting-started.md, docs/guide/cost-modes.md, docs/guide/blocks-reports.md, docs/guide/codex/index.md, the licence file and the repository tree. The source list was recounted from the README table: sixteen. Version, stars and the last commit date were taken the same day through the GitHub API and the npm registry. The project releases often, so the list of supported agents changes fast.