v0.1.0 · 20 rules · zero network calls

Your AI agent
ships code.
You ship safety.

One command after every session. shipcheck audits what your AI spent, which files it hammered, and every security issue it quietly introduced.

Works offline Claude Code · Cursor · Codex MIT License
~/my-saas-project — shipcheck
shipcheck
┌─ Cost ────────────────────────────────
Tokens 142,840
Cost $1.87
Sessions 3 today

┌─ Heatmap ─────────────────────────────
src/api/routes.ts ████████ 47
src/db/schema.ts ██████ 31
src/auth/jwt.ts ████ 19

┌─ Security ─────────────────────────────
✗ SEC-108 db/config.ts:12 — credentials in DSN
✗ SEC-201 api/users.ts:34 — SQL concatenation
⚠ SEC-305 server.ts:8 — DEBUG=True
⚠ SEC-504 package.json — hallucinated pkg

┌─ Score ────────────────────────────────
62 / 100 · Needs Work
20 Security Rules Zero Network Calls Claude Code Support Cursor Support OpenAI Codex Support Cost Tracking File Heatmap Post-Session Hooks HTML Reports CI Integration MIT License No API Key Required 20 Security Rules Zero Network Calls Claude Code Support Cursor Support OpenAI Codex Support Cost Tracking File Heatmap Post-Session Hooks HTML Reports CI Integration MIT License No API Key Required
Why shipcheck

Everything your AI agent won't tell you

AI moves fast. shipcheck makes sure that speed doesn't quietly break your security posture or burn through your budget.

💰
$1.87

Know what you spent

Token-accurate cost tracking from local session logs. No API key, no cloud, no guesswork.

Tokens 142,840
Cost $1.87
Sessions 3 today
🗺️

File heatmap — see where your AI is spending effort

AI agents with high churn in auth or DB files are a red flag. shipcheck surfaces it instantly so you know which files need an extra review.

src/auth/jwt.ts ████████████ 61 edits
src/api/routes.ts ████████ 47 edits
src/db/schema.ts ██████ 31 edits
20

Security rules

All deterministic — no LLM, no hallucinations

0

Network calls

Works fully offline. Reads local logs only.

<1s

Scan time

Concurrent worker pool. Even large repos scan fast.

🪝

Set it once, forget it

Run shipcheck init once. After every Claude Code or Cursor session, your score prints automatically — no thinking required.

Claude Code Cursor Codex
⚙️

Drop into any CI pipeline

Pipe JSON output with --json and fail the build when your score drops below your threshold. One GitHub Actions step.

- name: Audit AI session
run: shipcheck --json --fail-on=high
Security rules

20 rules. All deterministic.

Every rule is a regex or AST check — not an LLM prompt. Fast, predictable, auditable. No false-positive roulette.

SEC-101*

Hardcoded API Key

Generic api_key / api_secret literals. AI pastes them inline instead of reading from env.

SEC-102*

OpenAI Key

Detects sk-proj- and sk- patterns in any source file.

SEC-103*

Anthropic Key

Flags sk-ant-api03- keys that AI agents sometimes echo back into code.

SEC-104*

Stripe Live Key

Catches sk_live_ keys. Test keys (sk_test_) are safely ignored.

SEC-105.env

Supabase Service Role

Service role JWTs give full DB access. Flags eyJ… tokens near service_role context.

SEC-106*

JWT Placeholder Secret

Catches jwt.Sign(claims, []byte("secret")) and similar obvious placeholder keys.

SEC-107*

SendGrid Key

Detects SG.xxx.xxx pattern in any source file.

SEC-108*

Database URL with Credentials

Flags postgres://user:pass@host/db inlined in source code.

SEC-110*

GitHub PAT

Detects ghp_ tokens AI copies from example configs.

SEC-201go · js · py

SQL String Concatenation

AI defaults to f-strings and template literals in SQL. Catches injection vectors in Go, JS, Python.

SEC-202js · py

eval() on Input

Flags eval(userInput) and similar patterns.

SEC-203py

Command Injection

Detects shell=True and os.system() — AI defaults to the unsafe form.

SEC-301*

Wildcard CORS

Catches Access-Control-Allow-Origin: * — AI's go-to CORS fix.

SEC-302py

SSL Verification Disabled

Flags verify=False — AI adds this to silence SSL errors.

SEC-305py · js

Debug Mode Enabled

Catches DEBUG=True left in production scaffolding.

SEC-401.env

NEXT_PUBLIC_ Secret Leak

Backend secrets exposed via NEXT_PUBLIC_ in Next.js env files.

SEC-501*

Deferred Security TODO

Flags // TODO: add auth — AI-deferred security that never ships.

SEC-504ts · js · py

Hallucinated Package Import

20 known AI-invented names (@anthropic/sdk, react-auth-hooks…) with correct alternatives.

SEC-601json · txt

Package with Known CVE

Checks pinned versions against 15 bundled high-impact CVEs. Zero network calls.

SEC-602json

Overprivileged npm Script

Catches sudo, chmod 777, curl|sh in package.json scripts.

Installation

Up and running in 30 seconds

macOS, Linux, Windows. No runtime to install, no daemon to manage, no cloud account to create.

# macOS / Linux
brew install tejgokani/tap/shipcheck
curl -fsSL https://shipcheck.space/install.sh | sh
Binary downloads
1

Install shipcheck

Use Homebrew or the curl one-liner. Verify with shipcheck --version.

2

Run your first audit

Navigate to any project and run shipcheck. It auto-detects Claude Code, Cursor, and Codex session logs.

3

Install the post-session hook

Run shipcheck init once. From now on your score prints automatically after every AI session — nothing to remember.

4

Share with your team

Use shipcheck --html to generate a full audit report, or --json to feed it into your CI pipeline.

Your star matters as much as you.

Star our repo to motivate our team to bring you more amazing ideas.