O resumo
A linha que importa é a da leitura. As outras são iguais.
macOS e Linux: nada existe até ser permitido
A leitura é negada por padrão. O agente não enxerga o sistema de arquivos e recebe acesso a um conjunto pequeno: o worktree, temp, os diretórios do próprio agente. O efeito prático é o que você espera de um sandbox:- Seu
~/.sshnão é “proibido” — ele não existe no mundo do agente. - Um repositório seu em outra pasta não existe.
- O
.envdo projeto ao lado não existe. - Um caminho de segredo que ninguém previu também não existe, porque nada existe por padrão.
Conteúdo, não metadados. O agente pode verificar se um arquivo existe, seu tamanho e sua data. Só o conteúdo é negado por padrão — resolver caminhos é necessário para qualquer programa funcionar.
bubblewrap é dependência obrigatória — sem ele, o core recusa criar sessões de agente. Distribuições com namespaces de usuário não-privilegiados desabilitados recusam a sessão com mensagem explícita.
O Codex tem contenção própria no macOS. O Seatbelt do TYBA não envolve o Codex — aninhar as duas políticas falha no sistema. O Codex aplica o Seatbelt nativo dele por comando. É contenção real, mas não é a mesma, e restringir a leitura do Codex ao nível do Claude Code ainda é trabalho pendente.
Windows: aberto por padrão, com uma lista de segredos fechados
A jaula é um token restrito com Integrity Level Low e um SID sintético por sessão. Ela é sólida no que se propõe: a escrita é confinada ao worktree por ACE, e escrever fora é negado. Assim como nos outros sistemas, ela é fail-closed — falhou, o agente não sobe. Mas o modelo de leitura é invertido. Em vez de negar tudo e abrir exceções, ele deixa aberto e fecha uma lista de segredos conhecidos:O que isso significa na prática
O que está na lista está protegido. Suas chaves SSH e credenciais de nuvem são tão inacessíveis no Windows quanto no macOS. O que não está na lista, o agente lê. Por exemplo:- O
.envde qualquer outro projeto seu. - Qualquer outro repositório na sua máquina.
- Seus Documentos, sua Área de Trabalho.
Por que é assim
Deny-by-default de leitura no Windows exigiria AppContainer, e o TYBA escolheu não usá-lo — o custo de compatibilidade inviabilizaria os agentes que o produto existe para rodar. O token restrito é o mecanismo que faz o agente iniciar. É um tradeoff assumido, não um descuido. Mas ele muda a garantia, e você merece saber disso antes de instalar, não depois.O que fazer com isso
Se o seu modelo de ameaça é “quero rodar agente sem que ele leia minhas chaves”, o Windows entrega. Se é “quero rodar agente de forma que ele não veja nada além do projeto atual”, o Windows não entrega hoje. Use macOS ou Linux.read_allow no Windows
O campo sandbox.read_allow do config do usuário não tem efeito no Windows. Ele é aceito e validado, mas descartado.
Não há perda: como a leitura já está aberta, tudo que ele poderia conceder já está concedido. E o que ele não consegue conceder — os segredos da lista — ele também não consegue no macOS, onde as negações vencem qualquer permissão.
O que vale igual em todos
Estas garantias não dependem de plataforma:- Push do agente para
main/masteré recusado pelo core. Sempre. - O agente não tem suas credenciais. Push, fetch e merge são executados pelo TYBA, fora da jaula. A sessão do agente nunca teve rede autenticada.
- Refs compartilhadas só no namespace
refs/heads/tyba/. Um agente comprometido não move a suamainlocal. - Commits do agente não são assinados. Eles nascem num worktree descartável e são revisados por você antes de qualquer coisa sair da máquina.
- Toda ação passa pelo gate de aprovação, com a mesma classificação de risco.
Veja também
- Classificação de risco — o que precisa da sua aprovação
- Configuração do usuário —
sandbox.read_allow