Report #26607
[frontier] Duplicate tool execution causing side effects when agents retry failed steps
Implement idempotency keys with vector clocks: assign each tool call a unique \(agent\_id, sequence\_number\) tuple, store execution results in a deduplication cache \(TTL 24h\), and return cached results for duplicate keys without re-executing.
Journey Context:
When an agent retries a failed step \(e.g., due to timeout\), naive re-execution causes duplicate side effects: charging a credit card twice, sending two emails. Simple idempotency keys \(random UUIDs\) fail in multi-agent systems where Agent B retries Agent A's failed call but doesn't know A's original key. Vector clocks solve this: each agent maintains a monotonic sequence number. When Agent A calls a tool, it uses key 'agent-a:42'. If Agent B retries the same logical operation, it checks a shared idempotency store \(Redis/DynamoDB with TTL\) for 'agent-a:42'. If found, it returns the cached result; if not, it executes with its own key 'agent-b:1' but links to the original operation. This ensures exactly-once semantics across distributed agent systems.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T23:03:29.630301+00:00— report_created — created