I spent $514 on Claude Code in 30 days. Here's what I learned.
Real data from 50 sessions. The good, the bad, and the expensive.
The setup
For the past month, I've been tracking every Claude Code and OpenCode session with claudestat — an open-source tool I built to monitor token usage, costs, and patterns across both CLIs.
This isn't a hypothetical study. These are my real numbers from real work on real projects.
The numbers
30-day period: April 12, 2026 → May 12, 2026
| Metric | Value |
|---|---|
| Total spent | $514.86 |
| Sessions | 50 |
| Total tokens | 3,803,319 |
| Loops detected | 375 |
| Avg efficiency | 69/100 |
That's about $18/day on average. For context: I'm on Max 5, so this isn't cheap.
The most expensive session
April 26, 2026 — I let Claude run on a refactoring project for hours without checking:
- Cost: $32.94
- Loops detected: 31
- Efficiency score: 35/100
- What happened: Claude went in circles editing files, each edit triggering more edits. I wasn't watching.
That's $33 in one session. More than my daily coffee budget for a month.
Key lesson: Loops are expensive. 31 loops × average tool call cost = $33 down the drain.
Now claudestat sends a notification when a session closes — cost, tokens, loops detected, context % — so I always know what just happened.
The project breakdown
Who consumed the most?
| Project | Spent |
|---|---|
| claudetrace (side project) | $326.44 |
| wodrival | $61.32 |
| claudestat | $60.35 |
| conductor | $39.40 |
| Other | $27.85 |
63% of my spending went to one side project. It's not my main job — it's my hobby project that's burning my quota.
This is the kind of insight you only get from tracking.
The loop problem
375 loops detected across 50 sessions.
That's ~7.5 loops per session on average. But it's skewed:
- 12 sessions had more than 10 loops
- 9 sessions had efficiency below 50%
Most loops look like:
Read → Edit → Edit → Edit → Read → Edit → Edit → Edit
Claude tries something, it doesn't work, tries slightly different, repeats. This is where most of my waste came from.
Context limits hit me harder than quota
The $33 session wasn't killed by quota — it was killed by context. At 95% context window, Claude starts degrading. I had no warning.
Now claudestat sends alerts at 50%, 75%, 90%, and 100% context — and the same thresholds apply to your 5h quota cycle. You get warned before hitting the wall, not after.
claudestat status
Quota 5h 3.2h / 5h (64%) | reset in 1h 48m
Context 91,200 / 200,000 (45%)
Burn rate 1,240 tok/min → ~73min remaining
Plan MAX5
What I learned
1. Loops are the silent killer
I wasn't aware of loops until I saw the data. Now I watch for:
- Same tool called 3+ times in a row
- Context creeping up while output stays flat
- "Let me try..." messages from Claude
2. One project dominates
63% on claudetrace — I would have guessed 40/60 at best. Tracking revealed the truth.
3. Efficiency varies wildly
- Best session: 100/100 (perfect)
- Worst session: 35/100 (that $32.94 day)
Understanding this helps me spot when I'm about to have a bad session.
4. Edit is my most expensive tool (not Bash)
Running claudestat top showed Edit at 21% of total cost, Bash at 20%. They're almost equal — but Edit surprised me. Large file rewrites are expensive.
5. Claude can now ask itself how it's doing
Since I added the MCP server, Claude can query its own stats mid-session:
"What's my current quota status?"
→ 64% used, 1h 48m until reset, burn rate 1,240 tok/min
"What are my top 5 tools by cost this week?"
→ Edit $146 · Bash $140 · Read $126 · Grep $39 · ToolSearch $21
This changed how I work. Claude now knows when to compact, when to stop, when to wrap up.
The weekly view
claudestat weekly
📊 Week of May 8 – May 13
💰 $198.38 · 40 sessions · 114 loops
📈 Efficiency 91/100
💾 Cache hit 100%
⚡ Tip: 114 loops — consider /compact earlier
One number per week. Am I improving or not?
How to track your own data
npm install -g @statforge/claudestat
claudestat install
claudestat start
# use Claude Code or OpenCode normally
claudestat weekly # weekly summary
claudestat top # most expensive tools
claudestat status # quota + context right now
What's next
Now that I have this data:
- Alerts at 50/75/90/100% — context and quota, no more surprises
- Session-close summary — always know what just happened
- Check top tools weekly — spot expensive habits
- Watch for loops — stop them early
- Claude knows its own stats — MCP server installed, it manages itself better
The black box is open. You have the data.
Try it
npm install -g @statforge/claudestat
Works with Claude Code and OpenCode. No cloud, no accounts — everything stays local.
Questions? Drop them in the comments.
Data from my actual sessions. Not estimated. Not hypothetical.
Top comments (0)