Likely cause: this is usually trigger-context behavior rather than a global deprecation—[skip ci] is honored only for qualifying push runs, and can be ignored for PR/build-policy or non-push trigger paths.
- Confirm which trigger actually started the run
- Open a run that should have been skipped and check its trigger reason (push vs PR validation vs pipeline completion/schedule/manual).
- Skip tokens are intended for commit-based CI pushes; they are commonly not applied in other trigger modes.
- Reference: Azure Pipelines trigger model: https://learn.microsoft.com/azure/devops/pipelines/build/triggers?view=azure-devops
- Verify token placement and commit selection
- Put
[skip ci](or[ci skip]) in the actual commit message that reaches the branch withtrigger:enabled. - If you merge PRs, check the final merge/squash commit message on
main; if it does not contain the token, CI can still run. - Reference: Skip CI behavior in Azure Repos Git: https://learn.microsoft.com/azure/devops/repos/git/git-commands?view=azure-devops#skip-ci-for-individual-pushes
- Put
- Check PR validation/build policy expectations
- If branch policies require build validation, that validation run can still execute even if a source commit had skip text.
- Validate your branch policies and required build configuration.
- Reference: Build validation policies: https://learn.microsoft.com/azure/devops/repos/git/branch-policies?view=azure-devops#build-validation
- Add a defensive YAML condition for release-automation commits
- If your release bot pushes to
main, add a condition so jobs are skipped when the commit message contains your marker (for examplechore(release): [skip ci]). - This protects you even if a run is queued by policy or another trigger path.
- If your release bot pushes to
Example job condition:
condition: and(succeeded(), not(contains(variables['Build.SourceVersionMessage'], '[skip ci]')))
Validation checks:
- Push a test commit directly to the CI branch with
[skip ci]in the commit message and confirm no push CI run is created. - Repeat through your PR merge path and confirm whether the merge commit retains the token.
Note: if you rely on mandatory policy validation, use branch filters/conditions for release commits instead of depending only on skip tokens.
“If you find this answer helpful, please upvote it. If this resolves your issue, please mark it as the accepted answer so that it can help others in the community.”