Helm Release Stuck in "pending-upgrade" - Recover in CI
By Daniel Zoghalchali·Latchkey
A Helm release is wedged in a pending-* status because an operation was interrupted and never reached a terminal state. Every later helm upgrade then errors that an operation is already in progress.
What this error means
helm status shows pending-upgrade/pending-install/pending-rollback, and new operations fail with "another operation in progress". The release never settles to deployed on its own.
helm output
$ helm status api -n prod
STATUS: pending-upgrade
# subsequent: Error: UPGRADE FAILED: another operation (install/upgrade/rollback)
# is in progress
Diagnose it: render the chart before you install it
Most Helm failures are visible in the rendered manifests. Template them locally with the same values CI uses and you will usually see the problem without touching the cluster.
Terminal
# what will actually be applied
helm template <release> <chart> -f values.ci.yaml | head -60
# validate against the live cluster schema without installing
helm install <release> <chart> -f values.ci.yaml --dry-run --debug
# what state is the release actually in?
helm history <release>
helm status <release>
Common causes
Interrupted Helm operation
A CI job timeout, cancellation, or crash killed Helm mid-operation, leaving the release record in a pending state with no rollback.
Helm process lost connectivity mid-apply
A network drop to the API server during --wait can leave the operation marked pending even though some changes applied.
How to fix it
Roll back to the last deployed revision
If a previously deployed revision exists, rolling back clears the pending state.
Terminal
helm history api -n prod
helm rollback api <last-deployed-revision> -n prod
Delete the pending release record (no good revision)
For a stuck first install with no deployed revision, remove the pending release secret, then reinstall.
Terminal
kubectl get secret -n prod -l owner=helm,name=api
kubectl delete secret -n prod \
sh.helm.release.v1.api.v1 # the pending revision's secret
helm upgrade --install api ./chart -n prod
How to prevent it
Use --atomic --timeout so interrupted upgrades roll back instead of hanging.
Give Helm jobs generous timeouts and avoid cancelling them mid-flight.
Serialize releases so retries do not collide with an in-flight operation.
Frequently asked questions
What causes Helm release stuck in "pending-upgrade"?
There are 2 common causes: interrupted helm operation and helm process lost connectivity mid-apply. A CI job timeout, cancellation, or crash killed Helm mid-operation, leaving the release record in a pending state with no rollback.
How do I fix Helm release stuck in "pending-upgrade"?
There are 2 fixes depending on which cause you have: roll back to the last deployed revision and delete the pending release record (no good revision). Work through them in order, since the first is the most common.
What does Helm release stuck in "pending-upgrade" actually mean?
helm status shows pending-upgrade/pending-install/pending-rollback, and new operations fail with "another operation in progress".
How do I stop Helm release stuck in "pending-upgrade" happening again?
Use --atomic --timeout so interrupted upgrades roll back instead of hanging. The prevention section lists 3 changes that keep it from recurring.