O log do agente estava na nuvem deles
A Warp revelou que atacantes roubaram traces de agente e telemetria de cerca de 1% dos seus usuários ao invadir um fornecedor da infraestrutura da Warp, e o CEO da empresa diz que os invasores usaram um enxame de agentes de IA para isso. Um trace de agente registra o que o agente leu, executou e viu, então pode conter código, saída de comandos e segredos. No Bromure Agentic Coding, o trace do agente é gravado e criptografado no seu Mac, todo segredo que o agente manipula é um substituto, e você escolhe quais hosts recebem qualquer coisa.
Um trace de agente é o registro de tudo o que o agente leu, executou e viu. Os traces da Warp ficavam com um fornecedor, e em 23 de outubro alguém entrou nesse fornecedor.
Na sexta-feira, 23 de outubro, a Warp tomou conhecimento do que seu fundador e CEO, Zach Lloyd, chamou de uma exploração ativa e bem delimitada de um fornecedor da infraestrutura da Warp. A Warp cresceu de um terminal para o que chama de ambiente de desenvolvimento agêntico, e os dados levados foram traces de agente e telemetria de usuários. Lloyd estima o limite superior em cerca de 1% dos usuários da Warp. O site da empresa afirma ter pelo menos 800 mil usuários, então 1% é da ordem de 8 mil desenvolvedores. O BleepingComputer noticiou o comunicado ontem.
A Warp diz que detectou a operação em poucas horas e a conteve. A empresa contratou a CrowdStrike, informou as autoridades e notificou os usuários afetados. Segundo o Risky Business, Lloyd diz que os invasores usaram um enxame de agentes de IA para invadir o fornecedor. A Warp não nomeou o fornecedor, não descreveu a vulnerabilidade nem disse se os traces roubados incluíam código-fonte, prompts ou credenciais. O conselho aos usuários: acompanhar a atividade da conta e tratar mensagens não solicitadas com mais cuidado que o normal.
É o segundo vazamento de agente de código neste mês que começa nos servidores de um fornecedor. Em 16 de outubro, atacantes chegaram às chaves de API de provedores que cerca de 1,4% dos usuários do OpenCode Console tinham salvado, e alguns encontraram cobranças de até US$ 1.700 que não tinham feito. Falamos disso em As chaves estavam no console deles.
O que um trace de agente guarda
Um agente de código trabalha em loop. Ele lê um arquivo, executa um comando, lê a saída e decide o que fazer em seguida, e um trace registra cada passo. Isso inclui o prompt que você digitou, os arquivos que o agente abriu, os diffs que ele escreveu, os comandos de shell que executou e o que esses comandos imprimiram.
É por essa última parte que os segredos entram. Um agente que depura um
deploy com falha executa env, abre o .env, imprime um arquivo de
configuração e cola um stack trace com uma string de conexão. Em
A transcrição guardou o token, a
Trellix mostrou agentes de código copiando segredos do chaveiro para linhas
de comando, para o histórico do shell e para as próprias transcrições, como
efeito colateral de um trabalho comum. Dados de clientes entram do mesmo
jeito: o agente abre um CSV ou consulta uma tabela para conferir uma
correção, e as linhas vão parar no trace.
Um trace também guarda seu código em pedaços, os nomes de hosts internos e uma linha do tempo do que você estava fazendo. Para um atacante, alguns milhares deles são uma lista de desenvolvedores para phishing, cada um com uma história convincente sobre o projeto em que estava trabalhando naquela semana. É esse risco que está por trás do conselho da Warp sobre mensagens não solicitadas.
A mesma sessão em uma máquina Bromure
O Bromure Agentic Coding roda Claude Code, Codex, Grok, Kimi e omp em VMs Ubuntu no seu Mac. Toda requisição que uma máquina faz, incluindo cada chamada do agente ao seu modelo, passa por um proxy no Mac. É nesse proxy que o Bromure registra o trace, troca as credenciais e aplica suas regras de rede. Pegue a sessão de depuração acima e rode-a ali.
O trace é gravado no seu Mac
O trace de sessão do Bromure responde à pergunta que você faz depois de um
incidente: o que o agente fez? Máquinas novas registram
AI request details: um registro de metadados para cada requisição, mais
os corpos completos de requisição e resposta para os provedores de modelo. O
Trace Inspector (⇧⌘I) transforma esses corpos em uma visão de conversa com
cada chamada de ferramenta, cada comando de shell que o agente executou e
cada arquivo que ele leu ou escreveu. O bromure-cli trace mostra os mesmos
dados em um terminal.
Tudo isso fica em ~/Library/Application Support/BromureAC/traces/ no seu
Mac. Os corpos capturados são selados com AES-GCM sob uma chave guardada no
seu Keychain, com permissões de arquivo 0600. Em uma instalação
individual, nenhum registro de trace, corpo ou resumo é enviado para lugar
nenhum, e o proxy não tem nenhum endpoint de analytics ligado para usuários
individuais. Os classificadores de prompt injection que leem esse mesmo
tráfego também rodam no Mac.
Nenhum fornecedor tem uma cópia, nem os fornecedores dele. Um atacante que invade um provedor de logs não encontra lá nenhuma das suas sessões.
Os segredos no trace são substitutos
De volta à sessão de depuração. O agente executa env, abre o .env e
imprime a configuração de deploy. Em uma máquina Bromure, toda credencial
que você configurou é falsa dentro da VM. ANTHROPIC_API_KEY guarda um valor
sk-ant-api03-brm-, GH_TOKEN e ~/.git-credentials guardam um substituto
ghp_, ~/.aws/config aponta para um helper que entrega uma chave secreta
falsa, e as chaves SSH ficam no host atrás de um socket de agente. Chaves
que você importa de um .env existente também viram substitutos. O proxy só
coloca o valor real na rede para o host ao qual aquela credencial pertence.
Então tudo o que o agente imprime e cola na conversa é um substituto. Isso vale para toda cópia: os logs do provedor de modelo, os arquivos de histórico da própria CLI do agente, um relatório de falha, um trace. Fora da máquina, os substitutos não autenticam em lugar nenhum. Se um deles for enviado a um host para o qual não foi emitido, o proxy bloqueia a requisição com HTTP 451, pausa a VM e mostra This environment may have been compromised com a credencial, o host ao qual ela pertence e o host para onde foi enviada.
O próprio trace do Bromure vai um passo além. Os cabeçalhos Authorization,
Cookie, api-key e semelhantes são reescritos como <redacted> antes de
qualquer gravação, e cada troca de credencial é guardada como uma prévia com
os primeiros e últimos caracteres, como sk-a…f9q3. O segredo real nunca
entra em um registro de trace, criptografado ou não.
Dados de clientes ficam no Mac
Ative PII Protection nas configurações da máquina e o proxy encontra
dados pessoais em cada requisição antes que ela saia para o provedor de
modelo: nomes, endereços de e-mail, números de telefone, números de cartão e
de conta bancária, documentos de identidade e endereços. Ele troca cada
valor por um substituto realista, um nome inventado ou um endereço
@example.com, e devolve os valores reais na resposta, inclusive nos
argumentos das chamadas de ferramenta. A detecção roda no Mac com o modelo
Rampart embutido.
O agente trabalha com as linhas reais, e o provedor vê os substitutos. O
mesmo cliente recebe o mesmo substituto em todas as rodadas, então o cache
de prompt continua funcionando. A Security Timeline conta cada troca,
3 names · 1 phone number → api.anthropic.com, sem registrar um único
valor.
Para trabalho que deve ficar no Mac, direcione o agente para um modelo local. Modelos MLX rodam na GPU do Mac, e essas rodadas não vão para nenhum outro lugar.
Você escolhe quem recebe qualquer coisa
CLIs de agentes falam com mais coisas além do modelo. Relatórios de erro, feature flags e telemetria de uso vão, cada um, para um host próprio. No painel Guardrails da máquina, defina Unmatched traffic como Deny e libere os hosts de que o projeto precisa: o provedor de modelo, sua forja, seus registros de pacotes. Qualquer outra conexão é recusada no Mac, e cada recusa vira uma linha na Security Timeline. Você fica com uma lista escrita das empresas que recebem dados daquela máquina, e foi você quem a escreveu.
Equipes supervisionam sem coletar transcrições
As organizações ainda precisam ver o que seus agentes fazem. Um Mac inscrito em um workspace do bromure.io transmite metadados de sessão para os administradores: ferramentas usadas, arquivos tocados, comandos executados, uso de tokens. Prompts brutos nunca são enviados. A conversa completa fica no trace criptografado no Mac do desenvolvedor. Um ponto vermelho no cabeçalho da janela mostra quando uma máquina está transmitindo, e o Private mode mantém local a atividade de um workspace, por exemplo um que usa uma chave de API pessoal.
A semana seguinte
Os usuários afetados da Warp agora precisam descobrir o que seus traces continham e rotacionar tudo o que pode ter estado neles. Em um Mac com Bromure, a primeira parte leva poucos minutos. Abra o Trace Inspector, filtre por workspace e ative Conversations only para ver cada comando que o agente executou e cada arquivo que leu. Leaks only lista qualquer requisição que levou um token real que o Bromure não emitiu, o que mostra se algum segredo bruto chegou a passar pelos substitutos.
A rotação acontece em um só lugar. As chaves reais ficam em um único cofre criptografado no host. Cole o novo valor no painel Credentials da máquina e a próxima inicialização grava o substituto correspondente. Uma chave armazenada como referência do 1Password é resolvida de novo a cada dois minutos, então uma rotação no 1Password chega às máquinas em execução sem reiniciar.
Os traces ficam em casa
O trace de sessão é gravado no seu Mac e selado sob uma chave do Keychain. Instalações individuais não enviam nada.
Segredos são substitutos
Tudo o que o agente imprime é falso. Os traces mantêm os cabeçalhos de autenticação ocultos e as trocas como prévias curtas.
Dados pessoais são trocados
Nomes, e-mails, números de cartão e endereços chegam ao provedor de modelo como substitutos, detectados no Mac.
Você escolhe os hosts
Com Unmatched traffic em Deny, só os hosts que você liberou recebem alguma coisa, e cada recusa é registrada.
Guarde o registro onde o trabalho aconteceu
Vale a pena guardar traces de agente. É com eles que você descobre o que um agente fez às 3 da manhã e responde a um auditor. A questão é quem os guarda. Cada empresa que armazena o log de decisões do seu agente é mais uma empresa cujos fornecedores podem perdê-lo, e os atacantes agora rodam os próprios agentes para encontrar o fornecedor mais fraco.
O Bromure Agentic Coding guarda o registro completo na máquina onde o agente trabalhou, criptografado sob o seu Keychain, e o preenche com substitutos no lugar dos segredos. Quando o próximo fornecedor anunciar um vazamento, você responde se foi afetado a partir do seu próprio Trace Inspector.
Para ver como os agentes espalham segredos pelas próprias transcrições, leia A transcrição guardou o token. Para o vazamento do OpenCode Console no começo deste mês, leia As chaves estavam no console deles.