Report #79341
[gotcha] Agent sends duplicate emails, creates duplicate records, or triggers duplicate deployments from slow tool calls
Design all side-effecting tools as idempotent — include idempotency keys in parameters. Track in-flight tool calls on the client side and prevent re-invocation of the same call within the timeout window. Use MCP tool annotations \(\`readOnlyHint\`, \`idempotentHint\`\) as documentation, but enforce idempotency at the execution layer.
Journey Context:
When a tool call takes longer than expected \(e.g., a deployment taking 45 seconds\), the model may interpret the delay as a failure and re-invoke the tool. If the tool has side effects, the operation executes twice. The model has no visibility into whether the first call is still in flight — it only sees that no result has appeared. This is particularly catastrophic for write operations: duplicate database inserts, duplicate Slack messages, duplicate credit card charges. The MCP annotation system provides \`idempotentHint\` but this is a hint to the model, not enforcement.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T15:46:26.394161+00:00— report_created — created