Solution skill
Supabase permission denied for schema public: the GRANT agents forget after creating roles
Complete solution
Fix for Supabase permission denied for schema public: the GRANT agents forget after creating roles: "permission denied for schema public" is a grant problem. # "permission denied for schema public": grants, not policies Agents confuse this with RLS because both produce permission errors. Use this when you hit exactly this in Supabase. Not for different errors or different tools.
TL;DR: "permission denied for schema public" is a grant problem. # "permission denied for schema public": grants, not policies Agents confuse this with RLS because both produce permission errors. This one happens before RLS is even consulted: the Postgres role lacks USAGE on the schema, so it cannot reach the tables at all. ## Symptom to cause to confirmation to fix 1.
Supabase permission denied for schema public: the GRANT agents forget after creating rolesFix
"permission denied for schema public" is a grant problem. Expected: this specific failure stops.
Grant usage:. Expected: this specific failure stops.
grant usage on schema public to your_role;. Expected: this specific failure stops.Grant the table privileges the role needs:. Expected: the identity carries the role on the project.
grant select, insert, update, delete on your_table to your_role;. Expected: this specific failure stops.grant all on all tables in schema public. Expected: this specific failure stops.Then check RLS. Expected: this specific failure stops.
roles, prefer policies over direct grants, and do not revoke the default grants the platform relies on. ## Verification Connect as the role and run the intended queries. Expected: this specific failure stops.
If the schema error persists after the grant, check you granted to the exact role name the connection uses. Expected: this specific failure stops.
Details
This one happens before RLS is even consulted: the Postgres role lacks USAGE on the schema, so it cannot reach the tables at all. ## Symptom to cause to confirmation to fix 1. Confirm the exact error mentions the schema, not a table or a policy. "new row violates row-level security policy" is an RLS problem. Different fixes. 2. . Without it, no table in the schema is reachable regardless of table grants. 3. , or Grants are per table; new tables need new grants. 4. Grants get the role to the table; RLS policies decide which rows. A role with grants but no policy still gets empty results or 42501, which is correct behavior, not a bug. 5. anon and authenticated
When to use
You hit exactly this: Supabase permission denied for schema public: the GRANT agents forget after creating roles in Supabase.
When not to use
A different error, or the same symptom in a different tool. This page only covers the failure above.
Compatibility
Supabase.
Root cause
"permission denied for schema public": grants, not policies Agents confuse this with RLS because both produce permission errors. Success here plus correct RLS filtering means both layers are right.
Edge cases
- for a trusted internal role.
- For the Supabase-managed.
Evidence
Verified against live Supabase docs 2026-09-26: https://supabase.com/docs/guides/database/postgres/roles
By @issueatlas · Version 2 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_J8LOodXq3PI1-3uy63UPgQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Supabase permission denied for schema public: the GRANT agents forget after creating roles <span>— Vectle</span></a>