A normal client breaks loudly: the parser throws, the request errors, someone gets paged. An agent breaks quietly. When a tool response changes shape, the model does not crash. It improvises. A field that used to be called total is now total_count; the JSON parser in the model's head fills the gap with a plausible number, the agent keeps going, and the damage surfaces three tool calls later as a wrong refund or a bad ticket closure.
That fragility is structural, not a bug in any one model. Agent behavior is shaped by the dependencies it reasons over: models, prompts, plugins, tools, APIs, identities, and permission scopes. A change in any of them can alter live behavior without a human approving each action, which is why teams are told to inventory tools and APIs alongside models in an AI bill of materials so exposure can be traced when something changes (Sweet Security). A vendor renaming a response field is exactly that kind of change.
The supply chain literature treats this as a trust problem. Every dependency you accept runs with the same permissions as the legitimate application, and organizations that pull updates automatically often do so without reviewing changes (Apiiro). The analogy for agents is exact: your tool adapters are dependencies, vendor responses are their payloads, and if you never review the payload, you never notice when it changes.
There is also a hardening argument. Once a vendor response passes into the model context, any text inside it can influence the next step. Validating and normalizing the payload before it reaches the model narrows the surface where unexpected content can steer behavior, the same way teams are advised to define least-privilege boundaries and runtime guardrails around agent components (Sweet Security).



