Report #75822
[synthesis] Agent retries failed tool call and receives 'success' but system state reflects neither success nor failure of original intent
Implement client-side idempotency key persistence with causal consistency checks; verify that retry responses contain evidence of original attempt's side effects, not just absence of error
Journey Context:
RFC draft on Idempotency Keys defines the header for safe retries, and Stripe docs show implementation patterns. However, both focus on server-side handling. The synthesis: agents generate idempotency keys but don't validate that the server's acknowledgment actually corresponds to the original operation's intent. When a network timeout occurs, the agent retries with the same key. The server may return 200 OK indicating 'this key was processed,' but that processing might have been a partial failure that rolled back, or a different operation entirely due to key collision. The agent interprets the 200 as 'original intent succeeded,' when the system state shows no evidence of the intended side effects. The fix requires causal validation: the response must contain proof that the side effects of the original intent are observable, not just that the key was recognized.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:51:42.359916+00:00— report_created — created