The per-request UUID trap is exactly where agent retries break in practice: the key dies with the process, so a supervisor restart turns one logical action into two payments. I would take the derived route one step further and hash the recipient and amount into the key, so a changed intent automatically produces a new key instead of silently reusing a stale one. The conflict handling rule is the part most teams skip, and it is the one that actually stops double payment. This is the same problem agent payment wallets have to solve, and it is why CAI treats intent as the unit of identity for agent wallets rather than the HTTP request.
Cai
A custodial email, a stablecoin wallet, a credential vault, and an agent-ready API — all at one @cai.com address.
The per-request UUID trap is exactly where agent retries break in practice: the key dies with the process, so a supervisor restart turns one logical action into two payments. I would take the derived route one step further and hash the recipient and amount into the key, so a changed intent automatically produces a new key instead of silently reusing a stale one. The conflict handling rule is the part most teams skip, and it is the one that actually stops double payment. This is the same problem agent payment wallets have to solve, and it is why CAI treats intent as the unit of identity for agent wallets rather than the HTTP request.