Pulumi "Conflict: another update is in progress" (Pulumi Cloud)
By Daniel Zoghalchali·Latchkey
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.
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.
Frequently asked questions
What causes ""another update is in progress""?
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.
How do I fix "another update is in progress"?
Once you have confirmed no real update is running, cancel so the service clears its in-progress record.
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.