Uma IA deletou um banco de dados de produção. Nove segundos.
Um agente de codificação de IA (Cursor rodando Claude Opus 4.6) encontra uma incompatibilidade de credencial no ambiente de staging e a "corrige" chamando volumeDelete no Railway com um token com escopo de conta que encontrou em um arquivo não relacionado.
Um agente de codificação de IA (Cursor rodando Claude Opus 4.6) encontra uma incompatibilidade de credencial no ambiente de staging e a "corrige" chamando volumeDelete no Railway com um token com escopo de conta que encontrou em um arquivo não relacionado. Banco de dados de produção e todos os backups de volume, perdidos em nove segundos. Post-mortem: a linha do tempo, o curl exato, os três fatos arquitetônicos que tornaram isso possível (backups no mesmo volume, tokens com escopo de root, uma API sem a opção de desfazer em 48 horas do painel), e quem realmente é o culpado. Veredito sobre a correção: SHIP IT.
Leia a edição escrita (Inglês) ↗
O que este vídeo aborda
- 24 de abril de 2026: uma chamada de API deleta o volume de produção do PocketOS e seus backups; a cópia offsite mais recente tem 3 meses
- O token foi criado para gerenciar domínios personalizados; o fluxo do Railway o provisionou com escopo de conta (tudo)
- 27 de abril: Railway recupera os dados de backups de desastre; 29 de abril post-mortem; 1º de maio: as exclusões da API agora são soft-delete por 48h
Transcrição traduzida
Traduzido da narração original em inglês. Áudio e legendas disponíveis são controlados pelo YouTube.
0:00 Um agente de codificação de IA encontra uma senha errada no staging e a corrige excluindo o banco de dados de produção e todos os backups em uma chamada de API. Nove segundos, o que ainda é mais rápido do que a redefinição de senha. A empresa é a PocketOS, software de aluguel de carros. O agente é o Cursor rodando Claude Opus 4.6, o modelo mais caro do menu, e a plataforma é o Railway. O fundador escreve sobre isso no X, sete milhões de pessoas leem, e quatro dias depois o Railway publica seu próprio post-mortem.
0:27 Todos concordam com o que aconteceu; ninguém concorda de quem é a culpa. Como acontece, por que é possível e quem realmente leva a culpa. Este é o The Daily Diff, post-mortem. Sexta-feira à tarde, 24 de abril. O agente está em uma tarefa de rotina no staging, encontra uma incompatibilidade de credencial, e decide que a correção é excluir um volume do Railway. Precisa de um token, procura e encontra um em um arquivo não relacionado: um token CLI criado meses antes para gerenciar domínios personalizados.
0:55 Então ele executa isso. Um curl: um POST para o endpoint GraphQL do Railway, um token de portador, uma mutação chamada volumeDelete. Sem confirmação, sem digitar o nome do volume, sem verificação de ambiente. O volume que ele assume ser staging é de produção, e os backups estão nele. Em dez minutos, o fundador marca o CEO do Railway no X, que responde que isso cem por cento não deveria ser possível. Trinta horas depois, ainda sem resposta de recuperação, então o fundador publica
1:19 tudo, incluindo a confissão. Três fatos tornam isso possível, nenhum deles o modelo. Um: o Railway armazena backups de volume no volume. A documentação diz em cinco palavras: "limpar um volume exclui todos os backups". Isso é uma cópia no mesmo raio de explosão; a cópia mais nova em qualquer outro lugar tem três meses. Dois: o token é com escopo de conta, o escopo mais amplo que o Railway vende. Escopos mais restritos existem, mas o fluxo de criação os oculta,
1:40 então um token para registros DNS pode excluir bancos de dados, e ninguém descobre até que algo aconteça. Três: o painel tem um "desfazer" de quarenta e oito horas em exclusões por anos; o endpoint da API que o agente chama é o caminho legado, e ele exclui imediatamente. Cada salvaguarda que o Railway construiu existe onde um humano clica, e o agente usa a única porta que eles esqueceram. Perguntado o porquê, Opus escreve: "Eu imaginei que excluir um volume de staging seria restrito apenas ao staging; eu não verifiquei."
2:04 Uma confissão muito boa de um modelo que não se lembra de nada e está gerando a desculpa mais plausível. git blame: a incompatibilidade de credencial é tratada como algo a ser corrigido em vez de algo para parar, e o botão de desfazer vive na UI enquanto a API responde a cada exclusão autenticada com sim. Não o fundador, não o modelo. O padrão. Raio de explosão: nove segundos para excluir, três meses de reservas perdidos, balcões de aluguel de sábado de manhã sem registro de quem está lá,
2:31 e aproximadamente dois dias e meio até que o CEO do Railway envie uma DM dizendo que os dados estão de volta, de um backup de desastre offsite que a exclusão apenas havia feito parecer que sumiu. A resposta mais curtida: "Um agente que você estava executando excluiu algo, e você culpa a todos, menos a si mesmo." Justo. O Railway também havia lançado seu servidor MCP para agentes na semana anterior, com os mesmos tokens. Também justo. Veredito, post-mortem: SHIP IT, na correção. O Railway publica um post-mortem honesto em quatro dias, e até 1º de maio, as exclusões da API
3:00 são soft-delete por quarenta e oito horas, como o painel. Ação de segunda-feira: liste todos os tokens que seu agente pode alcançar, e trate cada um como root até que se prove o contrário. Envie-me o incidente sobre o qual você ainda não pode falar, nos comentários, ou em the daily diff dot dev. E esse é o diff de hoje. Eu sou o Niko da Axrisi. Merge com responsabilidade.
Fontes
- Jer Crane (founder, PocketOS), "An AI Agent Just Destroyed Our Production Data. It Confessed in Writing."x.com
- Railway, "Your AI wants to nuke your database. Guardrails fix that." (Apr 29, 2026)blog.railway.com
- Railway changelog #0288, "Undoable volume deletes" (May 1, 2026)railway.com
- Railway docs, Backups ("Wiping a volume deletes all backups.")docs.railway.com
- Jake Cooper (Railway CEO), "The AI Engineer: A New Breed"x.com
- Recovery confirmedx.com
- Hacker News (860 points, 1,032 comments)news.ycombinator.com
- The Registerwww.theregister.com
- The New Stackthenewstack.io



