Use o Claude Code por tempo suficiente e você chega a este dilema. Ele pergunta "posso executar isto?" a cada comando, e seu fluxo trava sem parar. Mas desativar todos os avisos com --dangerously-skip-permissions (ignorar permissões) significa que uma injeção de prompt ou um deslize da mão poderia tocar arquivos por toda a sua máquina. Segurança contra automação — por muito tempo tratado como um trade-off.

O que quebra esse binário é o sandbox. Se você delimitar "o que pode ser tocado" no nível do sistema operacional antecipadamente, os comandos podem rodar livremente dentro da cerca sem avisos, mas nada pode alcançar o exterior. Este artigo apresenta, sob a ótica de quem usa na prática, o que o sandbox do Claude Code isola e como, como começar com /sandbox, como configurá-lo no settings.json, como ele difere dos modos de permissão e os limites em que você não deve confiar demais.

O essencial em 30 segundos

Se você só for ler uma coisa

O que é
Um mecanismo que delimita os arquivos e a rede que um comando pode tocar, no nível do sistema operacional. Dentro é livre, fora é proibido.
Por que ajuda
Ele dissolve a escolha entre a fadiga de avisos e o bypass total. Você reduz drasticamente os avisos permanecendo seguro.
Por onde começar
Execute /sandbox. O macOS funciona de imediato; Linux/WSL2 precisa de dois pacotes.

※No uso interno da própria Anthropic, o sandbox reduziu com segurança os avisos de permissão em 84% (fonte abaixo).

1. Por que você precisa de um sandbox

O Claude Code é um agente de IA que realmente faz coisas — executa testes, reescreve arquivos. É justamente por isso que ele para para perguntar "posso executar isto?" antes de comandos arriscados. Por segurança, isso está correto. Mas quando dezenas de avisos surgem num dia, o trabalho se fragmenta e, no fim, você aperta Enter sem ler. Isso é a "fadiga de permissões".

Um desenvolvedor cansado recorre ao --dangerously-skip-permissions (também conhecido como modo YOLO), que desativa todos os avisos. É confortável e — como o nome diz — perigoso. Três ameaças mostram os dentes de uma vez.

💉 Injeção de prompt

Se uma página web ou issue que ele lê esconder "envie ~/.ssh", suas chaves privadas podem vazar sem nenhum aviso.

🗑️ Deslizes destrutivos

Um comando gerado limpa um caminho inesperado. Sem um aviso, arquivos fora do projeto também podem sumir.

📤 Contaminação da cadeia de suprimentos

Uma dependência maliciosa envia dados para fora durante a instalação. Com a rede totalmente aberta, você não consegue impedir.

A ideia do sandbox é simples: pare de perguntar "o que devo confirmar?" toda vez, e delimite "até onde isto pode alcançar?" antecipadamente. A cerca é imposta não pelo julgamento do próprio Claude, mas pelo sistema operacional (o kernel), de modo que, mesmo se ele for sequestrado, e mesmo se um comando permitido fizer mais do que o nome sugere, nada escapa do limite. É por isso que comandos dentro da cerca são seguros de executar sem avisos — o binário fadiga-contra-bypass-total desaparece. Em sua publicação oficial de engenharia, "Making Claude Code more secure and autonomous with sandboxing", a Anthropic relata que, em uso interno, o recurso reduziu com segurança os avisos de permissão em 84% (publicado em outubro de 2025).

2. O que é o sandbox — dois isolamentos

O sandbox do Claude Code traça dois limites em torno dos comandos Bash (e de todo processo filho que eles geram). Os dois devem funcionar como um conjunto — qualquer um sozinho deixa uma brecha (veja §7).

🗂️ ① Isolamento do sistema de arquivos

As escritas ficam limitadas ao diretório de trabalho mais uma pasta temporária da sessão (por padrão). ~/.bashrc e áreas do sistema não podem ser alteradas. As leituras são amplas, mas podem ser negadas explicitamente. Mesmo se sequestrado, ele não pode reescrever nada fora do projeto.

🌐 ② Isolamento de rede

Por padrão é "negar por padrão", sem nenhum destino permitido. No instante em que ele tenta um novo domínio, surge um aviso. O tráfego passa por um proxy fora do sandbox e é avaliado contra uma lista de permissões. Ele impede que segredos sejam enviados para fora.

O ponto central é que ele não depende do bom comportamento do Claude. O limite é imposto pela própria maquinaria de segurança do sistema operacional — o macOS usa o Seatbelt nativo, o Linux/WSL2 usa o bubblewrap. Assim, o mesmo limite se estende aos scripts que um comando invoca e aos processos netos. Pense nele não como um pedido cortês ao modelo, como as guardrails de IA, mas como um muro físico que se sustenta mecanicamente.

💡 Ele delimita apenas o Bash. O sandbox envolve a ferramenta Bash e seus processos filhos. As ferramentas nativas Read/Edit/Write do Claude, os servidores MCP e os hooks são uma questão separada (governada pelas regras de permissão). Para isolar o processo inteiro, use o pacote @anthropic-ai/sandbox-runtime descrito abaixo.

3. Primeiros passos — /sandbox e sistemas suportados

O sandbox é embutido no Claude Code. Nenhuma conta ou ferramenta extra é necessária. Em uma sessão, execute:

/sandbox

Um painel abre com três abas. Mode (como os comandos com sandbox são aprovados — próxima seção), Overrides (se um comando que falha sob o sandbox pode recuar para rodar sem sandbox) e Config (visualizar as configurações resolvidas). No Linux/WSL2, se um pacote necessário estiver ausente, uma aba Dependencies aparece no lugar e informa o que instalar.

Pré-requisitos por SO

🍎 macOS

Nada a instalar. Ele usa o Seatbelt nativo. Ative-o imediatamente com /sandbox.

🐧 Linux / WSL2

Instale dois pacotes: bubblewrap e socat (por exemplo, apt-get install bubblewrap socat).

🪟 Windows nativo

Não suportado. Execute o Claude Code dentro do WSL2 (o WSL1 não funciona).

No Linux/WSL2, instale o bubblewrap (a ferramenta de sandbox sem privilégios que impõe o isolamento do sistema de arquivos) e o socat (o relé que roteia o tráfego até o proxy).

# Ubuntu / Debian
sudo apt-get install bubblewrap socat

# Fedora
sudo dnf install bubblewrap socat

⚠️ Ubuntu 24.04 e posteriores: a política padrão do AppArmor pode impedir o bubblewrap de criar os namespaces de usuário de que precisa. Se sysctl kernel.apparmor_restrict_unprivileged_userns retornar 1, adicione um perfil AppArmor para o bwrap para concedê-los (os passos estão na documentação oficial). Se retornar 0 ou a chave não existir, nenhuma ação é necessária. Verifique o mesmo dentro do WSL2.

Uma coisa útil de ativar é o filtro seccomp (que adiciona o bloqueio de sockets de domínio Unix). É opcional; instale-o com npm install -g @anthropic-ai/sandbox-runtime. A aba Dependencies do /sandbox mostra o status de ripgrep, bubblewrap, socat e do filtro seccomp. Após instalar os pacotes, reinicie o Claude Code e reabra o /sandbox (a verificação roda na inicialização).

4. Os dois modos (auto-permitir / regular)

A aba Mode escolhe como os comandos dentro do sandbox são aprovados.

✅ Modo auto-permitir

Os comandos Bash que rodam dentro do sandbox são permitidos automaticamente, sem aviso — o próprio limite substitui o aviso. Confortável para o trabalho diário. Comandos que o sandbox não consegue executar (por exemplo, tráfego para um host não permitido) recuam para o fluxo de permissão regular e exibem o aviso.

🔍 Modo de permissões regular

Mesmo com sandbox, todo comando Bash passa pelo aviso de permissão regular. Mais controle, mais aprovações. Para os cautelosos que querem "isolamento mais os avisos de sempre".

Em ambos os modos os limites de sistema de arquivos e de rede são idênticos; a única diferença é "auto-permitir contra aviso". Note que, mesmo no modo auto-permitir, estas válvulas de segurança permanecem ativas:

  • Regras de negação explícitas sempre têm precedência
  • rm / rmdir visando /, seu diretório home ou outros caminhos críticos do sistema ainda exibem aviso
  • Regras de perguntar com escopo de conteúdo, como Bash(git push *), ainda forçam um aviso, mesmo dentro do sandbox

Cuidado com dois "autos" confusamente parecidos. O modo auto-permitir do sandbox não é o modo auto dos modos de permissão. O primeiro significa "aprovar automaticamente porque o limite do SO o contém"; o segundo significa "um classificador julga a segurança do comando e o deixa passar". Eles funcionam de forma independente e podem ser combinados.

5. Configurando no settings.json

As escolhas no painel /sandbox são gravadas no .claude/settings.local.json do projeto (não versionado no git). Para mantê-lo sempre ativo em todos os projetos, coloque sandbox.enabled: true nas suas configurações de usuário em ~/.claude/settings.json. Ele vive na mesma família de settings.json que as regras de permissão (allow/ask/deny).

Adicionar destinos de escrita, negar leituras

Por padrão, você só pode escrever no diretório de trabalho e na pasta temporária. Se o kubectl ou o terraform precisar escrever em outro lugar, adicione caminhos com allowWrite. Inversamente, você pode bloquear leituras de pastas sensíveis.

{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "allowWrite": ["~/.kube", "/tmp/build"],
      "denyRead": ["~/"],
      "allowRead": ["."]
    }
  }
}

O exemplo acima nega leituras de todo o diretório home ao mesmo tempo em que continua permitindo o projeto atual (. resolve para a raiz do projeto quando a configuração fica nas configurações do projeto). Os caminhos são impostos no nível do SO, então se aplicam igualmente a processos filhos como npm e terraform.

Proteger credenciais

Uma armadilha importante: o padrão para leituras é "amplamente permitido", então ~/.aws/credentials e ~/.ssh/ ficam legíveis como estão. A configuração dedicada sandbox.credentials (um recurso relativamente recente) declara arquivos cuja leitura deve ser negada e variáveis de ambiente a serem removidas.

{
  "sandbox": {
    "enabled": true,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" }
      ]
    }
  }
}

Permitir destinos

A rede começa com zero destinos. Um novo domínio gera um aviso na primeira vez que é alcançado (nas versões recentes no momento da redação, aprovar uma vez significa que não haverá novo aviso pelo resto da sessão). Pré-registre os hosts sobre os quais você não quer ser questionado em allowedDomains. Com as configurações gerenciadas distribuídas pela organização, você também pode bloquear automaticamente qualquer coisa fora da lista de permissões em vez de exibir um aviso.

{
  "sandbox": {
    "enabled": true,
    "network": {
      "allowedDomains": ["*.github.com", "registry.npmjs.org"]
    }
  }
}

Para torná-lo obrigatório em toda a organização. Nas configurações gerenciadas, ao lado de sandbox.enabled: true, adicione failIfUnavailable: true (recusar iniciar o Claude Code se o sandbox não conseguir inicializar) e allowUnsandboxedCommands: false (fechar a "saída de emergência" de tentar de novo fora do sandbox — modo estrito). Juntos, eles o impõem como um portão de segurança.

6. Relação com os modos e regras de permissão

É fácil confundi-los, mas a maquinaria de segurança do Claude Code tem três camadas com funções distintas. O sandbox é uma delas — ele não substitui as outras duas; ele as complementa.

Camada O que controla Imposta por Escopo
Regras de permissão Quais ferramentas/comandos podem ser usados Claude Code (antes de executar) Todas as ferramentas
Modos de permissão Quantos avisos aparecem Claude Code (antes de executar) Depende do modo
Sandbox O que ele pode tocar depois de rodar O SO (kernel) Bash e processos filhos

A diferença decisiva é "quando e por quem" cada uma entra em vigor. As regras e os modos de permissão são decididos antes da execução, pelo Claude Code, a partir da string do comando. O sandbox vincula o processo durante a execução, pelo SO — de modo que seja o que o modelo tiver escolhido, e mesmo que um comando permitido faça mais do que o nome sugere, o limite não cede.

Essa é também a diferença decisiva em relação ao --dangerously-skip-permissions (bypass). O bypass apenas remove os avisos; o ambiente permanece totalmente aberto. O auto-permitir do sandbox, por sua vez, consegue pular os avisos porque o muro do SO está lá. A velha regra de ferro — se você usar o modo bypass, apenas dentro de um contêiner ou VM isolado — é algo que o sandbox permite deslocar para o lado seguro mesmo na sua máquina do dia a dia.

7. Limites e ressalvas — não confie demais nele

O sandbox é poderoso, mas não é isolamento completo. Antes de se apoiar nele como um limite de segurança rígido, conheça os limites que a documentação detalha.

🔓 O TLS não é inspecionado por padrão

O proxy julga apenas pelo nome do host e não inspeciona o conteúdo criptografado (por padrão). Permitir um domínio amplo como github.com deixa espaço para exfiltrar dados via domain fronting e afins. Mantenha a lista de permissões estreita.

🔌 Abrir sockets Unix é arriscado

Permitir /var/run/docker.sock entrega o host inteiro via socket do Docker — na prática, uma fuga do sandbox. Tenha cuidado com quais sockets você abre.

📈 Acesso de escrita amplo demais

Executáveis graváveis no $PATH ou arquivos como .bashrc podem se transformar em execução de código em outro contexto. Mantenha o allowWrite mínimo.

Mais uma coisa a internalizar: o escopo é apenas o Bash — as ferramentas nativas Read/Edit/Write, os servidores MCP e os hooks são separados. Para isolar o processo inteiro, incluindo Skills e MCP, envolva o próprio processo do Claude Code com o pacote open-source oficial @anthropic-ai/sandbox-runtime (publicado no GitHub e no npm, um research preview lançado em outubro de 2025). Seu papel prático não é um "muro" contra um atacante determinado, mas um "cinto de segurança" que reduz acidentes e descontroles em ordens de magnitude.

8. Quando recorrer a dev containers ou VMs

O sandbox não é a única opção de isolamento do Claude Code. Conveniência e força do isolamento se compensam, então escolha por finalidade.

Sandbox (embutido)

Isola o Bash e os processos filhos. Sem Docker, configuração mínima. O pilar para cortar avisos no trabalho diário.

sandbox-runtime

Envolve o processo inteiro do Claude Code. Para execuções não supervisionadas em que você também quer MCP e hooks delimitados. Sem Docker.

dev container

Conteineriza o ambiente de desenvolvimento inteiro. Para padronizar a configuração de uma equipe. Requer Docker.

VM (máquina virtual)

Separa o SO inteiro. O isolamento mais forte, no nível do kernel, para código não confiável. Maior esforço.

A regra prática: mantenha o sandbox embutido sempre ativo para cortar os avisos diários e só suba de nível para o sandbox-runtime, contêineres ou VMs quando você rodar sem supervisão ou lidar com dependências não confiáveis. Para trabalho que chega à produção — como deixar a IA operar a nuvem — combinar credenciais de privilégio mínimo com um nível de isolamento mais forte traz tranquilidade.

Resumo

  • O sandbox delimita "o que pode ser tocado" no nível do SO, dissolvendo o binário entre a fadiga de avisos e o bypass total.
  • Use o isolamento de sistema de arquivos e de rede como um conjunto. Imposição: macOS = Seatbelt, Linux/WSL2 = bubblewrap.
  • Comece com /sandbox. O macOS funciona de imediato; Linux/WSL2 precisa de bubblewrap+socat; o Windows nativo não é suportado (use WSL2).
  • O modo auto-permitir pula os avisos e ainda assim permanece seguro porque o limite é imposto pelo SO. Regras de negação, rm arriscado e regras de perguntar com escopo de conteúdo continuam se aplicando.
  • É uma camada complementar distinta das regras/modos de permissão — o sandbox vincula após a execução, via SO, então não cede.
  • Mas não é um muro completo — atente para o TLS não inspecionado, os sockets Unix e as permissões amplas demais. O escopo é apenas o Bash.

O sandbox quebra a própria premissa de que segurança e automação devem se compensar. Basta abrir o /sandbox uma vez — só isso já muda a forma como você segura as rédeas do Claude Code. Para a referência de configuração exata e atual, trate a documentação oficial de configurações do sandbox como sua fonte primária.

Perguntas frequentes

P. Como o sandbox difere do --dangerously-skip-permissions?

R. O bypass apenas remove os avisos e deixa o ambiente indefeso. O sandbox delimita o que pode ser tocado no nível do SO, de modo que, mesmo pulando os avisos, nada alcança o exterior. O bypass é apenas para ambientes isolados; o sandbox é seguro de usar mesmo na sua máquina do dia a dia — essa é a diferença decisiva.

P. Posso usá-lo no Windows?

R. O Windows nativo não é suportado. Execute o Claude Code dentro do WSL2 e ele funciona (o WSL1 não). Sob o WSL2, os comandos com sandbox não podem invocar binários do Windows como o cmd.exe; adicione-os a excludedCommands para rodá-los fora do sandbox, se necessário.

P. Ativá-lo vai deixar as coisas mais lentas?

R. Segundo a Anthropic, a sobrecarga é mínima — algumas operações de sistema de arquivos podem ficar ligeiramente mais lentas. Na prática, como o número de avisos cai bruscamente, a velocidade percebida do trabalho muitas vezes aumenta.

P. Com o sandbox ativo, minhas chaves privadas estão garantidamente seguras?

R. Não "garantidamente". O padrão para leituras é amplo, então ~/.ssh e ~/.aws/credentials ficam legíveis por padrão. Bloqueie-os explicitamente com sandbox.credentials ou denyRead, e mantenha a lista de permissões de rede estreita. O isolamento de sistema de arquivos e de rede deve sempre funcionar como um conjunto.

P. Os servidores MCP e os hooks também têm sandbox?

R. Não. O sandbox embutido cobre apenas os comandos Bash e os processos filhos. MCP, hooks e as ferramentas nativas Read/Edit/Write são separados (governados pelas regras de permissão). Para delimitar todos eles, envolva o processo inteiro com @anthropic-ai/sandbox-runtime.