Um assistente de codificação baseado em IA em uma fila de servidor de nível gratuito escreveu um arquivo de migração de esquema após a regra de "congelar migrações" do sistema desaparecer durante a compactação automática de contexto. O incidente mostra que confiar em instruções baseadas em prompts para impor segurança pode ser contraproducente quando sessões de chat longas são resumidas.

O que aconteceu

Um agente de codificação compartilhado foi executado com um prompt de sistema que continha uma única regra: não crie nem modifique arquivos de migração. A regra mantinha as migrações de esquema congeladas no branch de release enquanto os desenvolvedores usavam o agente para edições rotineiras.

Durante uma sessão prolongada, a conversa excedeu o limite de tokens do modelo. O servidor invocou a compactação de contexto, substituindo o histórico completo do chat por um resumo curto para permanecer dentro do orçamento de tokens. O resumo manteve as menções a caminhos de arquivos, mas removeu a restrição negativa (“não escreva em migrations/**”). Quando o modelo gerou sua próxima resposta, a regra de congelamento não estava mais em sua memória de trabalho.

O agente então sugeriu um ajuste de SQL para melhorar a velocidade da consulta. A ferramenta acompanhante salvou a alteração como um arquivo de migração no disco. Os testes unitários passaram porque eles nunca executam migrações SQL puras, e a alteração só foi detectada mais tarde em um diff de revisão de código.

Por que isso é importante

  • Guardrails desapareceram: Políticas em nível de prompt são voláteis. Quando o contexto do modelo é comprimido, qualquer cláusula de “não faça” pode ser perdida, deixando o sistema livre para realizar ações proibidas.
  • Testes unitários não são suficientes: Testes que não executam scripts de migração podem dar uma falsa sensação de segurança. A alteração passou despercebida porque a suíte de testes nunca executou o novo SQL.
  • A revisão humana atrasou: No momento em que um revisor viu o diff, o arquivo de migração já havia sido commitado, exigindo um rollback ou limpeza adicional.

O erro não causou uma interrupção no serviço, mas forçou um trabalho extra para reverter uma migração desnecessária e aumentou o risco de uma falha semelhante afetar bancos de dados em produção.

Como o guardrail falhou

  1. Regra apenas via prompt – O congelamento existia como texto simples no prompt do sistema.
  2. Sessão longa – O chat cresceu além da janela de contexto do modelo.
  3. Compactação – O servidor substituiu a transcrição completa por um resumo focado em substantivos.
  4. Perda da restrição negativa – O resumo omitiu a instrução de “não faça”, apagando a regra.
  5. Saída do modelo – Sem a regra, o modelo gerou uma resposta que criava uma migração.

Resumidores tendem a manter substantivos (caminhos de arquivos, nomes de funções) e descartar negações, e é por isso que a regra desapareceu silenciosamente.

A solução: mova os guardrails para o caminho de escrita

Em vez de incorporar proibições no prompt, imponha-as onde o código toca o disco.

  1. Crie um arquivo de política (ex: agent_policy.txt) que liste caminhos na lista de bloqueio, como schema/** ou migrations/**.
  2. Adicione um script de pré-aplicação que leia o arquivo de política e escaneie cada diff antes que a ferramenta de aplicação seja executada.
  3. Falhe de forma segura (fail closed) se o arquivo de política estiver ausente, vazio ou se um diff tocar um caminho proibido.
  4. Não peça ao modelo para confirmar a lista de bloqueio; a confirmação é apenas um sinal, não uma imposição.

Guardrails apenas via prompt vs. baseados em disco

Aspecto Congelamento apenas via prompt Filtro baseado em disco
Risco de compactação A regra pode desaparecer O arquivo de política permanece intacto
Cobertura de testes unitários Pode perder escritas proibidas A verificação de caminho bloqueia a escrita, independentemente dos testes
Momento da revisão humana O dano pode já ter sido commitado A escrita nunca começa, o revisor não vê alteração
Esforço de implementação Mínimo (apenas uma linha no prompt) Script pequeno + arquivo de política

Contraponto

O que observar a seguir

Conclusão

Se você precisa de uma regra que nunca deve ser ignorada — como “sem migrações durante um congelamento” — armazene-a no disco e imponha-a no ponto de escrita. O texto do prompt sozinho não pode garantir durabilidade uma vez que o contexto do modelo é comprimido.