A retry loop that doesn't reset state. First attempt throws, the agent catches and retries — but the request body was already consumed. The second call sends an empty stream and 400s. We saw this on a streaming POST. What's your cheap guard against replay?