Como revisar o código que o Claude Code escreveu antes de commitar

Revisar código do Claude Code antes de commitar é um fluxo curto e repetível: roda /diff pra ver o que mudou, lê a intenção de cada alteração, chama /code-review no terminal (níveis baixos entregam poucos achados de alta confiança, níveis altos ampliam a cobertura) e /security-review pra SQL injection, XSS, falhas de auth, tratamento inseguro de dados e dependências. Depois testa o caminho crítico na mão e decide o que volta pro agente, seja numa sessão nova de revisão, seja desfazendo com /rewind. O commit continua sendo seu, não do agente 🙂
Fala aí, beleza? O commit é seu, não do agente
Parece óbvio, mas é justamente isso que some quando o Claude Code cospe um diff gigante e o dedo já vai no git commit -m "feat: ..." sem ler nada
Aí o código entra na main, alguém pergunta "por que essa função virou isso?" e a resposta honesta seria "sei lá, a IA fez"
Esse post é sobre fechar essa brecha
O fluxo é o mesmo de sempre, só que aplicado a código que VOCÊ não digitou: ler o diff, entender a intenção de cada mudança, testar o caminho crítico e decidir o que volta pro agente
Bora ver na prática?
O que ter pronto antes de revisar
Antes de sair rodando comando, quatro coisas facilitam demais a vida:
- O Claude Code aberto na mesma sessão que gerou o código: é ali que os comandos de revisão enxergam o diff atual (se ainda não instalou, o guia de instalação do Claude Code resolve)
- Um
CLAUDE.mdno repositório: o Code Review lê os arquivosCLAUDE.mddo repo e trata violação recém-introduzida como achado de nívelnit. E se o PR deixa alguma afirmação doCLAUDE.mddesatualizada, ele sinaliza que a documentação precisa ser atualizada - Uma forma de verificar o resultado: nas boas práticas da Anthropic, dar ao Claude uma maneira de conferir o próprio trabalho é apontado como a dica de MAIOR impacto. Ele vai melhor quando tem um alvo claro pra iterar, tipo um teste ou um mock visual
- A noção de que modo de permissão não se pede no chat: quem define é o
Shift+Tab, que cicla entredefault,acceptEditseplan
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!
Se liga nisso, porque é onde muita gente tropeça: pedir "não edita nada ainda" na conversa não é a mesma coisa que estar no plan mode
Os rótulos da interface mapeiam direto pros modos de permissão: Manual (default), Edit automatically (acceptEdits), Plan mode (plan), Auto mode (auto) e Bypass permissions (bypassPermissions)
Repara que a lista de rótulos é maior que o ciclo: o Shift+Tab passa por default, acceptEdits e plan, e o auto só entra nesse ciclo quando o Claude Code roda com a flag --enable-auto-mode
Como revisar o código do Claude Code passo a passo
A sequência abaixo é curta de propósito
O objetivo não é virar auditor de compliance, é sair do "aceitei porque tava bonito" pra "li, entendi e assumo"
- Veja o que mudou com
/diff
O /diff é slash command nativo e mostra o que mudou no código, comparando o trabalho atual com o estado anterior
/diff
O erro comum deste passo: pular ele porque "o Claude já mostrou o que fez no chat"
O resumo do chat é a versão que o agente conta de si mesmo, o diff é o que realmente foi pro disco
- Leia a intenção de cada mudança, não só a sintaxe
Pergunta simples por hunk: isso aqui é o que eu pedi? E se não é, é uma melhoria que eu quero ou um efeito colateral que ninguém encomendou?
Quando você quer a proposta ANTES da edição, o caminho é o plan mode: Shift+Tab até chegar nele, ou prefixar um único prompt com /plan
/plan refatore o parser de datas sem trocar a assinatura pública
No plan mode o Claude pesquisa e propõe mudanças sem editar o código fonte, o que já é metade da revisão feita antes de existir diff (tem um post inteiro sobre planejar antes de executar mudanças se quiser aprofundar)
O erro comum deste passo: ficar no acceptEdits e aprovar edição em lote sem ler
O comportamento padrão do Claude Code é pausar e pedir aprovação quando ele quer editar arquivo, rodar comando de shell ou fazer requisição de rede. Os modos de permissão controlam a frequência dessa pausa, e afrouxar isso é uma decisão, não um detalhe
- Rode
/code-reviewno terminal
O /code-review revisa o diff atual direto no terminal e reporta bugs de correção mais limpezas de reuso, simplificação e eficiência, sem precisar instalar o GitHub App
/code-review
Ele aceita níveis de esforço que trocam cobertura por confiança: em low e medium ele reporta só os achados de maior confiança (menos falso positivo), e de high até max ele abre o leque e pode incluir achados dos quais tem menos certeza
Tem também a flag --fix, que aplica os achados na working tree:
/code-review --fix
O erro comum deste passo: rodar sempre no nível mais alto e depois ignorar a lista inteira porque veio ruído demais
Nível alto num diff pequeno é ótimo, nível alto em tudo vira barulho que você aprende a não ler
- Rode
/security-reviewquando o diff toca superfície sensível
/security-review
Ele checa o diff em busca de vulnerabilidades: SQL injection, cross-site scripting (XSS), falhas de autenticação e autorização, tratamento inseguro de dados e vulnerabilidades de dependências
E dá pra usar de duas formas: sob demanda no terminal, antes de commitar, ou automaticamente em pull requests via GitHub Actions
O erro comum deste passo: tratar como opcional o diff que mexe em login, permissão ou query montada com string
- Teste o caminho crítico na mão
Revisão por leitura pega intenção errada, teste pega comportamento errado. São coisas diferentes e você quer as duas
Se for pedir TDD, seja explícito ao declarar que é TDD, pra o Claude não criar implementações mock
As boas práticas ainda citam um padrão bem massa: um Claude escreve os testes, outro escreve o código que passa neles
estamos fazendo TDD: escreva os testes do fluxo de checkout primeiro,
sem implementar nada ainda
O erro comum deste passo: aceitar um teste que passa sem nunca ter visto ele falhar
- Decida o que volta pro agente
Aqui tem duas saídas boas
A primeira é revisar em sessão NOVA do Claude Code: um contexto limpo melhora a revisão porque o Claude não fica enviesado a favor do código que ele mesmo acabou de escrever. É o padrão escritor/revisor, com quem escreve e quem revisa em sessões separadas
A segunda é desfazer. O Claude Code captura automaticamente o estado do código antes de cada prompt seu (checkpointing), e o menu de rewind abre com /rewind ou apertando Esc duas vezes com o campo de prompt vazio
/rewind
O menu lista cada prompt enviado na sessão e oferece quatro ações: Restore code and conversation (volta código e conversa), Restore conversation (volta só a conversa mantendo o código), Restore code (volta os arquivos mantendo a conversa) e Summarize from here (resume a conversa dali pra frente)
Tome cuidado com duas armadilhas aqui
O checkpointing NÃO reverte arquivos que são symlink ou hard link: o Claude Code pula esses caminhos e mostra o aviso Restored the code, but skipped N files, que mantêm o conteúdo atual
E o histórico não é infinito: são snapshots de arquivos dos 100 checkpoints mais recentes de uma sessão
- Commite
Só agora, e com a cabeça de quem consegue explicar cada hunk se perguntarem
Revisar no terminal ou no pull request: qual usar
As duas vias existem e resolvem momentos diferentes
| Via | Quando usar | O que entrega | O que precisa |
|---|---|---|---|
| Terminal | Antes de commitar, no diff atual da sessão | /code-review (bugs de correção + reuso, simplificação e eficiência) e /security-review, com --fix pra aplicar os achados na working tree |
Só o Claude Code aberto, sem GitHub App |
| Pull request | Quando o código já virou PR e outras pessoas vão olhar | Achados como comentários inline nas linhas onde encontrou problema, deduplicados e ordenados por severidade, com um resumo no corpo da revisão. Revisão de segurança também roda automática em PR via GitHub Actions | /install-github-app no terminal, que instala o Claude GitHub App no repositório e conduz a adição dos workflows do GitHub Actions e do secret com a API key |
Pelo terminal ainda dá pra apontar pra um PR específico, pela sintaxe /code-review <nível> <pr#>, e a flag --comment posta os achados como comentários inline no PR
/code-review high 128
/code-review --comment
E se os achados existem mas os comentários inline não aparecem no PR? Não sumiram
Clica em Details ao lado do check Claude Code Review, na aba Checks: a tabela de severidade lista cada achado com arquivo, linha e resumo
Na aba Files changed eles aparecem como anotações presas às linhas do diff
Quando apertar a revisão (e quando dá pra afrouxar)
Revisar tudo no talo é insustentável, e revisar nada é como a gente chegou aqui
Então vale mapear por situação:
- Mudança tocando autenticação, autorização ou banco:
/security-reviewobrigatório e nível de esforço alto no/code-review, aceitando que vem achado menos certo junto. Falso positivo aqui é barato, falso negativo não é - Refactor grande: revisa em sessão separada, com contexto limpo, pra o revisor não ser o mesmo cara torcendo pelo próprio código
- Exploração descartável: plan mode antes de qualquer edição. Se a proposta não presta, você jogou fora um plano, não um diff
- Regra que você NUNCA quer ver quebrada: isso não é papel de revisão, é papel de hook. Um hook
PreToolUseque termina com exit code 2 bloqueia a chamada da ferramenta, e o texto escrito em stderr volta pro Claude como motivo do bloqueio
Detalhe importante do hook: o Claude Code só processa JSON do hook quando o exit code é 0
Com exit 2 qualquer JSON é ignorado e o stderr é usado como motivo do bloqueio
Já sobre afrouxar: rodar em bypassPermissions tira justamente a pausa que te dá chance de olhar antes
O modo auto nem entra no ciclo do Shift+Tab por padrão, ele só aparece quando o Claude Code roda com a flag --enable-auto-mode, virando default → acceptEdits → plan → auto
Ou seja: é uma escolha consciente sua, e o preço dela é revisar depois, no diff inteiro, em vez de acompanhar no caminho
Conclusão
Recapitulando o fluxo pra revisar código do Claude Code antes do commit:
/diffpra ver o que mudou de verdade- Ler a intenção de cada mudança (e usar plan mode quando quiser a proposta antes da edição)
/code-review, escolhendo o nível de esforço pelo tipo de diff/security-reviewquando o código toca superfície sensível- Testar o caminho crítico na mão, com TDD declarado quando for o caso
- Devolver pro agente numa sessão nova, ou desfazer com
/rewind - Commitar assumindo o que entrou
O agente escreve, sugere, refatora e até revisa. Mas quem assina o commit é você, e a revisão é exatamente o momento em que essa responsabilidade se exerce, não uma formalidade
Próximo passo prático, pra hoje: no próximo diff, roda /diff e /code-review antes de commitar
E escreve no CLAUDE.md aquela uma regra que você não quer ver violada nunca, porque o Code Review lê esses arquivos e vai bater na sua porta quando ela for quebrada 😀
até o próximo post!
Perguntas frequentes
Dá pra revisar código do Claude Code sem instalar o GitHub App?
Dá sim. O /code-review revisa o diff atual direto no terminal e reporta bugs de correção mais limpezas de reuso, simplificação e eficiência, sem precisar instalar o GitHub App. Ele também aceita a flag –comment pra postar os achados como comentários inline, caso o repositório já tenha o app instalado depois.
Qual a diferença entre os níveis de esforço do /code-review?
Nos níveis low e medium, o /code-review reporta só os achados de maior confiança, o que reduz falso positivo. De high até max ele abre o leque e pode trazer achados dos quais tem menos certeza, trocando confiança por cobertura maior.
O /code-review também revisa pull request já aberto?
Sim, a sintaxe é /code-review <nível> <pr#>, apontando o nível de esforço e o número do PR. Fora do PR, ele lê o diff atual da sessão, então funciona tanto pra código ainda não commitado quanto pra um pull request específico.
Como desfazer um código gerado pelo Claude Code que não ficou bom?
O Claude Code captura automaticamente o estado do código antes de cada prompt enviado (checkpointing), e o menu de rewind abre com /rewind ou Esc duas vezes com o campo de prompt vazio. Dá pra restaurar código e conversa, só a conversa, só o código, ou resumir a conversa dali pra frente, sempre entre os 100 checkpoints mais recentes da sessão.
O /security-review substitui o /code-review?
Não, são focos diferentes. O /code-review olha bugs de correção e limpeza geral, enquanto o /security-review checa o diff atrás de vulnerabilidades específicas, como SQL injection, XSS, falhas de autenticação e autorização, tratamento inseguro de dados e vulnerabilidades de dependências. Ele pode rodar sob demanda no terminal antes de commitar ou automaticamente em pull requests via GitHub Actions.
Adianta pedir no chat pro Claude Code não editar nada?
Não adianta, porque o modo de permissão é definido pelos controles do Claude Code, não pelo pedido na conversa. O Shift+Tab cicla entre default, acceptEdits e plan, e no plan mode o Claude pesquisa e propõe mudanças sem editar o código fonte. Também dá pra entrar no modo de plano prefixando um único prompt com /plan.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
ChatGPT: o que é, como usar, dicas e como acessar login
ChatGPT é uma ferramenta de processamento de linguagem natural (NLP) baseada na arquitetura GPT-3.5, desenvolvida pela OpenAI. Sua criação representa um marco significativo no campo […]
