
Devcontainer em ambiente isolado para executar o Claude Code em modo bypass com segurança. Construído para auditorias de segurança e revisão de código não confiável.
Um ambiente de desenvolvimento isolado (sandbox) para executar o Claude Code com bypassPermissions ativado com segurança. Criado na Trail of Bits para fluxos de trabalho de auditoria de segurança.
Executar o Claude com bypassPermissions na sua máquina host é arriscado — ele pode executar qualquer comando sem confirmação. Este devcontainer fornece isolamento de sistema de arquivos para que você obtenha os benefícios de produtividade do Claude irrestrito sem arriscar seu sistema host.
Projetado para:
Runtime Docker (um de):
brew install colima docker && colima startPara fluxos de trabalho em terminal (instalação única):
npm install -g @devcontainers/cli
git clone https://github.com/trailofbits/claude-code-devcontainer ~/.claude-devcontainer
~/.claude-devcontainer/install.sh self-install
Os padrões do Colima (QEMU + sshfs) são conservadores. Para melhor desempenho:
# Stop and delete current VM (removes containers/images)
colima stop && colima delete
# Start with optimized settings
colima start \
--cpu 4 \
--memory 8 \
--disk 100 \
--vm-type vz \
--vz-rosetta \
--mount-type virtiofs
Ajuste --cpu e --memory com base no seu Mac (ex.: 6/16 para Pro, 8/32 para Max).
| Opção | Benefício |
|---|---|
--vm-type vz | Apple Virtualization.framework (mais rápido que QEMU) |
--mount-type virtiofs | I/O de arquivo 5-10x mais rápido que sshfs |
--vz-rosetta | Execute contêineres x86 via Rosetta |
Verifique com colima status - deve mostrar "macOS Virtualization.Framework" e "virtiofs".
Escolha o padrão que se adequa ao seu fluxo de trabalho:
Cada projeto tem seu próprio contêiner com volumes independentes. Melhor para revisões pontuais, repositórios não confiáveis, ou quando você precisa de isolamento entre projetos.
Terminal:
git clone <untrusted-repo>
cd untrusted-repo
devc . # Installs template + starts container
devc shell # Opens shell in container
VS Code / Cursor:
Instale a extensão Dev Containers:
ms-vscode-remote.remote-containersanysphere.remote-containersConfigure o devcontainer (escolha um):
# Option A: Use devc (recommended)
devc .
# Option B: Clone manually
git clone https://github.com/trailofbits/claude-code-devcontainer .devcontainer/
Abra a pasta do seu projeto no VS Code, então:
Cmd+Shift+P (Mac) ou Ctrl+Shift+P (Windows/Linux)Um diretório pai contém a configuração do devcontainer, e você clona vários repositórios dentro. Volumes compartilhados entre todos os repositórios. Melhor para engajamentos de clientes, repositórios relacionados, ou trabalho contínuo.
# Create workspace for a client engagement
mkdir -p ~/sandbox/client-name
cd ~/sandbox/client-name
devc . # Install template + start container
devc shell # Opens shell in container
# Inside container:
git clone <client-repo-1>
git clone <client-repo-2>
cd client-repo-1
claude # Ready to work
Para servidores headless ou para pular o assistente de login interativo:
claude setup-token # run on host, one-time
export CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-...
devc rebuild # rebuilds with token
O token é encaminhado para o contêiner. Em cada criação de contêiner, post_install.py executa um handshake de autenticação único para que o claude inicie sem o assistente de login.
Isso contorna o assistente de integração interativo do Claude Code que sempre aparece em contêineres, mesmo com credenciais válidas (#8938).
Se você não definir um token, o fluxo de login interativo funciona como antes.
devc . Instala o template + inicia o contêiner no diretório atual
devc up Inicia o devcontainer
devc rebuild Reconstrói o contêiner (preserva volumes persistentes)
devc destroy [-f] Remove contêiner, volumes e imagem para o projeto atual
devc down Para o contêiner
devc shell Abre shell zsh no contêiner
devc exec CMD Executa comando dentro do contêiner
devc upgrade Atualiza o Claude Code no contêiner
devc mount SRC DST Adiciona um bind mount (host → contêiner)
devc sync [NAME] Sincroniza sessões do Claude Code de devcontainers para o host
devc template DIR Copia arquivos do devcontainer para o diretório
devc self-install Instala devc em ~/.local/bin
Nota: Use
devc destroypara limpar os recursos Docker de um projeto. Remover contêineres manualmente (ex.:docker rm) deixará volumes e imagens órfãos quedevc destroynão conseguirá encontrar.
/insightsO comando /insights do Claude Code analisa seu histórico de sessão, mas ele lê apenas de ~/.claude/projects/ no host. Sessões dentro de volumes do devcontainer são invisíveis para ele.
devc sync copia logs de sessão de todos os devcontainers (em execução e parados) para o host para que /insights possa incluí-los:
devc sync # Sync all devcontainers
devc sync crypto # Filter by project name (substring match)
Devcontainers são descobertos automaticamente via labels Docker — não é necessário saber nomes ou IDs de contêineres. A sincronização é incremental, então é seguro executar repetidamente.
Arraste arquivos do seu host para o painel Explorer do VS Code — eles são copiados para /workspace/ automaticamente. Nenhuma configuração necessária.
devc mountPara disponibilizar um diretório do host dentro do contêiner:
devc mount ~/drop /drop # Read-write
devc mount ~/secrets /secrets --readonly
Isso adiciona um bind mount ao devcontainer.json e recria o contêiner. Montagens existentes são preservadas em atualizações do devc template.
Dica: Uma "pasta de transferência" compartilhada é útil para passar arquivos sem montar todo o diretório home.
Nota de segurança: Evite montar grandes diretórios do host (ex.:
$HOME). Cada caminho montado é gravável de dentro do contêiner a menos que--readonlyseja especificado, o que compromete o isolamento de sistema de arquivos que este projeto fornece.
Por padrão, os contêineres têm acesso total à rede de saída. Para maior segurança, use iptables para restringir o acesso à rede.