Updated Oct 19, 2026

Static Code Analysis

Audit GitHub Actions security patterns offline

zizmor-audit is an offline security auditor for GitHub Actions workflows and composite actions.

Agent

overview

What zizmor-audit does

Audit GitHub Actions workflows and composite actions for security issues (template injection, dangerous triggers, excessive permissions, unpinned actions, credential persistence) with zizmor in offline mode. Native JSON findings; nothing runs.

Return native JSON findings with identifiers, descriptions, severity, confidence, persona and YAML locations. A repository with .github uses repository collection and its ignore/configuration files; a folder without .github reads top-level .yml and .yaml workflows.

The operation forces offline mode and clears GitHub token variables. API-dependent known-vulnerable and impostor-commit checks are skipped. Regular is the tested default persona; pedantic and auditor are exposed upstream modes, without a separate saved fixture here. Findings are successful data; collection or parse failures and no collected workflows fail.

Packaged version: 1.30.1. Upstream license: MIT.

source github.com/zizmorcore/zizmor/tree/99a054ed9283c90abdd2d5b9fb5101d27dde9783

use cases

Where zizmor-audit fits

Inspect pull-request triggers

Review dangerous-trigger findings in workflow YAML.

Find expression injection risks

Locate unsafe interpolation patterns reported by the auditor.

Review action pinning

Receive unpinned-uses findings with YAML locations.

reference

zizmor-audit inputs and flags

2 inputs
NameTypeFlagDescription
sourceFOLDER--sourceRepository folder with .github (workflows and actions), or a folder of workflow .yml/.yaml files. A zizmor.yml config is respected.
personaSTRING--personaregular (default, fewest false positives), pedantic (adds code smells) or auditor (everything).

Showing key inputs. zizmor-audit exposes 2 inputs in total.

example

Run zizmor-audit

zizmor-audit · command
/app/run.sh --source ./source ./output

guidance

Choosing zizmor-audit

Use zizmor-audit to review workflow security patterns such as dangerous triggers and template injection. actionlint checks workflow syntax and related mistakes. Neither an offline clean report nor a syntax pass proves that an action or workflow is safe.

faq

zizmor-audit questions

source: Repository folder with .github (workflows and actions), or a folder of workflow .yml/.yaml files. A zizmor.yml config is respected. persona: regular (default, fewest false positives), pedantic (adds code smells) or auditor (everything).

Return native JSON findings with identifiers, descriptions, severity, confidence, persona and YAML locations. A repository with .github uses repository collection and its ignore/configuration files; a folder without .github reads top-level .yml and .yaml workflows.

The operation forces offline mode and clears GitHub token variables. API-dependent known-vulnerable and impostor-commit checks are skipped. Regular is the tested default persona; pedantic and auditor are exposed upstream modes, without a separate saved fixture here. Findings are successful data; collection or parse failures and no collected workflows fail.

Use zizmor-audit to review workflow security patterns such as dangerous triggers and template injection. actionlint checks workflow syntax and related mistakes. Neither an offline clean report nor a syntax pass proves that an action or workflow is safe.

The public image repository gives immutable image and ORAS download commands, the expected source/notices bundle checksum and pinned upstream source directions. The accompanying OCI bundle retains the original build recipe, runtime sources and full installed notices. The Git recipe keeps primary notices and an exact layer/hash index; it does not duplicate the full installed notice tree or mirror every upstream source archive. Image, source and license notice downloads.

Run zizmor-audit yourself

The saved regular-persona verifier confirmed template-injection, dangerous-triggers and unpinned-uses at High severity, plus artipacked at Medium. The safe fixture file had no findings. These are verifier summaries, not a retained complete native array. The command shows the container entrypoint with example paths.

Facts on this page come from the live Trickest tool library.