Skip to content
Latchkey

GitLab CI Manual Job Blocks the Pipeline - "blocked" / allow_failure

A manual job pauses the pipeline until someone clicks "play". If that gate is required (not allow_failure), the pipeline stays "blocked" and later stages never run until it is triggered.

What this error means

The pipeline shows status "blocked" and does not complete. A manual job is waiting for a human, and downstream jobs that need it are stalled - or a deploy never happens because nobody triggered the gate.

Pipeline page
Pipeline status: blocked
Job 'deploy_production' is manual and required - waiting for action.
Downstream stages will not run until it is played or the pipeline is cancelled.

Common causes

Required manual gate never triggered

A when: manual job without allow_failure: true is a blocking gate. Until someone plays it, the pipeline is "blocked" and dependent stages wait.

allow_failure misconfigured for the intent

Making a gate allow_failure: true lets the pipeline proceed without it (non-blocking); leaving it false makes it required. Choosing the wrong one produces the opposite of the intended flow.

How to fix it

Make the gate blocking or non-blocking deliberately

Decide whether the manual step must gate the pipeline, and set allow_failure accordingly.

.gitlab-ci.yml
deploy_production:
  stage: deploy
  when: manual
  allow_failure: false   # required gate: pipeline blocks until played
  script: ./deploy.sh

optional_smoke:
  when: manual
  allow_failure: true    # optional: pipeline proceeds without it
  script: ./smoke.sh

Trigger or cancel the blocked pipeline

  1. Open the pipeline and click "play" on the manual job to release the block.
  2. If the gate is no longer needed, cancel the pipeline so it does not sit blocked.
  3. For environment-protected manual deploys, confirm you have permission to run the job.

How to prevent it

  • Set allow_failure explicitly on every manual job to match blocking intent.
  • Document which manual gates are required vs optional.
  • Use protected environments so only authorized users can play deploy gates.

Frequently asked questions

What causes "Manual job blocks"?
A when: manual job without allow_failure: true is a blocking gate. Until someone plays it, the pipeline is "blocked" and dependent stages wait.
How do I fix Manual job blocks?
Decide whether the manual step must gate the pipeline, and set allow_failure accordingly.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card