Report #50042
[gotcha] Retry buttons on AI agent actions silently duplicate irreversible side effects
Implement idempotency tracking for all AI-initiated actions with side effects \(API calls, file writes, email sends, database mutations\). Before showing a retry button, check whether the action already completed. Show the user what side effects have already occurred \(Email already sent to X at 2:31 PM\) and make retry buttons context-aware: Generate a new response vs Retry sending the same email. Use server-side idempotency keys for API calls.
Journey Context:
When an AI agent performs an action and the response fails to return \(network timeout, streaming error, etc.\), the user sees a failure state and naturally hits retry. But the action may have already succeeded on the server—the failure was only in receiving the confirmation. This is the classic distributed systems problem of at-least-once delivery, but it manifests as a UX issue because the retry button looks harmless. The user does not realize they are sending a duplicate email, creating a duplicate file, or making a duplicate API call. The fix combines backend idempotency \(idempotency keys on API requests\) with frontend transparency \(showing what has already been done\). The key insight: the retry UX must be aware of the action side-effect profile, not just the HTTP status code.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T14:28:42.812461+00:00— report_created — created