Como rodar o Claude Code no Docker como sandbox

Rode o Claude Code no Docker para o agente ver só a pasta do projeto: uma receita de docker run feita à mão, seus limites e o contêiner de um clique no AgentVera.

Solviera Teknoloji 7 min de leitura

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.

RiscoTerminal comumContêiner Docker
Lê arquivos fora do projetoSimSó o que você monta
Lê chaves SSH e credenciaisSimNão, a menos que estejam montadas
Apaga arquivos fora do projetoPossívelFora de alcance
Instala ferramentas globais na sua máquinaPossívelSó dentro do contêiner, somem ao sair
Altera ou apaga arquivos no projetoPossívelAinda possível
Acessa a internetSimSim, 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:

  1. --rm remove o contêiner quando o Claude Code sai.
  2. --user roda com o seu próprio user id, então os arquivos novos no projeto não ficam com dono root.
  3. -v "$PWD":/work monta o projeto, e nada mais do seu disco.
  4. Um HOME descartá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

  1. Inicie o Docker Desktop, o Colima ou o OrbStack.
  2. Abra um projeto no AgentVera e adicione um agente Claude Code ou Codex.
  3. Marque Run in a Docker container. Se quiser, defina Image, CPU e Memory (GB); deixe a memória vazia para não ter limite.
  4. 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ê

PontoO que o AgentVera faz
Arquivos do projetoMonta a pasta do projeto (em um worktree, também o repositório dele)
Login, resume, estatísticasMonta a pasta de conversas da CLI, então resume, estatísticas de uso e orçamentos funcionam normalmente
Identidade do gitMonta o ~/.gitconfig como somente leitura, então os commits levam o seu nome
Dono dos arquivosRoda com o seu user id no macOS e no Linux, então os arquivos não ficam com dono root
Pasta homeUma home nova em tmpfs, que some quando o contêiner para
Endurecimentono-new-privileges, um limite de processos e várias capabilities do Linux removidas
SegredosValores de ambiente passados pelo nome, então os tokens não aparecem na lista de processos
Ferramentas do AgentVeraHooks 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:

  1. Crie o agente no próprio git worktree, para as mudanças ficarem em uma branch separada.
  2. Marque Run in a Docker container.
  3. Escolha Auto ou Full access, conforme o quanto você confia na tarefa.
  4. 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.

Perguntas frequentes

Por que rodar o Claude Code no Docker?

Um agente na sua máquina pode ler tudo o que o seu usuário lê: outros projetos, chaves SSH, credenciais de nuvem, dados do navegador. Em um contêiner ele vê só as pastas que você monta, então um comando ruim ou uma prompt injection tem muito menos ao alcance.

Um contêiner Docker desconecta o agente da internet?

Não por padrão. Um contêiner comum tem acesso à rede. O Docker limita arquivos e processos; se você também quer restringir a rede, precisa de regras de firewall ou de uma configuração de rede própria. Os contêineres de agente do AgentVera mantêm a rede aberta para a CLI alcançar sua API.

Quais agentes o AgentVera pode rodar em um contêiner?

Agentes Claude Code e Codex que rodam no seu próprio computador. Agentes remotos via SSH rodam no servidor deles e não usam essa opção. O contêiner precisa do Docker Desktop, do Colima ou do OrbStack rodando.

Preciso fazer login de novo dentro do contêiner?

Normalmente não, porque o AgentVera monta a pasta de conversas da CLI no contêiner. No macOS o Claude Code guarda o login no Keychain, que um contêiner não consegue ler, então talvez você precise entrar uma vez lá dentro.

É seguro usar o modo de acesso total dentro de um contêiner?

É bem mais seguro do que na máquina direto, e por isso a dica de Full access do AgentVera diz que ele funciona melhor em um worktree ou contêiner. O agente ainda pode alterar ou apagar arquivos na pasta do projeto, então mantenha seu trabalho commitado e revise o diff.

Reúna seus agentes em uma só mesa.

Baixe o AgentVera de graça; as CLIs que você já instalou estão prontas para usar.

Mais artigos