vLLM Streaming Tool-Call Corruption: Detecting Merged, Truncated and Retyped Arguments Before Your Agent Executes Them
A streaming tool call can reach your agent corrupted while every SSE frame on the wire is valid JSON. The damage shows up after reassembly: two calls fused into one, an argument string cut mid-token, or a number that became the string "3". The request returns HTTP 200, finish_reason says tool_calls, and an agent that trusts the payload executes the wrong thing. The practical question is not whether vLLM is “broken” in general; it is whether the corruption is in the server’s parser or in your client’s reassembly, and how to stop execution until that is settled. This article separates what the current primary reports actually establish, shows how to localize the fault with a raw SSE capture, and ships a small gate that refuses any call whose arguments do not round-trip against your declared schema. ...