#24934·pulumi

deployment run gives up on streamed logs when the update takes over 5 seconds to appear

Author: afrodynamicCreated Sep 29, 2026Updated Sep 29, 2026
Labelskind/bugneeds-triageBugpulumi/pulumi

What happened?

pulumi deployment run update --suppress-stream-logs=false exits with error: could not find update associated with deployment <id> even though the deployment goes on to succeed in Pulumi Cloud.

When the streamed logs reach the pulumi update step, showDeploymentEvents in pkg/backend/httpstate/backend.go calls getUpdateID, which polls GetDeploymentUpdates 10 times at 500 ms and gives up after about 5 seconds. On the hosted runner the update is not always created that quickly. In our failing run the step started at 16:10:39.26, the executor's pulumi process started at 16:10:46, and Updating (<stack>) with the View Live link appeared at 16:10:48.99, roughly 9.7 seconds in. The CLI had already exited with the error, and the deployment then finished as succeeded.

It reproduces consistently with --skip-install-dependencies, because the executor then does its Node.js version setup (Setting Nodejs version to 24, about 8 seconds in our runs) inside the pulumi update step instead of the dependency step. Without that flag the margin was still thin: our last passing run created its update 4.9 seconds after the step started.

Expected: the CLI waits for the update for as long as the deployment is still running, or at least long enough to cover the executor's startup, instead of a fixed 5 seconds.

Example

bash
pulumi deployment run update \
  --stack <org>/<project>/<stack> \
  --suppress-stream-logs=false \
  --skip-install-dependencies \
  --pre-run-command 'corepack pnpm install --frozen-lockfile --prod --filter <package>'

The stack is a Node.js (TypeScript) program in a pnpm workspace, deployed from GitHub on the Pulumi hosted runner using its default image.

Output:

Pre-run command 1:
...
Done in 1m 4.2s using pnpm v11.1.3

pulumi update:

error: could not find update associated with deployment 9438225e-c8c0-4a2a-a511-ce0c106dfd8d

pulumi deployment get <version> --output json for the same deployment then reports "status": "succeeded".

Output of pulumi about

CLI v3.265.0 on GitHub Actions ubuntu-latest, installed with pulumi/actions. The deployment runner also reports Pulumi 3.265.0 in its Setup step. The failure happens before the program runs, so the program's runtime and plugin versions are not involved.

Additional context

The loop is unchanged on master. A deadline tied to the deployment's own status (keep polling while the deployment is not-started, accepted or running) would remove the race, as would a longer or configurable retry window. For now we work around it by not streaming logs.

Contributing

Vote on this issue by adding a reaction. To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).