Jenkins Pipeline input step: Proceed or Abort
A Pipeline's input step stops the build and waits until someone chooses Proceed (or the step's ok text) or Abort. It waits with no time limit unless a timeout surrounds it. You can answer it on the build's page, or with one POST to the build's input/<id>/ address. The answers below come from Jenkins 2.580.1 with the Pipeline plugins installed, on October 30, 2026.
Who may answer
From the Pipeline: Input Step plugin's source:
- No
submitter: anyone with the job's Build permission (Job/Build) may Proceed. - With
submitter: only the users or groups it names, separated by commas, may Proceed. Spaces around the names are ignored, and upper or lower case counts as your security realm decides (the default ignores it). Administrators (Overall/Administer) may always Proceed. - Abort: the named submitters, or anyone with Job/Cancel.
- Anyone else gets "You need to be <submitter> to submit this.", "You need to have Job/Build permissions to submit this." or "You need to be '<submitter>' (or have Job/Cancel permissions) to cancel this."
The console names who answered: "Approved by <user>" or "Rejected by <user>". To use that name later in the script, set submitterParameter: the step then returns it with the values. In the test, a user who was an administrator but not in submitter: 'alice,release-managers' could Proceed.
Answer on the build's page
- Console Output: while it waits, the console shows the message and the links "<ok> or Abort".
- The build's input page:
/job/<job>/<n>/input/lists every input that waits, with its parameters and the two buttons. - Pipeline: Stage View has the buttons in the waiting stage's cell. Pipeline Graph View, which a new Jenkins installs instead (see Blue Ocean is deprecated), reads the same input for its Stages page (its JSON is below).
Find the input's ID
Every answer goes to /job/<job>/<n>/input/<id>/. Jenkins chooses the ID like this:
- With
id: 'approve-prod'in the step, the ID wasApprove-prod: Jenkins upper-cases the first letter. A POST toinput/approve-prod/proceedEmptygot HTTP 404;input/Approve-prod/proceedEmptyworked. - With no
id, the ID is the MD5 hash of the message in hex:input message: 'Deploy to staging?'waited as57a6872f1f7f99e3c351c978fa540038. Changing the message changes the address, so give a step anidif a script answers it.
To read it from a running build, Stage View's REST API lists the inputs that wait:
curl -u '<user>:<api-token>' 'https://jenkins.example.com/job/<job>/<n>/wfapi/pendingInputActions'
[{"id":"Release","proceedText":"Release","message":"Release 1.4.0?",
"inputs":[{"type":"ChoiceParameterDefinition","name":"TARGET",
"definition":{"defaultVal":"staging","choices":["staging","production"]}}],
"proceedUrl":"/job/<job>/<n>/wfapi/inputSubmit?inputId=Release",
"abortUrl":"/job/<job>/<n>/input/Release/abort",
"redirectApprovalUrl":"/job/<job>/<n>/input/"}]
wfapicomes with Stage View (the Pipeline REST API plugin). On a Jenkins with only Pipeline Graph View it answered HTTP 404. Graph View's own JSON,/job/<job>/<n>/stages/allSteps, lists the waiting step with"state":"paused"and"inputStep":{"message":"Release 1.4.0?","cancel":"Abort","id":"Release","ok":"Release","parameters":true}; it is written for Graph View's page, not documented as an API./job/<job>/<n>/input/api/jsonanswered HTTP 404: the build's JSON API does not describe input steps.
Proceed or Abort with curl
curl -X POST -u '<user>:<api-token>' \ 'https://jenkins.example.com/job/<job>/<n>/input/<id>/proceedEmpty' HTTP 200 (console: "Approved by <user>", the build went on to SUCCESS) curl -X POST -u '<user>:<api-token>' \ 'https://jenkins.example.com/job/<job>/<n>/input/<id>/abort' HTTP 200 (console: "Rejected by <user>", later stages "skipped due to earlier failure(s)", Finished: ABORTED)
- Use POST. A GET on
proceedEmptygot HTTP 405. - With an API token Jenkins asked for no CSRF crumb. The same POST with no sign-in got HTTP 403 "No valid crumb was included in the request".
- Once the input is answered, the same POST gets HTTP 404: the address is gone.
An input with parameters needs submit, not proceedEmpty
proceedEmpty on an input that asks for parameters also answered HTTP 200, but the build then failed. The step returned no values, and the next line of the script, which read one, stopped with:
groovy.lang.MissingPropertyException: No such field found: field java.lang.String TARGET Finished: FAILURE
Send the values to submit, with the field proceed (the page sends the ok text):
curl -X POST -u '<user>:<api-token>' \
'https://jenkins.example.com/job/<job>/<n>/input/Release/submit' \
--data-urlencode 'json={"parameter":[{"name":"TARGET","value":"production"}]}' \
--data-urlencode 'proceed=Release'
HTTP 200 (the script saw TARGET=production and the approver's user ID)
Without proceed, the plugin's source treats submit as Abort.
No Jenkins CLI command
With the Pipeline plugins (workflow-aggregator) installed, Jenkins 2.580.1's CLI had 68 commands and none answers an input step. The Pipeline ones are replay-pipeline, restart-from-stage and declarative-linter; stop-builds stops the whole build. Use the HTTP calls above.
It waits forever, and it can hold an executor
- With no timeout, an input waits until someone answers or the build is stopped. A timeout around it ends the wait as an Abort:
stage('Approve') { options { timeout(time: 1, unit: 'DAYS') } steps { input message: 'Deploy to production?', ok: 'Deploy' } }With a 10-second timeout the console said "Cancelling nested steps due to timeout" and "Timeout has been exceeded", and the build finished ABORTED. - With
agent anyat the top of the Pipeline, the build kept one of the two executors busy the whole time it waited. Withagent noneat the top and an agent only on the stages that run something, no executor was busy while it waited. Other builds waiting in the queue for that executor show "Waiting for next available executor".
Answer input steps from IntelliJ IDEA
Pipeline Inbox for Jenkins, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, shows a build that waits for input with the input's message in its details. Its Proceed button (named after the step's ok text) and Abort button answer it through proceedEmpty and abort. For an input that asks for parameters it offers only Abort and leaves Proceed to the input's page, so the values are not skipped. When a build of yours or of your current branch reaches an input step, the IDE says so once in a notification with the input's message, and Open goes straight to the build with Proceed and Abort. It reads waiting inputs from Stage View or, without it, from Pipeline Graph View. The build list, stages and console logs are free; answering input steps, building and stopping 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" (start a job with parameters) · Jenkins plugins for IntelliJ IDEA compared · 日本語