| Project | Device | Agent | Surface | Models | Cost ▼ | Started | Last activity |
|---|
Coding Usage aggregates every local Claude Code and Codex session
on your machines into one API-equivalent cost view. Across
sessions it totals ( authoritative,
estimated), spanning . On a flat
subscription you do not actually pay these amounts — the figure answers
“what would this have cost on the API”, exactly like Claude Code's own
/usage.
Authoritative — for Claude sessions you have opened, the cost is Claude
Code's own /usage figure. The status line records it per session to
~/.claude/usage-ledger.json and the report uses it verbatim (no estimation).
Estimated (shown with a leading ~) — older Claude sessions
and all Codex sessions have no ledger entry, so their cost is tokens × API
list price. Only sessions opened after the status line was configured have an
authoritative entry; that is why most rows are estimates.
The Cost column is the whole-session total. Expand a row to see every model it
used, most expensive first, with that model's tokens and an estimated cost. When the
session total is authoritative, the per-model estimates will not sum to exactly the
same number — e.g. an authoritative $44.08 next to a per-model subtotal of
~$46.35. That is expected: one is Claude's billed figure, the other is a
token-based estimate. It is not a double count.
<synthetic> markerEach session lists all models it used. Claude Code's internal
<synthetic> entries (locally-generated messages such as interrupts and
error notices) carry no tokens and no API call, so they are filtered out — they are not
a real model.
A session's entire cost is attributed to the month it started. Almost all sessions
happen within one day, so this rarely matters; a session that spans a month boundary counts
in its start month. Per-day splitting is not done because the authoritative /usage
figure is a single session total with no daily breakdown.
Anthropic bills a cache-write premium (5-minute TTL 1.25×, 1-hour 2×) and cheap cache reads (0.1×). OpenAI has no write surcharge — only a cached-input discount — so Codex cache writes are not charged.
Each app writes transcripts to its own home directory, so WSL and Windows are separate locations:
| Tool | WSL CLI | Windows (Desktop + CLI) |
|---|---|---|
| Claude Code | ~/.claude/projects/ | /mnt/c/Users/<you>/.claude/projects/ |
| Codex | ~/.codex/sessions/ | /mnt/c/Users/<you>/.codex/sessions/ |
CLI vs Desktop is not a different folder — it is recorded inside each transcript and shown in the Surface column. Cloud / container sessions (Codex Cloud tasks, Claude Code on the web) run server-side and leave no local transcript, so they cannot be measured here.
Each machine writes a committed data/<host>.json; this site is rebuilt
from those files, and the Device filter narrows totals to one machine. The data holds
project names, dates and costs — no secrets — but keep the repo private if that
matters.