Is my Supabase project affected?
Run one query. No rows means new tables get no grants.
The check
select
case d.defaclobjtype
when 'r' then 'tables'
when 'S' then 'sequences'
when 'f' then 'functions'
end as object_type,
a.grantee::regrole as role,
string_agg(a.privilege_type, ', ' order by a.privilege_type) as privileges
from pg_default_acl d
cross join lateral aclexplode(d.defaclacl) a
where d.defaclrole = 'postgres'::regrole
and d.defaclnamespace = 'public'::regnamespace
and a.grantee in ('anon'::regrole, 'authenticated'::regrole, 'service_role'::regrole)
group by 1, 2
order by 1, 2;
Run it in the SQL Editor. Each row lists a role and the privileges it receives on new tables, sequences or functions that the postgres role creates in public. When it returns no rows, new objects grant nothing to the Data API roles until you grant access.
What the old defaults were
| Object | Schema | Roles | Default privileges |
|---|---|---|---|
| Tables | public | anon, authenticated, service_role | select, insert, update, delete, truncate, references, trigger, maintain (Postgres 17 only) |
| Functions | public | anon, authenticated, service_role | execute |
| Sequences | public | anon, authenticated, service_role | usage, select, update |
What turning exposure off leaves behind
- New tables keep
truncate,references,triggerandmaintain; new sequences keepupdate. The Data API does not use these. - New functions stay callable by every role, because Postgres grants
executetoPUBLICthrough a global default.
Dates are from the Supabase changelog post published 2026-04-28, read 2026-11-10. We have not seen an official post confirming that the 2026-10-30 step finished for every project, so check your own project with the query on this page.
Write the fix for your tables
One table is free. The whole schema with a rollback file is $9 one-time, free during launch.
Waiting for a paste.
Who can reach each table
Your tables show up here, one row each, with a choice of who can reach them.
Parsed in your browser. Your SQL is never uploaded, and no site or database is scanned.
Questions
The query returns rows. Am I safe from 42501?
For now. It means new tables still receive those privileges. Supabase scheduled the default to change on every existing project on 2026-10-30, so run the check again after adding a table.
Sources
Related
- "Grant the required privileges to the current role with: GRANT ..."The hint names one missing grant. Paste it and get the full set.
- Private, server-only tableNo access from the browser. Your server reads and writes.
- New Supabase table not showing in the APITwo checks tell you if the grant is missing. Then fix it below.
- Grants vs row level securityTwo checks run on every request. A grant comes first.