Guide

The vibe coding security checklist: 12 checks before real users arrive

AI builders make it possible to ship an app without reading the code. That is a superpower until the app holds real customer data. Work through this list before launch and after every big change.

Updated · 8 min read

Keys and secrets

  • 1. The only Supabase key in the frontend is the anon or publishable key.
  • 2. No secret key, password or connection string is committed to the repo, including in old commits.
  • 3. Environment variables with a public prefix (VITE_, NEXT_PUBLIC_) hold only values that are safe to publish.

Database

  • 4. Row-level security is on for every table in the public schema.
  • 5. No policy on a table with personal data uses using (true).
  • 6. A signed-in user can read only their own rows, not every customer's.
  • 7. Views and database functions do not bypass row-level security by accident.

Files and storage

  • 8. Storage buckets with customer uploads are private, and listing is off.
  • 9. No .env file or .git folder is reachable on the live site, and source maps are not public.

The live site

  • 10. The site sends Strict-Transport-Security, Content-Security-Policy and X-Frame-Options headers.
  • 11. Login cookies have the Secure and SameSite flags, and HttpOnly wherever the browser does not need to read them (Supabase's own auth cookie is readable on purpose).

Packages

  • 12. No installed package has a known high or critical vulnerability.

How to fix what you find

Give your builder one precise instruction per problem: the table, the policy, the file, the change. Vague requests such as make my app secure tend to produce vague changes. Then test again to confirm each fix landed.

Common questions

How often should I run through this?

Before launch, after any change that adds tables, storage or integrations, and whenever you hand the app to a client.

The checks behind this guide

Check your whole app in one go.

The Full Scan runs seven read-only checks and writes a fix prompt for every finding.

More guides