Os agentes compartilhavam uma memória
Um artigo do Frontier Red Team da Anthropic e da EPFL, publicado em 10 de agosto, construiu um payload que se espalha de um agente de código para o seguinte através dos arquivos que um agente mantém para lembrar quem é: SOUL.md, MEMORY.md, o CLAUDE.md do seu repositório. O arquivo sobrevive ao reset de contexto que apaga todo o resto, e o próximo agente o lê como suas próprias instruções permanentes. O Bromure Agentic Coding avalia esses arquivos como autoridade antes que o agente os obedeça, e roda cada agente a um hipervisor de distância.
Um agente de código esquece quase tudo entre sessões. As exceções são os arquivos que ele guarda de propósito, os que carregam suas instruções permanentes e são relidos para dentro do prompt a cada início. Um novo artigo mostra que esses arquivos são também o único lugar onde um payload autorreplicante pode se esconder, e pegar carona de um agente para o próximo.
Em 10 de agosto, pesquisadores do Frontier Red Team da Anthropic e da EPFL, na Suíça, publicaram um artigo chamado Mind Viruses. A Anthropic escreveu sobre ele no dia 13, e o The Hacker News o cobriu no dia 18. A pergunta que ele faz é estreita e prática: uma instrução plantada em um agente de IA consegue se copiar para outro, sem humano no meio, e continuar assim?
A resposta é sim, e o motivo é um arquivo que você já tem.
O que um agente lembra de propósito
Um agente de código joga fora sua memória de trabalho entre sessões. A janela de contexto enche, a sessão termina, uma tarefa acaba e a seguinte começa do zero. Quase nada é carregado adiante, que é o que você quer na maioria dos dias.
Então o agente guarda alguns arquivos que são carregados adiante. O Claude Code
lê um CLAUDE.md. Outras ferramentas leem um AGENTS.md, ou um GROK.md, ou
um índice de memória que carregam na inicialização. Os agentes do artigo
mantinham um SOUL.md e um MEMORY.md. Qualquer que seja o nome, o acordo é o
mesmo: este arquivo é você, ele diz suas preferências e regras permanentes, e
eu vou relê-lo para dentro do meu prompt no começo de cada sessão para não
perder o fio. Isso é a funcionalidade. É o que faz de um agente o seu, em vez do
padrão de um estranho.
O movimento do artigo é notar que um arquivo com essas duas propriedades, um que sobrevive ao reset e é relido como autoridade, é um lugar onde um payload pode morar. Os pesquisadores usaram uma busca evolutiva para criar instruções curtas que, uma vez presentes em tal arquivo, levam o agente a fazer duas coisas: executar alguma ação, e copiar a instrução adiante, para dentro do arquivo do próximo agente. Um worm precisa exatamente desses dois comportamentos. Este está escrito por extenso, em inglês, em um arquivo que o agente trata como sua própria memória.
Eles testaram de duas formas. Em uma, um time de seis agentes colaborava em um espaço de trabalho compartilhado. Na outra, os agentes rodavam em sequência, a saída de cada um alimentando o seguinte, uma cadeia de saltos. Ambas são formatos comuns de trabalho com agentes. Uma frota sobre um repositório é um time; um pipeline que passa resultados adiante é uma cadeia.
Os números, e onde eles caem
Os payloads vinham em dois tipos. Alguns eram ideológicos, feitos para implantar uma crença ou um objetivo. Alguns eram ações concretas. Os quatro payloads de ação são os que um desenvolvedor deveria ler com atenção, porque cada um é algo que você não quer um programa fazendo por conta própria na sua máquina:
- crypto-ad escreve um arquivo que endossa uma criptomoeda.
- gitwrap marca silenciosamente os arquivos que o agente commita.
- deletor remove arquivos do diretório home.
- curlbash joga um script de instalação baixado direto em um shell.
Guardar a instrução no SOUL.md foi a rota eficaz: respondeu por 88% das
tentativas de propagação e infectou o agente seguinte em 55% das vezes.
Escondê-la em um arquivo comum do espaço de trabalho funcionou bem menos, 17%, e
em 68% dessas tentativas o agente propagador nem sequer mencionou o payload no
espaço de trabalho, de modo que um humano observando os arquivos compartilhados
não teria visto nada. Todos os quatro payloads de ação sobreviveram a uma
sequência de 20 saltos, mesmo quando os pesquisadores apagavam os demais
arquivos entre os agentes. O arquivo de memória bastava sozinho.
O modelo que rodava o agente importava, e não do jeito que você imaginaria. Capacidade bruta não previa resistência. O Claude Sonnet 4.6 recusou os payloads, e em algumas execuções foi além, editando a instrução maliciosa para fora do arquivo de alma e avisando os agentes aos quais estava conectado. Outros modelos, incluindo DeepSeek V3.2, Qwen 3.5 32B e Gemini 3 Flash, aceitaram os payloads ideológicos. Então, se o worm para ou não depende de qual modelo o seu agente por acaso está usando esta semana, e essa não é uma propriedade que você controla de uma tarefa para a outra.
Os pesquisadores são cuidadosos quanto ao escopo. Eles falam em um risco “real, mas atualmente limitado”. Quando vasculharam um arquivo real de publicações de agentes, o conjunto de dados Moltbook, cerca de 2.000 tentativas candidatas de propagação de aproximadamente 400 autores até 18 de março, não encontraram nenhum caso do payload saltando de um agente para um segundo em ambiente real. E encontraram uma defesa que funciona bem: um único parágrafo no prompt de sistema, avisando o modelo de que instruções assim podem aparecer e devem ser recusadas, reduziu a propagação a quase zero.
Essa defesa é o indício. Ela funciona, e mora na única camada que um atacante
que chegou ao seu arquivo de memória também pode conseguir alcançar. Se o worm
consegue escrever o MEMORY.md, a pergunta que vale a pena fazer é o que está
entre esse arquivo e o agente obedecendo a ele, e se essa coisa depende do
modelo decidir, corretamente e todas as vezes, dizer não.
O Bromure lê o arquivo de memória primeiro
O Bromure Agentic Coding fica no fio entre o seu agente de código e o modelo, e trata os arquivos de instruções do próprio agente exatamente como o artigo mostra que eles são: autoridade sobre a qual o agente vai agir e, portanto, algo a checar antes que ele aja.
Dois classificadores no dispositivo fazem a checagem, e dividem o trabalho ao longo da linha que o artigo traça.
O primeiro lida diretamente com o arquivo de memória. Ative Detectar
instruções maliciosas em arquivos CLAUDE.md e similares, e o Bromure avalia
CLAUDE.md, AGENTS.md, GROK.md e os demais arquivos de instrução e
configuração que o agente carrega como autoridade. Ele usa um modelo ajustado
para essa tarefa, descrito em
um post anterior,
porque a detecção comum de injeção de prompt falha em um arquivo que deveria
ser todo composto de instruções. A pergunta aqui não é “há texto injetado no
meio dos dados”, mas “esta instrução é nociva”, e um payload que manda escrever
um endosso a criptomoeda, ou apagar arquivos sob o home, ou passar este script
para um shell, é justamente o que o modelo foi treinado para sinalizar. Ele roda
a cada leitura, no host, não importa qual agente colocou o arquivo ali. Um worm
que chega ao MEMORY.md do próximo agente ainda tem que passar por um leitor
que não é o agente e não tem os incentivos do agente.
O segundo classificador cuida do outro caminho de chegada. Quando o payload vem não como arquivo de configuração, mas como a saída de outro agente, uma página buscada ou um resultado de ferramenta, Detectar injeção de prompt em código fonte avalia esse texto com o Prompt Guard da Meta antes de o modelo lê-lo. No arranjo em cadeia de saltos do artigo, onde a saída de cada agente alimenta o seguinte, é por essa costura que o worm viaja, e ela é avaliada na entrada.
As duas decisões são aplicadas no proxy do seu Mac, fora da VM, e as duas caem em Window → Security Timeline como uma linha que você pode ler: o que foi escaneado, o que disparou, o que foi permitido. O agente não tem voto sobre se a varredura rodou.
Onde as ações rodam, e quanto tempo duram
Avaliar o arquivo é a primeira linha. A segunda é que mesmo um payload que passou tem menos com que trabalhar, por causa de onde ele roda.
Cada um dos quatro payloads de ação significa algo específico na máquina, e um
espaço de trabalho do Bromure não é a máquina que o artigo pressupõe. O
deletor remove arquivos sob o diretório home, um home que aqui é
/home/ubuntu dentro de uma VM Ubuntu descartável, que você pode limpar com
Erase home… ou reverter com Reset to base…, esta última reclonando o
disco de sistema do espaço de trabalho a partir de uma imagem base que continua
somente leitura em tempo de execução. O curlbash baixa um script e o passa
para um shell; o download é uma conexão de saída, e um espaço de trabalho
confere as conexões de saída contra um firewall que você escreveu, aplicado no
seu Mac pelo switch virtual e pelo proxy, com um reset injetado em tudo que for
negado. O agente que leu o payload está do lado errado das regras que
precisaria mudar. O gitwrap mexe nos commits de um checkout que, no arranjo
de frota, é seu próprio git worktree em seu próprio branch, uma árvore isolada
que você pode jogar fora sem tocar nas outras.
Esse último ponto responde de frente ao pior caso do artigo. O resultado mais forte foi o time de seis agentes compartilhando um espaço de trabalho: um agente escreve o arquivo, os demais leem. A abordagem do Bromure para uma frota são os git worktrees: cada agente ganha seu próprio checkout em sua própria VM descartável, em vez de um home compartilhado cujos arquivos todo par herda por padrão. Não existe um único diretório home onde um agente comprometido larga um arquivo e cinco irmãos o recolhem. Os arquivos de instrução que de fato sincronizam para dentro de um espaço de trabalho chegam pelo proxy, onde o classificador os lê.
Uma memória é uma coisa boa de se ter
Nada disso faz do arquivo de memória um erro. Um agente que lembra das suas convenções é melhor do que um que recomeça toda manhã, e os arquivos que carregam essa memória estão fazendo o trabalho deles. A contribuição do artigo é mostrar que a mesma propriedade que torna o arquivo útil, o jeito como ele sobrevive ao reset e volta como autoridade, é a propriedade de que um worm precisa, e que se o worm para pode depender de qual modelo o leu.
Então tire a decisão do prato do modelo. Deixe o arquivo ser autoridade para o agente, e deixe algo que não é o agente lê-lo primeiro. Rode cada agente um hipervisor adiante, onde o endosso a criptomoeda cai em uma VM que você apaga, o script de instalação encontra um muro que não construiu, e uma frota é um conjunto de máquinas separadas em vez de um único home passando bilhetes para si mesmo. A memória continua funcionando. Ela apenas deixa de ser um esconderijo.
Fontes: Papadopoulos, Shah, Zimmerman, Lindsey, “Mind Viruses” (arXiv:2608.10218, 10 de agosto de 2026) · The Hacker News, “AI 'Mind Viruses' Can Spread Between Agents Through Persistent Prompt Files” (18 de agosto de 2026)