Skip to content

SUPPLY001 — no-dependency-update-tool

Severity: warning · Category: Supply chain

What it checks

This one is different from every other rule: it's a repo-level check, not a per-workflow one. If any scanned workflow references a third-party action, and the repo has no .github/dependabot.yml, renovate.json, or equivalent config anywhere, it fires once for the whole scan.

Why it matters

SEC001 requires pinning actions to a commit SHA — but a SHA pin is only as secure as how current it is. Without Dependabot or Renovate configured for the github-actions ecosystem, a correctly-pinned action just quietly stops receiving security patches; nothing updates it unless a human remembers to.

Examples

Flagged — no update tooling anywhere in the repo, while workflows reference several third-party actions:

myrepo/
├── .github/
│   └── workflows/
│       └── ci.yml   # uses: actions/checkout@..., some/action@...

Fixed — add a Dependabot config covering the github-actions ecosystem:

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"

Renovate works too, and either tool supports a cooldown/minimum-release-age setting worth turning on — it delays picking up a newly-published action version by a few days, giving the community time to catch a compromised release before it lands in your workflows automatically.

Suppressing

Since this finding isn't tied to a specific line in a specific file, use .vlotpipe.yml rather than an inline comment:

ignore:
  - code: SUPPLY001
    path: "*"
    reason: "actions updated manually on a monthly review cadence"