Skip to main content

Scan a local repo

The scanner looks for .github/workflows/*.yml and *.yaml inside the given path. If that directory doesn’t exist, it falls back to walking the whole tree for any YAML file that looks like a workflow. If you omit -p, the current working directory (.) is used.

Scan a single workflow file

-f overrides -p. Useful for editor integrations or focused triage.

Scan a remote GitHub repo

The CLI runs git clone --depth 1 into a temp directory, scans it, and cleans up. Add --keep-temp to leave the clone on disk for inspection.

Scan an entire organization

--org enumerates every repository owned by a GitHub organization or user and scans each one by fetching its workflow YAML over the API — no cloning, with bounded concurrency. It requires a token (--github-token, $GITHUB_TOKEN, $GH_TOKEN, or gh auth login); private repos need one with repo scope. Each repository’s own .pipefort.yml is fetched and applied to that repo’s findings, and the online supply-chain audits run automatically (the token is present). Console output leads with a per-repo severity summary, then the full findings grouped by owner/repo/path. --fail-on is evaluated against the aggregate across all repos.

JSON output

Emits a JSON object on stdout with two keys: findings (the flat list of Finding objects) and toxic_combinations (the Attacker Mind correlations). Both keys are always present.
Breaking change. Earlier releases emitted a bare JSON array of findings. The output is now an object — read findings from the findings key (e.g. pipefort -p . -o json | jq '.findings').
Pipe to jq for filtering, or feed it into another tool. The console output (the default) is human-readable but the JSON form is the stable contract for automation.

Filter to OWASP-only

--ruleset owasp (-r owasp) keeps only findings with category prefix CICD-SEC-. The default all includes the three best-practice checks too. See Rules reference.

Apply automatic fixes

Rewrites workflow YAML in place for the fixable categories, then re-scans to show what’s left. See Auto-fix for the exact rewrite rules.
--fix is not supported with -g owner/repo. Clone the repo yourself if you want to fix and review the diff.