Aponte o agente para código em que você não confia. Não perca nada quando ele morder.
Agentes clonam repos de terceiros, instalam dependências e rodam scripts de build escritos por estranhos. Um hook postinstall malicioso ou uma instrução enterrada num README não deveria alcançar seus tokens, suas chaves ou sua rede. Em uma VM Bromure, não consegue.
O problema
Cada npm install é execução remota de código
No momento em que um agente roda `npm install`, `pip install` ou um Makefile de um repo não confiável, código arbitrário de pessoas que você nunca conheceu executa com os privilégios do seu engenheiro. Um script postinstall envenenado, um pacote typosquatted, uma etapa de build que liga para casa — cada um roda como o usuário, com as chaves SSH, as credenciais de nuvem e o ambiente do usuário a uma syscall de distância.
O coding agêntico torna isso mais frequente e mais perigoso. O agente clona com entusiasmo o repo para o qual um ticket o apontou, instala o que o lockfile manda e roda a suíte de testes — e uma prompt injection no README do projeto pode levá-lo a “só rodar este script de setup” antes de qualquer humano revisar uma linha.
A resposta do Bromure
O raio de impacto é uma VM prestes a ser apagada
O Bromure roda o agente — e tudo que ele executa — dentro de uma VM Linux descartável com kernel, sistema de arquivos e pilha de rede próprios. O repo não confiável, suas dependências e seus scripts de build rodam lá, não no laptop do engenheiro. Credenciais reais nunca entram na VM; o agente alcança o Git e os registries de pacotes por um proxy que guarda os segredos.
Se um hook postinstall tenta ler `~/.ssh`, exfiltrar uma variável de ambiente ou abrir um reverse shell, ele encontra uma VM efêmera sem segredos reais, com saída travada em uma allow-list e nada seu para roubar. Quando a tarefa termina, a VM é destruída, e o que quer que o pacote tenha plantado vai junto. E se o README ou um script de build tenta direcionar o próprio agente, a detecção de prompt injection no dispositivo do Bromure sinaliza a tentativa — então uma instrução hostil é pega, não apenas contida.
Como funciona
As credenciais nunca entram na sala
Acesso ao Git e ao registry roda por um proxy de credenciais. O agente e o código não confiável que ele roda recebem acesso com escopo e de curta duração — nunca veem um token real ou uma chave SSH.
Saída na coleira
O acesso à rede é por allow-list por perfil. Uma dependência que baliza para um domínio novo ou para um IP literal é bloqueada, e a tentativa aparece no log.
Ambiente de build efêmero
Clone, install e build acontecem todos em uma VM destruída no fim da tarefa. Um implante persistente não tem nada persistente onde viver.
Injeção pega, não apenas contida
Um classificador no dispositivo escaneia o que o agente lê — READMEs, comentários de código, páginas buscadas, saída de ferramentas — e os arquivos de regras no estilo CLAUDE.md em que ele confia, em busca de instruções que tentam direcioná-lo. A tentativa é sinalizada ou bloqueada antes que o modelo aja, não meramente colocada em sandbox depois.
Não confiável por padrão
Repos novos recebem o perfil bloqueado automaticamente — downloads contidos, segredos via proxy, saída restrita — então “rodar o agente neste projeto externo” já é seguro antes de qualquer um avaliá-lo.
Na prática
O que acontece quando o pacote é hostil
Um engenheiro pede ao agente que avalie uma biblioteca open-source que um ticket sugeriu. O agente clona o repo em uma VM Bromure nova e roda `npm install`. Sem que ninguém saiba, uma dependência transitiva traz um script postinstall que lê variáveis de ambiente e as envia via POST ao endpoint de um atacante.
Dentro da VM, o script roda — e não encontra nada que valha a pena levar. Não há credenciais reais no ambiente; o Git e o registry foram alcançados pelo proxy, que nunca expôs um token. O POST ao domínio do atacante não está na allow-list de saída do perfil, então é descartado e registrado. O registro da sessão mostra a leitura do ambiente, a conexão bloqueada e o destino.
O engenheiro lê o relatório, sinaliza o pacote e fecha a sessão. A VM — e o implante, os arquivos modificados, o payload em cache — é destruída. O laptop nunca rodou uma linha do código hostil, e a única coisa que o atacante aprendeu é que a porta estava trancada.
Arquitetura e integração
Como é realmente construído
O marketing acaba aqui. O que segue é o substrato técnico sobre o qual cada implantação Bromure se apoia — o mesmo, quer você esteja protegendo uma força de trabalho BYOD ou segregando níveis de classificação dentro de uma agência regulada.
Isolamento aplicado pelo hypervisor
Cada perfil roda em sua própria VM Linux leve sobre o Virtualization.framework da Apple — kernel, sistema de arquivos e pilha de rede separados do host. A imagem base é um build Alpine assinado e reprodutível, clonado via copy-on-write do APFS na abertura da sessão (custo de disco próximo de zero). O host não consegue ler a memória da VM; a VM não consegue ler a área de transferência, o sistema de arquivos nem os adaptadores de rede do host, a menos que a política do perfil permita explicitamente.
Identidade: SSO para usuários, mTLS para dispositivos
Enrollment e abertura de sessão são gates de dois fatores que sua organização já opera. OIDC / SAML contra Google Workspace, Okta, Microsoft Entra ou Authentik identifica o usuário. Um certificado de cliente mTLS por dispositivo, emitido pelo seu PKI e vinculado à instalação, identifica a máquina. Revogue qualquer um e a próxima sessão não inicia — sem agente para ser adulterado, sem política local para ser contornada.
Perfil como código
O perfil de trabalho — lista de SaaS permitido, postura de download / área de transferência / capturas de tela, configuração de VPN, layout de teclado, CAs raiz, regras de saída de rede — é um artefato declarativo assinado. Versione-o no Git. Publique pelo seu MDM ou pelo endpoint de configuração do Bromure. Perfis adulterados falham na verificação de assinatura e a sessão se recusa a iniciar. O que roda na máquina do usuário é bit-a-bit o que você autorou.
Plano de rede por perfil
Cada perfil carrega sua própria NIC virtual. Escolha NAT pelo host, bridge para uma interface física, ou túnel por WireGuard, IKEv2 / IPsec ou Cloudflare WARP — todos terminados dentro da VM, invisíveis ao host. Some overrides de DNS, whitelists de portas de saída, isolamento de LAN e um proxy HTTP. A segmentação é aplicada pelo hypervisor, não por um adesivo no firewall.
Pipeline de auditoria
Cada requisição — timestamp, verbo, URL, status, usuário, perfil, dispositivo — é capturada fora da VM em um stream JSON Lines resistente a adulteração e entregue ao sink de logs que você já alimenta (SIEM, data lake, arquivo de retenção). Gravação de sessão opcional apenas-cabeçalhos ou corpo completo para tráfego suspeito. Esquema estável, campos documentados, sem vendor lock-in no formato.
Efêmero por padrão, persistente por opt-in
Feche a janela e a VM é destruída. Tokens, cookies, cache, downloads e qualquer malware que tenha aterrissado durante a sessão vão junto. Perfis que precisam de estado — um conjunto de favoritos, uma sessão salva, um SaaS logado — habilitam um disco persistente criptografado com LUKS e chave vinculada ao Keychain do macOS. A chave nunca sai do dispositivo do usuário.
Perguntas comuns
Um container ou um runner de CI novo já não faz isso?
+
Containers compartilham o kernel do host e são rotineiramente escapados; runners de CI frequentemente guardam justamente as credenciais de deploy que um atacante quer. O Bromure usa VMs isoladas por hardware com kernel próprio e mantém os segredos reais totalmente fora da VM, atrás de um proxy — então mesmo um escape em nível de kernel não encontra nada para roubar.
Como o agente envia código ou instala pacotes privados sem segredos?
+
Pelo proxy de credenciais. Ele se autentica no seu host Git e nos registries privados em nome da VM, injetando acesso com escopo e de curta duração na camada de rede. O agente ganha Git e npm funcionais; nunca ganha uma credencial que pudesse exfiltrar.
O que impede uma prompt injection num README de escalar?
+
Duas camadas. Primeiro, a detecção no dispositivo do Bromure escaneia o conteúdo que o agente lê — READMEs, comentários, páginas buscadas, saída de ferramentas — e os arquivos de regras no estilo CLAUDE.md em que ele confia, e sinaliza ou bloqueia instruções injetadas antes que o modelo aja. E mesmo que uma escape, ela executa dentro da VM — sem credenciais reais, saída por allow-list, sem alcance ao host — então o pior caso é compute desperdiçado em um sandbox prestes a ser apagado, tudo registrado.
Ainda conseguimos os artefatos de build que queríamos?
+
Sim. Saídas legítimas são promovidas para fora da VM pelo mesmo caminho controlado de qualquer download — opcionalmente verificadas no VirusTotal — então você fica com o resultado sem ficar com o risco.
Rode o repo não confiável. Mantenha suas chaves.
Dê aos agentes um ambiente de build onde código hostil não encontra nada e não deixa nada para trás.