If your agent calls a tool that charges a card, and the transport drops the response, your agent didn't fail safely. It double-charged the customer, and it has no idea.

That's the whole bug. The money already moved. The agent never heard "ok," so it did what every well-behaved retry loop does: it tried again. Same prompt, same tool, same arguments. A second charge.

TL;DR

A retry is not a network event. It's a semantic decision about a side effect that may have already happened.

Backoff, jitter, and a retry ceiling make retries polite. They do nothing to stop a double-charge.