Idempotency keys only help if the key survives the retry path intact, and most of the interesting failures sit there rather than in the handler. A client that regenerates the key per attempt has built a retry storm with extra steps. A proxy that strips or rewrites headers does the same from the middle. The store also has to outlive the retry window, because a key that expires while the client is still backing off gives you the duplicate you were trying to prevent.