Your Supabase anon key is public — and that is fine
Why the key in your bundle is not the problem, and what actually is.
What it is
The anon key is a public identifier for your Supabase project. It is designed to ship in browser code, exactly like a Stripe publishable key. Supabase publishes it in their own documentation and examples.
Hiding it is not possible and not the goal. Any app where the browser talks to Supabase directly must send it.
What actually protects your data
Row Level Security. With RLS enabled and a policy in place, the anon key can only read rows that policy allows — usually none, for a logged-out visitor. With RLS off, that same key reads the whole table.
So the real question is never "is my key exposed". It is "does every table have RLS on, with a policy".
A key that is NOT fine
A service_role key. That one bypasses every policy you have written and must never leave your server. We report it as critical, separately, because the two look identical at a glance and only differ in a field inside the token.
Not sure whether this applies to you?
Give us the address and we will tell you. No code, no access, no install — and every finding we have is shown in full, including on the free trial.
Check a site