The full context gets re-sent every step
A single API call bills once. An agent step bills once per step, and every step re-sends the entire transcript so far — the original task, every prior tool result, every reply — as new input tokens. Input cost grows with the square of the step count, not linearly, because each of the N steps re-sends roughly N times as much accumulated context as the first one did.
Tool results balloon the input side, not the output side
A search result, a file read, or an API response gets pasted back into context as input tokens on the next step, and it's usually far larger than anything the model itself generated. A run heavy on tool use can carry an input-to-output ratio many times wider than a plain chat conversation, which matters because most people budget for AI cost by estimating output length alone.
Retries and back-off multiply the call count
A tool call that times out, a rate limit that triggers a retry, or a step the agent redoes after a bad result all add full extra steps — each one re-sending the same accumulated context again. A retry rate that looks trivial in isolation compounds with everything above it.
Parallel fan-out multiplies the whole run, not just one step
Splitting a task across several sub-agents is often the right call for latency or coverage, but it multiplies total cost by however many agents are running, on top of whatever each individual agent's step count already costs. Five parallel agents at the same per-agent cost is a 5x bill, not a rounding error.
There's usually no default ceiling on steps or tokens
A plain API integration has a natural cap: one request in, one response out. An agent loop has no equivalent default — nothing stops it at step 20 instead of step 200 unless something is explicitly built to stop it. Absent a ceiling, a bug, a bad prompt, or an edge case the agent can't resolve turns into an open-ended loop that keeps re-sending an ever-larger context until something else intervenes.