Skip to content

The free audit

One full audit of your app, free.

Connect GitHub and Supabase, confirm who should see what, and Stableship tests a private copy of your app as every kind of user. No card. Up to an hour.

Start your free audit

One free audit per GitHub account.

  1. 01

    Connect GitHub

    Sign in with GitHub and install the Stableship app on the repos you pick. It posts a check on each push and never pushes to your branches.

  2. 02

    Connect Supabase

    Approve read-only access and pick your live project. We read its structure, never a row of your data.

  3. 03

    Tell us about your app

    Optional notes, plus what your CLAUDE.md, AGENTS.md and Cursor rules already say.

  4. 04

    Confirm who should see what

    We draft the rules from your code and database. You answer a few plain questions.

  5. 05

    The audit runs

    Up to an hour. Close the tab; we email you when it is done.

What you connect

What you approve, and what it lets us see.

Read-only where it can be, and never your customers' data.

GitHub app
Code for the repos you pick. Posts checks and opens pull requests; never pushes to your branches or merges.
Supabase
Read-only: your projects and database structure (tables, roles, policies, functions). No write access, no auth or secrets, never row contents.
Your notes (optional)
Anything the tests should know, like "invoices are shared with the whole team". Up to 4,000 characters.
Stripe test key (optional)
So checkout can be tested end to end. Only test keys are accepted.

What runs

Your app, rebuilt on a private copy and used as every kind of user.

Each step is in your report, with what passed, what did not, and a video of every session.

  1. Code reviewed against your rules

    Passed
  2. Private Supabase copy built

    Passed
  3. Test users and data created

    Passed
  4. Isolation confirmed

    Passed
  5. Used as every kind of user

    Passed
  6. 6

    Tried to break your rules

    Each user tried to open another customer's records, in the app and by address

    1 critical
  7. 7

    Phone-size pass and accessibility

    Critical flows on a phone screen, plus accessibility checks on every page

    1 note
  8. Supabase advisors

    Passed
  9. Every failure replayed

    Passed

The private copy is a temporary Supabase project in our own organization. It is built from the migrations in your repo, gets your auth settings and Edge Functions with test secrets, and is seeded with an account for each kind of user, plus another customer whose records they should never reach.

Agents use the app the way your customers do. A second agent replays every failure on a fresh copy, twice. Only problems that reproduce can block a release; everything else is a note.

When the run ends, the copy and the sandbox are deleted.

What you get

A report, a fix plan, and a re-check.

Everything is written so a founder can read it and a coding agent can act on it.

  • An audit report

    A verdict, every step and whether it passed, problems ranked by who they affect and the rule they break, and what was not tested and why. Private until you share the link.

  • STABLESHIP_FIXES.md

    Every problem as an ordered task for your coding agent, blocking ones first, each with where to look, steps to reproduce and when it is done. Download it, copy it as one prompt, or have it opened as a pull request.

  • One re-check

    Push your fixes and Stableship re-tests every open problem on a fresh copy. The report updates: fixed, or came back.

Critical/invoices/:id

User B opened User A's invoice.

Signed in as a regular member of Beta Co, we changed the invoice number in the address bar to one belonging to Acme Ltd. The page loaded with Acme's name, amount and card ending 4421.

  1. 0:02Signed in as member@beta-co.test
  2. 0:09Changed invoice 1042 to 1017 in the address bar
  3. 0:14Invoice 1017 loaded with Acme Ltd's details
STABLESHIP_FIXES.md
# Stableship fix plan for acme-app Updated 2026-10-14. 3 tasks: 1 blocking, 1 proven, 1 quick win. ## Blocking: fix these before you launch ### 1. A member of one company opened another company's invoice. Blocks the release · Critical · Reproduced · found as member **Rule it breaks:** An invoice can be opened by the company itbelongs to and its admins. Everyone else gets "not found". **Where:**- public.invoices (row level security)- src/pages/invoices/[id].tsx **Done when:**- [ ] A member of Beta Co gets "not found" for invoice 1017- [ ] Acme Ltd members can still open their own invoices **Verify:** `stableship verify f_8k2q`

The fine print

The limits, plainly.

  • One free audit per GitHub account, for one app.
  • No card, and nothing is charged afterwards.
  • GitHub and Supabase only, for now.
  • We cap new audits each day so each one gets a full run. If today is full, you are first in line tomorrow and we email you.

On another stack? Tell us what you use and we will email you when we test it.

After the audit

Keep it working and safe on every release.

Protect checks every release and pull request, holds unsafe releases, runs 2 full audits a month and opens fix pull requests for you to approve. Your coding agent can work through it all.