CLI
Run a read-only gate from the repository root. Keep feedback close to the code.
shipproof check .Production evidence gate / v0.10.0
ShipProof checks AI-assisted changes for security, correctness, scale, performance, and release risk. It runs locally, deterministically, and with evidence your team can inspect.
$ shipproof check . --format terminal > FAIL scope: changed-since HEAD (18 files) > security 2 high · 4 medium · 2 low > correctness 1 high · 1 medium · 1 low > scale 1 high · 1 medium · budget exceeded > release 1 high · artifact check passed > > [HIGH] SP105 JWT signature verification disabled > src/auth/jwt.ts:61 · 3 blocking > [HIGH] SP109 SSRF to internal network or metadata > src/routes/proxy.ts:44 · remediation attached > [HIGH] SP110 path traversal in file path > src/storage/download.ts:32 · 1 blocking > [HIGH] SP501 unmetered AI/LLM API route > src/api/generate.ts:17 · budget exceeded > [MED] SP204 sensitive data or credential logging > src/auth/login.ts:88 · review boundary attached > [MED] SP406 Express error sent to client > src/api/errors.ts:27 · stack trace exposure > > findings: 14 · evidence: sp-evidence-7d2c > exit code: 1
{
"status": "fail_with_findings",
"scope": "changed-since HEAD",
"blocking": 3,
"findings": [
{ "rule_id": "SP105", "severity": "high" },
{ "rule_id": "SP109", "severity": "high" },
{ "rule_id": "SP204", "severity": "medium" }
],
"evidence_id": "sp-evidence-7d2c",
"exit_code": 1
}
// SARIF 2.1.0 excerpt { "version": "2.1.0", "runs": [{ "tool": "ShipProof", "results": [ { "ruleId": "SP105", "level": "error" }, { "ruleId": "SP109", "level": "error" }, { "ruleId": "SP204", "level": "warning" } ] }] }
01Local-firstyour repository stays where it is
02Deterministicsame input, inspectable result
03Automatableterminal, Action, JSON, SARIF, MCP
Interactive sample
Run a self-contained fixture with the same evidence shape your team can keep in CI.
evidence://sp-demo-7d2c14 findings · exit 1Demo only · no repository data is uploaded or scanned.
The loop
A small, repeatable gate that fits the workflow you already have. Start at the terminal; promote the same contract to CI when the change is ready.
Identify the files and evidence that actually changed.
Run security, correctness, scale, performance, and release checks.
Read remediation context and false-positive boundaries beside each finding.
Keep the result as terminal, JSON, SARIF, or CI evidence.
Evidence, not vibes
Every result has a stable rule ID, severity, control mapping, remediation text, and a boundary for when it may be a false positive. That is what makes a gate reviewable instead of mysterious.
Read the command referenceOne contract, several surfaces
Run a read-only gate from the repository root. Keep feedback close to the code.
shipproof check .Use the same exit-code and evidence contract in pull requests and release jobs.
uses: kingggg5/shipproof@v0.10.0Export structured results for annotations, archives, and your own review tooling.
--format sarifExpose the gate to an AI workflow without making the scanner itself dependent on a model.
shipproof mcpClaim boundaries
“This input produced these deterministic findings under this policy and scope.”
“This code is certified, impenetrable, or free of every possible defect.”
Use the evidence with review, tests, threat modelling, and the context of your system.
Start with one command