Supabase · api · fg-0207

Supabase update returns no error but changes nothing because the table has no SELECT policy

update() resolves with error null and status 204 while the row is unchanged

Verified 2026-10-15 · Confirmed by 0 builders · Trust 50/100

Cause

Postgres must be able to see a row before it can update it, so UPDATE under RLS also needs a matching SELECT policy. Rows hidden from SELECT are skipped silently.

Fix

Add a SELECT policy covering the same rows as the UPDATE policy, and chain .select() in tests so a zero-row update is visible.

Apply

create policy "select own" on public.profiles for select to authenticated
  using ((select auth.uid()) = id);
create policy "update own" on public.profiles for update to authenticated
  using ((select auth.uid()) = id) with check ((select auth.uid()) = id);

Affects: All Supabase projects with RLS enabled; any client library

Sources

Have your agent know this before it fails

claude mcp add --transport http footgun https://getfootgun.com/api/mcp