
Sandbox e proxy MCP que bloqueia agentes de codificação de IA de ler chaves SSH, credenciais AWS e arquivos .env, com política de negação por padrão e logs de auditoria à prova de adulteração.
O sandbox do Claude Code permite que um agente leia suas chaves SSH e credenciais da AWS por padrão. O Aegis não.
Duas camadas, ambas verificadas em hardware real.
Sandbox de kernel — o próprio shell do agente não consegue acessar um caminho negado:
$ ! cat ~/.ssh/id_rsa
cat: /Users/you/.ssh/id_rsa: Operation not permitted
$ ! cat ~/.aws/credentials
cat: /Users/you/.aws/credentials: Operation not permitted
$ tail ~/Library/Application\ Support/Aegis/denials.log
kernel denied file-read-data /Users/you/.ssh/id_rsa to cat(pid 41560)
kernel denied file-read-data /Users/you/.aws/credentials to cat(pid 42180)
Proxy MCP — mesma ferramenta, mesmo arquivo, com e sem o Aegis na frente:
direct to the server: allowed: TOKEN=proof-env-secret
through aegis proxy: AEGIS DENIED: read_text_file
Reason: path matches deny rule '.env'
Rule: deny_paths
Cada linha é respaldada por um teste executado nesta versão; onde algo ainda não foi testado, isso é indicado.
aegis workspace add / remove / list — altera em quais pastas o agente pode trabalhar sem editar o policy.json. Adicionar sempre exige --confirm-grant; remover nunca exige. add recusa seu diretório home, qualquer coisa que contenha os próprios arquivos do Aegis, um caminho com .., uma pasta que não existe, um symlink dentro de um workspace e um workspace dentro ou ao redor de outro. Toda alteração é registrada no log de auditoria e regenera o perfil do sandbox. Uma sessão já em execução mantém os workspaces com os quais começou — incluindo um que você acabou de remover — medido em relação a uma sessão em sandbox ativa.aegis policy set-folder, concedendo acesso onde quer que o link apontasse; e um workspace criado dentro de outro podia depois ser trocado por um symlink e seguido na próxima inicialização. Ambos foram reproduzidos na 0.8.1 e agora são testes de regressão permanentes comprovadamente falhos ali.policy.json são recusados. Um caminho relativo era resolvido em relação à pasta a partir da qual o Aegis foi iniciado, então aegis run e o wrapper de inicialização podiam impor sandboxes diferentes a partir de uma mesma policy (medido: digests de perfil diferentes). Os caminhos devem ser absolutos ou começar com ~/.aegis doctor não reporta mais uma divergência entre uma edição e a próxima inicialização.aegis run e aegis doctor imprimem o caminho real do Claude Code — lido do wrapper que o Aegis escreveu — e /login, para executar fora do sandbox. Não corrigido: um token revogado ou expirado ainda aparece como logado até a primeira mensagem falhar (o status do Claude Code não reporta expiração), e o login ainda não pode acontecer dentro do sandbox; isso exige um broker de credenciais que ainda não existe.aegis init protege um novo usuário que ainda não fez login. Descoberto ao seguir o walkthrough em um ambiente limpo: na 0.8.1, um Claude Code que nunca havia feito login ficava sem wrapper por padrão, atrás de uma pergunta que a documentação nunca mencionava, então claude permanecia fora do sandbox. Agora, depois que você responde sim ao sandboxing, ele recebe o wrapper, com um aviso destacado para fazer login uma vez fora do sandbox (o caminho real do Claude Code, depois /login); os passos finais do aegis init colocam isso em primeiro lugar, e aegis doctor falha até que você o faça. A mesma execução também corrigiu o texto de abertura e encerramento do init, unificou a instrução de login de aegis init, aegis run e aegis doctor, e impediu que uma alteração sem efeito imprimisse nothing to change (nothing to change).Ainda não testado na 0.9.0: Linux; clientes diferentes do Claude Code; o fluxo de /login de ponta a ponta; um app desktop reconstruído.
Fica entre o seu agente de programação com IA e a sua máquina:
cat .env não consegue contorná-loaegis doctor, e com checkpoint
feito de fora do sandbox sob uma chave que o sandbox não consegue ler nem escreverNovo por aqui? docs/getting-started.md é o caminho passo a passo, incluindo as duas perguntas cujo padrão é Não.
Seguiu instruções anteriores que mencionavam aegis-mcp? Esse pacote não é o Aegis — é um projeto
não relacionado instalado sob o mesmo nome de importação, aegis. Remova-o primeiro:
python3 -m pip uninstall aegis-mcp
Se o aegis-sandbox já estiver instalado, essa desinstalação também apaga dois dos seus arquivos, então reinstale-o
em seguida: python3 -m pip install --force-reinstall aegis-sandbox.
python3 -m pip install aegis-sandbox
aegis init # detects Claude Code / Cursor, asks a few questions
aegis doctor # proves the boundary is actually in place
A atualizar? Execute novamente aegis init. O seu policy.json é seu e nunca é reescrito sem o seu conhecimento, por isso um
novo domínio de sandbox não aparece por si só — e sem o endpoint de token OAuth, um cliente em sandbox deixa de
funcionar quando o seu token expira. O aegis init oferece os novos hosts; aceitar é uma única tecla.
aegis init; o aegis doctor falha se um cliente envolvido não tiver sessão iniciadaModelo de ameaças completo: THREAT-MODEL.md
MIT