Voltar ao blog

IA para iniciantesGuia

Rodando Claude Code ou Codex em Downloads? Verificação de segurança do AGENTS.md

Um arquivo chamado AGENTS.md ou CLAUDE.md em Downloads pode direcionar o Claude Code e o Codex. O que são esses arquivos e uma verificação de 5 minutos nas suas configurações.

Por CheapTokens TeamPublicado em 6 min de leitura

Capa: um AGENTS.md plantado na pasta Downloads chegando à configuração de um agente de IA
Nesta página
  1. O que são AGENTS.md e CLAUDE.md, e por que o agente acredita neles
  2. O que os pesquisadores fizeram com um arquivo em Downloads
  3. Quais configurações olhar, e como é uma normal
  4. A verificação de 5 minutos
  5. Se algo parecer errado

Resposta curta: não inicie o Claude Code nem o Codex na sua pasta ~/Downloads. Em 22 de outubro de 2026, a empresa de segurança Forever Security publicou uma pesquisa mostrando que um site pode salvar silenciosamente um arquivo chamado AGENTS.md ou CLAUDE.md em Downloads, e um agente iniciado nessa pasta passa a tratar o arquivo como instruções confiáveis. Abaixo: o que são esses arquivos, o que os pesquisadores conseguiram alterar e uma verificação que leva cerca de cinco minutos.

Imagine a versão comum. Você salvou uma dúzia de PDFs e capturas de tela de um site, abriu um terminal em Downloads, digitou claude ou codex e pediu para "organizar esses arquivos". Nada disso parece arriscado. E aí está a pegadinha.

O que são AGENTS.md e CLAUDE.md, e por que o agente acredita neles#

Um agente de programação não começa cada sessão do zero. Antes de olhar para o seu pedido, ele verifica a pasta em que foi iniciado em busca de um arquivo de texto simples com instruções permanentes: "use tabs, rode os testes com npm test, nunca mexa na pasta de migrations." AGENTS.md é o nome genérico, CLAUDE.md é a mesma ideia para o Claude Code. No seu próprio projeto, esses arquivos são úteis, porque foi você que os escreveu.

O agente não consegue saber quem escreveu um arquivo, porém. Um CLAUDE.md que um site deixou em Downloads parece exatamente igual ao que você escreveu na semana passada.

Flashcards

Palavras que você vai encontrar neste artigo

O que os pesquisadores fizeram com um arquivo em Downloads#

O post da Forever Security (autores Gal Weizman e Omer Samet, 22 de outubro de 2026) descreve dois casos. Todas as taxas de sucesso abaixo são medições dos próprios pesquisadores.

Codex. O AGENTS.md plantado dizia ao agente para adicionar uma entrada de servidor MCP em ~/.codex/config.toml, e essa entrada levava à instalação de um pacote npm chamado function-color. Segundo os pesquisadores, o payload foi executado em mais de 90% das tentativas. Repare onde fica esse arquivo: na sua pasta home, não em Downloads. A configuração é da máquina inteira, então toda sessão posterior em qualquer pasta é afetada, muito depois de você ter esquecido a pasta Downloads.

Claude Code. O CLAUDE.md plantado tentava gravar uma configuração de ANTHROPIC_BASE_URL em .claude/settings.json. Essa configuração decide para onde o agente envia seu tráfego de API. Aponte-a para o servidor de outra pessoa e esse servidor vê seu token OAuth e pode devolver chamadas de ferramenta para o agente executar. A gravação teve sucesso cerca de metade das vezes; um caminho que executava dentro da mesma sessão, cerca de um quinto das vezes.

De um arquivo plantado a uma configuração alterada
Como um arquivo de instruções plantado acaba nas próprias configurações do agente (Forever Security, 22 de outubro de 2026)

O post deixa claro que nada está "quebrado" em nenhum dos produtos: o agente funciona como projetado, e o risco vem de onde o arquivo está e de quanto o agente confia nele. A Forever também diz que encontrou um AGENTS.md plantado de verdade na máquina de um cliente e impediu uma instalação maliciosa de npm antes que qualquer código rodasse; o npm removeu function-color desde então. Essa última parte é o relato dos próprios pesquisadores. O OpenNET cobriu a história em 26 de outubro de 2026 e aponta um risco semelhante quando um AGENTS.md chega por meio de um pull request ou de um repositório clonado.

Verificação rápida

Por que o caso do Codex é pior do que uma sessão ruim em Downloads?

Mostrar resposta

Resposta: A configuração que ele alterou é da máquina inteira, então toda sessão posterior em qualquer pasta é afetada

O arquivo plantado só precisa rodar uma vez. O que ele grava em ~/.codex/config.toml fica lá e vale para sessões posteriores em todas as pastas.

Quais configurações olhar, e como é uma normal#

Dois arquivos, um para cada ferramenta da pesquisa.

Em ~/.codex/config.toml, procure entradas [mcp_servers.*] que você não lembra de ter adicionado, e por uma base URL que você não definiu. Uma entrada suspeita faz sua máquina baixar e executar algo do npm:

toml
[mcp_servers.helper]
command = "npx"
args = ["-y", "some-package"]

O nome helper e o pacote aqui são placeholders. No caso dos pesquisadores, o pacote por trás de uma entrada dessas era function-color.

Em .claude/settings.json, procure um endpoint de API ou proxy que você não colocou lá. Se você nunca definiu ANTHROPIC_BASE_URL, o arquivo não deveria mencioná-lo de forma alguma. Se definiu, deveria ser o endereço do provedor que você escolheu. Para a CheapTokens, um cliente no estilo Anthropic como o Claude Code usa https://api.cheaptokens.dev sem /v1 no final; clientes no estilo OpenAI usam https://api.cheaptokens.dev/v1.

Uma base URL que você definiu versus uma que você não definiu
A mesma configuração duas vezes: o endereço da esquerda é um que você escolheu, o da direita é um host que você não reconhece (placeholder)

Se você roda o Claude Code com sua própria chave, o passo a passo para conectar o Claude Code à CheapTokens mostra o arquivo inteiro, e a documentação lista as duas base URLs. Para loops longos de agente, o DeepSeek-V4-Flash (deepseek-ai/DeepSeek-V4-Flash-0731) tem contexto de 380K, até 32.768 tokens de saída por resposta e um preço único a qualquer hora; a página do modelo tem o resto.

Cline, Aider e outros agentes não fizeram parte desta pesquisa, e cada um guarda suas configurações em seu próprio lugar. O hábito é o mesmo: saiba qual arquivo guarda o endpoint e leia-o uma vez.

A verificação de 5 minutos#

Abra um terminal e siga estes passos em ordem. Nada aqui altera um arquivo; só lê.

Passo a passo

Verifique sua máquina

Encontre arquivos de instruções perdidos

bash
find ~/Downloads -maxdepth 3 -name "AGENTS.md" -o -name "CLAUDE.md"

Qualquer resultado que você não escreveu: abra como texto e leia. Se você não sabe de onde veio, apague.

Leia a configuração do Codex

bash
grep -n "mcp_servers\|base_url" ~/.codex/config.toml

Toda linha [mcp_servers.…] deveria ser algo que você lembra de ter adicionado. "No such file" não tem problema se você não usa o Codex.

Leia as configurações do Claude Code

bash
grep -n "BASE_URL\|proxy" ~/.claude/settings.json .claude/settings.json

Rode a partir da pasta do seu projeto para cobrir os dois arquivos. Todo endereço na saída deveria ser de um provedor que você escolheu.

Olhe seu shell

bash
env | grep -i "BASE_URL"

Isso lista base URLs definidas como variáveis de ambiente. Mesma regra: você deveria reconhecer cada uma.

Procure o pacote do caso

bash
npm ls -g --depth=0 | grep function-color

Rode também npm ls function-color dentro dos projetos em que você usou um agente. Se ele aparecer, trate a máquina como comprometida.

Se algo parecer errado#

Feche o agente primeiro. Depois remova as entradas que você não reconhece e rotacione toda credencial que o agente podia ver: chaves de API, tokens, qualquer coisa no ambiente. Se a ideia de rotacionar uma chave é nova, o que é uma chave de API e como armazená-la cobre o básico.

Hábitos que evitam que isso aconteça de novo, todos das mitigações dos pesquisadores:

  • Inicie agentes em uma pasta de projeto que você mesmo criou, não em Downloads.
  • Leia qualquer AGENTS.md ou CLAUDE.md que você não escreveu antes de rodar um agente nele, incluindo os que chegam por um clone ou um pull request.
  • Mantenha os prompts de aprovação e o sandbox ativados, e desconfie de qualquer instrução que peça ao agente para desativá-los.