Claude Code Mastery6 / 12
Segurança em codebase de produção
Permissões, guard-rails e o que não automatizar. O artigo nada sexy que decide se Claude Code vira infraestrutura ou vira o motivo de você ter sido chamado às 2 da manhã.
O artigo nada sexy. O que decide se Claude Code vira infraestrutura ou vira a história que você conta no postmortem.
Aqui está a regra em torno da qual você constrói tudo o mais:
Essa única regra esclarece 90% das decisões de permissão. Tudo o mais é operacionalizá-la.
Reversibilidade, não "medo"
A maioria dos times configura allowlists no feeling. "Testes parecem seguros; deletes assustam." Errado.
Reformule em torno do blast radius:
- Reversível: editar arquivo na working tree, rodar testes, rodar
pnpm install, criar feature branch. Se algo quebra,git checkout/git stashte salva. - Irreversível:
git push,npm publish, migrações de DB em prod,terraform apply, enviar e-mails, cobrar cartão, deletar recursos cloud.
A primeira lista deve estar na allowlist do agente. A segunda deve exigir uma tecla humana toda vez, sem exceção.
O .claude/settings.json mínimo para repo de produção
{
"tools": {
"shell": {
"allow": [
"pnpm test",
"pnpm test:watch",
"pnpm lint",
"pnpm build",
"pnpm db:migrate:dev",
"pnpm db:reset:dev",
"pnpm install",
"git status",
"git diff *",
"git log *",
"git stash *",
"git checkout *",
"git branch",
"git add *",
"git commit *",
"ls *",
"rg *",
"cat *"
],
"deny": [
"git push *",
"git rebase *",
"git reset --hard *",
"rm -rf *",
"npm publish *",
"pnpm publish *",
"docker push *",
"kubectl apply *",
"terraform apply *",
"aws *",
"gcloud *",
"psql -h prod*"
]
}
}
}
Algumas coisas a notar:
git commité permitido;git pushnão. O agente pode preparar a mudança local; você publica.pnpm db:migrate:devé permitido; a variante prod não — e migrações de prod não deveriam rodar de máquina de dev de qualquer jeito.aws *egcloud *são negados por completo. Se você precisa de um sub-agente que chame APIs cloud, dê a ele um comando específico, não a CLI inteira.
A lista "arquivos que o agente nunca deve mexer"
Mesmo confiando no agente, alguns arquivos devem exigir edição humana. Trave eles em CLAUDE.md:
# Nunca modificar
- /infra/terraform/ (só humanos)
- /.github/workflows/release.yml
- O campo "version" de /package.json
- Qualquer arquivo em /db/migrations/ já aplicado
- /SECURITY.md
Claude Code respeita com força as instruções do CLAUDE.md. Combinado com a revisão do git diff, isso basta para 99% dos times.
Separação de papéis dos sub-agentes = defesa em profundidade real
Cobrimos os 11 sub-agentes no artigo 5. Por que separação de papéis importa para segurança:
code-reviewernão pode editar. Mesmo que "decida" que está tudo bem, não consegue subir.test-writernão pode mexer em código de produção. Teste falhando é evidência real, não saída flaky.migration-runnersó pode rodarpnpm db:migrate. Mesmo comprometido, o blast radius é um único comando.
Isso é defesa em profundidade real — construída com arquivos de restrição, não teatro de segurança.
Coisas que você não deveria automatizar
Lista curta de "não, mesmo que funcione":
- Postar em canais públicos (Slack, Discord, Twitter). Latência tudo bem; uma mensagem com tom errado no #engineering, não.
- E-mails para clientes. Conteúdo gerado, ok em rascunho. Envio é humano.
- Dinheiro. Cobranças, reembolsos, repasses. Não automatize. Nunca.
- Auth e identidade. Adicionar usuário, conceder admin, rotacionar chave.
- Force pushes. Mesmo em branches de feature. O custo de um force-push acidental é alto demais.
Regra de bolso: se o pior cenário é um postmortem, um e-mail de desculpas ou uma carta de regulador, mantenha uma tecla humana entre intenção e execução.
Trilha de auditoria — a feature subestimada
Toda sessão do Claude Code escreve um transcript em ~/.claude/sessions/. Num time, mande esses transcripts para algum lugar durável:
- Um bucket S3 privado.
- Um stream de logs no Datadog.
- Um simples
git logde.claude/transcripts/comitado no repo.
Você não vai ler com frequência. Mas no dia em que ler — quando algo estranho aconteceu no codebase e você precisa saber quem/o que mudou — vale ouro.
Checklist prático de segurança
Antes de deixar Claude Code rodar num codebase real:
.claude/settings.jsoncomallowedenyexplícitos.CLAUDE.mdcom seção "Nunca modificar"..claude/agents/inclui no mínimocode-revieweretest-writer.git pushnão está em allowlist alguma.- Um colega revisou a allowlist.
- Você rodou
claude --dry-run(ou equivalente na sua versão) numa feature branch primeiro.
Seis itens. Vinte minutos de trabalho. A maioria dos incidentes de produção vem de pular pelo menos três.
Próximo artigo: Pipelines multi-agente — encadear sub-agentes, rodá-los em paralelo, e os padrões para "revisar-enquanto-codifica" sem perder a sanidade.
Série — Claude Code Mastery
- Parte 01Claude Code vs ChatGPT vs Copilot vs agentesA maioria dos desenvolvedores está usando a ferramenta de IA errada para a tarefa errada. Aqui está o porquê — e o que fazer no lugar.
- Parte 02Instalação + o workflow antigravidadeInstalar Claude Code é trabalho de 30 segundos. Configurar o workflow que faz o agente parecer estar carregando o trabalho pesado — essa é a parte que ninguém escreve.
- Parte 03Escrever prompts que funcionam"Deixa melhor" não é prompt. "Refatore para performance" não é prompt. Aqui está a estrutura de quatro partes que faz o Claude Code de fato terminar o que você pediu.
- Parte 04Slash commands — construindo um projeto de A a Z/init, /agents, /compact e seus comandos custom. O kit que te leva da pasta vazia ao app rodando sem sair do prompt do Claude.
- Parte 05Sub-agentes — os 11 especialistas dentro do Claude CodeSlash commands reaproveitam prompts. Sub-agentes reaproveitam personas inteiras — code-reviewer, test-writer, migration-runner. Aqui está o time que você deveria ter no dia um.
- Parte 06Segurança em codebase de produção — você está aquiPermissões, guard-rails e o que não automatizar. O artigo nada sexy que decide se Claude Code vira infraestrutura ou vira o motivo de você ter sido chamado às 2 da manhã.
- Parte 07Pipelines multi-agenteEncadear sub-agentes, rodá-los em paralelo e os padrões para 'revisar-enquanto-codifica' sem perder a sanidade. Onde o Claude Code começa a parecer uma pequena org de engenharia.
- Parte 08Construindo features completasDo ticket no Linear ao PR mergeado com Claude Code. Um passo a passo real e honesto — como ficou o prompt, o que o agente acertou, o que peguei na revisão.
- Parte 09Testes e debugDeixar Claude Code dono de todo o loop de testes. Incluindo as partes que deixam engenheiros nervosos: regressões, flakies, testes de integração e o sussurrador de stack-trace.
- Parte 10Workflows de timeComo times de engenharia estão de fato integrando o Claude Code hoje. A pasta .claude/ compartilhada, os rituais de review e os antipadrões que vejo se repetindo no campo.
- Parte 11Padrões avançados — Hooks, servidores MCP, ferramentas custom, system promptsQuando você já cresceu além dos defaults: hooks para efeitos colaterais determinísticos, servidores MCP para dados da organização, ferramentas custom e cirurgia de system prompt.
- Parte 12O futuro do desenvolvimento agênticoPra onde isso vai em 2026 e além. No que eu apostaria, no que não, e a linha além da qual eu fico cético com o hype.