Why it cost that much
What a run's total is actually made of, why long work gets expensive faster than you expect, and real measured runs that finished several times over their limit.
If a run cost more than you expected, the answer is almost never one expensive thing. It is the same charge repeated more times than you pictured, plus one charge you had no way to predict. Here is the breakdown, including numbers from our own runs that do not flatter us.
What a total is made of
Section titled “What a total is made of”Five kinds of thing can be metered, and every line on a bill is one of them: thinking and writing (tokens in and out), reading a web page (per page), running code in the secure workspace (per unit of run time), generating an image (per image, by size) and transcribing audio you sent (per minute). Per-unit rates are on Model prices; this page is about how many units a run turns out to need — and since the first line dominates almost every bill, why a run produces so many more tokens than the request seemed to contain.
Why long work gets expensive faster than you expect
Section titled “Why long work gets expensive faster than you expect”A run is many model calls, not one. Each step — deciding what to do, reading a page, writing a chunk, checking its own work — is its own billed call. Twenty steps is charged roughly twenty times.
Every step carries the whole chat back with it. The model has no memory between calls, so everything so far is sent again each time. The input side of the bill grows with every exchange whether or not you typed anything long — ten short turns late in a long chat cost more than the same ten at the start. This is the single biggest reason a long chat’s later replies cost several times what its first one did, and attachments and fetched pages ride along the same way: one big attachment is not a one-time charge.
Failed attempts are still billed. A malformed call that gets retried was real work at a real price, so a run ending in Couldn’t finish can carry a full bill (When a run fails).
And one charge you cannot predict. Once a chat’s accumulated history gets long enough, Else summarises the earlier part so the work can continue — and that summarising is itself a model call, metered like one. The trigger is worth knowing precisely, because it isn’t what you would guess. It fires at about 18,000 tokens of accumulated context (roughly 70,000 characters of history, including everything you attached and every page it read); between turns, so an ordinary short message can set it off; and at the same threshold whichever engine you are on — it is sized to the narrowest model Else can run, not the one you chose, so it can fire long before your model was anywhere near full. There is no setting, no warning and no way to turn it off. It is the one item here genuinely out of your hands.
We measured this on 30 July 2026. A chat on Fast was given 80,000 characters, then two short messages. It summarised twice without saying so — the history sent with each reply fell from 46,206 tokens to 25,805 to 8,132, while turns were being added — and nothing announced it: no message, no banner, no line on the receipt. The receipt’s detail lists only the model that answered you.
On the question that matters — is the charge hidden? — here is exactly what we can and cannot say. Across that chat the money leaving the balance matched the three visible receipts to the cent, with no extra entry: no material charge went unreceipted. But a summarising call this size costs roughly a third of a cent, and balances are shown only to the cent, so we cannot rule out a sub-cent charge folded in invisibly. Certain either way: the receipt never tells you how much of a bill was summarising. We would rather bound that honestly than round it up into a promise.
Your limit is probably not what stopped it
Section titled “Your limit is probably not what stopped it”The reason a bill can be several times the number you typed deserves saying here, because it is the most common way a total surprises someone: on a single message, the number you set is never read. It is sent to our servers and nothing there acts on it — this is not a limit that fires late, it is a limit that is never consulted. What stops the run is a different ceiling you cannot see or change, and it lands well above anything you would have chosen. Measured runs bear that out, and none of it is your fault or fixable by setting a lower number.
That mechanism, the measurements behind it, and what the limit does still do on work you hand off are all set out on Spending limits. It is the canonical page and it does not soften any of it, so this page sends you there rather than keeping a second copy that could drift out of step with it.
The practical consequence for reading a bill: treat the limit as a budgeting intention, not a cap, and judge what happened from the receipt.
What actually reduces a bill
Section titled “What actually reduces a bill”- Start a new chat for a new job. The highest-leverage habit here: a fresh chat carries no history, so its first replies are cheap again, and it starts over well below the summarising threshold. Continuing an old chat out of convenience is what turns cheap turns expensive.
- Say what done looks like, so it knows when to stop — see Writing a good request — and narrow what it may use when you already know the answer is in the file you attached. A run allowed to browse may browse (Add-ons).
- Pick the tier deliberately for the jobs where it matters, instead of leaving everything on the most expensive one (Choosing a tier).
- For work you hand off, set the limit low while you are still exploring. It won’t hold precisely, but it does reliably bring long work back to you early — the cheapest place to change your mind. On a single message it buys you nothing, so don’t rely on it there. Read the receipt rather than the limit (Reading a receipt).