Nine plain-language checks against your live app. Real proof of what is broken, a fix on its own branch, and proof the fix works. You review. You merge. Then you ship.
SHIPCHECK REPORT — myapp.vercel.app — 2026-07-24 [!] DO NOT SHIP 1 WHO CAN READ YOUR DATA · BLOCKER 3 customer rows returned to an anonymous request. Nobody was logged in. 2 TWO-ACCOUNT LEAK TEST · PASS Account A could not read Account B's orders. 3 THE BILL THAT LANDS ON YOU · BLOCKER AI endpoint answered 15/15 requests. No rate limit found. 4 THE MONEY PATH · PASS Forged "payment succeeded" event was rejected. 5 CAN ANYONE FIND YOU · BLOCKER Your link posts as a blank box — no title or image. 6 CAN YOUR AI BE TRICKED · PASS Prompt-injection attempts did not reveal instructions or data. 7 CAN SOMEONE BREAK INTO AN ACCOUNT · PASS Throwaway account tests stopped password guessing. 8 DOES YOUR APP TRUST THE BROWSER · PASS Server checks rejected invalid input. 9 ARE YOU COVERED LEGALLY · PASS Privacy policy is reachable and tracking waits for consent. 3 FIXES READY ON BRANCHES fix/shipcheck-data_read-2026-07-24 fix/shipcheck-cost_ratelimit-2026-07-24 fix/shipcheck-discoverability-2026-07-24 Merge, redeploy, re-run. That's what turns this green.
Real output format. Every blocker comes with redacted proof — not a guess. See the full sample report →
You built a real app with AI. It works. The demo impressed your friends. And the launch post is still sitting in drafts — because somewhere in the back of your head a voice keeps asking:
What if someone opens the database? What if a stranger runs my OpenAI bill to $400 overnight? What if the payment form just… believes anyone who says "I paid"?
That voice is right to ask. AI-written apps ship with the same handful of holes, over and over: a master key sitting in the frontend, a database that answers strangers, a webhook that trusts anyone. None of them show up in a demo. All of them show up in week one of real users.
A security scanner won't catch most of them — it can't log in as two different people and try to read the wrong one's data. ShipCheck can. That's the whole point.
Not a code lint. ShipCheck probes the deployed thing your users will actually touch.
Can a total stranger with no login read data that should be private, or is a master key sitting in your app where anyone can find it?
Logged in as one user, can you read another user's private data? Automated scanners can't find this, because it needs two real accounts.
Can someone call an expensive endpoint (an AI call, an image generator) over and over with no brake and run up a bill on your card? Also covers public forms with no bot protection, and reminds you to set a hard spend cap at your provider.
Can someone get your paid product for free by forging a "payment succeeded" message, or set their own price in the browser?
Share preview, robots.txt, sitemap, 404 page, HTTPS headers. The bridge to your real problem: getting users.
If your app has an AI in it: can a stranger talk it out of its rules, make it spill its secret instructions, or leak data it shouldn't? Says "no AI integration found" and moves on if your app has no AI.
The failure cases nobody tests: does your app admit which email addresses have accounts, does anything slow down password guessing, and does a one-time password-reset link still work the second time?
Validation that only runs in the browser (an attacker never opens your form), error messages that hand over your database schema, and an API any website can call from your logged-in users' browsers.
A privacy policy visitors can actually reach, where your data physically lives and who else touches it, consent before tracking fires, and copyleft licences your AI assistant quietly pulled into your project. Not legal advice.
Verdicts are honest: pass · BLOCKER · not verified. When ShipCheck can't test your stack, it says so — it never guesses "OK".
ShipCheck runs the exact probe and captures redacted evidence. The "before" picture. No "this is probably an issue."
The smallest safe change, on fix/shipcheck-<check>-<date>. Never on main. Never on your live app.
The fix is re-tested on a throwaway preview build. Same probe, broken → fixed, before your eyes. If the fix doesn't hold, ShipCheck reverts it and says so — it never pretends.
Every report closes with a map of your results onto AIUC-1, the emerging certification standard for AI agents built with Stanford, MIT, MITRE and the Cloud Security Alliance — so you can see roughly where you'd stand.
It is a snapshot, not a certification: real certification under AIUC-1 needs an accredited auditor and adversarial retesting every quarter. ShipCheck does not cover the standard's Accountability or Society pillars. The map is orientation; it never changes your verdict.
ShipCheck
€9.99 one-time
Superproject (includes ShipCheck)
€129 one-time
Ship one app? ShipCheck. Ship every month? Superproject.
Yes. ShipCheck is a Claude Code plugin — you run /shipcheck in your project, it does the rest. Works with any Claude Code plan.
No. Live traffic is read-only plus a handful of capped, self-cleaning probes (max ~15 requests, stops at the first pushback), and only after you confirm ownership. Fixes happen on branches and preview builds, never on production.
You'll get the universal checks (data exposure scan, discoverability, code-level cost review) and honest "not verified" for the rest. Supported stacks are growing; you'll get those updates.
Then you ship with proof instead of hope — that's the good outcome. If you feel you didn't get your money's worth, 14-day refund, no questions.
Because they read your source code, and ShipCheck audits your running app. /security-review reads your branch diff, and the new Claude Security plugin runs a multi-agent scan of your codebase — both are good, and ShipCheck itself points you at them when a deep code scan is the right next step. What neither does is log into your live app with two accounts and show you that one can read the other's orders, then hand you the fix on a branch. ShipCheck proves the problem against the real, running app — and fixes it.
No. Every login attempt, password reset and signup goes to a throwaway address ShipCheck creates for that run and deletes afterwards. It never touches an address belonging to a real person, and it stops the moment your app pushes back.
No, and it says so. It checks whether the basics exist — a reachable privacy policy, where your data lives, consent before tracking, licences you may not have meant to accept — and points you at the tools to fix each one. It never writes the text, and anything regulated (health, finance, children's data) needs a real lawyer on top.
No. ShipCheck reports at most five problems per run, ranked worst first, and tells you how many it held back. Nobody works through a list of forty findings; a short ranked list is the point.
No. Local mode is first-class: report lands in your repo, fixes on local branches.
Nine checks, real proof, fixes waiting on branches. The scary part of launching, handled in one run.
Get ShipCheck — €9.9914-day money-back · Secure checkout via Stripe