Report #94813
[architecture] Duplicate side effects when Agent A retries a failed call to Agent B after timeout
Implement idempotency keys: Agent A generates a UUID for each logical operation and passes it in a dedicated header/context field; Agent B stores processed keys in a deduplication window \(e.g., Redis with 24h TTL\) and rejects duplicate processing
Journey Context:
Most developers assume retries are safe if the operation is 'read-only' or use simple at-least-once delivery without realizing that Agent B might have already processed the request and mutated state \(database, external API\) before the response timed out. The trap is thinking HTTP idempotency \(GET/PUT semantics\) is sufficient—it's not when agents have side effects. Alternatives like distributed transactions \(2PC\) are too heavy for agent chains. The key pattern is the Stripe-style idempotency key with a TTL window, allowing exactly-once semantics without locking.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T17:43:26.891271+00:00— report_created — created