Skip to content

pipeline-check · v1.16.0

Catch supply-chain risks before they ship.

A read-only scanner for 39 providers, graded against 18 compliance frameworks. 120 of the 1260+ checks also emit a one-shot patch you can apply with --fix.

MIT licensed No telemetry No API tokens Python 3.11+

Example scan of a GitHub Actions repository. Running pipeline_check --pipeline github reports 16 findings (2 critical, 4 high, 7 medium, 3 low) for a score of 47 out of 100, grade D. Findings map to OWASP CI/CD Top 10, NIST SSDF, SLSA, and CIS Supply Chain. 4 of the 16 are auto-fixable with --apply.

1260+
Checks
39
Providers
18
Compliance standards
120
Autofixers
// capabilities

One scanner. Every pipeline you ship through.

Same severity model and report format whether you're scanning a Jenkinsfile, Terraform (plan JSON or raw HCL), or a live AWS account. Findings carry control IDs for OWASP, NIST SSDF, SLSA, and the rest, so audit answers don't require leaving the tool.

OWASP 10/10 coverage

Every one of the OWASP Top 10 CI/CD Security Risks has at least one rule across the supported providers. New risks land here before they land in your pipeline. Read OWASP coverage

Live AWS + shift-left IaC

Scan a running AWS account through boto3, or scan Terraform plans (or raw HCL source) and CloudFormation templates before provisioning. Same rule IDs, same severities. AWS reference

Attack-chain correlation

56 multi-finding chains mapped to MITRE ATT&CK, including the cross-provider XPC-NNN family that fires when GitHub Actions, Dockerfile, Helm, and OCI findings line up in one scan. The TAINT-NNN dataflow engine follows attacker-controllable input across cross-step boundaries on five providers (GitHub Actions, GitLab CI, Buildkite, Tekton, Argo Workflows), each routed through that host's native channel: $GITHUB_OUTPUT, dotenv artifact, buildkite-agent meta-data, Tekton results, Argo outputs.parameters. Attack chains

Supply-chain depth on demand

--resolve-remote turns on the network-backed checks: a cooldown gate on freshly published packages, OSV advisory lookups, OpenSSF Scorecard and build-provenance signals, and live secret verification that probes a leaked credential against its issuing API (two dozen services) and promotes a confirmed-live token to CRITICAL. Off by default so the base scan stays hermetic. Supply-chain checks

Benchmarked on real goats

Recall is locked against deliberately-vulnerable training repos: 100% on cicd-goat, cfngoat, and kubernetes-goat. Every rule change that stops a goat finding from firing trips the bench in CI, so coverage can't silently regress between releases. GOAT bench

Findings that fix themselves

120 of the checks ship a one-shot patch. --fix prints a unified diff you can pipe to git apply, --apply writes the edits in place, and the fix-pr subcommand commits them to a fresh branch and opens the pull request (or GitLab MR). Fixers carry a safe / unsafe tier, so the default pass only touches edits that can't change behavior, and they're idempotent. Autofix

CI gate that does its job

Severity thresholds, baseline diffs against a git ref, ignore files with expiries, glob check selection, autofix emit-or-apply. Failing the build is the default; turning it off is opt-in. CI gate

Org-wide fleet scanning

Point fleet --from-org <org> (or --repos repos.yml) at a whole GitHub / GitLab / Bitbucket org. It clones and scans every repo in parallel, writes one graded digest ranked worst-first, and re-runs the cross-repo CXPC-NNN attack chains over the union, catching risks that only exist between repos. A posture graph (repos as nodes, cross-repo chains as edges) ships in fleet.json. Fleet scanning

Output that integrates

Rich terminal table for humans, JSON / JSON Lines for scripts and log pipelines, HTML report (with a per-resource blast-radius heatmap and an attack-chains panel) for sharing, SARIF 2.1.0 for GitHub code scanning and Defender for DevOps, CycloneDX + SPDX SBOMs, plus markdown for PR comments, GitHub Actions annotations, CSV, and JUnit XML for test-runner UIs. Output formats

Inline in your editor

The Pipeline-Check VS Code extension drives the same rule registry as the CLI, surfaced as you edit workflow files. Install from the VS Code Marketplace or Open VSX; source lives at greylag-ci/pipeline-check-vscode. VS Code extension

MCP server for AI clients

Drive scans and introspect the rule catalog from Claude Desktop, Claude Code, Cursor, Continue, or Zed over the Model Context Protocol. Runs locally on stdio: no network egress, no telemetry, no API tokens. MCP server

Zero phone-home

Workflow files are parsed from disk. AWS uses the standard boto3 credential chain. Nothing leaves your machine. MIT licensed, no signup, no account. GitHub

// providers

Wherever your builds run.

Auto-detect picks the provider for you, or pass --pipeline <name> to force one. Counts reflect the current rule catalog.

// flow

Inputs in. Graded report out.

Click any stage to jump to its reference page.

// the patrol

Every commit walks the same rail.

Pipeline-Check goose patrolling a CI/CD pipeline rail: pauses at the SCAN node, stamps DENIED, and turns back

Ship pipelines you trust.

Install in under 30 seconds. Scan your first repo in under a minute.

pip install pipeline-check