Uma camada útil, com limites conhecidos
O ai-jail mantém um agente de código com IA longe das suas chaves, do seu diretório home e do resto da sua máquina. Ele é um sandbox de processo, então compartilha o seu kernel. Quando o código é hostil, ele não substitui uma máquina virtual descartável.
O que ele foi feito para barrar
Uma página web, um pacote ou um arquivo no repositório pode convencer um agente a se comportar mal. É isto que ele vai procurar nessa hora, e não vai encontrar.

Fora de alcance
- Seu diretório home e as credenciais que estão nele. O agente recebe um home novo e vazio, então
~/.sshe~/.awsnão existem lá dentro. - Segredos no seu shell. As variáveis de ambiente são reduzidas a uma allowlist pequena, então os tokens exportados ficam de fora.
- A rede. Ela fica desligada, então nada do que o agente lê pode ser enviado para lugar nenhum.
- A memória compartilhada do host, o seu servidor gráfico e o seu clipboard. A saída do agente passa por um filtro que descarta sequências de terminal de clipboard e de consulta.
- Digitar no seu terminal. O Linux bloqueia a chamada
TIOCSTI, que simula teclas, e o macOS restringe o controle de terminal ao único terminal que o ai-jail criou para aquela execução. - As próprias regras. Um arquivo
.ai-jaildentro de um repositório não é confiável: ele pode apertar o sandbox, nunca abrir.
Onde o muro acaba
A jaula e o seu sistema se apoiam no mesmo kernel. Um bug nesse kernel, num driver ou no backend do sandbox é um caminho por fora do muro, e o ai-jail não tem o que fazer a respeito. Uma máquina virtual traz o próprio kernel, e por isso é a fronteira mais forte.

O que continua em risco
- Vulnerabilidades de kernel e de drivers. Todo processo em sandbox fala com o mesmo kernel que o resto da sua máquina.
- Bugs no seu emulador de terminal, principalmente com
--terminal-passthrough, que desliga o filtro de saída. - Defeitos no próprio backend do sandbox: bubblewrap, Landlock e seccomp no Linux,
sandbox-execno macOS. - Segredos dentro do projeto. Um arquivo
.envno repositório pode ser lido, a menos que você o mascare. Veja como mascarar arquivos. - As máscaras cobrem só os caminhos que existem quando o sandbox inicia. Um arquivo de segredos criado depois, durante a sessão, não fica escondido.
- Side channels e algumas classes de comunicação entre processos.
- No macOS, o
sandbox-execfoi marcado como obsoleto pela Apple e não equivale ao isolamento do Linux. Veja as diferenças no macOS.
Opções que abrem o muro
Tudo o que está abaixo fica desligado até você ligar, e cada item dá acesso real ao agente. Como definir cada um está na página Configurar.
| Opção | O que qualquer coisa no sandbox passa a poder fazer |
|---|---|
--network | Enviar para qualquer lugar tudo o que consegue ler. O tráfego é irrestrito e não há filtro por domínio. |
--docker | Agir como root na sua máquina por meio do daemon do Docker. |
--x11 | Capturar teclas e tirar screenshots de outras janelas X11. |
--systemd-user | Pedir ao seu gerenciador de usuário do systemd para rodar serviços no host. |
--inherit-env | Ler o ambiente inteiro do seu shell, com os segredos. |
--agent-state | Usar o login salvo do agente, por exemplo o ~/.claude do Claude. |
--audio | Gravar e reproduzir áudio enquanto estiver ligada. |
--no-private-home | Ver o seu diretório home real. É uma exceção ampla; prefira mapear só o caminho de que você precisa. |
Na dúvida, ele se recusa a iniciar
Um sandbox que inicia, sem avisar, mais fraco do que você pediu é pior do que um que para com um erro. Nestes casos o ai-jail para.
- Um arquivo de configuração que existe e está inválido ou ilegível.
- Um
.ai-jailde projeto que é um symlink. Um~/.ai-jailglobal que é symlink só é seguido até um arquivo regular que pertence a você, em que ninguém mais pode escrever, fora do projeto. --lockdownquando o Landlock, as regras de sistema de arquivos do próprio kernel, está ausente, parcial ou falha ao ser aplicado.--lockdown --no-landlocktambém é rejeitado.--allow-tcp-port. Essa interface não consegue restringir UDP, então a flag é aceita por compatibilidade e a inicialização falha.- Um
BWRAP_BINque aponta para um binário do bubblewrap que alguém além do root poderia ter trocado. Ele é ignorado com um aviso, e sem um bubblewrap confiável a inicialização falha.
Como o projeto é verificado
Um único mantenedor toca o projeto, tudo em aberto. Abaixo está o que é verificado e o que não é.
- 19
- testes de integração de fuga do sandbox, que tentam escrever em
/usr, ler~/.ssh, chamarptraceebpf, e esperam falhar - 720
- testes unitários na árvore de código-fonte na versão 1.22.0
- 0
- requisições de rede na inicialização. A checagem de atualização é opt-in, com
--update-check
Como uma release é feita
- As tags de release são assinadas, e o CI verifica cada uma contra um fingerprint de chave fixado no repositório.
- Cada GitHub Action é fixada num SHA de commit, e as actions são restritas a uma allowlist.
- Os builds usam uma toolchain de Rust fixada e dependências com
--locked. - Os binários de macOS são assinados e notarizados pela Apple.
- Cada arquivo compactado vem com um checksum SHA-256, e o job de publicação confere todos de novo.
O que o documento de release diz que ainda falta
- Os segredos de assinatura e de publicação ainda ficam guardados no nível do repositório e deveriam ir para os ambientes de release.
- Ainda não há um ruleset que obrigue toda tag
v*a ser assinada. - Releases imutáveis não estão habilitadas.
- A publicação no crates.io ainda usa um token. O trusted publishing está planejado.
- Com um único mantenedor, não há um segundo revisor para as mudanças nem para as releases.
Reportar uma vulnerabilidade
Não abra uma issue pública. Use o relato privado de vulnerabilidades do GitHub, inclua os passos para reproduzir e as versões afetadas, e dê tempo para coordenar uma correção.
Perguntas comuns
O agente consegue escapar?
É seguro rodar com a rede ligada?
Ele já foi auditado?
Coloque seu agente atrás das grades
O ai-jail é um binário único que não precisa de daemon nem de root. Você acrescenta uma palavra na frente do comando que já usa.
brew tap akitaonrails/tap && brew install ai-jailai-jail claude