Two turns, same model, same afternoon. In one, the agent rewrites a 400-line test file and the text pours out. In the other, it changes a single line in a config file and nothing appears for ten seconds. Most of us file the second one under "the model is slow today". It usually isn't the model.
A turn has more than one clock. Before the first character, the model reads the whole context again: system prompt, tools, transcript, every pasted file. For a coding agent that context grows every turn, so the pause before the first character is mostly about whether the prompt cache held. A compaction, an edited system prompt, a changed tool list, or a gap longer than the cache's lifetime means the prefix is read from the top.
Once the typing starts, generation is serial: one forward pass per token. That's why a long rewrite is expensive whatever its difficulty, and why both major API vendors now sell a faster lane, around 2.5x output tokens per second, one of them explicitly not faster to the first token, the other explicitly "more consistent". The standard lane's speed depends on load.
Then there's the part that surprised us. A write-up on the vLLM blog measured speculative decoding, where a small draft component guesses the next few tokens and the real model verifies them in one pass. Acceptance falls with position and sits lower on code: 94% for the first drafted token on math problems, 89% on Python, 66% and 49% by the fifth. The same model types faster on text it can guess. Boilerplate is guessable. New logic is not. Their numbers, not ours, and whether the hosted lanes work this way is undisclosed.