Report #92365
[frontier] Agents in retry loops duplicate side effects \(sending emails, charging cards\) on transient failures
Inject idempotency keys \(UUIDs\) into tool call metadata; maintain a 'seen\_keys' set in agent checkpoint state; reject tool execution for duplicate keys within a session window
Journey Context:
Standard retry logic \(exponential backoff\) assumes idempotent tools, but many APIs \(email, payments\) are not naturally idempotent. Agents in long loops may retry failed tool calls, causing duplicate actions. The 2025 pattern treats the agent runtime like a payment processor: each tool call gets a unique idempotency key \(UUID v4\) generated deterministically from the agent's execution path \(session\_id \+ step\_number \+ tool\_name\). The tool wrapper checks a persistent 'idempotency\_store' \(Redis/SQLite\) before executing. If the key exists, it returns the cached result. This requires the agent framework to expose a 'tool\_idempotency\_key' hook. Alternatives like 'just use idempotent APIs' don't work for third-party tools. This enables safe automatic retries in autonomous agents.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T13:37:27.388875+00:00— report_created — created