cursor + supabase

Cursor + Supabase pre-launch security checklist

Cursor will happily write the same auth + RLS pattern across every table you touch — for better or worse. Set the baseline correct on the first table, then audit the rest with this checklist before launch.

12 checks

Tick through each one

Click any item to open the detailed fix guide. The detector tag shows which scanner module flips the state pass or fail when you run a SafeToShip scan.

Paste this into Cursor

One prompt that runs the entire checklist as a code review pass.

Audit my Cursor + Supabase project: confirm RLS is enabled on every public table with explicit policies, refactor any client code using the service_role JWT to use the anon key + RLS, route admin actions through server-side handlers that import a server-only Supabase client, prevent .env exposure on the deployed URL, allowlist /api/* CORS origins, set CSP/HSTS at the deploy host, set Secure+HttpOnly+SameSite=Lax on auth cookies, lock down Storage buckets with explicit per-object rules, confirm TLS validity, and add rate limiting on auth callbacks.

FAQ

Frequently asked questions

How do I get Cursor to write good RLS policies for me?
Show it one good example. Open a file with a working RLS policy, ask Cursor: "Apply this same ownership pattern to every table in my schema." It works much better with a concrete reference than an abstract description.
What if some tables genuinely need to be public?
Add explicit `USING (true)` policies for those tables, with a code comment explaining why. Default-allow without RLS is dangerous; explicit allow with a paper trail is fine.

Run the scan to confirm each check

60 seconds. Free. No account required.