GitHub Copilot + Supabase
Monitor the Supabase backend of an app you write with GitHub Copilot
GitHub Copilot runs in your IDE, the Copilot CLI and GitHub.com, and each can hold its own Supabase MCP entry: .vscode/mcp.json, a server from an MCP registry, or ~/.copilot/mcp-config.json. Every entry needs project scoping and read-only mode, and the SQL Copilot writes still needs RLS. Supahound covers the project behind all of them with a free daily RLS scan and per-user detectors on live traffic.
Last updated
GitHub Copilot works with Supabase when you connect it yourself.
What are the Supabase security risks in GitHub Copilot apps?
Supabase MCP configured in more than one place
Copilot Chat reads MCP servers from the IDE, for example .vscode/mcp.json, or from an MCP registry. The Copilot CLI keeps its own list in ~/.copilot/mcp-config.json. Each file can hold a different Supabase connection, so check project scoping and read-only mode in every one.
Copilot-written SQL tables with RLS off, then a policy that allows everything
Copilot has no built-in RLS generation or Supabase scan, and a table created with SQL starts with RLS off. Once you turn RLS on, the table returns no rows through the API until a policy allows them, and that gap tempts a policy that allows everything. Security Advisor flags these states as lints 0013, 0008 and 0024.
A secret key shipped in a VITE_ or NEXT_PUBLIC_ variable
A sb_secret_ or service_role key in a client-exposed variable reaches every visitor of your Copilot-built app. Supabase answers a browser that sends a secret key with HTTP 401, but the same key still works from a server or script, and it bypasses RLS on every table.
Views and functions that run as their owner
A view or security definer function added in a Copilot session runs with its owner's rights, so it can skip the RLS on the tables it reads. Security Advisor flags such views as lint 0010 and the functions under lints 0028 and 0029.
How does Supahound protect your GitHub Copilot app?
- The posture scan runs daily, free for up to 3 projects, and reports RLS coverage, Security Advisor findings and views without security_invoker.
- Newly exposed tables appear in the scan, so a public table Copilot added with RLS off gets flagged.
- The service-key detector alerts from day one when a secret key shows up in browser traffic or from a new network.
- The credential stuffing detector alerts from day one when someone tries lists of leaked passwords against your app's sign-in.
Frequently asked questions
- Does GitHub Copilot connect to Supabase on its own?
- No. Copilot has no built-in Supabase flow. You add Supabase's MCP server in your IDE's MCP config, from an MCP registry, or in the Copilot CLI's ~/.copilot/mcp-config.json, then sign in with OAuth.
- Does Supabase document Copilot as a client?
- Yes. Supabase's MCP guide lists VS Code and the GitHub Copilot CLI as clients of its hosted server at https://mcp.supabase.com/mcp, and its AI prompts page names GitHub Copilot.
- Does Supahound need access to my GitHub repository?
- No. Supahound reads your Supabase project through read-only OAuth, so it works the same whether Copilot, a teammate or another tool wrote the code.
Watch your GitHub Copilot app's Supabase traffic
Connect your Supabase org read-only. The free posture scan runs in minutes. No credit card.
Sources
Checked on . Products change; check each source for current details.