[{"data":1,"prerenderedAt":418},["ShallowReactive",2],{"blog-pt-supabase-new-api-keys":3},{"id":4,"title":5,"body":6,"category":381,"cover":382,"coverAlt":382,"description":383,"draft":384,"extension":385,"faq":386,"image":399,"keywords":400,"meta":406,"navigation":407,"ogTitle":408,"path":409,"published":410,"seo":411,"stem":412,"tldr":413,"updated":410,"__hash__":417},"blog_pt\u002Fblog\u002Fsupabase-new-api-keys.md","As novas chaves de API do Supabase: qual vai no seu app?",{"type":7,"value":8,"toc":370},"minimark",[9,29,32,37,48,79,87,94,100,104,107,113,118,122,125,211,217,224,228,231,266,269,278,282,291,317,326,330,357],[10,11,12,13,17,18,21,22,17,25,28],"p",{},"Se você abriu o painel do Supabase há pouco e encontrou chaves começando com\n",[14,15,16],"code",{},"sb_publishable_"," e ",[14,19,20],{},"sb_secret_"," onde antes ficavam ",[14,23,24],{},"anon",[14,26,27],{},"service_role",", não\nquebrou nada. O Supabase renomeou suas chaves de API, e o par que você conhecia\nestá de saída.",[10,30,31],{},"A mudança é pequena no que faz e grande no que evita. As duas chaves continuam\ncumprindo exatamente os dois papéis de sempre. O que é novo é que agora você vê\nqual é qual sem abrir nada.",[33,34,36],"h2",{"id":35},"o-que-o-supabase-mudou-de-fato","O que o Supabase mudou de fato",[10,38,39,40,47],{},"O Supabase\n",[41,42,46],"a",{"href":43,"rel":44},"https:\u002F\u002Fsupabase.com\u002Fblog\u002Fjwt-signing-keys",[45],"nofollow","anunciou as chaves novas em julho de 2025",",\njunto com uma mudança em como ele assina os tokens de login. Duas coisas\nsubstituíram duas coisas:",[49,50,51,67],"ul",{},[52,53,54,55,59,60,63,64,66],"li",{},"A chave ",[56,57,58],"strong",{},"publicável",", ",[14,61,62],{},"sb_publishable_…",", substitui a chave ",[14,65,24],{},".",[52,68,69,70,59,73,76,77,66],{},"Chaves ",[56,71,72],{},"secretas",[14,74,75],{},"sb_secret_…",", substituem a chave ",[14,78,27],{},[10,80,81,82,86],{},"As permissões continuam iguais. Uma chave publicável ainda só identifica o seu\nprojeto e não carrega permissão própria; uma secreta ainda ignora todas as regras\nque você escreveu. Se você já sabe\n",[41,83,85],{"href":84},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","quais chaves são seguras num frontend",",\nnada dessa intuição ficou errado.",[10,88,89,90,93],{},"Duas diferenças práticas valem a pena. Você pode ter ",[56,91,92],{},"várias"," chaves secretas\nao mesmo tempo e revogar uma de cada vez, então girar uma chave não significa\nmais um momento em que tudo o que a usava fica quebrado. E as chaves antigas\ntinham uma característica que quase ninguém notou: eram JWTs que expiram dez anos\ndepois de você criar o projeto. As novas não carregam validade por dentro.",[95,96],"diagram",{"alt":97,"caption":98,"src":99},"Duas chaves desenhadas uma acima da outra. A antiga são três blocos separados por pontos, com o do meio aberto mostrando a palavra role. A nova é uma única sequência, com a primeira palavra sb sublinhado secret destacada na frente.","Os mesmos dois trabalhos, dois formatos diferentes. No par antigo o papel fica enterrado no meio; no novo é a primeira coisa que você lê.","\u002Fblog\u002Fsupabase-new-api-keys\u002Ftwo-key-formats-1600x640.png",[33,101,103],{"id":102},"qual-das-duas-pertence-ao-seu-app","Qual das duas pertence ao seu app",[10,105,106],{},"A publicável, e só ela.",[10,108,109,110,112],{},"Seu app roda no navegador do seu visitante, e o pedido ao seu banco sai dali. Ele\nprecisa dizer a qual projeto pertence, e esse identificador chega a todo\nvisitante por projeto. ",[14,111,62],{}," é a chave feita para isso: encontrá-la\nno seu app não é um achado, e nunca foi.",[10,114,115,117],{},[14,116,75],{}," é o oposto. Ela lê e escreve em toda linha de toda tabela, de\nqualquer lugar, ignorando por completo as suas políticas, e é exatamente para\nisso que ela existe. O lugar dela é um servidor, uma edge function, um worker:\nnenhum lugar que um navegador alcance. Se alguma já foi colada em código de\nfrontend, troque a chave no painel antes de mexer em qualquer outra coisa, porque\napagar a linha não fecha a porta.",[33,119,121],{"id":120},"como-saber-qual-delas-você-tem","Como saber qual delas você tem",[10,123,124],{},"Leia os primeiros caracteres. Hoje essa é toda a conferência.",[126,127,128,144],"table",{},[129,130,131],"thead",{},[132,133,134,138,141],"tr",{},[135,136,137],"th",{},"O que você vê",[135,139,140],{},"O que é",[135,142,143],{},"Segura no navegador?",[145,146,147,164,179,196],"tbody",{},[132,148,149,154,157],{},[150,151,152],"td",{},[14,153,62],{},[150,155,156],{},"chave publicável atual",[150,158,159],{},[160,161,163],"key-verdict",{"type":162},"safe","É o lugar dela",[132,165,166,170,173],{},[150,167,168],{},[14,169,75],{},[150,171,172],{},"chave secreta atual",[150,174,175],{},[160,176,178],{"type":177},"danger","Nunca",[132,180,181,189,192],{},[150,182,183,186,187],{},[14,184,185],{},"eyJ…"," com ",[14,188,24],{},[150,190,191],{},"chave publicável antiga",[150,193,194],{},[160,195,163],{"type":162},[132,197,198,204,207],{},[150,199,200,186,202],{},[14,201,185],{},[14,203,27],{},[150,205,206],{},"chave secreta antiga",[150,208,209],{},[160,210,178],{"type":177},[10,212,213,214,66],{},"Uma chave atual é uma sequência longa em duas metades: um miolo aleatório e uma\nsoma de verificação curta no fim. Uma chave antiga são três blocos separados por\npontos, e o do meio é texto legível em vez de criptografia, e por isso diferenciar\no par antigo passava por decodificá-lo e ler o campo ",[14,215,216],{},"role",[10,218,219,220,66],{},"Se você achou uma chave no seu app e não sabe qual é, nosso scan gratuito lê o\nseu site no ar por fora e diz o que consegue ver. Leva uns 20 segundos e não\nprecisa de conta: ",[41,221,223],{"href":222},"\u002F#scan","escaneie seu app",[33,225,227],{"id":226},"minhas-chaves-anon-e-service_role-antigas-ainda-funcionam","Minhas chaves anon e service_role antigas ainda funcionam?",[10,229,230],{},"Hoje, sim. O Supabase publicou um cronograma, não um botão de desligar:",[126,232,233,243],{},[129,234,235],{},[132,236,237,240],{},[135,238,239],{},"Quando",[135,241,242],{},"O que acontece",[145,244,245,258],{},[132,246,247,250],{},[150,248,249],{},"1 de novembro de 2025",[150,251,252,253,255,256,66],{},"Projetos restaurados depois dessa data não ganham mais ",[14,254,24],{}," nem ",[14,257,27],{},[132,259,260,263],{},[150,261,262],{},"Fim de 2026, sem data exata",[150,264,265],{},"Todos os projetos vão precisar usar as chaves novas.",[10,267,268],{},"Ou seja: não há emergência esta semana, e há um prazo este ano. Se o seu app foi\nfeito antes da renomeação e não foi tocado desde então, ele está rodando com\nchaves antigas agora e vai continuar por um tempo.",[10,270,271,272,274,275,277],{},"O argumento para mudar cedo não é o prazo. É o dia em que alguém cola a chave\nerrada num prompt: ",[14,273,20],{}," se entrega, ",[14,276,185],{}," não.",[33,279,281],{"id":280},"como-trocar-sem-quebrar-o-seu-app","Como trocar sem quebrar o seu app",[10,283,284,285,290],{},"O ",[41,286,289],{"href":287,"rel":288},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fgetting-started\u002Fmigrating-to-new-api-keys",[45],"guia de migração","\ndo próprio Supabase é a referência. A versão curta, para um app que você não\nescreveu na mão:",[292,293,294,301,304,311,314],"ol",{},[52,295,296,297,300],{},"No painel, abra ",[56,298,299],{},"Settings → API Keys"," e crie as chaves novas. Isso adiciona\nas novas; não tira as antigas, e os dois pares funcionam ao mesmo tempo.",[52,302,303],{},"Ache onde o seu app cria o cliente do Supabase e troque a chave publicável.\nNum builder como Lovable ou Bolt isso costuma ser um valor nas configurações\ndo projeto, não uma linha de código.",[52,305,306,307,310],{},"Troque a chave secreta em todo lugar onde ela é usada ",[56,308,309],{},"num servidor",": edge\nfunctions, webhooks, tarefas agendadas, qualquer coisa que não seja o\nnavegador.",[52,312,313],{},"Abra o seu app e passe pelas partes que leem e escrevem dados. Uma chave\npublicável errada falha na hora e alto, que é o caso bom.",[52,315,316],{},"Só quando tudo estiver funcionando, desative as chaves antigas.",[10,318,319,320,322,323,325],{},"O passo 5 é o que fica por último, e vale fazer de propósito em vez de nunca:\nprojetos meio migrados, em que o app ainda carrega uma chave ",[14,321,24],{}," velha ao lado\nde uma ",[14,324,16],{}," viva, são comuns e confusos de depurar.",[33,327,329],{"id":328},"o-que-fazer-esta-semana","O que fazer esta semana",[331,332,333],"key-takeaways",{},[49,334,335,338,347,350],{},[52,336,337],{},"Abra Settings → API Keys e veja quais pares o seu projeto tem. Leva um minuto e já diz onde você está.",[52,339,340,341,343,344,346],{},"Se achar ",[14,342,75],{}," ou ",[14,345,27],{}," em qualquer lugar do código do frontend, troque a chave hoje. É o único item urgente desta lista.",[52,348,349],{},"Crie as chaves novas e passe o seu app para elas quando tiver meia hora, não por causa do prazo, e sim porque o prefixo deixa o próximo erro óbvio.",[52,351,352,353,66],{},"Aproveite e olhe o Row Level Security. A chave nova não muda nada do que as suas políticas permitem, e ",[41,354,356],{"href":355},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","ligar o RLS não é a mesma coisa que estar protegido",[10,358,359,360,364,365,369],{},"Se quiser a versão específica da plataforma sobre o que conferir, temos um guia\nem linguagem simples para ",[41,361,363],{"href":362},"\u002Fis-your-supabase-app-safe","apps com Supabase",", e o\n",[41,366,368],{"href":367},"\u002Fchecklist","checklist de segurança de 10 minutos"," cobre isso junto com as outras\ncoisas que vale desligar num app recém-lançado.",{"title":371,"searchDepth":372,"depth":372,"links":373},"",3,[374,376,377,378,379,380],{"id":35,"depth":375,"text":36},2,{"id":102,"depth":375,"text":103},{"id":120,"depth":375,"text":121},{"id":226,"depth":375,"text":227},{"id":280,"depth":375,"text":281},{"id":328,"depth":375,"text":329},"Noções de segurança",null,"O Supabase trocou anon e service_role por chaves publicáveis e secretas. Qual delas pertence ao seu app e qual nunca deve estar lá?",false,"md",[387,390,393,396],{"q":388,"a":389},"sb_publishable_ é a mesma coisa que a chave anon?","Ela faz o mesmo trabalho. Diz qual é o seu projeto para o pedido saber para onde ir, não carrega permissão nenhuma própria e foi feita para ficar no seu app, onde qualquer pessoa pode ler. O que protege seus dados nos dois casos é o Row Level Security, não a chave.",{"q":391,"a":392},"Minhas chaves anon e service_role ainda funcionam?","Sim, hoje. O Supabase manteve as duas no ar durante a migração e você pode ter os dois pares ao mesmo tempo. O que foi anunciado é que no fim de 2026 todos os projetos vão precisar usar as chaves novas, sem uma data exata ainda.",{"q":394,"a":395},"Tenho os dois pares no painel. Qual o meu app deve usar?","A publicável, sb_publishable_. A troca é de uma linha: substitua a chave que o seu app passa quando cria o cliente do Supabase. Nada muda nas suas tabelas nem nas suas políticas, porque a chave nova tem exatamente as permissões que a anon tinha.",{"q":397,"a":398},"O formato novo deixa meu app mais seguro sozinho?","Não. Ele torna a chave perigosa fácil de reconhecer, e isso vale dinheiro em erros que deixam de acontecer, mas uma chave publicável continua lendo tudo o que as suas políticas deixarem. Se o Row Level Security estiver desligado, a chave nova abre o seu banco exatamente tanto quanto a antiga abria.","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",[401,402,403,404,405],"novas chaves api supabase","chave sb_publishable","chave sb_secret","chave anon supabase obsoleta","migração chaves api supabase",{},true,"As novas chaves de API do Supabase, explicadas","\u002Fblog\u002Fsupabase-new-api-keys","2026-08-12",{"title":5,"description":383},"blog\u002Fsupabase-new-api-keys",[414,415,416],"O Supabase agora emite chaves sb_publishable_ e sb_secret_. Elas substituem anon e service_role e fazem exatamente os mesmos dois trabalhos.","A chave publicável pertence ao seu app. A secreta nunca, e agora dá para diferenciar lendo os primeiros caracteres.","Suas chaves antigas ainda funcionam hoje. O Supabase disse que todos os projetos vão ter que sair delas no fim de 2026.","3cAJjQpX5njmptpQG5_EznUJeAfFeGIY4FY17UwCjIU",1787826050895]