CircleCI Approval Job Errors - Fix type: approval Gates
A manual approval gate is misconfigured - it has steps it should not, nothing depends on it, or it is not wired into the workflow. Approval jobs are special workflow-only placeholders, and the rules differ from normal jobs.
What this error means
Validation rejects the approval job, or the gate never blocks the pipeline - downstream jobs run without waiting for approval. The hold you expected does not appear because the approval job is not wired correctly.
Config is invalid:
- job 'hold': type 'approval' jobs cannot define 'steps' or an executor
- workflow 'deploy': nothing requires the approval job 'hold'Common causes
Approval job defined with steps/executor
A type: approval job is a placeholder in the workflow - it must not have steps, docker, or an executor. Giving it any fails validation.
Nothing requires the approval
The gate only matters if downstream jobs requires: it. Without that edge, the approval is ignored and later jobs run immediately.
Approval declared as a top-level job
Approval jobs live only inside a workflow’s jobs: list, not under the top-level jobs: map. Declaring it there is invalid.
How to fix it
Define the approval inline and gate downstream jobs
workflows:
deploy:
jobs:
- build
- hold:
type: approval
requires: [build]
- deploy:
requires: [hold] # waits for manual approvalKeep approval jobs as bare placeholders
- Declare
type: approvalonly inside the workflow’sjobs:list. - Do not give it
steps,docker,machine, or an executor. - Make every job that must wait
requires:the approval job.
How to prevent it
- Define approval jobs inline in the workflow, never as top-level jobs.
- Always wire downstream jobs to
requires:the approval. - Keep approval jobs free of steps and executors.