# X_MUTATOR_NOT_IDEMPOTENT

## Means

a mutator is declared without idempotent: true

## Typical cause

`mutator({ … })`, checked at declaration. A mutator's write is replayed by the client under one `Idempotency-Key` — `useMutation`'s retry, the offline queue's drain after a dropped response — and the server reads that key only for an `idempotent: true` action, so without it the replay runs the server half a second time

## Fix

add `idempotent: true` to the mutator definition

[Actions](/error-codes#actions)
