Supabase "permission denied for table" after October 30? New tables need a GRANT
Ship ItChecked against the official source
Source checked 22 Oct 2026 · Published 23 Oct 2026 · Last reviewed 23 Oct 2026 · By Ctrl+Z Therapy (how we test)
The short answer
Supabase's changelog says new tables in the public schema are no longer exposed to the Data API automatically. This became the default for new projects on May 30, 2026, and Supabase's date for applying it to all existing projects is October 30, 2026. After that, a new table needs an explicit Postgres grant before the Data API (the auto-generated REST and GraphQL layer that supabase-js calls) can see it. Existing tables are not affected: they keep their current grants and stay reachable.
What to do
- If your app gets "permission denied for table your_table" (code 42501) on a new table, read the error's hint: it shows the GRANT statement to add.
- Add the grant. RLS works as before: grants decide whether a role can reach a table at all, RLS decides which rows it sees.
- Ask your AI tool: "Whenever you create a Supabase table, also add the GRANT statements for the roles that need it, enable RLS and add policies. Check any table we create after October 30."
Good to know
- It doesn't matter how the table was created: SQL editor, migrations, MCP, CLI or an AI coding tool.
- Apps that use a direct Postgres connection (psql, an ORM or an app server) are not affected.
Source
- Supabase changelog: Tables not exposed to Data and GraphQL API automatically
- Supabase: Securing your API
Checked on 22 Oct 2026. Prices, limits and settings change, so check the source before you rely on them.