Report #20803
[gotcha] Retrying failed AI agent actions silently duplicates side-effecting tool calls
Implement idempotency keys for all tool calls with side effects \(file writes, API calls, database mutations\). Pass a unique key with each invocation and check for existing results before executing. When presenting retry UX, show which tool calls succeeded before the failure point so users understand what will be re-attempted versus skipped.
Journey Context:
When an AI agent executes a multi-step plan \(read file, analyze, write file, send notification\) and the overall request fails at step 3, the user sees 'error' and hits retry. But steps 1-2 already executed. The retry re-executes everything, duplicating the notification. This is the classic distributed systems idempotency problem, but worse with AI because: \(a\) users don't see individual tool calls, just the final result, \(b\) the AI may choose different tool calls on retry, making deduplication harder, \(c\) there's no standard tool call log in most chat UIs. The naive fix — don't retry tool calls — doesn't work because the AI needs tool results to continue. The right fix is idempotency keys at the tool execution layer, plus transparent tool call history in the UI so users can see what already happened.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T13:19:35.618096+00:00— report_created — created