Um repositório, uma frota de agentes: git worktrees no Bromure Agentic Coding
Rode dois agentes de codificação contra um mesmo repositório e eles colidem na mesma working tree. Os git worktrees resolvem isso com N checkouts independentes sobre um único histórico compartilhado. O Bromure Agentic Coding os transforma em um primitivo de um clique: digite o nome de uma tarefa e receba um branch isolado, um checkout isolado e um agente trabalhando nele, cada um em sua própria aba dentro de uma VM descartável.

Agentes de codificação avançam rápido; o seu repositório é o que os segura. O Bromure Agentic Coding dá a cada tarefa o seu próprio branch, o seu próprio checkout e o seu próprio agente, cada um em sua própria aba.
Agentes de codificação avançam rápido. O seu repositório é o que os segura. Rode dois agentes contra um mesmo checkout e eles colidem: mesma working tree, mesmos arquivos não commitados, mesmo branch. Um agente roda git checkout e o trabalho do outro desaparece por baixo dele.
O git resolveu isso com os worktrees. O Bromure Agentic Coding transforma o worktree em um primitivo de um clique: cada tarefa ganha o seu próprio branch, o seu próprio checkout e o seu próprio agente, cada um em sua própria aba.
Primeiro, o que é um git worktree?
Um clone git te dá uma working tree: um diretório de arquivos com checkout, um HEAD, um índice. Para trabalhar em dois branches ao mesmo tempo, você faz malabarismo (git stash, troca, trabalha, troca de volta, git stash pop e torce) ou cria um segundo clone, que copia todo o banco de objetos e não compartilha nenhuma visão dos seus branches locais.
git worktree add é a terceira opção. Ele anexa uma working tree adicional ao repositório que você já tem:
git worktree add -b fix-login ../fix-login HEAD
Isso te dá um novo diretório com um checkout completo em um novo branch, compartilhando o mesmo armazenamento de objetos .git do seu checkout principal. Cada worktree mantém o seu próprio HEAD, índice e estado não commitado; um commit em um deles aparece em todos. Criar um worktree não copia nenhum objeto, então quase não custa nada. Mesclar o trabalho de volta é um git merge local: sem push, sem pull, sem ida e volta ao remoto.
Os worktrees te dão N diretórios de trabalho independentes sobre um único histórico compartilhado.
Por que worktrees combinam com a codificação agêntica
Um agente de codificação autônomo precisa de uma working tree que ele possa bagunçar: editar arquivos, rodar builds, deixar estados pela metade enquanto pensa. Você não pode compartilhar isso.
Os worktrees se encaixam na forma como você delega:
- Uma tarefa, um worktree, um agente. "Refatorar o site" e "corrigir o teste instável" ganham cada um um checkout privado. Nenhum deles pode atropelar o trabalho não commitado do outro, nem o seu.
- Barato o bastante para ser casual. Como um worktree não copia histórico, criar um para uma tarefa de 20 minutos faz sentido. Você não clonaria o repositório para isso.
- Mesclar no lugar. Todos os worktrees compartilham um repositório, então integrar o trabalho concluído de um agente é um merge local de um branch local. Você revisa um diff, não um pipeline de pull request.
Claude Code, Codex e os demais rodam bem dentro de um worktree. O atrito está na cerimônia: escolher um diretório, inventar um nome de branch, git worktree add, copiar o seu .env (arquivos no gitignore não vêm junto), cd, iniciar o agente, colar a tarefa. E depois limpar tudo.
O Bromure Agentic Coding remove a cerimônia.
Worktrees no Bromure Agentic Coding
Recapitulação rápida para quem é novo: o Bromure Agentic Coding roda os seus agentes de codificação dentro de VMs Ubuntu descartáveis sobre o Virtualization.framework da Apple. Um workspace é uma VM; ela monta a pasta do seu projeto via virtiofs (sem cópia); cada aba em um workspace é um terminal rodando o que você quiser, geralmente um agente. A fronteira da VM permite que um agente em modo de autonomia total rode rm -rf ou curl | bash à vontade, sem tocar no seu Mac.
Os worktrees adicionam um segundo eixo de isolamento. A VM isola a máquina; o worktree isola a working tree, então vários agentes podem compartilhar um workspace e um repositório sem compartilhar estado.

Criando um
A partir de qualquer aba cujo diretório seja um repositório git, você pode:
- clicar com o botão direito na aba e escolher New worktree…, ou
- apertar ⇧⌘G (o menu Workspaces também o lista, ao lado de Merge worktree ⇧⌘M).
Os atalhos funcionam mesmo enquanto a VM controla o seu teclado: o gerenciador de janelas do guest captura o atalho e o devolve ao aplicativo.


Você recebe um pequeno diálogo: um nome de tarefa, um seletor de ferramenta (claude, codex ou grok, usando por padrão a ferramenta do workspace) e um prompt inicial opcional.

Aperte Create e, dentro da VM, o Bromure:
- corta um branch
wt/<slug>a partir do commit atual da aba (nome de tarefa "Website refactoring" → branchwt/website-refactoring), - faz o checkout dele em
~/.bromure/worktrees/<repo>/<slug>, - copia quaisquer arquivos no gitignore que o seu repositório liste em
.worktreeinclude(mais sobre isso abaixo), - abre uma nova aba nesse diretório e
- inicia a ferramenta que você escolheu, instalando-a antes se a VM não a tiver, com o seu prompt inicial já preparado.
Poucos segundos depois de digitar um nome de tarefa, um agente já está trabalhando nela em seu próprio branch.
Observando uma frota
Cada worktree é uma aba na lista de origens do workspace, marcada com um glifo de branch e indentada sob a aba de onde veio. O ícone mostra qual agente está rodando, e um ponto de status mostra o estado: laranja pulsante enquanto trabalha, verde quando termina, vermelho quando precisa de você. Uma olhada na barra lateral responde "quem está bloqueado?" sem abrir nada.

Os worktrees aninham. Uma aba de worktree é ela mesma um checkout git, então New worktree… funciona ali também. O agente refatorando o site pode criar um subagente testando uma variante arriscada em um branch filho de wt/website-refactoring, indentado um nível mais fundo.
Mesclando de volta
Quando o ponto de status de um worktree fica verde, clique nele com o botão direito e escolha Merge… (ou ⇧⌘M). Como os worktrees aninham, o diálogo pergunta para onde mesclar: o popup de destino lista a cadeia de ancestrais, do branch pai imediato até o checkout raiz do repositório, com um sufixo de aviso em qualquer opção que pule intermediários.


O merge não esconde nada. Ele roda em uma nova aba no checkout do destino, então você o vê acontecer. Apenas o trabalho commitado no branch do worktree é mesclado. Dois desfechos:
- Limpo: a aba imprime
bromure: merged wt/website-refactoring into main.e espera por Enter. - Conflitos: a aba imprime
bromure: merge conflicts — starting claude to resolve…e inicia o agente ali mesmo no checkout em conflito, com instruções para resolver os conflitos, colocá-los em stage, resumir o que fez e commitar somente depois que você confirmar. Prefere resolver na mão e mudar de ideia depois? O menu de contexto da aba de merge mantém uma ação Have the agent resolve conflicts.


Mesclar deixa o worktree no lugar. Você pode querer outra rodada de alterações, ou mesclar o mesmo branch mais acima na cadeia. Quando você terminou de vez, clique com o botão direito → Discard worktree. Essa é a destrutiva, e ela avisa: remove o checkout, apaga o branch wt/ e alerta que você perderá quaisquer commits não mesclados.

Os detalhes que o tornam viável
Arquivos no gitignore vêm junto, se você pedir. Um worktree novo é um checkout limpo, então o seu .env, certificados locais e tokens de ferramentas não estão nele, e um agente que não consegue iniciar o servidor de desenvolvimento não serve para muita coisa. Coloque um arquivo .worktreeinclude na raiz do seu repositório (um caminho relativo por linha, a mesma convenção que o Claude Code usa) e o Bromure copia esses arquivos do checkout principal para cada novo worktree.
As suas alterações não commitadas continuam suas. O Bromure corta um worktree a partir do commit atual da aba, não do seu estado sujo. O trabalho pela metade na aba pai fica fora do checkout do agente, e o contrário também vale.
Worktrees sobrevivem a um reboot. As abas são efêmeras, mas os checkouts e branches vivem no disco, e o Bromure mantém um pequeno registro por repositório. Desligue o workspace, inicie-o uma semana depois, e as suas abas de worktree reaparecem com os mesmos branches, os mesmos rótulos e os agentes relançados.
Funciona por SSH. Você pode acessar cada workspace remotamente, e a interface de terminal tem paridade completa com worktrees: um menu 🌿 Worktrees… lista cada aba de worktree e de merge no repositório, e você pode criar, mesclar, resolver e descartar de um celular por SSH da mesma forma que faria no Mac.
Falhas não derrubam o aplicativo. As operações de worktree rodam dentro do guest. Se uma falhar (diretório sumiu, não é um repositório git, soluço do tmux), você recebe uma entrada de log e uma folha não bloqueante na janela do workspace, não um modal que congela todo o resto.
Dois tipos de isolamento, um fluxo de trabalho
Worktrees e VMs resolvem metades diferentes do mesmo problema. O worktree isola o estado do repositório, para que agentes paralelos não corrompam o trabalho um do outro. A VM isola todo o resto, do sistema de arquivos à rede e às credenciais, para que você possa deixar esses agentes rodarem sem supervisão. O Bromure Agentic Coding compõe os dois: digite um nome de tarefa, escolha um agente e receba um branch isolado, um checkout isolado e uma máquina isolada, tudo por trás de uma aba.
O fluxo inteiro tem três teclas de profundidade: ⇧⌘G para delegar, um ponto verde quando termina, ⇧⌘M para mesclar. O resto é git, do tipo chato e confiável.
Os worktrees requerem o Bromure Agentic Coding 4.0.8 ou posterior. O Bromure Agentic Coding vem como parte do Bromure — baixe-o em bromure.io/download. O suporte a worktree também precisa de um workspace rodando o agente in-VM atual, então reinicie os workspaces mais antigos uma vez para adotá-lo.