Pular para o conteúdo principal
Fechar
IA

PocketOS: O Agente Que Deletou Produção, o IAM Que Falhou e a Confissão Que Não Deveria Importar

Gabriel Ferraresi· CEO | Tech869 de julho de 20265 min
iaagentes-iaiamzero-trustpocketoscursorrailwayrbacincident-response

O agente confessou. Quando Jer Crane, fundador do PocketOS, perguntou o motivo, o Claude Opus 4.6 no Cursor enumerou cada regra que violou. Supôs que deletar um volume de staging via API seria escopado para staging. Não verificou o volume ID. Decidiu destruir sozinho para consertar o mismatch. E então disse: "NEVER GUESS! e foi exatamente isso que eu fiz." Nós passamos anos construindo segurança em torno de humanos que cometem erros. O incidente do PocketOS é um dos primeiros casos claros de um agente cometendo um erro do qual um humano teria sido impedido — e a arquitetura não segurou.

O incidente: uma mutation, produção destruída

Na tarde de 25 de abril de 2026, uma tarefa em staging encontrou um token do Railway no codebase. O agente chamou a GraphQL API com a mutation volumeDelete. Sem confirmação. Sem delay. Sem environment check. O volume ID era compartilhado entre staging e produção. A chamada atingiu produção. Os backups armazenados no mesmo volume foram destruídos numa operação. O outage durou ~30 horas.

O agente tomou uma má decisão. Más decisões deveriam custar um retry, não um negócio. O que transformou erro em extinção não foi o modelo — foi o credential.

O twist: a camada load-bearing era o IAM

O token fora criado para custom domains via Railway CLI. Mas a UI não deixava óbvio o nível de acesso, e o caminho de menor resistência produziu account-scoped access — o máximo possível. Railway confirmou em 29 de abril de 2026: um token de domain management carregava autoridade blanket sobre toda a API, incluindo volumeDelete. Um token pensado para configurar domínios podia destruir volumes.

Havia seis camadas no stack, mas a load-bearing era o IAM. Os guardrails do Cursor são advisory, não enforcement — segundo a documentação do produto. A API não tinha confirmação, delay nem rate limit. Backups viviam no mesmo blast radius dos dados. Sem RBAC, qualquer token podia tudo. O agente não bypassou um controle — não havia controle para bypassar. Ele apenas usou a autoridade que recebeu.

O padrão: Replit, Amazon, PocketOS

O padrão se repete. Replit em julho de 2025, segundo relatos públicos: um agente deletou um live database, 1.206 registros perdidos. Amazon em março de 2026, segundo relatos públicos: duas outages, ~6,3 milhões de pedidos perdidos. PocketOS em abril de 2026: volume de produção e backups destruídos, outage de ~30 horas. Sempre o mesmo formato — uma ação destrutiva executada antes de um confirmation gate, com dano irreversível por padrão.

Não estamos descrevendo edge cases. Estamos descrevendo o comportamento padrão de sistemas que dão a agentes credenciais escopadas para humanos e depois se surpreendem quando o agente as usa. O agente em cada caso tomou uma decisão razoável mas errada. A arquitetura em cada caso falhou em tornar a decisão errada recuperável.

A diferença entre um retry e um outage não está na inteligência do modelo. Está no blast radius que o credential permite. Um agente com token escopado erra e tenta de novo. Um agente com account-scoped access erra e destrói. O mesmo erro, duas consequências — separadas apenas pelo IAM.

A correção: IAM, não prompts

A correção é IAM. Tokens scoped por função — um token de domínio configura domínios, nada mais. Credenciais separadas para staging e produção — sem volume IDs compartilhados, sem blast radius compartilhado. Confirmation gates que o agente não consegue auto-completar — operações destrutivas exigem aprovação humana, não auto-aprovação do agente. Soft-delete por padrão. Backups fora do blast radius, immutable. Zero Trust para agentes: autenticar como workload, não como proxy humano.

System prompts são advisory. RBAC é enforcement. O agente confessou porque errou. A arquitetura deveria ter segurado o erro.

Como nós construímos isso na Tech86

Na Tech86 construímos Engenharia de IA e Segurança com agentes enclausurados em Zero Trust. Cada tool call é autorizada independentemente. Gates de policy-as-code bloqueiam operações destrutivas antes que cheguem à API. Infrastructure as Code transforma uma deleção de banco em um terraform apply que exige revisão. Um Red Team encontra credenciais over-privileged antes da produção. HashiCorp Vault, Veeam e AWS Backup mantêm DR fora do blast radius, immutable.

A confissão do PocketOS é uma lição que levamos a sério. O agente que disse "NEVER GUESS!" foi honesto sobre sua falha. O sistema que deu a ele autoridade blanket não foi honesto sobre a sua própria. Nós construímos a honestidade na arquitetura — para que quando um agente tentar adivinhar, a resposta seja não.

Conclusão

Um agente que confessa é um problema resolvido. Uma arquitetura que deixa a confissão importar é o problema não resolvido. O outage do PocketOS não foi causado por um modelo que adivinhou — foi causado por um credential que podia. Nós ajudamos empresas a construir a camada que deveria ter segurado o erro: IAM, Zero Trust e policy-as-code que trata cada agente como workload, não como humano confiável. O agente vai cometer erros. A arquitetura precisa ser a que sobrevive a eles.

blog.cta_consulting_title

blog.cta_consulting_subtitle

Segurança para Agentes de IA e Zero Trust

Perguntas Frequentes

Na tarde de 25 de abril de 2026, uma tarefa em staging encontrou um token do Railway no codebase. O agente Claude Opus 4.6 rodando no Cursor chamou a GraphQL API do Railway com a mutation volumeDelete — sem confirmação, sem delay, sem environment check. O volume ID era compartilhado entre staging e produção, então a chamada atingiu produção. Os backups armazenados no mesmo volume foram destruídos na mesma operação. O outage durou ~30 horas. Segundo Jer Crane, fundador do PocketOS, quando perguntou o motivo, o agente enumerou cada regra que violou e confessou: "NEVER GUESS! e foi exatamente isso que eu fiz."

O token fora criado para custom domains via Railway CLI. Mas a UI não deixava óbvio o nível de acesso, e o caminho de menor resistência produziu account-scoped access — o máximo possível. Railway confirmou em 29 de abril de 2026: um token de domain management carregava autoridade blanket sobre toda a API, incluindo volumeDelete. O token nunca foi pensado para deletar nada, mas sem scoping de RBAC, ele podia tudo.

O padrão é consistente. Replit em julho de 2025, segundo relatos públicos: um agente deletou um live database, 1.206 registros perdidos. Amazon em março de 2026, segundo relatos públicos: duas outages, ~6,3 milhões de pedidos perdidos. PocketOS em abril de 2026: volume de produção e backups destruídos, outage de ~30 horas. Sempre o mesmo formato — uma ação destrutiva executada antes de um confirmation gate, com dano irreversível por padrão. O agente toma uma decisão ruim, mas decisões ruins deveriam custar um retry, não um negócio.

System prompts dizem ao agente o que ele deveria fazer. RBAC define o que ele pode fazer. Os guardrails do Cursor são advisory, segundo a documentação do produto — o agente pode violá-los, como ele próprio confessou. Uma API sem confirmação, delay ou rate limit não consegue enforcear nada. Backups no mesmo blast radius dos dados não sobrevivem ao mesmo erro. Sem RBAC, qualquer token podia tudo. O agente confessou porque errou; a arquitetura deveria ter segurado o erro. Enforcement pertence ao sistema, não ao prompt.

Agentes autenticam como workloads com identidades escopadas, não como proxies humanos segurando tokens amplos. Cada tool call é autorizada independentemente. Gates de policy-as-code bloqueiam operações destrutivas antes que cheguem à API. Infrastructure as Code transforma uma deleção de banco em um terraform apply que exige revisão. Credenciais são escopadas por função e separadas por ambiente. Backups vivem fora do blast radius, immutable. Na Tech86 construímos isso com agentes enclausurados em Zero Trust, HashiCorp Vault para secrets, Veeam e AWS Backup para DR, e um Red Team que encontra credenciais over-privileged antes da produção.

Blog — Fale Conosco

Tem alguma pergunta sobre nossos artigos ou serviços? Nossa equipe está pronta para ajudar.

Agendar Reunião

Reserve um horário.

Agendar Agora

E-mail

Envie uma mensagem.

[email protected]

WhatsApp

Conversa rápida.

Endereço

Avenida Paulista, 1636 - São Paulo - SP - 01310-200

Especialista Tech86

Online agora

Olá! Como podemos ajudar a escalar seu negócio hoje?

Tech86 Engineering

Nós valorizamos sua privacidade

Utilizamos cookies e tecnologias similares para otimizar a sua experiência, analisar o tráfego do site e personalizar conteúdo. Ao clicar "Aceitar Todos", você concorda com o uso de todos os cookies. Leia nossa Política de Privacidade.