Um cron job gerado por IA deletou todas as assinaturas ativas do Stripe em uma startup em menos de dez segundos, reduzindo drasticamente a receita recorrente mensal da empresa para US$ 38. O incidente mostra que o perigo reside no pipeline de implantação, não no modelo de linguagem que escreveu o código.

O que aconteceu

Na semana passada, a equipe da BridgeMindAI acordou com um dashboard mostrando apenas US$ 38 em receita recorrente mensal (MRR). Um modelo de IA produziu uma única linha de código que o agendador executou automaticamente. A linha chamava o endpoint de cancelamento de assinatura do Stripe para cada registro de cliente. A chamada terminou em sete segundos e apagou a base de clientes.

O script interpretou erroneamente uma fila de exclusão vazia como um sinal para deletar tudo. Esse padrão “vazio = tudo” existe em códigos de produção desde a década de 1980, muito antes da IA generativa.

Por que o modelo não é o culpado

As pessoas rapidamente culparam o modelo de IA por não ser confiável. Trocar o modelo não teria impedido a exclusão, pois a falha foi uma lógica escrita por humanos, não uma alucinação ou viés.

As falhas reais foram arquiteturais:

  • O script armazenava uma chave de API do Stripe de produção ativa que podia cancelar assinaturas.
  • Ele rodou sem qualquer supervisão em tempo de execução.
  • Não havia um checkpoint humano entre a geração do código e a execução.

Essas lacunas permitiram que um único bug destruísse um fluxo de receita em segundos.

As três perguntas de segurança para qualquer pipeline autônomo

  1. Quais operações são irreversíveis? Cancelar uma assinatura, deletar um registro ou emitir um reembolso não pode ser desfeito. Eles precisam de mais proteção do que consultas de apenas leitura.

  2. Quais credenciais o agente possui? Dar uma chave mestra do Stripe a um processo autônomo concede poder irrestrito. Aplique o princípio do privilégio mínimo: use chaves com escopo que possam realizar apenas a tarefa necessária.

  3. Onde está o checkpoint humano? Revisão de código sozinha não é suficiente. Insira um gate após a geração do código e antes de qualquer ação destrutiva.

Trilhos de segurança práticos

  • Gate de dry-run – Antes de qualquer chamada de exclusão ou cancelamento, registre os alvos pretendidos. Se a lista estiver vazia ou for excepcionalmente grande, aborte e alerte um humano.
  • Credenciais com escopo – Use chaves de apenas leitura por padrão. Quando uma tarefa precisar cancelar uma assinatura, crie uma chave restrita que possa atuar em um único ID de cliente por vez.
  • Prompt human-in-the-loop – Envie uma mensagem curta para um canal (ex: Slack) como “Estou prestes a cancelar 47 assinaturas. Confirmar?”. O custo é insignificante; o ganho de segurança é enorme.

Essas medidas funcionam independentemente de qual modelo escreva o código, pois protegem o ambiente de execução, não o gerador.

Um checklist de produção para agentes autônomos

  • Classifique cada operação como leitura, reversível ou irreversível.
  • Exija aprovação humana explícita para todas as ações irreversíveis.
  • Limite as credenciais às permissões mínimas necessárias para a tarefa.
  • Imponha limites de tamanho em loops que deletam ou modificam registros.
  • Execute agentes primeiro em um sandbox que espelhe os dados de produção; confirme o resultado antes de tocar nos dados reais.
  • Registre o plano do agente em linguagem clara antes da execução, para que um revisor possa entender a intenção num relance.

Seguir este checklist transforma um script de “executar uma vez e esquecer” em um fluxo de trabalho controlado que pode ser auditado e interrompido se algo parecer errado.

A lição é clara: confie no processo, não no modelo.