Claude Code com dados reais: o que configurar antes de apontar o agente para a produção

configurações de segurança do Claude Code antes de usar dados reais
Resposta rápida

Rodar o Claude Code com dados reais não é sorte, é configuração feita ANTES: modo plano pra ele só ler e propor, regras de permissão na ordem deny, ask e allow (a primeira que casa decide), sandbox ligado pelo /sandbox com escrita presa no diretório de trabalho e denyRead no que for sensível, e uma cópia restaurável da base pro que precisa ser exercitado de verdade. O checkpointing não desfaz rm, mv e cp, e não restaura banco, API nem deploy, então o que é irreversível tem que ficar fora do alcance do agente, não na esperança do rewind

Tem uma diferença absurda entre o agente errar numa edição de arquivo e o agente errar na base de produção

Na edição feita pelas ferramentas de edição de arquivo do Claude, você dá /rewind e segue a vida

Agora num rm disparado no Bash, num deploy, numa migration no banco? Não tem rewind, o que foi já foi

Por isso usar o Claude Code com dados reais é trabalho de configuração ANTES, nunca depois do susto

Este post é um checklist montado em cima do que a documentação oficial define: modos de permissão, ordem das regras, sandbox e o que o checkpointing simplesmente não cobre

Sem fórmula mágica, sem prompt secreto pra segurar o agente, só configuração 🙂

O que você precisa ter pronto antes de começar:

Antes de sair escrevendo regra, junta essas quatro coisas

  • Uma cópia restaurável da base, ou um ambiente espelho: o checkpointing do Claude Code só rastreia as edições feitas pelas ferramentas de edição de arquivo do Claude, então o que passa por comando bash fica de fora, e ações que afetam sistemas remotos (banco de dados, API e deploy) também estão fora do que o /rewind consegue restaurar
  • Sistema operacional compatível com o sandbox embutido: ele roda em macOS, Linux e WSL2, e Windows nativo não é suportado (no macOS ele usa o Seatbelt e nem exige instalação)
  • Acesso aos arquivos de settings: é ali que ficam as regras de permissão e o bloco de sandbox
  • A lista dos seus servidores MCP e hooks ativos: anota mesmo, porque eles são processos separados e rodam sem restrição no host, fora do sandbox de Bash
Domine o Claude Code do básico ao avançado
Pré-inscrição Formação Claude Code

Domine o Claude Code do básico ao avançado

Você vai aprender a criar sistemas completos com Claude Code, sem precisar ser programador. Inscreva-se para ter acesso a um desconto de lançamento e bônus especiais!

E tem um detalhe de escopo que muita gente ignora

Por padrão o Claude Code tem acesso aos arquivos do diretório onde foi iniciado, e esse acesso só se estende pra outros lugares via chave additionalDirectories nos settings

Os arquivos desses diretórios extras seguem as MESMAS regras de permissão do diretório de trabalho, ou seja, adicionar pasta é aumentar a superfície de contato

Montar espelho e testar em cópia significa repetir rodada, e repetir rodada consome sessão: se isso te preocupa, vale ver antes como gastar menos no Claude Code

Checklist passo a passo: como configurar o Claude Code antes de tocar em dado real

A ordem aqui importa, cada passo fecha uma porta que o seguinte assume fechada

  1. Comece em modo plano

O plan mode é um estado de pesquisa: o Claude lê arquivos e explora, propõe as mudanças, mas não executa e não edita o código-fonte

Você entra com Shift+Tab (que cicla os modos no CLI) ou prefixando o prompt com /plan

O erro comum deste passo: pedir pro agente "dar uma olhada rápida" já no modo que executa, achando que ele só vai olhar

  1. Escreva as regras entendendo a ordem de avaliação

As regras são avaliadas em deny, depois ask, depois allow, e a primeira correspondência decide

A especificidade da regra NÃO altera essa ordem, não existe "a regra mais detalhada ganha"

O erro comum deste passo: escrever regra de cabeça e errar o nome da ferramenta, o que te deixa com uma falsa sensação de proteção

  1. Não conte com allow abrindo exceção dentro de um deny amplo

Uma regra deny ampla bloqueia todas as chamadas que ela casa, mesmo as que também casam com um allow mais estreito

Na prática: Bash(aws *) no deny bloqueia até Bash(aws s3 ls) que esteja no allow

Deny não aceita exceção de allowlist, então a lista de negação tem que ser desenhada pensando no que você AINDA quer poder rodar

  1. Trate as ferramentas de MCP como cidadãs de primeira classe nas regras

Elas seguem o padrão mcp__<nome-do-servidor>__<nome-da-ferramenta>, tipo mcp__github__list_issues

O coringa mcp__* casa com toda ferramenta MCP de todos os servidores, e vale pra deny e ask

O erro comum deste passo: tentar usar glob desancorado no allow, que é ignorado com aviso

  1. Saiba até onde vai o deny de Read e Edit

Ele vale pras ferramentas internas de arquivo e pros comandos de arquivo que o Claude Code reconhece no Bash, como cat, head, tail e sed

Mas ele NÃO vale pra subprocesso arbitrário que abre arquivo por conta própria

Um script Python ou Node passa por fora disso, e é exatamente por isso que a documentação manda habilitar o sandbox quando você quer bloqueio em nível de sistema operacional

  1. Ligue o sandbox e feche o sistema de arquivos

O painel de configuração abre com /sandbox dentro do Claude Code

No sandbox, a escrita fica por padrão limitada ao diretório de trabalho atual e seus subdiretórios, enquanto a leitura cobre o sistema inteiro exceto o que você negar explicitamente

O bloco fica assim:

   {
     "sandbox": {
       "filesystem": {
         "denyRead": ["~/"],
         "allowRead": ["."]
       }
     }
   }

O denyRead bloqueia o acesso dos subprocessos a caminhos específicos, e o allowRead reabre caminhos dentro de uma região negada

O erro comum deste passo: querer "só afrouxar um pouquinho" e desligar filesystem.disabled, que é a única coisa que desliga a proteção do denyRead, e derruba o isolamento de arquivos pra TODOS os caminhos

  1. Cuide da rede antes que ela cuide de você

O acesso de rede dentro do sandbox passa por um proxy que roda fora do sandbox, e nenhum domínio vem pré-liberado por padrão

Na primeira vez que um comando precisa de um domínio novo, o Claude Code pede aprovação, e esse sim vale pelo resto da sessão

Se você já sabe onde ele precisa chegar, pré-autoriza com allowedDomains

O erro comum deste passo: aprovar no automático no meio do fluxo e esquecer que aquele sim ficou de pé até o fim da sessão

  1. Desligue o allowUnsandboxedCommands em ambiente sensível

Essa opção vem ligada por padrão e permite repetir fora do sandbox um comando que o sandbox barrou, com autorização do usuário

   "allowUnsandboxedCommands": false

Com ela em false, o parâmetro dangerouslyDisableSandbox é ignorado e todo comando roda no sandbox ou precisa estar em excludedCommands

  1. Cheque o que está fora da fronteira

O sandbox de Bash cobre os comandos e os processos filhos, e só

Servidores MCP e hooks são processos separados e rodam sem restrição no host, e ferramentas internas como Read, Edit e WebFetch rodam dentro do processo do Claude Code

Pra colocar TUDO atrás de uma fronteira do sistema operacional, o caminho é rodar o processo inteiro do Claude Code dentro do isolamento (sandbox runtime, dev container ou container próprio)

  1. Feche a superfície de escalonamento

Pensa comigo: um comando capaz de editar os arquivos de configuração pode se autoconceder permissão

Ou adicionar um hook, ou um servidor MCP, que o Claude Code executa fora do sandbox

Quem escreve na configuração muda as regras do jogo, então esses arquivos entram na lista de coisas que o agente não toca

  1. Use hook PreToolUse pro bloqueio que você quer garantir

Um hook PreToolUse consegue bloquear a chamada de ferramenta: sair com código 2 bloqueia a execução, e o conteúdo do stderr é mostrado ao modelo como o motivo do bloqueio

    #!/usr/bin/env bash
    echo "bloqueado: esse caminho toca dado real" >&2
    exit 2

O erro comum deste passo: sair com código 1 achando que barrou, porque exit 1 é tratado como erro NÃO bloqueante e a ação segue

Se você precisa de controle mais fino, o PreToolUse também aceita JSON estruturado no stdout

  1. Leia o aviso de startup

Uma regra deny ou ask cujo nome de ferramenta não casa com nenhuma ferramenta conhecida gera um aviso na inicialização, justamente pra pegar erro de digitação

Nomes com _ ou * são isentos dessa checagem, então ali o aviso não vem e a conferência é sua

E duas coisas que valem pra qualquer configuração acima

O modo bypassPermissions não oferece proteção contra prompt injection nem contra ação não intencional, porque pular os prompts remove a sua chance de revisar as chamadas de ferramenta antes delas rodarem

Já a flag --dangerously-skip-permissions é bloqueada quando o Claude Code roda como root ou via sudo no Linux e no macOS, o que é um ótimo sinal de que aquele caminho não era pra ser o normal do seu dia 😀

O agente apagou algo e o /rewind não trouxe de volta

Sintoma: o agente rodou um rm, um mv ou um cp, ou aplicou uma migration no banco, e você foi no restore atrás do estado anterior… e não veio nada

Causa: o checkpointing do Claude Code não rastreia arquivos modificados por comandos bash

Só as edições feitas pelas ferramentas de edição de arquivo do Claude são rastreadas, então rm file.txt, mv old.txt new.txt e cp source.txt dest.txt não são desfeitos

E ações que afetam sistemas remotos, como banco de dados, API e deploy, não podem ser incluídas no checkpoint

Tem mais um caso que pega gente desprevenida: o checkpointing não restaura arquivo que é symlink ou hard link, esses caminhos são pulados quando você escolhe Restore code ou Restore code and conversation no menu /rewind

Como prevenir, que é o único jeito que funciona aqui:

  • manter o irreversível fora do alcance do agente, com deny mais sandbox, em vez de contar com desfazer depois
  • exercitar o que precisa ser exercitado numa cópia da base, nunca na viva
  • tratar o rewind como rede de segurança das EDIÇÕES feitas pelas ferramentas de edição, e não do mundo lá fora

Tome cuidado com o falso conforto aqui: ver o menu de restore te dá a sensação de que tudo volta, e tudo não volta

Níveis de isolamento: sandbox, dev container, Docker e VM

A documentação lista opções com níveis diferentes de isolamento, e elas resolvem problemas diferentes

Opção O que cobre O que passa por fora
Ferramenta Bash em sandbox (embutida) comandos Bash e seus processos filhos, com isolamento de arquivos e rede aplicado pelo sistema operacional MCP e hooks, que são processos separados no host, e as ferramentas internas como Read, Edit e WebFetch, que rodam dentro do processo do Claude Code
sandbox runtime isolamento de arquivos e rede em nível de sistema operacional, sem precisar de container pra valer pra sessão inteira, o processo do Claude Code precisa rodar dentro dele
Dev container ambiente isolado e idêntico pro time todo, com o Claude Code instalado dentro, então os comandos rodam no container e não na máquina host o workspace montado por bind aparece direto no host e pode ser modificado, e o alcance de rede é o que a política do container permitir
Docker e VMs (incluindo microVMs como Firecracker) separação em nível de kernel continua valendo a regra: o que estiver fora do isolamento não está isolado

A leitura prática da tabela é curta: sandbox de Bash protege comando, não protege sessão

Pra colocar a sessão inteira atrás de uma fronteira do sistema operacional, é preciso rodar o processo inteiro do Claude Code dentro do isolamento

Conclusão: por onde começar hoje

Se você só tem meia hora, a ordem é essa

Modo plano primeiro, pra ele ler e propor sem executar

Depois deny no que é irreversível, lembrando que a primeira correspondência decide e que deny não abre exceção

Depois sandbox ligado, com escrita presa no diretório de trabalho e denyRead no que não é da conta dele

E cópia da base pro que precisa mesmo ser exercitado de verdade

Tem um ponto que faz esse esforço valer: as restrições do sandbox impedem que comandos Bash alcancem recursos fora dos limites definidos MESMO quando um prompt injection contorna a decisão do modelo, porque o limite é aplicado pelo sistema operacional e não pelo julgamento do modelo

No modo auto existe ainda um classificador separado que revisa as ações antes delas rodarem, e bloqueia o que escala além do pedido, mira infraestrutura não reconhecida ou parece dirigido por conteúdo hostil que o Claude leu

Limites declarados na conversa (tipo "não faça push", "espere eu revisar antes de fazer deploy") viram sinal de bloqueio pra esse classificador, e regras ask explícitas continuam forçando o prompt

Anota aí: a partir de 14 de agosto de 2026 o modo auto passa a ser o modo de permissão padrão das sessões novas nos planos Pro, Max e Team, ou seja, revisar suas regras agora é melhor do que descobrir o novo padrão no meio de uma tarefa

Próximo passo é bem concreto: abre o /sandbox e escreve o seu primeiro bloco de deny

Depois disso, o agente perto de dado real deixa de ser aposta e vira processo 😀

Até o próximo post!

Perguntas frequentes

O sandbox embutido do Claude Code funciona no Windows?

Não em modo nativo. O sandbox roda em macOS, Linux e WSL2, e no macOS ele usa o Seatbelt sem exigir instalação extra. Se sua produção depende do sandbox e você está no Windows, o caminho é rodar via WSL2.

Uma regra allow consegue abrir uma exceção dentro de um deny mais amplo?

Não. Deny não aceita exceção de allowlist, então um Bash(aws *) no deny bloqueia até um Bash(aws s3 ls) que esteja liberado no allow. As regras são avaliadas em deny, depois ask, depois allow, e a primeira correspondência decide, sem importar qual regra é mais específica.

O checkpointing do Claude Code desfaz um rm ou mv que o agente rodou?

Não. O checkpointing só rastreia edições feitas pelas ferramentas de edição de arquivo do Claude, então comandos bash como rm file.txt, mv old.txt new.txt ou cp source.txt dest.txt não voltam com o /rewind. Ações em bancos de dados, APIs e deploys também ficam fora do que o checkpoint restaura.

O modo bypassPermissions é seguro para apontar o agente pra produção?

Não. O bypassPermissions não oferece proteção contra prompt injection, e pular os prompts remove a chance de revisar as chamadas de ferramenta antes de elas rodarem. Em Linux e macOS, a flag --dangerously-skip-permissions inclusive é bloqueada quando o Claude Code roda como root ou via sudo.

A partir de quando o modo auto vira o padrão nas sessões novas do Claude Code?

A partir de 14 de agosto de 2026, o modo auto passa a ser o padrão para sessões novas nos planos Pro, Max e Team. Nesse modo, um classificador separado revisa as ações antes de rodarem e bloqueia o que escala além do pedido ou mira infraestrutura não reconhecida.

Hooks e servidores MCP rodam protegidos dentro do sandbox de Bash?

Não. O sandbox de Bash cobre os comandos e os processos filhos, mas servidores MCP e hooks são processos separados que rodam sem restrição no host. Pra colocar tudo atrás de uma fronteira do sistema operacional, é preciso rodar o processo inteiro do Claude Code dentro de um sandbox runtime, dev container ou container próprio.



Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares