SecureCI vs actionlint, zizmor, poutine and OpenSSF Scorecard

Last reviewed: 24 October 2026

Linters and scanners tell you what’s wrong with a workflow file. The SecureCI CLI tells you whether every workflow meets your organisation’s standards, whether the actions it uses are still the code you reviewed, and lets you run it locally before you push.

Short answer:

  • Your golden path, enforced: required actions, their order across jobs, minimum versions, forbidden actions, SHA pinning and allowed owners, all in one short YAML contract.
  • Supply-chain drift caught: a lockfile for actions fails CI when a tag moves. None of these four tools keeps one; GitHub itself now offers workflow lockfiles in public preview.
  • Nothing hides: checks follow calls into composite actions and reusable workflows, local and remote.
  • The common security checks, too: template injection, GITHUB_TOKEN permissions, dangerous triggers and actions with known advisories (CLI 0.6.0 or later).
  • Run it, too: the same CLI executes the workflow locally.

At a glance

actionlintzizmorpoutineOpenSSF ScorecardSecureCI CLI
Require actions, their order and minimum versionsNoNoPartial by writing custom Rego rulesNoYes needs-aware ordering across jobs
Lockfile: fail when an action tag movesNoNoNoNoYes secureci.lock
Checks mapped to compliance controls (PCI DSS, DORA, ISO 27001…)NoNoNoPartial maps checks to the OpenSSF OSPS Baseline, not to regulationsPartial published mapping; supports controls, doesn’t certify
Run the workflow locallyNoNoNoNoYes
Enforce SHA pinningNoYesPartialYesYes with per-owner exceptions; secureci pin rewrites tags to SHAs
Allow / deny actions and ownersNoYes opt-inYes custom RegoNoYes
Follows composite actions and reusable workflowsPartialPartial audits the action files you point it atNot documentedNoYes local and remote
Syntax and ${{ }} expression checksYesPartialNoNoYes
SARIF for GitHub code scanningPartial via -format templatesYesYesYesYes
Template / script injectionYesYesYesYesYes in run: and github-script, through local composite actions and reusable workflows
Excessive token permissionsNoYesPartial missing permissions on pull_request_target and similar triggersYesYes warnings by default, a contract policy makes them errors
Dangerous triggers (pull_request_target)NoYesYesYesYes fails a job that checks out and runs untrusted code; a # secureci-allow comment with a reason makes it a warning (CLI 0.7.0 or later)
Actions with known advisoriesNoYesYes OSV databaseNoYes GitHub Advisory Database, with a severity threshold

Your golden path, as a contract

Generic rules can’t know that every deploy in your organisation must run org/security-scan v1.2+ first. A SecureCI contract can:

# contracts/platform-standard.yml
required:
  - uses: org/security-scan
    min-version: v1.2.0
  - uses: org/deploy          # must run after security-scan
forbidden:
  - uses: org/legacy-deploy
pins:
  required: true              # every remote action pinned to a commit SHA
allowed-owners: [actions, my-org]
secureci validate .github/workflows/*.yml --contract contracts/platform-standard.yml --format sarif

Ordering follows what GitHub actually guarantees: two jobs without a needs: relationship may run in parallel, so neither counts as running “after” the other. Contracts are checked through local composite actions and reusable workflows, and remote ones with --contract-recurse all, so wrapping an action never hides it.

A lockfile for your actions

secureci inventory          # writes secureci.lock: every action tag and the commit it resolves to
secureci inventory --check  # in CI: fails when a tag now points somewhere new

This is the check that turns an incident like the 2025 tj-actions/changed-files compromise into a failing pull request instead of leaked secrets. On GitHub.com, GitHub’s own workflow lockfiles (public preview) go further by running the locked commit; secureci.lock also covers GitHub Enterprise Server.

How the other tools compare

SecureCI emits SARIF, so its findings sit alongside any of these tools in GitHub code scanning.

Try the SecureCI CLI

Free and open source (MIT). Needs Node.js 20+ and, to run workflows, Docker, Podman or containerd.

npm install -g @secureci/cli
secureci validate .github/workflows/ci.yml
secureci run .github/workflows/ci.yml --dry-run

Running GitHub Actions across many repositories? Get early access to org-wide SecureCI →

FAQ

What is the best tool to enforce GitHub Actions standards across repositories?

SecureCI. Its pipeline contracts require specific actions, their order and minimum versions, forbid actions, and enforce SHA pinning and allowed owners, checked through composite actions and reusable workflows. Linters such as actionlint and scanners such as zizmor check generic rules rather than your organisation’s own.

zizmor vs actionlint vs SecureCI: what’s the difference?

actionlint finds correctness bugs, and zizmor finds generic security weaknesses. SecureCI enforces your own pipeline standards, keeps a lockfile that fails CI when an action tag moves, and runs workflows locally.

Does SecureCI detect template injection?

Yes, since CLI 0.6.0. secureci validate reports untrusted input, such as a pull request title, expanded into a run: script or actions/github-script, following local composite actions and reusable workflows, and suggests passing it through env: instead. It also flags missing or excessive GITHUB_TOKEN permissions, pull_request_target and workflow_run jobs that run untrusted code (from CLI 0.7.0, saying whether actions/checkout's safe default covers the checkout), and actions with known security advisories. Findings are SARIF, so they sit next to zizmor or CodeQL results in code scanning.

Which tools enforce GitHub Actions SHA pinning?

SecureCI enforces it in a contract (pins.required) with per-owner exceptions, and also records each tag’s commit in secureci.lock so a moved tag fails CI. zizmor, OpenSSF Scorecard and GitHub’s allowed-actions policy can also report or enforce pinning.

Can these tools output SARIF for GitHub code scanning?

Yes. SecureCI (--format sarif), zizmor, poutine and Scorecard produce SARIF directly; actionlint can through its -format template option.

Sources

Competitor features change quickly. We checked these on 24 October 2026; if something here is out of date, email [email protected] and we'll fix it.