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.