Forum Discussion
mdanyliuk
Jul 19, 2023Copper Contributor
Change reject logic for the pipelines
Hi, Why rejection in approvals has the same logic as failure? I have a pipeline with multiple stages/jobs and I want to add a manual approval step for some of the jobs in the middle of this sequen...
Kidd_Ip
Aug 13, 2025MVP
In Azure Pipelines, when a manual approval is rejected, the system treats it as a terminal failure for that stage. This is by design, as approvals are considered checks that must pass before a stage can execute. If a check fails (like a rejected approval), the stage is blocked and the pipeline halts.
This behavior is consistent across platforms like AWS CodePipeline too, where rejection causes the pipeline to enter a "Failed" state.
Would suggest using conditions to skip jobs:
condition: and(succeeded(), eq(variables['ManualApproval'], 'Approved'))
Environments with checks
Approvals are often tied to environments. You can configure checks so that rejection prevents stage execution without failing the entire pipeline. The pipeline pauses, and if the check isn’t satisfied, the stage is skipped.