Skip to content
Latchkey

Pulumi "Conflict: another update is in progress" (Pulumi Cloud)

On the Pulumi Cloud (managed) backend, the service itself tracks an in-progress update for the stack and returns a 409 Conflict. Another run holds it, or a crashed run left an orphaned update record.

What this error means

pulumi up against the Pulumi Cloud backend fails immediately with a [409] Conflict saying another update is in progress. Unlike the file-lock case, this is enforced server-side, so pulumi cancel must reach the service to clear it.

pulumi output
error: [409] Conflict: Another update is currently in progress.
To learn more about possible reasons and resolution, visit
https://www.pulumi.com/docs/troubleshooting/#conflict

Common causes

A genuinely concurrent update

Two CI runs or a CI run plus a local pulumi up hit the same Pulumi Cloud stack. The service permits only one update at a time and rejects the second with 409.

An orphaned update from a crashed run

A previous update process died (runner cancelled, network dropped) without telling the service it finished, so Pulumi Cloud still believes an update is in progress.

How to fix it

Cancel the orphaned update on the service

Once you have confirmed no real update is running, cancel so the service clears its in-progress record.

Terminal
pulumi stack select myorg/proj/prod
pulumi cancel --yes

Prevent overlap with single-flight CI

Gate deploys to each stack so the service never sees two updates at once.

.github/workflows/deploy.yml
concurrency:
  group: pulumi-cloud-prod
  cancel-in-progress: false

How to prevent it

  • Never run local and CI pulumi up against the same stack simultaneously.
  • Use a per-stack concurrency group in CI.
  • Set step timeouts so a stalled update is killed cleanly rather than left orphaned.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →