What this scanner checks

We poke at the things Supabase newcomers miss.

Row-level security (RLS)

We hit every table we can find with the anon key and count the rows that come back. If we get data, you have a problem.

Storage bucket policies

Public buckets let anyone list and download files. We walk your buckets and flag the open ones.

Exposed anon / service keys

We scan your shipped JS bundles for Supabase keys. Anon keys in client code are normal. Service role keys are not.

Public RPC functions

Edge functions and RPCs that run without auth can be abused. We test the ones we spot in your app's requests.

Cross-user data access

Can user A read user B's rows? We test the usual IDOR tricks on tables that look user-scoped.

Auth configuration

We check for open email signups, missing email confirmation, and OAuth settings that are too loose.

Common questions

Do you need my Supabase service role key?

No. We work entirely from the outside, with nothing but what's already public. Same tools an attacker has. No key, no account, no access to your project.

Will this break or modify my data?

No. We only make read-only requests. We never write, update, or delete anything in your project.

My app uses the anon key in the browser. Is that a problem?

Not by itself. Supabase expects it. The key is public by nature. The risk shows up when RLS is missing, because then the anon key becomes a master read key for your whole database.

What do I do if you find exposed tables?

Turn on RLS for the table and add policies that scope rows to the logged-in user. Usually three lines of SQL. Get a copy-paste fix prompt you can drop straight into Cursor or Claude Code.

How is this different from the full LaunchGuard scan?

This tool focuses on Supabase only: RLS, storage, RPCs, and leaked keys. For a broader scan that includes API cost exposure, rate limiting gaps, and endpoint fuzzing, try the full LaunchGuard scan.