Lesstep
Jenkins 2.580.1 · Build queue · Checked October 28, 2026

Jenkins: "Waiting for next available executor" and the other reasons a build stays in the queue

A build you start goes into Jenkins' build queue first, and leaves it when an executor that is allowed to run it is free. While it waits, Jenkins keeps one line saying why. The line is more precise than it looks: the build may be waiting for any executor, for one particular node, for a node with a label, for an agent to come online, for its own previous build, or for Jenkins to stop shutting down.

Where Jenkins shows the reason

On the dashboard, the Build Queue box lists the waiting jobs; hover a job's name to see "Started by user …", the reason, and how long it has waited ("Waiting for 43 sec"). The REST API gives the same line as why, one entry per queued build. A Jenkins 2.580.1 on our machine, on October 28, 2026:

curl -s -g -u 'your-user-id:your-api-token' \
  'https://jenkins.example.com/queue/api/json?tree=items[id,why,stuck,blocked,task[name]]'

{"items":[
 {"id":5,"blocked":true,"stuck":false,"task":{"name":"slow"},"why":"Build #1 is already in progress (ETA: N/A)"},
 {"id":3,"blocked":false,"stuck":true,"task":{"name":"on-windows"},"why":"‘agent1’ is offline"},
 {"id":2,"blocked":false,"stuck":true,"task":{"name":"on-linux"},"why":"There are no nodes with the label ‘linux’"},
 {"id":1,"blocked":false,"stuck":false,"task":{"name":"hello"},"why":"Waiting for next available executor on ‘Built-In Node’"}]}

The -g matters: without it curl reads the square brackets as its own patterns and stops with "URL malformed" (exit code 3) before asking Jenkins anything. A build you started through the API has its own address, the Location header of the 201 answer (/queue/item/1/); /queue/item/1/api/json has the same why while it waits.

What each reason means

curl -s -g -u 'your-user-id:your-api-token' \
  'https://jenkins.example.com/computer/api/json?tree=computer[displayName,offline,numExecutors,idle]'

{"computer":[
 {"displayName":"Built-In Node","idle":false,"numExecutors":1,"offline":false},
 {"displayName":"agent1","idle":true,"numExecutors":1,"offline":true},
 {"displayName":"agent2","idle":true,"numExecutors":1,"offline":true}]}

Jenkins writes the reason in the language the request asks for (Accept-Language), otherwise in the server's own: our Jenkins, on a Japanese system, answered a curl without that header in Japanese. Not every line is translated: "There are no nodes with the label" came back in English even when Japanese was asked for.

Jenkins builds in IntelliJ IDEA and other JetBrains IDEs

Pipeline Inbox for Jenkins, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, follows a build you start from the IDE through the queue for up to a minute and then selects it in the list. From version 1.0.12, if Jenkins has not started it by then, the note says Jenkins' reason, for example "nightly: the build is waiting in Jenkins' queue. Jenkins says: There are no nodes with the label ‘linux’", asked for in the IDE's language. The build list, Pipeline stages, failed tests and console logs are free; starting a build (with or without parameters), rebuild, stop and input steps are Pro (US$1.50 a month, with a 30-day trial).

Jenkins® is a registered trademark of LF Charities Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with or endorsed by the Jenkins project or JetBrains.

More: "Nothing is submitted" · an input step that holds an executor while it waits · "401 Unauthorized" · Jenkins plugins for IntelliJ IDEA compared · 日本語