Supabase's own guides for calling an Edge Function from Postgres (Scheduling Edge Functions, Automatic embeddings) all follow one pattern: pg_cron → pg_net → the project URL and a key read from Vault. Every step of that pattern assumes one hand-configured project. With Branching, it breaks down.
SUPABASE_URL automatically. Postgres gets nothing, so every guide has you paste https://<project-ref>.supabase.co into vault.create_secret(...) by hand (discussion #12813 has asked about this for years).config.toml or a dotenvx file can name it ahead of time. [remotes.<branch>.db.vault] covers persistent branches only.http://api.supabase.internal:8000, a host the CLI hard-codes and the docs mention only in passing. It differs from the the local functions see.Ian Copp requests a feature to allow Postgres to automatically call its own Edge Functions on every branch without manually configuring URLs or keys. The current process involves manual steps that do not scale well with branching. The user suggests improvements such as built-in API URL access, named secret keys in config.toml, and a first-party method to call Edge Functions from SQL.
SUPABASE_URL@supabase/server's withSupabase({ auth: 'secret:<name>' }) checks for one. That is the right auth for a cron-to-function call.config.toml cannot declare a named key, so a branch never gets one. Each key has to be created in the dashboard for each project, then copied into env files and Vault by hand. That does not scale past one or two persistent branches.[db.vault] with env() from an env file someone filled in by hand. There is no way to give Postgres a key the platform already knows.vault.create_secret('<your key>', ...) someone pastes by hand. Followed literally, they put a long-lived key into migration history or the SQL editor log.standard_webhook_* pattern is gone, and nothing with the same zero-config property has replaced it.A migration generates a random token into Vault, the cron job sends it in a header, and the function reads the same Vault entry back with service-role access and compares the two in constant time. That works on every branch with nothing configured, but every project that wants this pattern has to rebuild it from scratch.
supabase.api_url setting or function.config.toml, created per branch and with unique values per branch, and readable from Vault without the value ever appearing in a file.net.invoke_function('name', body) or a Vault entry the platform maintains. Then update the guides to use it instead of pasted URLs and keys.