I Thought I Was Burning Double the Tokens in Claude Code. Was I?
Photo by Ferhat Deniz Fors on Unsplash
For two weeks I was convinced my Claude Code sessions were bleeding tokens.

Every long-running session, the kind where I’d let it churn through a multi-file refactor or a background task showed a cost number that felt wrong.

Not a little high. But, wrong.

I’d mentally tracked roughly what a session should cost based on the size of the diff and the number of turns, and the number on my screen kept coming in noticeably higher.

So I did what anyone burning real API spend does:

I started keeping a spreadsheet.

Session length, turn count, estimated tokens, actual reported cost.

I was ready to write the I audited my AI coding costs and here’s what I found post.

The kind of post where you blame the model for being wasteful, tell people to switch tools, and collect the claps.

Except that’s not what I found.

The bug wasn’t in how much Claude Code was using. It was in how it was counting.

Buried in the August 8, 2026 changelog, one line stopped me:

Fixed session cost and token telemetry double-counting on streams that emit multiple cumulative message_delta frames

So, it was true.

In certain streamed responses, the client was reading multiple message_delta frames as if each one represented new usage, instead of recognizing that later frames were cumulative updates to the same turn.

If a turn emitted three delta frames before completing, the telemetry could count that turn's tokens more than once toward the session total.

My actual token consumption hadn’t moved.

My dashboard was lying to me about my own session.

Why this matters more than a one-line changelog entry suggests

If you’re running Claude Code in longer sessions like background jobs, multi-turn refactors, anything that streams, you were plausibly looking at inflated numbers too, and you had no way to tell from the UI alone.

The cost shown wasn’t fabricated out of nowhere, it was real usage counted more than once on specific streaming patterns.

That’s a subtle distinction, but it’s the difference between “the tool is expensive” and “the tool’s meter was miscalibrated.”

I went back through three weeks of session logs after updating.

The sessions that ran short, single-turn tasks barely moved. The long, streaming, background-heavy sessions, the ones I was most suspicious of dropped by a noticeable margin once the fix landed.

That correlation alone should have been my first clue two weeks ago: the “waste” wasn’t evenly distributed across my usage, it was concentrated exactly where the cumulative-frame bug would predict.

What I’d actually recommend if you track your own AI coding spend:

  1. Don’t trust a single number in isolation. Compare cost-per-session against session type like short interactive turns vs. long streaming/background ones. If your “expensive” sessions all share a shape (long-running, background, heavy streaming), that’s a telemetry question before it’s a model-choice question.
  2. Check your Claude Code version before you audit your spend. claude --version, then compare against the changelog. A cost investigation done on a version older than 2.1.225 (August 8, 2026) was potentially working from inflated numbers for any double-delta streaming sessions.
  3. Re-run your baseline after updating. I didn’t just trust the changelog note. I re-measured the same categories of session pre- and post-update. The gap was real, and it was concentrated exactly where I predicted.
  4. Keep the spreadsheet. Not because I found what I expected, but because tracking is what let me catch that the story I was about to write was wrong. If I’d published “Claude Code is quietly burning your budget” off gut feel two weeks ago, I’d have been confidently wrong in public.

I still don’t fully trust dashboards after this.

Not because they’re usually wrong. We can say this was a narrow bug on a specific streaming pattern, not a systemic problem, but because “the number on screen” and “what actually happened” are two different claims, and only one of them is worth writing a post about.

If you’re running long or background Claude Code sessions and haven’t updated recently, it’s worth checking your version and re-baselining before you draw any conclusions about cost.

In case we are meeting for the first time, come over here, it’ll be worth the roller coaster of articles that are gonna come up in the next few weeks.

I run a bunch of apps at AIBucket. I do not use AI in my writings and you shouldn’t either. How I went from 0 to 1000 here :)