@mariozechner/cccost
v1.0.3
Published
Claude Code Cost Tracker - Track token usage and costs for Claude Code sessions
Maintainers
Readme
cccost - Claude Code Cost Tracker
Track token usage and costs for your Claude Code sessions in real-time.
Problem
Claude Code does not show cost for users of the Pro and Max plan when using the /cost command. API users enjoy that privilege. Except that /cost has a bug (CC 1.0.83). And if you wrote a fancy statusline script and think you can just parse the session transcript to get token usage and cost, think again. The transcript does not contain all requests Claude Code issues to the Anthropic servers.
What Claude Code Cost Tracker does
Claude Code cost track is a minimally invasive tool. Instead of running Claude Code directly, run your session via cccost. All arguments you pass will be forwarded to Claude Code verbatim:
cccost --dangerously-skip-permissionscccost spawns Claude Code and injects this code. It hooks the NodeJS fetch() function and intercepts all API requests to Anthropic's servers. It then writes a file ~/.claude/projects//.usage.json and keeps updating it with every new request.
The file contains total input/output/cache read/cache write statistics per model, the usage stats for the last request made with each model, and the total cost. E.g.:
{
"requests": 7,
"totalCost": 0.10331005,
"models": {
"claude-3-5-haiku-20241022": {
"requests": 6,
"input_tokens": 731,
"output_tokens": 99,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"cost": 0.0009808,
"last": {
"utcTimestamp": 1755475841151,
"input_tokens": 335,
"output_tokens": 9,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"cost": 0.000304
}
},
"claude-opus-4-1-20250805": {
"requests": 1,
"input_tokens": 3,
"output_tokens": 12,
"cache_creation_input_tokens": 4761,
"cache_read_input_tokens": 8077,
"cost": 0.10232925,
"last": {
"utcTimestamp": 1755475842778,
"input_tokens": 3,
"output_tokens": 12,
"cache_creation_input_tokens": 4761,
"cache_read_input_tokens": 8077,
"cost": 0.10232925
}
}
}
}You can use that to write accurate statusline scripts that display e.g. context usage or cost for the current session. Simply read the .usage.json file for the current session to get the statistics.
The GitHub repository includes an example statusline.js.
Installation
npm install -g @mariozechner/cccostUsage
Simply start Claude Code via cccost instead of claude:
# Track a Claude Code session
cccost --dangerously-skip-permissions --model sonnetOptions
--ccc-verbose: cccost will output debug logging during the session
Development
# Clone the repository
git clone https://github.com/badlogic/cccost.git
cd cccost
# Install dependencies
npm install
# Debugging, e.g. via VS Code JavaScript Debug Terminal
# Do this once to disable anti-debug in your Claude Code
# install, otherwise you won't be able to debug cccost
npx @mariozechner/cc-antidebug patch
npx tsx src/cli.ts
# Build
npm run buildLicense
MIT
Author
Mario Zechner
