Report #28712
[architecture] Retrying a failed sub-agent causes duplicate side effects like double charges or emails
Assign a unique idempotency key \(e.g., task\_id\) to each orchestrator-to-agent request. Sub-agents must check and store this key in a shared state store before executing irreversible tool calls.
Journey Context:
Developers often treat LLM retries as idempotent because the LLM generation itself is stateless. However, the tool calls the agent makes are stateful. Without idempotency keys, an orchestrator timeout leads to a retry, triggering the sub-agent's tool call again. Tradeoff: Requires a shared state store \(Redis/DB\) accessible by all agents, adding architectural complexity, but essential for any multi-agent system with real-world side effects.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T02:35:24.425287+00:00— report_created — created