GitLab: a pipeline that failed before any job ran
When GitLab cannot create the jobs of a pipeline, it can still save the pipeline as failed, with no jobs, a failure reason and an error message. The pipeline page then shows "Unable to run pipeline" with the message, and the reason is a sentence such as these (GitLab source: app/presenters/ci/pipeline_presenter.rb and app/views/projects/pipelines/show.html.haml, read on October 28, 2026):
The pipeline failed due to the user not being verified. The pipeline size limit was exceeded. The pipeline job activity limit was exceeded. The pipeline failed due to an error on the CI/CD configuration file.
The reasons, and the message behind each
- Not verified (
user_not_verified): the message is "Identity verification is required in order to run CI jobs". On GitLab.com with the Free plan, GitLab-hosted runners need identity verification first; depending on the risk score of the account, that is an email, a phone number or a payment method (debugging pipeline errors, identity verification). GitLab says it does not store card details directly or make any charges. - Too many jobs (
size_limit_exceeded, "The pipeline size limit was exceeded."): the message is "The number of jobs has exceeded the limit of" the number, followed by "Try splitting the configuration with parent-child-pipelines" and a link (lib/gitlab/ci/pipeline/quota/size.rb). It is checked when the pipeline is created and when new commit statuses are created. On GitLab.com the limit is 500 on the Free tier, 1,000 on trials, 1,500 on Premium and 2,000 on Ultimate; on GitLab Self-Managed it is off by default (maximum number of jobs in a pipeline, GitLab.com settings). - Too many jobs in active pipelines (
job_activity_limit_exceeded, "The pipeline job activity limit was exceeded."): the message is "Project exceeded the allowed number of jobs in active pipelines. Retry later." (lib/gitlab/ci/pipeline/chain/limit/active_jobs.rb). It counts the jobs of the pipelines of the project that are created, pending or running, each time a new pipeline is created. On GitLab.com: 500 on the Free tier, 1,000 on trials, 20,000 on Premium and 60,000 on Ultimate; off by default on GitLab Self-Managed (number of jobs in active pipelines). - Too many deployments (
deployments_limit_exceeded, "The pipeline deployments limit was exceeded."): the message is "Pipeline has too many deployments! Requested" the number, "but the limit is" the limit. A deployment is any job withenvironment; the default limit is 500 (deployment jobs in a pipeline). - A configuration error (
config_error, "The pipeline failed due to an error on the CI/CD configuration file."): the message is the first error GitLab found in the configuration, such asjobs:<job-name> config contains unknown keys: <key-name>. - Rules that took too long (
seed_timeout): "Pipeline creation timed out while evaluating rules." GitLab evaluates therulesof every job in the configuration, including the jobs they leave out, and gives up when that takes too long. The documentation lists this reason from GitLab 19.6; on GitLab Self-Managed, administrators can change the timeout withGITLAB_CI_PIPELINE_SEED_TIMEOUT_SECONDS(debugging pipeline errors). - Code from an AI agent (
composite_identity_forbidden): "This pipeline did not run because the code should be reviewed by a non-AI user first. Verify that all changes in this merge request are safe before running a new pipeline." The pipeline page offers Verify changes, and points to the CI/CD settings of the project to let such pipelines run automatically. - External validation (
external_validation_failure, "The external pipeline validation failed."): on GitLab Self-Managed, the service an administrator set withEXTERNAL_VALIDATION_SERVICE_URLanswered 406 (external pipeline validation). - Others: "The project associated with this pipeline was deleted.", "Failed to create pipeline ref." and "The reason for the pipeline failure is unknown."
What GitLab does not save
When rules leave out every job, when workflow:rules leave out the pipeline, when the commit was pushed with git push -o ci.no_pipeline, or when Gitaly was briefly unavailable, GitLab counts the failure but saves no pipeline, so these never appear as failed pipelines (pipeline failure reasons). A pipeline started through the API or with Run pipeline gets the message back instead; see why GitLab refused a pipeline.
Where the API keeps the message
- The reason:
failureReasonof a pipeline in GraphQL is the sentence above, not the code. - The message:
errorMessagesof a pipeline in GraphQL, in GitLab 17.7 and later. - No longer filled:
yamlErrorMessagesin GraphQL andyaml_errorsin the REST API (a single pipeline, andhead_pipelineof a merge request) used to carry the configuration error. Since GitLab 17.9 (merge request 173759, Remove duplicate collection of errors), the step that records the errors of a pipeline no longer copies a configuration error intoyaml_errors; GitLab keeps it only as an error message (lib/gitlab/ci/pipeline/chain/helpers.rb, read on October 28, 2026). A tool that reads only those fields sees no error for newer pipelines.
query {
project(fullPath: "group/project") {
pipeline(iid: "123") {
status
failureReason
errorMessages { nodes { content } }
}
}
}
What to do
- Not verified: in the alert banner, select Verify my account and follow the steps; then push a new commit or run a new pipeline. Otherwise GitLab names a paid plan, more compute minutes, or project or group runners instead of GitLab-hosted runners.
- Too many jobs: split the configuration into parent-child pipelines.
- Too many jobs in active pipelines: wait for running pipelines to finish, or cancel the ones no longer needed, then run the pipeline again.
- A configuration error: fix
.gitlab-ci.yml, and check it first in the pipeline editor or with the CI Lint tool. - Rules that took too long: define fewer jobs, for example remove jobs that
rulesalways leave out, or use fewerparallel:matrixcombinations.
GitLab pipelines in IntelliJ IDEA
Pipeline Inbox for GitLab CI, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists the pipelines of your GitLab projects with their jobs by stage. Under a pipeline that failed before any job ran, it shows the messages GitLab gives (errorMessages), such as "Identity verification is required in order to run CI jobs" or the configuration error, and the reason only when there are none. Before version 1.0.21, on GitLab 17.9 and later it showed only the reason, such as "The pipeline failed due to an error on the CI/CD configuration file." Reading is free; retrying, cancelling and running are Pro (US$1.50 a month, with a 30-day trial).
GITLAB is a trademark of GitLab Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with or endorsed by GitLab Inc. or JetBrains.
More: GitLab pipeline or job refused (400, 403, 409, 429) · GitLab job dropped as stuck or over its timeout · GitLab job waiting for resource · GitLab "You are not authorized to run this manual job" · GitLab job log refused or empty · GitLab "This job does not have a trace." after 18.0 · GitLab "Insufficient permissions to set pipeline variables" · GitLab 404 "Group Not Found" · GitLab pipeline plugins for IntelliJ IDEA, compared · 日本語