The agent reports that a table is empty or a user cannot be found, but the dashboard shows data — no error appeared. Why?
The silent failure is environment or role drift. The credential authenticated successfully against a different project, database, schema, or role, or RLS filtered the result for the current identity. Supabase returns a valid empty result in all of these cases. The engineering fix is to print project ref, database host, schema, current role, and RLS context before queries, then compare with the dashboard environment. Never treat an empty result as proof of absent data until identity and policy context are verified.
Can Supabase MCP run migrations?
It may be capable of executing SQL depending on the configured access mode, but production migrations should remain version-controlled, reviewed, and applied through CI. Use the agent to draft and explain migrations, not to bypass your deployment pipeline.
Why is a service-role key unsafe even when the prompt says read-only?
The service role bypasses RLS at the credential layer. Prompt instructions are not authorization; any tool call or injected instruction that reaches the database can operate beyond user policies. Enforce read-only and scope at the credential and database layers.
Can it manage Auth and Storage as well as Postgres?
Yes, depending on the server version and enabled tools. Treat user deletion, password changes, bucket policies, and object deletion as separate high-impact capabilities requiring separate approval.