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
- Regra apenas via prompt – O congelamento existia como texto simples no prompt do sistema.
- Sessão longa – O chat cresceu além da janela de contexto do modelo.
- Compactação – O servidor substituiu a transcrição completa por um resumo focado em substantivos.
- Perda da restrição negativa – O resumo omitiu a instrução de “não faça”, apagando a regra.
- 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.
- Crie um arquivo de política (ex:
agent_policy.txt) que liste caminhos na lista de bloqueio, comoschema/**oumigrations/**. - 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.
- Falhe de forma segura (fail closed) se o arquivo de política estiver ausente, vazio ou se um diff tocar um caminho proibido.
- 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.
