Skip to content

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.