Skip to content

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 stash te 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 push nã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 * e gcloud * 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-reviewer não pode editar. Mesmo que "decida" que está tudo bem, não consegue subir.
  • test-writer não pode mexer em código de produção. Teste falhando é evidência real, não saída flaky.
  • migration-runner só pode rodar pnpm 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 log de .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.json com allow e deny explícitos.
  • CLAUDE.md com seção "Nunca modificar".
  • .claude/agents/ inclui no mínimo code-reviewer e test-writer.
  • git push nã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.

Compartilhar este artigo

#ClaudeCode #DevOps #Segurança #AgenticAI #ProductionEngineering

LinkedInX / TwitterBlueskyThreadsRedditHacker NewsWhatsAppE-mail

Série — Claude Code Mastery

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Parte 06Segurança em codebase de produçãovocê 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ã.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.

Continue aprendendo

Curso

O curso Claude Mastery

12 módulos · 5 idiomas · certificado · teste 3 dias grátis.

Ver planos →
LinkedInX / TwitterBlueskyThreads