Para rodar o Claude Code no Docker, inicie-o em um contêiner que monta só a pasta do projeto: assim o agente trabalha à vontade ali enquanto o resto do seu disco fica fora de alcance. Dá para fazer isso na mão com uma imagem e uma linha longa de docker run, ou marcar uma caixa no AgentVera e receber o mesmo contêiner já configurado, com login, identidade do git e dono dos arquivos resolvidos.
Este guia mostra do que um contêiner protege (e do que não protege), o caminho faça-você-mesmo e como funcionam os agentes Docker do AgentVera.
O que um contêiner protege, e o que não protege
Um agente de código roda comandos como o seu usuário. Sem sandbox, ele pode ler qualquer arquivo que você lê: outros repositórios, ~/.ssh, credenciais de nuvem, dotfiles. Na maior parte do tempo, tudo bem. O risco é aquele comando ruim raro, uma limpeza confusa ou uma prompt injection escondida em uma página web ou no README de uma dependência.
| Risco | Terminal comum | Contêiner Docker |
|---|---|---|
| Lê arquivos fora do projeto | Sim | Só o que você monta |
| Lê chaves SSH e credenciais | Sim | Não, a menos que estejam montadas |
| Apaga arquivos fora do projeto | Possível | Fora de alcance |
| Instala ferramentas globais na sua máquina | Possível | Só dentro do contêiner, somem ao sair |
| Altera ou apaga arquivos no projeto | Possível | Ainda possível |
| Acessa a internet | Sim | Sim, por padrão |
Duas linhas importam mais. A pasta do projeto continua gravável, então faça commit com frequência ou use um git worktree. E o Docker não corta a rede sozinho: se você quer isso, precisa de regras de rede extras. Para uma visão mais ampla das ameaças, veja segurança de agentes de código com IA.
Rodar o Claude Code no Docker na mão
O caminho faça-você-mesmo tem três partes: uma imagem, um comando de execução e uma decisão sobre o login.
1. Monte uma imagem com a CLI
Um Dockerfile pequeno basta:
FROM node:22-bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
git curl ca-certificates ripgrep openssh-client less procps jq python3 \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g @anthropic-ai/claude-code
docker build -t my-claude .
Adicione o que o seu projeto precisar para build e testes, como um compilador, um cliente de banco de dados ou um runtime de linguagem.
2. Inicie com só o projeto montado
docker run --rm -it --init \
--user "$(id -u):$(id -g)" \
-v "$PWD":/work -w /work \
-e HOME=/home/agent --tmpfs /home/agent \
my-claude claude
O que cada parte faz:
--rmremove o contêiner quando o Claude Code sai.--userroda com o seu próprio user id, então os arquivos novos no projeto não ficam com dono root.-v "$PWD":/workmonta o projeto, e nada mais do seu disco.- Um
HOMEdescartável em tmpfs dá à CLI um lugar para gravar as configurações.
3. Resolva o login e o histórico
Com uma home descartável, o Claude Code esquece seu login e suas conversas a cada execução. Em vez disso, você pode montar uma pasta de configuração dedicada ou passar uma chave de API com -e ANTHROPIC_API_KEY. Passe segredos pelo nome (-e NAME) em vez de -e NAME=value, para o valor não aparecer no histórico do shell.
A Anthropic também publica uma configuração de devcontainer de referência para o Claude Code, com firewall; se você trabalha com devcontainers, veja a documentação do Claude Code sobre isso.
Onde o caminho manual fica cansativo
Cada agente novo significa repetir as mesmas flags. Resume, estatísticas de uso e configurações por projeto ficam em uma pasta que o contêiner não vê, a menos que você a monte. Commits do git dentro do contêiner ficam sem nome se você não montar o ~/.gitconfig. E se você roda vários agentes ao mesmo tempo, fica equilibrando vários desses comandos.
Rodar o Claude Code no Docker com o AgentVera
O AgentVera é um app desktop para macOS, Windows e Linux que roda CLIs de agentes de código lado a lado em terminais de verdade. Para agentes Claude Code e Codex, a janela do agente tem a caixa Run in a Docker container (rodar em um contêiner Docker). A dica dela diz com todas as letras: o agente vê só a pasta do projeto; outros arquivos, programas e chaves SSH deste computador ficam fechados para ele.
Passos
- Inicie o Docker Desktop, o Colima ou o OrbStack.
- Abra um projeto no AgentVera e adicione um agente Claude Code ou Codex.
- Marque Run in a Docker container. Se quiser, defina Image, CPU e Memory (GB); deixe a memória vazia para não ter limite.
- Inicie o agente.
No primeiro uso, o AgentVera monta a imagem de agente dele, agentvera/agent:1, e você acompanha a saída do build no terminal do agente. A imagem é baseada em node:22-bookworm-slim, com git, ripgrep, jq, python3, make, g++ e algumas outras ferramentas, além do Claude Code e do Codex. Se você definir sua própria imagem, ela precisa conter o comando claude ou codex; uma imagem que não está na sua máquina é baixada.
Depois disso, o cabeçalho do agente mostra um chip Docker, e o painel diz que ele está rodando em um contêiner Docker, junto com o nome da imagem. Você também pode colocar um agente existente dentro ou fora de um contêiner editando-o; o agente reinicia e mantém a mesma conversa.
O que o AgentVera configura para você
| Ponto | O que o AgentVera faz |
|---|---|
| Arquivos do projeto | Monta a pasta do projeto (em um worktree, também o repositório dele) |
| Login, resume, estatísticas | Monta a pasta de conversas da CLI, então resume, estatísticas de uso e orçamentos funcionam normalmente |
| Identidade do git | Monta o ~/.gitconfig como somente leitura, então os commits levam o seu nome |
| Dono dos arquivos | Roda com o seu user id no macOS e no Linux, então os arquivos não ficam com dono root |
| Pasta home | Uma home nova em tmpfs, que some quando o contêiner para |
| Endurecimento | no-new-privileges, um limite de processos e várias capabilities do Linux removidas |
| Segredos | Valores de ambiente passados pelo nome, então os tokens não aparecem na lista de processos |
| Ferramentas do AgentVera | Hooks e servidores MCP, como o mapa do projeto, o quadro e as mensagens entre agentes, continuam funcionando |
Quando o agente para, o contêiner é removido. Só as mudanças na pasta do projeto ficam.
Algumas coisas para saber:
- A rede fica aberta. No Linux o contêiner usa a rede do host; nos outros sistemas ele alcança os servidores locais do AgentVera via
host.docker.internal. O contêiner limita arquivos, não a internet. - Login no macOS. O Claude Code guarda o login no Keychain do macOS, que um contêiner não consegue ler, então talvez você precise entrar uma vez lá dentro.
- O Claude in Chrome não é usado dentro de um contêiner. O navegador do AgentVera, que roda via Playwright MCP, é uma opção separada na mesma janela.
- Só agentes locais. Agentes remotos via SSH rodam no servidor deles e não aceitam essa opção.
Os agentes Docker fazem parte do plano gratuito. O app também tem uma página separada de gerenciamento do Docker para seus próprios contêineres e projetos compose; veja a página do recurso Docker.
Combine o contêiner com o nível de permissão certo
É o contêiner que torna razoável um nível de permissão mais solto. Os agentes do AgentVera têm três níveis: Ask, Auto e Full access. A dica de Full access diz: nunca pergunta, melhor em um worktree ou contêiner.
Uma configuração prática para uma tarefa longa:
- Crie o agente no próprio git worktree, para as mudanças ficarem em uma branch separada.
- Marque Run in a Docker container.
- Escolha Auto ou Full access, conforme o quanto você confia na tarefa.
- Quando terminar, revise o diff antes do merge.
Se você está pensando em usar --dangerously-skip-permissions, pular permissões no Claude Code cobre os prós e contras, e rodar o Claude Code durante a noite mostra como um contêiner se encaixa em uma execução que ninguém está acompanhando.
Checklist rápido
- O contêiner monta só o projeto, não a sua pasta home.
- Os arquivos novos no projeto são seus, não do root.
- Os segredos são passados pelo nome, não embutidos na imagem.
- O trabalho está commitado, ou o agente está em uma branch de worktree.
- Você sabe que a rede continua aberta e adicionou regras se isso importa.
Baixe o AgentVera para rodar o Claude Code e o Codex em contêineres ao lado do resto dos seus agentes, ou leia mais na página de agentes no Docker.