Skip to content

Idempotency ​

Every mutation that can be retried needs a stable key.

Starts and Events ​

WorkflowRunMetadata.idempotencyKey and event delivery keys make HTTP retries safe. The service retries transport failures with the same key. It does not treat an HTTP response as completion evidence; persisted run state is authoritative.

Operations ​

OperationContext.idempotencyKey is stable for a logical attempt. Manual retry creates a new attempt and retains the key so the external system can dedupe.

Completions ​

Work responses, cancel, redrive, and command retry all require a request idempotency key. Duplicate posts do not append a second history event.

Replay ​

Replay itself is the other half of idempotency. A completed await never runs its handler again. That is why operation IDs must be stable and why workflow code must not perform I/O.

See Also ​