Dá para rodar duas sessões do Claude Code ao mesmo tempo no mesmo projeto?

Sim, dá pra rodar duas sessões do Claude Code ao mesmo tempo no mesmo projeto, e o gargalo não é a ferramenta: é a pasta compartilhada. Quando dois agentes apontam pro mesmo diretório, eles dividem arquivos, estado local e histórico, e existem relatos no repositório oficial de plano sobrescrito, interferência mútua e chat compartilhado. A saída documentada pela Anthropic é isolar cada sessão em um git worktree: diretório e branch próprios, mesmo histórico e mesmo remoto. No CLI isso sai com a flag --worktree, e no app desktop cada sessão nova já vem isolada automaticamente
Tu abre dois terminais no mesmo projeto, manda um agente construir a feature e o outro corrigir um bug, e dez minutos depois um deles desfez o trabalho do outro
A parte que confunde é essa: rodar duas sessões do Claude Code ao mesmo tempo é possível, e o problema nunca foi o Claude Code aguentar duas conversas
O problema é que as duas sessões estão dividindo os MESMOS arquivos
Dois agentes, uma pasta só, e nenhum dos dois sabe que o outro acabou de mexer no arquivo que ele ia mexer agora
Bora entender o que quebra e como isolar isso direito?
O que acontece quando duas sessões editam a mesma pasta
Os sintomas não são teoria, tem relato no repositório oficial anthropics/claude-code sobre cada um deles
- Arquivos de plano em
.claude/plans/ficam compartilhados entre as sessões e podem ser sobrescritos por outra sessão (issue #27311) - Interferência mútua entre sessões concorrentes no mesmo repositório, registrada na issue #18908 com esse nome mesmo
- Duas sessões na mesma pasta compartilhando histórico de chat quando deveriam ser separadas (issue #7702)
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!
A causa é a mesma nos três casos
Os dois agentes apontam pro mesmo diretório de trabalho e pro mesmo estado local
Não é um agente sendo burro, é um agente escrevendo em cima do que o outro escreveu porque, do ponto de vista do sistema de arquivos, existe UM lugar só
A prevenção também é uma só: dar a cada sessão um diretório de trabalho próprio
Se você já cuidou de rodar vários agentes em paralelo em outra ferramenta, o raciocínio é idêntico, muda o nome do botão
O que você precisa antes de isolar as sessões
Antes de sair rodando comando, vale entender o que é um git worktree
A própria documentação do Claude Code define assim: um diretório de trabalho separado, com arquivos e branch próprios, compartilhando o mesmo histórico do repositório e o mesmo remoto do checkout principal
Se você conhece branch, é fácil de aproximar: o branch te dá uma linha do tempo diferente, mas você continua com uma pasta só
O worktree te dá a PASTA também
E tem uma consequência prática que morde na primeira tentativa
Worktree é um checkout novo, então arquivo que o git não rastreia não vai junto
Seu .env e seu .env.local do repositório principal simplesmente não estão lá
Tome cuidado com isso, é o motivo número um do ambiente não subir dentro do worktree e você achar que a ferramenta quebrou 🙂
Como isolar cada sessão do Claude Code em um worktree
O passo a passo abaixo usa só o que está na documentação oficial de worktrees
- Abra a sessão já dentro do worktree. Passar
--worktree(ou o atalho-w) cria um worktree isolado e inicia o Claude nele
claude --worktree minha-featurePor padrão esse worktree é criado em .claude/worktrees/minha-feature/ na raiz do repositório, em um branch novo chamado worktree-minha-feature
O erro comum deste passo: abrir a segunda sessão no terminal do jeito de sempre e só depois lembrar do isolamento, quando as duas já mexeram nos mesmos arquivos
- Ignore a pasta de worktrees no git. A documentação recomenda colocar
.claude/worktrees/no.gitignore
.claude/worktrees/Assim o conteúdo dos worktrees não aparece como arquivo untracked no checkout principal
O erro comum deste passo: pular ele e depois abrir um git status que virou uma parede de arquivo estranho, sujando a leitura de tudo que você realmente mudou
- Crie um
.worktreeincludena raiz do projeto. Esse arquivo usa sintaxe de.gitignoree serve pra copiar automaticamente os arquivos gitignored pra cada worktree criado
.env
.env.localA regra dele é conservadora de propósito: só copia arquivo que casa com o padrão E é gitignored, então arquivo rastreado nunca é duplicado
E vale pra todo worktree que o Claude Code cria com git: os de --worktree, os de subagente e as sessões paralelas no app desktop
O erro comum deste passo: esquecer o .env aqui e ficar caçando por que a aplicação não sobe dentro do worktree
- Decida o destino do worktree ao sair. Ao encerrar uma sessão iniciada com
--worktree, o Claude pergunta se você quer manter ou remover o worktree
Se quiser remover na mão depois, é o comando padrão do git
git worktree remove .claude/worktrees/minha-featureSe o worktree tiver mudanças não commitadas ou arquivos untracked, aí precisa do --force
git worktree remove --force .claude/worktrees/minha-featureO erro comum deste passo: mandar o --force no automático e enterrar trabalho que ainda não tinha commit
E o que o Claude Code limpa sozinho?
Existe uma varredura periódica que remove os worktrees que o Claude criou pra subagentes e sessões em background quando eles ficam mais velhos que o setting cleanupPeriodDays
Ela pula worktree que ainda guarda trabalho (arquivo alterado, untracked ou commit não enviado) e nunca remove worktree criado com --worktree
E enquanto um agente está rodando, o Claude executa git worktree lock no worktree dele pra limpeza concorrente não poder apagar, liberando a trava quando o agente termina
Ou seja: o isolamento é pensado pra não te trair no meio do caminho
Mesma pasta ou um worktree por sessão: comparação
| Critério | Duas sessões na mesma pasta | Um worktree por sessão |
|---|---|---|
| Arquivos do projeto | Compartilhados entre as sessões | Próprios de cada sessão, edições de uma nunca tocam os arquivos da outra |
| Trabalho sobrescrito | Risco real, com relatos no repositório oficial | Não acontece entre os worktrees |
| Branch | O mesmo pros dois agentes | Branch próprio por worktree |
| Histórico e remoto | Compartilhados | Compartilhados também (é o mesmo repositório) |
Arquivos untracked (.env e cia) | Já estão lá | Precisam do .worktreeinclude |
| Limpeza depois | Nada pra limpar | Manter ou remover ao sair, ou git worktree remove |
O que o worktree não resolve
Aqui entra a parte honesta, porque isolamento não é mágica
Worktree separa os arquivos DO PROJETO
Ele não separa recurso global da sua máquina
E tem relato aberto no repositório oficial exatamente sobre isso
- Instâncias concorrentes corrompendo o
.claude.jsoncompartilhado por race condition de escrita (issue #28992) - O mesmo tipo de caso com instâncias concorrentes do CLI mesmo partindo de diretórios diferentes (issue #18879)
- Múltiplas sessões
claude --chromecompetindo pela mesma conexão de extensão do navegador (issue #39637)
Repara no padrão: tudo que é ÚNICO na máquina continua sendo único, não importa quantos worktrees você abra
Os relatos aí em cima são disso: configuração global compartilhada e conexão de navegador compartilhada
A prevenção possível é tratar esses pontos como recurso único mesmo, e não assumir que dois worktrees eliminam toda disputa
Quando vale paralelizar duas sessões
O caso que a própria documentação cita é o mais direto de todos: construir uma feature em um terminal e corrigir um bug em outro
São tarefas que não conversam entre si, então não faz sentido esperar uma pra começar a outra
Outro uso é isolar SUBAGENTE
Dá pra pedir ao Claude que use worktrees pros agentes, ou tornar isso permanente em um subagente customizado adicionando isolation: worktree no frontmatter dele
E o worktree temporário do subagente é removido automaticamente quando ele termina sem mudanças, o que é bem conveniente
No app desktop o isolamento vem de graça: em repositório git, cada nova sessão recebe automaticamente uma cópia isolada do projeto via git worktree, então as mudanças de uma sessão não afetam as outras até você commitar
Sessão nova pelo botão + New session na barra lateral, ou Cmd+N no macOS e Ctrl+N no Windows
Os worktrees ficam em <project-root>/.claude/worktrees/ por padrão e o caminho pode ser trocado em Settings > Claude Code, no campo Worktree location
E se você já está dentro de um worktree e quer pular pra outro que já existe embaixo de .claude/worktrees/, o Claude faz isso chamando a ferramenta EnterWorktree com o caminho de destino
Vale lembrar que paralelizar não conserta processo ruim: se o fluxo do projeto até o deploy já está bagunçado com um agente, com dois vai ficar bagunçado em dobro e mais rápido haha
Conclusão
O veredito é curto: o gargalo nunca foi o número de sessões, é o diretório compartilhado entre elas
Duas sessões na mesma pasta dividem arquivo, plano e estado local, e é daí que sai o trabalho sobrescrito
Um worktree por sessão resolve a parte do projeto, e resolve bem
O que ele não resolve é o recurso único da máquina, então isso segue no seu colo
Próximo passo concreto pra hoje: escolhe UMA tarefa secundária, abre ela com --worktree, coloca .claude/worktrees/ no .gitignore e cria o .worktreeinclude com os arquivos de ambiente ANTES de rodar as duas sessões juntas
Agora é abrir os dois terminais com sossego e deixar cada agente no seu quadrado 😀
até o próximo post!
Perguntas frequentes
Dá para rodar duas sessões do Claude Code no mesmo projeto sem usar worktree?
Tecnicamente dá, mas não é recomendado. Há relatos no repositório oficial anthropics/claude-code de arquivos de plano sobrescritos em .claude/plans/ (issue #27311), interferência mútua entre sessões concorrentes (issue #18908) e sessões compartilhando histórico de chat na mesma pasta (issue #7702). Isolar cada sessão em um worktree evita esses três problemas.
Como troco de um worktree para outro sem sair da sessão do Claude Code?
Estando dentro de um worktree, o Claude pode trocar para outro worktree existente sob .claude/worktrees/ chamando a ferramenta EnterWorktree com o caminho de destino. Não precisa fechar a sessão nem abrir outro terminal.
O que acontece se eu esquecer de colocar .claude/worktrees no .gitignore?
O conteúdo de cada worktree criado passa a aparecer como arquivo untracked no checkout principal. Isso enche o git status de arquivo estranho e atrapalha justamente a leitura do que você mudou de verdade no projeto.
Preciso apagar o worktree manualmente depois de usar, ou o Claude Code faz isso sozinho?
Ao sair de uma sessão aberta com --worktree, o Claude pergunta se você quer manter ou remover o worktree. Existe também uma varredura periódica que remove worktrees de subagente e de sessões em background quando eles passam do cleanupPeriodDays, mas ela pula worktree com trabalho pendente (arquivo alterado, untracked ou commit não enviado) e nunca remove os criados com --worktree. Pra apagar na mão a qualquer momento, o comando é git worktree remove, com --force se sobrar mudança não commitada.
Dá para isolar subagentes do Claude Code em worktrees separados também?
Sim. Você pode pedir ao Claude para usar worktrees nos agentes, ou tornar isso permanente adicionando isolation: worktree no frontmatter de um subagente customizado. Enquanto o agente roda, o Claude executa git worktree lock nesse worktree para a limpeza concorrente não removê-lo no meio do trabalho, e o worktree temporário some sozinho quando o agente termina sem deixar mudanças.
Duas sessões do Claude Code podem travar disputando o mesmo recurso externo, tipo o navegador?
Sim, e isso é diferente de disputa por arquivo. A issue #39637 no repositório oficial registra múltiplas sessões claude --chrome competindo pela mesma conexão de extensão do navegador. Worktree isola os arquivos do projeto, mas não separa recurso externo compartilhado como esse.
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 […]
