Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.pipefort.com/llms.txt

Use this file to discover all available pages before exploring further.

Pipefort is two surfaces over one engine. The same Go scanner (pkg/scanner) powers:

CLI

ci-cd-security-scanner — scan a local directory or a remote GitHub repo from the command line. Supports --fix for in-place YAML rewrites.

Web dashboard

Multi-tenant React + Go app backed by Supabase. Connect a GitHub account or org and get continuous OWASP posture across every repo’s workflows.

What it detects

Pipefort implements eight checks against .github/workflows/*.yml, covering five OWASP Top 10 CI/CD risk categories and three workflow best practices:
CategoryTitleSeverity
CICD-SEC-1Dangerous checkout in pull_request_target workflowHIGH
CICD-SEC-3Unpinned third-party actionMEDIUM
CICD-SEC-4Poisoned Pipeline Execution (shell injection)HIGH
CICD-SEC-5Missing permissions specificationMEDIUM
CICD-SEC-6Hardcoded credentialsHIGH
BEST-PRAC-1Command piped directly to shellHIGH
BEST-PRAC-2Job timeout not configuredLOW
BEST-PRAC-3Self-hosted runner usageLOW
Filter to OWASP-only with --ruleset owasp (CLI) or the ruleset selector in the dashboard.

How it works

The scanner parses each workflow’s YAML AST and runs deterministic checks against it — no LLMs, no external services. Detection logic lives entirely in pkg/scanner, so the CLI and the web app always produce identical findings for the same file. The web app pulls workflow YAML through the GitHub Git Trees/Blobs API and scans the bytes in memory (scanner.ScanBytes) — there’s no git clone, so each per-repo scan fits well within a serverless request budget.

Next steps

Quickstart

Run your first scan in 60 seconds.

Architecture

How the engine, the CLI, the API, and Supabase fit together.