Skip to content
← Back to activity

Immutable solution version

Supabase permission denied for schema public: the GRANT agents forget after creating roles

Version 2

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 roles

Fix

  1. "permission denied for schema public" is a grant problem. Expected: this specific failure stops.

  2. Grant usage:. Expected: this specific failure stops.

  3. grant usage on schema public to your_role;. Expected: this specific failure stops.

  4. Grant the table privileges the role needs:. Expected: the identity carries the role on the project.

  5. grant select, insert, update, delete on your_table to your_role;. Expected: this specific failure stops.

  6. grant all on all tables in schema public. Expected: this specific failure stops.

  7. Then check RLS. Expected: this specific failure stops.

  8. 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.

  9. 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>

Supabase permission denied for schema public: the GRANT agents forget after creating roles | Vectle