A fast, zero-dependency CLI cost calculator and statusline provider for Claude Code — single binary, no runtime needed.
Parses JSONL logs from ~/.claude/projects/, deduplicates streaming responses, and breaks down spending by model, day, and project — with accurate per-model pricing including separate cache write tiers.
brew install backstabslash/tap/gocccGo install (requires Go):
go install github.com/backstabslash/goccc@latestFrom source:
git clone https://github.com/backstabslash/goccc.git && cd goccc
go build -o goccc . # macOS / Linux
go build -o goccc.exe . # WindowsPre-built binaries are available on the releases page for macOS, Linux, and Windows (amd64 / arm64).
goccc # Summary of all-time usage
goccc -days 7 -all # Last 7 days with daily and project breakdowns
goccc -daily # Daily breakdown only
goccc -projects # Project breakdown only
goccc -project webapp -daily # Filter by project name (substring match)
goccc -days 1 # Today's usage
goccc -projects -top 5 # Top 5 most expensive projects
goccc -days 30 -all -json # JSON output for scripting
goccc -json | jq '.summary.total_cost' # Pipe to jq for custom analysisgoccc can serve as a Claude Code statusline provider — a live cost dashboard right in your terminal prompt.
💸 $1.23 session · 💰 $5.67 today · 💭 45% ctx · 🔌 2 MCPs (confluence, jira) · 🤖 Opus 4.6
- 💸 Session cost — parsed from the current session's JSONL files using goccc's pricing table
- 💰 Today's total — aggregated across all sessions today (shown only when higher than session cost)
- 💭 Context % — context window usage percentage
- 🔌 MCPs — active MCP servers (from settings, marketplace plugins, and project config; respects per-project disables)
- 🤖 Model — current model
Cost and context values are color-coded yellow → red as they increase.
Add to ~/.claude/settings.json:
Using Homebrew (recommended — fast, no runtime needed):
{
"statusLine": {
"type": "command",
"command": "goccc -statusline"
}
}Using Go (requires Go installed; binary is cached after first download):
{
"statusLine": {
"type": "command",
"command": "go run github.com/backstabslash/goccc@latest -statusline"
}
}To hide the MCP indicator, add -no-mcp.
| Flag | Short | Default | Description |
|---|---|---|---|
-days |
-d |
0 |
Only show the last N calendar days (0 = all time) |
-project |
-p |
Filter by project name (substring, case-insensitive) | |
-daily |
false |
Show daily breakdown | |
-projects |
false |
Show per-project breakdown | |
-all |
false |
Show all breakdowns (daily + projects) | |
-top |
-n |
0 |
Max entries in breakdowns (0 = all) |
-json |
false |
Output as JSON | |
-no-color |
false |
Disable colored output (also respects NO_COLOR env) |
|
-base-dir |
~/.claude |
Base directory for Claude Code data | |
-statusline |
false |
Statusline mode for Claude Code (reads session JSON from stdin) | |
-no-mcp |
false |
Hide MCP servers from statusline output | |
-version |
-V |
Print version and exit |
Claude Code stores conversation logs as JSONL files under ~/.claude/projects/<project-slug>/. Each API call produces one or more log entries — streaming responses generate duplicates with the same requestId.
goccc:
- Walks
.jsonlfiles under the projects directory, skipping non-matching project directories and files older than the date range (by mtime) - Pre-filters lines with a byte scan before JSON parsing — only
"type":"assistant"entries carry billing data (tolerates both compact and spaced JSON formatting) - Deduplicates streaming entries by
requestId(last entry wins) - Calculates costs using Anthropic's published pricing, including separate rates for 5-minute and 1-hour cache writes
- Aggregates by model, date (local timezone), and project
Claude Code periodically deletes old log files. To keep more history for cost tracking, increase the cleanup period in ~/.claude/settings.json:
{
"cleanupPeriodDays": 365
}The default is 30 days. Set it higher to retain more data for goccc to analyze.
