config push sends [auth.sms] enable_confirmations un-negated as sms_autoconfirm, so hosted projects get the opposite of local
I maintainer di solito rispondono entro 1 giorno
@7ttp ci sta già lavorando.
Dal 5/10/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Affected area
Auth
Supabase CLI version
v2.98.0. The same code is on develop as of 2026-10-05.
Operating system
Ubuntu (GitHub Actions ubuntu-latest) for config push; macOS for supabase start.
Installation method
npm (via supabase/setup-cli@v3)
Command
supabase config push, compared with supabase start on the same config.toml.
Actual output
With this in supabase/config.toml:
[auth.email]
enable_confirmations = true
[auth.sms]
enable_confirmations = true
after supabase config push, the hosted project's GET /auth/v1/settings returns:
{ "mailer_autoconfirm": false, "phone_autoconfirm": true }
and the dashboard (Authentication > Sign In / Providers > Phone) shows "Enable phone confirmations" switched off.
So the email key means "require confirmation" and the identical SMS key means "skip confirmation". Locally, supabase start with the same file does require phone confirmation, so one config behaves in opposite ways on a local stack and on a hosted project.
Expected behavior
[auth.sms] enable_confirmations = true should set sms_autoconfirm = false on the hosted project, the way [auth.email] enable_confirmations = true sets mailer_autoconfirm = false, and the way supabase start already treats the SMS key.
Steps to reproduce
- Set
[auth.sms] enable_confirmations = trueinsupabase/config.toml. - Run
supabase link --project-ref <ref>andsupabase config push. - Run
curl https://<ref>.supabase.co/auth/v1/settings -H "apikey: <publishable key>". It returns"phone_autoconfirm": true, and the dashboard's Phone provider shows "Enable phone confirmations" off. - Run
supabase startwith the same file. The local auth container getsGOTRUE_SMS_AUTOCONFIRM=false.
Additional context
Cause. In pkg/config/auth.go (v2.98.0; apps/cli-go/pkg/config/auth.go on develop) the email mapping negates in both directions and the SMS mapping does not:
// email
body.MailerAutoconfirm = nullable.NewNullableWithValue(!e.EnableConfirmations) // L700
e.EnableConfirmations = !ValOrDefault(remoteConfig.MailerAutoconfirm, false) // L825
// sms
body.SmsAutoconfirm = nullable.NewNullableWithValue(s.EnableConfirmations) // L1121
s.EnableConfirmations = ValOrDefault(remoteConfig.SmsAutoconfirm, false) // L1170
internal/start/start.go negates both:
fmt.Sprintf("GOTRUE_MAILER_AUTOCONFIRM=%v", !utils.Config.Auth.Email.EnableConfirmations) // L1309
fmt.Sprintf("GOTRUE_SMS_AUTOCONFIRM=%v", !utils.Config.Auth.Sms.EnableConfirmations) // L1325
Because the read-back (L1170) is un-negated as well, the pushed value round-trips and config push has no diff to show for the key, so nothing flags it.
Why it matters. With sms_autoconfirm on, a phone number is marked confirmed without an OTP, both on signup and on PUT /user {phone}. A project that sets enable_confirmations = true believes it requires phone verification and does not.
Suggested fix. Negate L1121 and L1170 to match the email mapping. That flips the hosted value for any project that has worked around this by setting false, so it needs a release note.
History. Reported before as #4413, which was closed as not planned without a fix.
- Lingua principale
- TypeScript
- Stelle
- 2.4k
- Fork
- 531
- Merge medio
- 1g 4h
- PR unite (30g)
- 351
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di supabase/cli
-
db schema declarative sync: no way to fail (non-zero exit) when the generated migration is destructiveForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta✨ Feature supabase/cli
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
stack: the HTTP gateway closes idle keep-alive connections after 5 s, so a client whose event loop is blocked gets ECONNRESET (`fetch failed`) on its next requestForse già presa @7ttp l’ha presa 6 giorni fa. Aperta🐛 Bug supabase/cli
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
supabase/cli#6975 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
📘 Docs supabase/cli
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
supabase/cli#6974 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Migration error caret is missing or misplaced when the statement contains multibyte charactersAperta🐛 Bug supabase/cli
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
stack: a database helper stays behind as a `Created` container when readiness times out mid-createForse già presa @just-some-random-pal l’ha presa oggi. Aperta🐛 Bug open-for-contribution supabase/cli
Difficoltà 3/5 1-2 giorni Idoneità per principianti 18/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di supabase/cli
Issue simili
-
Mondriaan
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
knaw-huc/textannoviz#709 ·
I maintainer di solito rispondono entro 1 giorno
-
Add: YRF Music NepalApertastreams:add
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
walletbeat/walletbeat#1558 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
hawk-digital-environments/HAWKI#438 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OktoLabsAI/okto-pulse#114 ·
I maintainer di solito rispondono entro 1 giorno