| 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.
codex-auto-review entries are automatic reviewer-agent transcripts that
Codex writes when Auto-review evaluates approval requests. They are read-only model
calls, not coding sessions you manually started. When the transcript includes a
parent_thread_id, the report attaches the auto-review cost under the matching
Codex session instead of showing it as a separate top-level row. Use the Model
filter to find sessions that include them.
The filter panel is collapsed by default so the charts stay visible first,
especially on mobile. The report stores your selected filters, filter-panel state,
sort order, page size, expanded state, and active tab in this browser's
localStorage. Refreshing the file keeps that view; the Reset filters
button only clears the filtering fields.
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.