The Bill for the Code Nobody Asked Me to Write

Published on 29 July 2026

Leo writes:

I don’t think most engineers know what their AI habit actually costs them, and I’ve come round to the view that the not-knowing is the problem, rather than the amount.

I didn’t know either. I had a comfortable sense of “it’s fine, it’s a subscription”, which is what you tell yourself right until you open the billing page and read it properly. So I pulled six months of my own Cursor usage, January through June, and sat with it.

US$1,526.48.

That’s my personal subscription. Side projects, evenings and weekends, my own money, my own repositories; none of it is work tooling and none of it was anyone’s deadline but mine. Of the total, $1,063.51 was usage Cursor counted as included — covered by the plan I’d already agreed to. I pay annually, about US$16 a month, so the subscription itself is a rounding error; the “included” figure is simply the usage that plan swallowed before I tipped over the edge of it. The other $463.01 was on-demand, spent past the plan, in increments small enough that not one of them ever registered as a decision.

Averaged out: two hundred and fifty-odd dollars a month. Eight dollars and change a day, every day, including the days I never opened my laptop (which are rare, but happen).

For context, DX put company spending on agentic tooling at roughly $200 to $600 per engineer per month. That’s for engineers doing their salaried jobs, on company codebases, with company money — and it’s the whole agentic stack per head, every tool added together.

I cleared the bottom of that band on my hobbies, with one tool. If anything the comparison flatters me: mine should be a line item inside a number like that, not the whole of it.

The obvious reply, which is a good one

It’s discretionary money spent on discretionary projects, other people spend more than that on far worse, and if the tooling makes the evenings more productive then it has done its job.

Fair. Honestly, that’s the reply I’d give too, and I don’t think it’s wrong.

But the fact that it was hobby money is precisely what makes it diagnostic — not of my discipline, but of how I actually reach for models when nothing is on the line. There was no deadline. No PM, no incident, no sprint boundary, nobody waiting on me. Every single one of those re-rolls was a decision I made freely, on a Saturday, with all the time in the world to do it properly.

You could push back here, and fairly: no stakes is exactly the condition under which idle re-rolling is cheap and consequence-free, so it says very little about how I’d work with a review breathing down my neck. True. But it cuts the other way as well — no stakes is precisely where prodding at a model to see what it can actually do belongs, well clear of a real codebase. So I’m not reading the bill as a verdict on how disciplined I am. I’m reading it as the thing that made me go and look.

The bit that made me wince

The first eleven weeks are almost flat. Then, around the end of March, the line bends; my daily rate roughly triples and stays there.

Nothing changed about the pricing in that window. What changed was me. And here’s the part I’d rather gloss over: I had less free time, not more — I’d got more involved at college, so fewer hours went to side projects — yet the spend tripled anyway. It tripled because I’d stopped idly playing around and started building towards something in earnest [an experiment I’ll keep to myself for now]. Most of them aren’t fun to build; they’re not the next Facebook. Spilling out code is the easy part — building something real needs more than a model that’s good at spilling it.

This all reminds me of the initial months in the AI era. You give the agent a vague instruction. The agent, ever the eager intern, spits out something plausible. It isn’t right, but it’s close enough that reading it carefully feels like more work than just asking again; so you ask again. And again. Four attempts later you’ve got a working diff, no real idea why the first three failed, and you’ve spent the price of a decent lunch finding out.

That’s me outsourcing the thinking and getting itemised for it. Or is it? Because this time I think I actually produced more, rather than just re-rolling — and that’s the uncomfortable part: the bill on its own can’t tell the two apart. A rising number is equally consistent with real output and with expensive dithering. It doesn’t adjudicate. It just tells you to go and check which one you were doing.

Ten models, one habit

The other thing the breakdown showed: ten distinct models on the bill, and one of them eating most of it.

I never once made a considered decision about which model got which task. Ten of them because I reached for whatever was in front of me, not because I’d deliberately picked ten. I settled on a default in April — composer-2, which duly went on to eat most of the bill — and then sent everything through it (scaffolding, mechanical refactors, test stubs, renaming things) at the same rate as the genuinely hard architectural work. Some of that needed the good model. Most of it needed something that could have done the job for a fraction of the cost whilst I got on with the part that actually required me. That’s the move I’ve since made: the mechanical work now goes to Composer 2.5, a fraction of the price for the same result.

If you’ve got a routing strategy, there’s a decent chance it’s “whatever was selected last time”. Mine was.

What I do differently now

I’m gonna use a GPT word here—I’m not a Luddite about this, and it isn’t a “kids these days” rant. I’d spend the $1,526 again. I want to spend it better.

Watch the on-demand line, not the total. The subscription is a decision you make once a year. The overage is a decision you make forty times a day without noticing, and it was thirty percent of my spend. That’s the number with no ceiling on it.

Three failed attempts means the context is wrong. This is the one I’m most convinced moved my numbers — I don’t have July’s data in front of me yet to show it landing, but I’d put money on the shape. If the third try hasn’t landed, the problem is upstream; you’ve handed it the wrong files, or a spec too vague to act on, or you don’t understand the bug yet yourself. A fourth roll is just paying to postpone thinking. Close the session, read the code, come back with a specification.

Route deliberately. Cheap model for the mechanical work (scaffolding, boilerplate, test generation, renames, etc.). Expensive model for architecture, unfamiliar domains, and anything that’s already resisted you once. Running the frontier model for everything is a multiplier (in outcome & expenses).

Start fresh more often than feels necessary. A long session is an expensive session; you’re re-sending an ever-growing pile of context on every turn to get an answer that usually depends on about four files. The cost curve of a two-hour conversation is neither flat nor linear. I usually ask for a handoff doc at about 50% context and move on from there [when I don’t just /compact the session].

Write the spec first. One careful four-hundred-token description of what you want beats six vague retries, and it isn’t close. It’s also just the job. We used to call it thinking before typing. And I’ll give credit where credit is due, Matt Pocock’s grill-me, grill-with-docs and wayfinder, et al. are great for that — they make the agent interrogate your plan and nail the spec down before a line of code gets written. You make the agent think with you. Not for you as most people think they should. Well, it’s the same I always say: Don’t be stupid, be an engineer.

The actual point

What I’d want a junior to take from this isn’t “spend less”. It’s that your billing page is one of the few signals about your own work that has no reason to flatter you. It doesn’t care what you meant to do; it logs what you did — and when the line bends, it isn’t handing you a verdict, it’s telling you where to go and look.

So I looked. Mine pointed at a month that looked a lot more like re-rolling than reading, on projects nobody was waiting for, with nothing at stake but my own evenings. It didn’t prove that — a bill can’t — but it was enough to send me back through the sessions, and going back was the one thing I’d have sworn blind I didn’t need to do. I’d have told you, sincerely, that I hadn’t.

Six months, fifteen hundred US dollars, and the most useful thing I got out of it wasn’t any of the code.

I’m aware this is n=1 and one tool, and I’d genuinely like to be wrong about how common it is. If you’ve pulled your own numbers and they tell a different story (particularly if you’ve got a routing setup you actually stick to), I want to hear it. Show me the shape of your curve.

To everyone in this kingdom and beyond,
Leo
Related
Newsletter New posts, in your inbox

Occasional writing on software, craft, and whatever I'm chewing on. No spam, unsubscribe in one click.