AgenticCLI
▮ shipguardis a free local release gate for AI-built apps — 5 security checks in 2s.$ npm i -g @agenticcli/shipguard

Quick Start

ShipGuard runs locally and gates your release with deterministic exit codes. No account, no upload — install and scan in under 30 seconds. Tuned for Next.js + Supabase / Firebase apps that ship to Vercel.

Install

zsh
dev in ~npm i -g @agenticcli/shipguard

Or run once without installing: npx @agenticcli/shipguard scan.

Quick start

Scaffold a policy file, then run your first scan:

zsh — ~/checkout
dev in ~/checkout on mainshipguard init
✓ ShipGuard initialized · created shipguard.policy.yml
dev in ~/checkout on mainshipguard scan --changed
ShipGuard v0.4.0 — security gate · scanning 12 changed files
CRITICAL secrets:hardcoded-api-key
src/lib/openai.ts:12
HIGH auth:supabase-rls-disabled
supabase/migrations/0007.sql:3
Risk Score: 78/100 HIGH RISK
Status: BLOCKED
Use --changed in CI to scan only files modified in the current PR — it keeps scans under 2 seconds.

Commands

commandwhat it does
shipguard initcreate shipguard.policy.yml and .shipguard/
shipguard scanrun all enabled checks on the repo
scan --changedonly scan files changed since last commit
scan --reportwrite a Markdown report to .shipguard/reports/
scan --strictexit 1 on any high / critical finding (for CI)
scan --jsonemit machine-readable findings for agents

Exit codes

codemeaningaction
exit 0safe / only low findingsship it
exit 1high / critical findingsblocked — fix and re-scan
exit 2config errorcheck shipguard.policy.yml
exit 3runtime errorfile an issue

CI integration

gate.yml
# .github/workflows/gate.yml
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- run: npx @agenticcli/shipguard scan --changed --strict
!
Without fetch-depth: 0, git may not have enough history for --changed to compute the diff.

Policy file

Optional shipguard.policy.yml at the project root controls which findings block, which warn, and which paths to ignore:

shipguard.policy.yml
version: 1
block:
- hardcoded_secret
- payment_webhook_without_signature_check
- supabase_rls_disabled
warn:
- missing_input_validation
ignore:
paths: ["node_modules/**", ".next/**"]

For agents

ShipGuard is agent-native: --json emits machine-readable findings, and exit codes gate autonomously. Point your agent at /llms.txt or the /agents page for the full machine-readable map and fix loop.

zsh — ~/checkout
dev in ~/checkout on mainshipguard scan --changed --json | your-agent fix