AZR001 — azure-missing-timeout¶
Severity: warning · Category: Azure Pipelines · Autofix: yes
What it checks¶
Flags an Azure Pipelines job with no timeoutInMinutes set.
Why it matters¶
Without an explicit timeout, a job on a Microsoft-hosted agent defaults to a 60-minute cap (unlimited on self-hosted agents). That's a different default from GitHub Actions' 360 minutes — worth knowing either way, since a job you expect to finish in 5 minutes that instead hangs waiting on a prompt or a deadlocked process will occupy the agent for the full default before Azure kills it.
Examples¶
Flagged:
jobs:
- job: build
pool:
vmImage: ubuntu-latest
steps:
- script: npm test
Fixed:
jobs:
- job: build
pool:
vmImage: ubuntu-latest
timeoutInMinutes: 15
steps:
- script: npm test
Suppressing¶
The finding is reported on the job's declaration line:
- job: build # vlotpipe: ignore[AZR001]
pool:
vmImage: ubuntu-latest
Reasonable on a self-hosted agent pool where the unlimited default is
already the intended behavior — though being explicit about that
(timeoutInMinutes: 0, or a large deliberate value) documents the
choice rather than leaving it implicit.
Autofix¶
vlotpipe scan --fix (or check --fix) inserts timeoutInMinutes: 30
— a modest, explicit placeholder, not a guess at what your job actually
needs. Treat it as a starting point to tune, not a final answer.
Both the inserted value and whether --fix touches this code at all
are configurable:
# .vlotpipe.yml
rules:
AZR001:
fix_default: 15 # override the inserted value (default: 30)
fix: false # or skip the autofix entirely — still fires and reports as usual
fix_default is independent of TIMEOUT001's own — the two can differ.