Como pedir uma atualização de dependência ao Claude Code sem quebrar o projeto

Desenvolvedor pedindo para atualizar dependência com Claude Code sem quebrar o projeto
Resposta rápida

Atualizar dependência com Claude Code dá certo quando o pedido tem escopo: uma dependência por vez, nome e versão explícitos, leitura antes da edição e critério de pronto verificável. Use o plan mode (Shift+Tab ou /plan) pra ele ler os arquivos e propor sem editar o código, ajuste o plano com Ctrl+G e só considere concluído quando a verificação passar. Se quebrar, o /rewind (Esc duas vezes com o campo vazio) restaura conversa, código ou os dois, mas só o que veio de Write, Edit e NotebookEdit. Commit por unidade continua sendo o seu seguro de verdade

Fala aí, beleza? Upgrade de dependência é aquele pedido que parece inofensivo e volta com meio projeto editado de uma vez

Um "atualiza as dependências aí" solto vira exatamente isso: import trocado em vários arquivos, configuração mexida, teste vermelho, e ninguém mais sabe qual das mudanças foi a que quebrou

Aí o dev culpa o agente

Mas o problema quase nunca é o Claude Code

O problema é o pedido: sem escopo, sem leitura antes da edição e sem critério de conclusão, qualquer agente vai fazer o MÁXIMO que ele acha que você quis dizer

Neste post eu te passo a estrutura do pedido que segura o estrago, e o caminho de volta pra quando der ruim mesmo assim (vai dar, uma hora)

Se o que você quer é o panorama maior de delegar upgrade de dependências, tem um post aqui do blog só sobre isso

O que precisa estar pronto antes de pedir o upgrade

Antes de digitar qualquer prompt, três coisas precisam estar no lugar

Não é burocracia, é o que define se você consegue voltar atrás depois

1. Árvore de trabalho limpa e commit feito

A documentação oficial de boas práticas recomenda commitar após cada unidade significativa de trabalho, justamente pra ter um histórico recuperável se algo sair errado

Então começa o upgrade do zero: nada pendente, nada meio feito misturado com o que o agente vai mexer

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!

Se o git status vier sujo, você não vai conseguir separar o que foi seu do que foi dele

2. Um comando de verificação que VOCÊ sabe rodar

Pode ser a suíte de testes, o build, um script de smoke

O que não pode é você descobrir na hora que não sabe como provar que o projeto ainda funciona

A régua oficial é bem direta: se você não consegue verificar, não faz o ship

3. O CLAUDE.md com os padrões do projeto

O CLAUDE.md é um arquivo markdown na raiz do projeto que o Claude Code lê no começo de cada sessão

Ele serve pra fixar padrões de código, decisões de arquitetura, bibliotecas preferidas e checklists de revisão

Ou seja: é ali que mora o "neste projeto a gente não troca de biblioteca no meio de um upgrade"

E um limite importante antes de seguir: o checkpointing do Claude Code NÃO é substituto de controle de versão

Isso não é opinião minha, a própria documentação diz e recomenda usar os dois juntos

O checkpoint é o desfazer rápido

O git é o seguro

Como pedir a atualização de dependência ao Claude Code passo a passo

A sequência abaixo é sempre a mesma, seja um patch bobo ou um major assustador

Muda só o quanto você aperta em cada etapa

  1. Feche o escopo em UMA dependência, com nome e versão

Nada de "atualiza as dependências"

O pedido precisa nomear a coisa e o destino:

Quero atualizar SOMENTE a dependência <nome> da versão <atual> para a <destino>.
Não altere nenhuma outra dependência, nem versão de runtime.
Se descobrir que essa atualização exige mexer em outra dependência, PARE e me avise antes.

O erro comum deste passo: pedir várias de uma vez porque "já que tá aberto"

Aí quando o teste quebra você tem N suspeitos e zero certeza

  1. Leitura antes da edição, sempre

Esse é o passo que separa upgrade tranquilo de bagunça

Antes de qualquer linha ser editada, ele precisa saber ONDE aquela dependência é usada

O plan mode existe pra isso: no modo plan, o Claude lê arquivos, roda comandos shell pra explorar e escreve um plano, sem editar o código

As edições ficam bloqueadas até você aprovar o plano (com exceção de sessões rodando com bypass de permissões)

Pra entrar: pressione Shift+Tab, ou prefixe um único prompt com /plan

O Shift+Tab cicla entre os modos default, acceptEdits e plan

Uma alternativa (ou complemento) pro mapeamento é o subagente Explore

Ele tem ferramentas somente leitura (Write e Edit são negados) e serve pra descoberta de arquivos, busca de código e exploração da base

E tem um detalhe muito massa: cada subagente roda na própria janela de contexto, então todo o entulho da exploração não fica acumulado na conversa principal

O erro comum deste passo: apertar Shift+Tab de novo achando que está aprovando o plano

Não está

Pressionar Shift+Tab de novo SAI do plan mode sem aprovar nada

  1. Leia o plano e edite o plano, não só aprove

Plano bom, num upgrade, responde três coisas: quais arquivos serão tocados, o que muda em cada um e como o resultado será verificado

Se faltar qualquer uma, o plano ainda não está pronto

E dá pra corrigir sem refazer o prompt: Ctrl+G abre o plano proposto no seu editor de texto padrão pra edição direta antes do Claude prosseguir

Use isso pra cortar o que você não quer que ele encoste

O erro comum deste passo: aprovar um plano que fala em "ajustar os usos afetados" sem listar quais são

"Usos afetados" é onde o escopo vaza 😀

  1. Execute com o modo de permissão consciente

Os modos disponíveis são default, acceptEdits, plan, auto, dontAsk e bypassPermissions

O default aparece como "Manual" na CLI, nas extensões do VS Code e JetBrains e no app desktop

O acceptEdits auto-aprova operações de arquivo

Mas se liga nisso: outras ferramentas, como comandos Bash que não são operações de sistema de arquivos, continuam passando pelas permissões normais

O erro comum deste passo: achar que acceptEdits libera tudo e sair clicando em "sim" no automático quando o Bash pedir

Esse pedido de Bash é justamente o que merece sua atenção, pelo motivo que eu explico na próxima seção

  1. Defina o critério de pronto, e ele tem que ser verificável

"Terminei" não é o agente dizer que terminou

Coloque a régua dentro do próprio pedido:

O trabalho só está concluído quando:
1. <seu comando de verificação> passar inteiro
2. nenhuma outra dependência tiver sido alterada
3. você me listar os arquivos tocados e o motivo de cada mudança
Se algum item falhar, relate a falha, não tente contornar mudando o teste.

Aquele item 3 parece firula e não é: é ele que te dá o resumo pra revisar antes de commitar

O erro comum deste passo: deixar o critério implícito na sua cabeça

O que não está escrito não é cobrado

  1. Commite a unidade antes de ir pra próxima dependência

Upgrade verificado, commit feito, aí sim você abre o próximo

É o que transforma "uma dependência por vez" numa fila de pontos de retorno em vez de um bolo só

O erro comum deste passo: emendar a segunda dependência na mesma sessão sem commitar a primeira

Quando a segunda quebra, você perde as duas

Quebrou depois do upgrade: como voltar atrás sem perder o trabalho

Os sintomas são sempre parecidos

O build falha do nada, um teste que passava fica vermelho, ou você olha o diff e ele está espalhado por muito mais arquivo do que o combinado

A primeira reação errada é pedir pro agente "consertar"

Porque aí ele empilha correção em cima de mudança quebrada e o buraco fica mais fundo

A reação certa é voltar

Como usar o rewind:

Pra abrir o menu de rewind, rode /rewind ou pressione Esc duas vezes com o campo de prompt vazio

Detalhe que pega muita gente: se o campo tiver texto, o Esc duplo limpa o texto em vez de abrir o menu

O checkpointing captura automaticamente o estado do código antes de cada prompt enviado

E os checkpoints são salvos junto com a conversa, então dá pra fechar o terminal, retomar a sessão depois e ainda rebobinar

Na hora de restaurar você escolhe entre três caminhos:

  • restaurar só a conversa, mantendo as mudanças de código
  • restaurar só o código, mantendo a conversa
  • restaurar os dois

As opções de código só aparecem quando o checkpoint selecionado tem mudanças de arquivo rastreadas pra reverter

Num upgrade que deu errado, "só a conversa" costuma ser o mais útil quando o código está bom e o rumo do papo é que azedou

A armadilha que ninguém avisa:

O checkpointing só rastreia mudanças feitas pelas ferramentas Write, Edit e NotebookEdit

Alterações feitas via comandos Bash (rm, mv, cp, echo > arquivo, sed -i) não são capturadas e NÃO podem ser desfeitas pelo rewind

Leia essa frase de novo pensando num upgrade de dependência

Boa parte do que acontece num upgrade acontece por comando de terminal

É por isso que aquele passo 4 pede atenção quando o Bash pede permissão: aquilo ali está fora da rede de segurança do rewind

E tem mais coisa que a doc é explícita em dizer que normalmente não é capturada: edições manuais feitas fora do Claude Code e edições de outras sessões concorrentes

Os limites da janela de segurança:

Dois números pra você não confiar demais:

  • o Claude Code guarda snapshots de arquivo dos 100 checkpoints mais recentes de uma sessão
  • os checkpoints são apagados junto com as sessões após 30 dias

Ou seja: o rewind é ótimo pro "opa, não era isso" de agora

Ele não é o seu histórico do projeto

A prevenção real continua sendo a mesma dupla: git por cima do checkpoint, e commit a cada unidade concluída

Quando vale planejar, quando dá pra pular e quando isolar em worktree

Nem todo upgrade merece o ritual completo

A documentação oficial dá a régua: planejar é mais útil quando você está incerto sobre a abordagem, quando a mudança altera múltiplos arquivos ou quando o código mexido não é familiar

E se der pra descrever o diff em uma frase, pule o plano

Simples assim

Situação do upgrade Forma do pedido
Toca vários arquivos ou código que você não conhece Plan mode antes de qualquer edição, plano revisado com Ctrl+G
Bump trivial, diff cabe numa frase Pede direto, sem plano, e verifica
Vários upgrades ao mesmo tempo ou upgrade arriscado Sessão isolada em git worktree

O caso do código não familiar é o mais traiçoeiro

É o mesmo terreno de quando você precisa mexer em código legado sem quebrar tudo: você não tem o mapa na cabeça, então a leitura prévia deixa de ser luxo

E quando eu quero testar sem sujar a branch?

Aí entra o git worktree

Que worktree? É um diretório de trabalho separado, com arquivos e branch próprios, compartilhando o histórico e o remote do repositório

Rodando cada sessão do Claude Code no seu próprio worktree, as edições de uma sessão nunca tocam os arquivos de outra

Pra abrir:

claude --worktree <nome>

Rodar o mesmo comando com outro nome em um segundo terminal abre outra sessão paralela isolada

E a documentação recomenda adicionar .claude/worktrees/ ao .gitignore

Pra upgrade isso é topzera: o major arriscado vive num worktree só dele, e se virar terra arrasada você simplesmente abandona aquilo sem ter contaminado nada

Dá pra automatizar a verificação?

Dá, com hook

O evento Stop dispara sempre que o Claude termina de responder, e a documentação traz exemplo de hook que verifica se todos os testes unitários passam

Tem também os hooks do tipo agent, que sobem um subagente pra ler arquivos e rodar comandos antes de devolver a decisão

Um aviso pra não criar expectativa errada: hooks PostToolUse disparam DEPOIS que a ferramenta já executou, e não desfazem a ação

Eles te avisam, não te salvam

Conclusão

No fim, upgrade seguro com agente se resume a quatro exigências

Escopo de uma dependência por vez, com nome e versão

Leitura antes da edição, via plan mode ou subagente read-only

Critério de pronto que é verificável, não uma opinião do agente

E caminho de volta garantido: commit por unidade, com o rewind como conforto extra e não como plano principal

O próximo passo prático é curtinho: escreve essas quatro exigências no CLAUDE.md do projeto, já que ele é lido no começo de toda sessão, e testa o fluxo no upgrade MENOS arriscado da sua lista

Quando o ritual já estiver no automático, aí sim você encara o major que está te olhando torto desde o mês passado 🙂

até o próximo post!

Perguntas frequentes

Como desfazer uma atualização de dependência feita pelo Claude Code que deu errado?

Rode /rewind ou pressione Esc duas vezes com o campo de prompt vazio para abrir o menu. Dá pra restaurar só a conversa, só o código ou os dois, mas lembre que o checkpointing não rastreia mudanças feitas por comandos Bash (como sed -i ou mv), só as feitas por Write, Edit e NotebookEdit. Por isso ele não substitui o git: use os dois juntos.

Qual a diferença entre plan mode e acceptEdits ao pedir uma atualização de dependência?

No plan mode o Claude Code só lê arquivos e explora, sem editar nada, até você aprovar o plano. Já no acceptEdits as operações de arquivo são aprovadas automaticamente, mas comandos Bash que não mexem no sistema de arquivos continuam pedindo permissão normalmente. Para upgrade de dependência, o plan mode entra primeiro, para mapear o impacto antes de qualquer edição.

Vale usar bypassPermissions para acelerar a atualização de dependência?

Existe como modo de permissão do Claude Code, junto com default, acceptEdits, plan, auto e dontAsk. Mas é justamente no bypassPermissions que o bloqueio de edição do plan mode deixa de valer, então ele remove a trava que segura o escopo do upgrade. Combina mal com o objetivo de não deixar o agente mexer além do combinado.

Dá pra rodar a atualização de dependência isolada, sem arriscar a sessão principal?

Sim, rodando a sessão dentro de um git worktree, que é um diretório de trabalho separado, com arquivos e branch próprios, compartilhando histórico e remote do repositório. Com cada sessão do Claude Code no seu próprio worktree, as edições de uma nunca tocam os arquivos da outra. É o formato indicado para o upgrade arriscado, aquele que você quer poder abandonar inteiro sem contaminar a branch principal.

O CLAUDE.md realmente muda o resultado de um pedido de atualização de dependência?

Sim, porque ele é lido pelo Claude Code no começo de cada sessão e fixa padrões de código, decisões de arquitetura e bibliotecas preferidas do projeto. Se o upgrade tem uma regra específica, como não trocar de biblioteca no meio do processo, é ali que ela deve estar registrada. Sem isso, o agente decide sozinho com base só no que você escreveu no prompt.

Como garantir que a atualização de dependência foi mesmo verificada antes de commitar?

Escreva o critério de pronto dentro do próprio pedido: o comando de verificação que precisa passar inteiro, a exigência de nenhuma outra dependência ter sido alterada e a lista dos arquivos tocados com o motivo de cada mudança. A régua da documentação oficial é essa mesma: se você não consegue verificar, não faça o ship. Depois de verificado, commite aquela unidade antes de abrir a próxima dependência.



Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

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