Verified May 29, 2026

The Supabase release log for May 2026, and the two defaults that quietly break Claude Code migrations

Every other roundup walks the May 2026 announcements feature by feature. This one does that too, then keeps going into the part most of them skip: which two of those defaults will silently break the SQL that Claude Code and other coding agents generate from years of older training data, and what the Supabase agent-skills release on May 27 actually fixes about that.

Fazm is a native macOS app that wraps Claude Code via ACP, free, fully open source. Claude Code skills (including supabase/agent-skills v0.1.5) load the same way inside Fazm as they do in the terminal.

M
Matthew Diakonov
9 min read

Direct answer, verified May 29, 2026

Between May 1 and May 28, 2026, Supabase shipped ten changes. The ones a working developer needs to know: custom OAuth and OIDC providers for Auth (any OAuth 2.0 or OIDC provider, PKCE on by default), a new Data API exposure default that requires explicit Postgres grants for new public-schema tables on any new project created on or after May 30, the @supabase/server SDK, Passkeys for Supabase Auth in beta (May 28), pg_graphql 1.6.0 with GraphQL introspection off by default (rolling out to new projects from June 15), a Postgres 14 deprecation with auto-upgrades scheduled for July 1, an ISO/IEC 27001:2022 certification, and agent-skills v0.1.5 (released May 27 at github.com/supabase/agent-skills) which teaches Claude Code, GitHub Copilot, Cursor and 15 or so other agents how to write code against the new defaults. The full timeline and the migration that breaks without those grants are below.

0

Distinct changes shipped between May 1 and May 28, 2026, by date.

0+

AI coding agents the supabase/agent-skills repo claims compatibility with, including Claude Code, Codex, Cursor, and Cline.

0 grants

The number of new GRANT statements a migration needs after every CREATE TABLE in public schema, starting May 30, 2026.

The full May 2026 release log

Ten entries in chronological order. Each one has a one-line note on what it means for someone who runs an AI coding agent against a Supabase backend, not just a press cycle.

  1. May 1, 2026

    OAuth token endpoint status code change (201 to 200)

    The /v1/oauth/token endpoint moved from HTTP 201 Created to HTTP 200 OK for OAuth 2.1 compliance. The response body did not change. Any client that asserts on the exact status code instead of treating 2xx as success needs a one-line update.

    Why it matters for an agent run: Quiet, but the kind of change that surfaces a week later when a CI integration that was over-asserting on 201 breaks for no obvious reason.

    Source: Supabase changelog

  2. May 7, 2026

    Developer Update: custom OAuth/OIDC, Data API defaults, @supabase/server SDK

    The monthly developer post bundled four things. First, you can now plug in any OAuth 2.0 or OIDC provider, including GitHub Enterprise and regional IdPs, with PKCE on by default. Second, new projects can opt out of automatic Data API exposure for public schema tables, with explicit grants required; this becomes the default for all new projects on May 30. Third, a new @supabase/server SDK handles auth, client creation, CORS, and context injection across Edge Functions, Vercel Functions, Deno, Bun, and Cloudflare Workers. Fourth, branching without Git is now the default.

    Why it matters for an agent run: The Data API default is the one to circle. Code generated against the old default produces tables that are quietly invisible to PostgREST and GraphQL once you create a project after May 30.

    Source: Supabase changelog (Developer Update)

  3. May 12, 2026

    Postgres 14 deprecated, auto-upgrade scheduled July 1, 2026

    Supabase confirmed Postgres 14 is deprecated and will be auto-upgraded on hosted projects starting July 1, 2026. You can run the upgrade manually before that date. The recommended target is Postgres 17.

    Why it matters for an agent run: A scheduled major upgrade is the right moment to also enable pg_graphql 1.6 (introspection off), since both rollouts converge in the same window.

    Source: Supabase changelog

  4. May 18, 2026

    Self-hosted Supabase: three breaking changes

    For self-hosted deployments only: Analytics and Vector became opt-in rather than on by default, Supabase Studio switched its database role from supabase_admin to postgres, and the default Docker Compose Postgres image moved from PG 15 to PG 17. Each is breaking for an existing self-hosted stack.

    Why it matters for an agent run: Nothing to do on Supabase Cloud, but if you self-host you want all three pinned in a single planned upgrade window rather than discovered piecemeal.

    Source: Supabase changelog

  5. May 25, 2026

    Temporary token-based database access (preview)

    A feature preview for short-lived, scoped tokens that grant temporary database access. Intended for cases where a client or process needs Postgres credentials but you do not want to mint a long-lived password.

    Why it matters for an agent run: The right primitive for AI agents that need scoped Postgres access for one task. Easier to revoke if a session goes wrong than rotating a permanent password.

    Source: Supabase changelog

  6. May 25, 2026

    pg_graphql 1.6.0: GraphQL introspection disabled by default

    Starting with pg_graphql 1.6.0, rolling out to new projects from June 15, 2026, __schema and __type introspection queries are disabled by default to reduce API enumeration. Regular data queries are unaffected. Existing projects keep the current behavior until pg_graphql is upgraded.

    Why it matters for an agent run: Any agent or local tool that builds its UI by introspecting the GraphQL schema (graphiql, Apollo Studio, schema-first code generators) needs an explicit opt-in on a new project after June 15.

    Source: Supabase changelog

  7. May 27, 2026

    Supabase agent-skills v0.1.5 ships

    Supabase published v0.1.5 of agent-skills at github.com/supabase/agent-skills, an open-source skill that teaches Claude Code and 17 other agents how to write Supabase code that matches current defaults. It installs through the Claude Code plugin marketplace and includes an inline security checklist: never use user_metadata for authorization, never expose service_role on the frontend, always enable RLS on a new table, and (the new line) always emit the three GRANT statements after CREATE TABLE on a project that uses the May 30 default.

    Why it matters for an agent run: This is the change that matters most for anyone running Claude Code against a Supabase backend. Without the skill loaded, a fresh project after May 30 will look like it has a Row Level Security bug; with it, the agent emits the grants on the same migration.

    Source: Supabase blog

  8. May 28, 2026

    Passkeys for Supabase Auth (beta)

    A passwordless, phishing-resistant credential built on WebAuthn entered beta. Users sign in with Face ID, Touch ID, Windows Hello, a device PIN, or a hardware security key. Supabase Auth stores only the public key; the private key stays with the authenticator. The JavaScript SDK adds two new methods that wrap the full WebAuthn ceremony.

    Why it matters for an agent run: The cleanest path to phishing-resistant sign-in for a small-team SaaS, without having to glue WebAuthn primitives together yourself.

    Source: Supabase changelog

  9. May 2026

    ISO/IEC 27001:2022 certification

    Supabase achieved ISO/IEC 27001:2022 certification covering the information security management system across the platform.

    Why it matters for an agent run: Procurement-adjacent. Does not change a single line of code, but unblocks the security review that comes after.

    Source: Supabase changelog

  10. May 2026

    Stripe Sync Engine moved to Stripe; Stripe Marketplace app GA

    The Stripe Sync Engine project moved from the Supabase GitHub organization to Stripe's and is now maintained by Stripe as open source. The Supabase app in the Stripe Marketplace also reached general availability.

    Why it matters for an agent run: Useful context if you are wiring billing into a Supabase project, since the canonical sync engine repo has a new home.

    Source: Supabase changelog

The anchor: the two defaults that silently break Claude Code migrations

Two of the May 2026 changes are framed in the changelog as tighter security defaults. Both are. But they share a property the press cycle does not flag: a Claude Code session writing a migration from training data will, by default, produce SQL that compiled and worked perfectly last week and quietly does the wrong thing on a project created on or after May 30.

  1. Data API exposure (default May 30): a new table in the public schema is not automatically reachable via PostgREST, GraphQL, or supabase-js. The exposure has to be granted explicitly, in the same migration, to anon, authenticated, and service_role. Without the grants, the table exists, the row level security policies attach to it, and the REST endpoint returns nothing.
  2. pg_graphql 1.6.0 introspection (rolls out June 15): __schema and __type queries return an error on new projects unless explicitly opted in. Regular GraphQL data queries are unaffected. Any agent or local tool that introspects the schema to build a query plan (graphiql, Apollo Studio, schema-first code generators) starts failing the moment a developer creates a project after June 15.

The Data API one is the bigger trap because it does not throw. The migration applies, the dashboard shows the table, the row level security policies look correct, and the REST endpoint returns an empty result set. The failure mode reads like a policy bug, which sends a developer down the wrong investigation path.

What Claude Code writes vs. what the May 30 default actually needs

Same task, same prompt ("add an invoices table with org-scoped RLS"), same Claude Code session. The first block is the migration Claude Code reliably emits from training data; the second is the extra block the May 30 default requires before the table is reachable through any of the Supabase client libraries.

supabase/migrations/2026...create_invoices.sql
-- What Claude Code typically writes (trained on pre-May-2026 examples).
-- Applies cleanly on a project created before May 30, 2026,
-- and the table is reachable via PostgREST and supabase-js automatically.

create table public.invoices (
  id uuid primary key default gen_random_uuid(),
  org_id uuid not null,
  amount_cents int not null,
  status text not null default 'draft',
  created_at timestamptz not null default now()
);

alter table public.invoices enable row level security;

create policy "org members can read"
  on public.invoices for select
  using (org_id = auth.jwt() ->> 'org_id');

After May 30 you also need the three GRANT statements. Without them the table is invisible to anon, authenticated, and service_role callers, and the response from GET /rest/v1/invoices is silent.

supabase/migrations/2026...grant_invoices_api.sql
-- What you also need on a project created on or after May 30, 2026.
-- Without these three grants, /rest/v1/invoices returns nothing
-- and the failure looks like a Row Level Security bug.

grant select on public.invoices to anon;

grant select, insert, update, delete on public.invoices to authenticated;

grant select, insert, update, delete on public.invoices to service_role;

The exact three statements come from the April 28 changelog post that announced the change. They are also the three lines the supabase/agent-skills v0.1.5 checklist now adds to its required output for a CREATE TABLE on a project that uses the May 30 default.

Before May 30 vs. After May 30 (new projects)

FeatureBefore May 30, 2026After May 30, 2026
Default Data API exposure for new public tablesAutomatic via auto-generated grantsOff; grants required in migration
Required SQL after CREATE TABLE in publicRLS enable plus policies (3 to 6 lines)RLS plus policies plus 3 GRANT statements (6 to 9 lines)
Symptom when the migration is missing the grantsNot applicable; table reachable by defaultREST returns empty; reads like an RLS bug
What Claude Code emits without agent-skills loadedMatches the platform default; worksSame SQL as before; silently breaks new projects
What Claude Code emits with agent-skills v0.1.5Includes the three GRANTs (harmless on old projects)Includes the three GRANTs; works as intended
Existing projectsKeep old behaviorKeep old behavior until October 30, 2026

The rollout for existing projects is scheduled for October 30, 2026, per the April 28 changelog post.

v0.1.5

Agents were observed skipping RLS policies on exposed schemas, hallucinating CLI commands that don't exist, creating views without security_invoker = true, and ignoring the docs entirely.

Supabase blog, agent-skills launch post (May 27, 2026)

What loading supabase/agent-skills actually changes in a Claude Code session

The skill is not magic. It is a folder of instructions, a checklist, and a few helper scripts that Claude Code (and the other 17 listed agents) loads at session start. What it changes is the prior the agent operates with: instead of producing the SQL it remembers from older Supabase tutorials, it produces SQL that matches the current defaults.

The checklist in the agent-skills CLAUDE.md file covers items that come up on almost every Supabase project: never use user_metadata for authorization, never expose service_role on the frontend, always enable RLS on a new table, always use security_invoker = true on a view that fronts a sensitive table, never invent CLI commands (which agents have a measurable habit of doing). The v0.1.5 line added on May 27 is the GRANT requirement that lines up with the May 30 Data API default.

For Claude Code, installation is one plugin install through the marketplace. Once installed, the skill is loaded automatically on any session whose working directory contains a Supabase project marker. The skill applies inside any host that runs Claude Code: the terminal, an IDE plugin, or a native wrapper like Fazm, all the same way, because the skill is loaded by Claude Code itself rather than by the host.

The Fazm-specific note is narrow: a Supabase migration plan tends to span many turns (schema design, policy design, grant policy, test seed data, edge function deploy), and Fazm windows do not auto-compact context for the lifetime of the window. The agent keeps the entire prior schema discussion live when it writes the next migration, which is exactly the part that gets summarized away in a long terminal session that compacts on its own.

Run Claude Code against Supabase in a Mac app that holds the full schema plan

Walk through how a non-compacting Claude Code session handles a multi-step Supabase migration, why the May 30 Data API default and pg_graphql 1.6 introspection change matter for AI-generated code, and how the May 27 agent-skills release lands the same in Fazm as it does in the terminal.

Questions about the May 2026 Supabase release

Frequently asked questions

What did Supabase release in May 2026?

Ten changes landed between May 1 and May 28, 2026. On May 1 the OAuth token endpoint moved from HTTP 201 to HTTP 200 for OAuth 2.1 compliance. On May 7 Supabase published the monthly developer update covering custom OAuth and OIDC providers for Auth, tighter Data API exposure controls (the new default for new projects on May 30), the new @supabase/server SDK, and branching without Git. On May 12 Supabase confirmed that Postgres 14 is deprecated with automatic upgrades starting July 1, 2026. On May 18 self-hosted Supabase got three breaking changes (Analytics and Vector opt-in, Studio switching from supabase_admin to postgres, and a default upgrade from PG 15 to 17). On May 25 the changelog added a feature preview for temporary token-based database access and announced pg_graphql 1.6.0, which disables GraphQL introspection by default for new projects from June 15. On May 27 Supabase shipped agent-skills v0.1.5, an open-source skill that teaches Claude Code and 17 other coding agents the current Supabase defaults. And on May 28 Passkeys for Supabase Auth entered beta.

What is the Supabase Data API default change on May 30, 2026?

From May 30, 2026, any new Supabase project ships with the Data API in opt-in mode. When you run CREATE TABLE in the public schema, the new table is not automatically reachable through PostgREST, GraphQL, or supabase-js. You need to add explicit Postgres grants in the same migration: grant select on public.your_table to anon for read access, grant select, insert, update, delete on public.your_table to authenticated for logged-in users, and grant select, insert, update, delete on public.your_table to service_role for server-side keys. Existing projects keep their current behavior until October 30, 2026, when Supabase plans to roll the same default to projects already in flight.

Will the May 30 Data API default break code that Claude Code generates?

Yes, in new projects, unless the agent explicitly adds GRANT statements after each CREATE TABLE. Claude Code was trained on years of Supabase examples that assumed automatic exposure, so its default migrations rarely include the grants. On a new project created after May 30, those migrations apply cleanly, the API call to /rest/v1/your_table returns nothing or a permission error, and the failure looks like a Row Level Security bug rather than a missing grant. Supabase shipped the agent-skills repo (v0.1.5 on May 27) explicitly to push Claude Code and similar tools toward the new defaults via an installable Claude Skill plugin.

What is Supabase agent-skills and which agents does it support?

It is an open-source set of agent instructions and helper scripts at github.com/supabase/agent-skills that teaches AI coding agents how to write Supabase code that matches the current platform defaults. The README states compatibility with 18 or more agents including Claude Code, GitHub Copilot, Cursor, and Cline. For Claude Code specifically, the skill installs through the Claude Code plugin marketplace and is loaded automatically when a session touches a Supabase project. The first version with the new May 30 grants baked into its checklist is v0.1.5, shipped on May 27, 2026.

Does the pg_graphql 1.6.0 introspection change affect existing Supabase projects?

Not until you upgrade. The change ships with pg_graphql 1.6.0, which Supabase plans to roll out to new projects from June 15, 2026. Existing projects keep the current behavior of pg_graphql 1.5 and earlier, where __schema and __type queries work without configuration. The change only bites when you upgrade pg_graphql, usually by upgrading the project's Postgres version. Regular data queries through the GraphQL API are not affected on either version; only introspection (__schema, __type, the metadata queries that tools like Apollo Studio or graphiql use to build their UI) changes default.

What happens to Postgres 14 Supabase projects after May 2026?

Supabase announced the deprecation on May 12, 2026. From July 1, 2026, Supabase will automatically upgrade Postgres 14 projects to a supported major version. You can pre-empt the auto-upgrade by initiating the upgrade yourself from the dashboard at any time before July 1. The migration path Supabase recommends is Postgres 14 to Postgres 17 directly. Self-hosted deployments are not auto-upgraded; the May 18 self-hosted changelog covers the breaking changes (PG 15 to 17 default, Studio role change) for that path.

What did the May 28 Passkeys for Supabase Auth beta actually ship?

A beta WebAuthn implementation. Each passkey enrollment or sign-in runs the standard three-step WebAuthn ceremony: the client requests a challenge from Supabase Auth, the browser invokes navigator.credentials.create() (registration) or navigator.credentials.get() (sign-in), and the signed response is sent back for verification. Supabase Auth stores only the public key; private key material stays with the user's authenticator. The JavaScript reference docs added two new methods, one to sign in with a passkey and one to register a passkey for the current authenticated user, both wrapping the full ceremony.

Does Fazm have anything to do with Supabase?

Only indirectly. Fazm is a native macOS app that wraps Claude Code via the Agent Client Protocol. When a developer uses Fazm to run a Claude Code session that touches a Supabase project, the May 27 agent-skills release applies the same way it would in the terminal: the skill is loaded by Claude Code itself, not by the wrapper. The relevant Fazm property for this kind of work is that the session does not auto-compact, so a long migration plan and the schema decisions behind it stay in context for the entire window rather than getting summarized away mid-session.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.