Vários agentes em paralelo com permissão de escrita: o que pode dar errado?

Soltar agentes em paralelo com permissão de escrita no mesmo repositório acelera muito, só que o risco aí não é o modelo ser burro, é o paralelismo sem isolamento. Cada subagente do Claude Code roda em contexto próprio, com ferramentas e permissões próprias, e devolve só o resultado final: ou seja, um não sabe o que o outro fez. Os três estragos clássicos são sobrescrever trabalho alheio, mexer em arquivo fora do escopo e criar mudança que o /rewind não desfaz. A contenção vem de worktrees, regras deny escritas antes e commit como rede de segurança
Fala aí, beleza? Cena que virou rotina: você abre três, quatro terminais, solta um agente em cada um, libera escrita geral pra não ficar clicando em "sim" o dia inteiro e vai tomar um café
Quando volta, o repositório mudou de um jeito que você não pediu
A pergunta que quase ninguém faz antes de apertar o play é simples: quem garante que um agente não desfaz o trabalho do outro?
Spoiler: ninguém garante, se você não isolar
E olha, o problema não é o agente ser burro. O problema é rodar processos concorrentes escrevendo no MESMO lugar, sem coordenação, com permissão ampla
É engenharia de sistema, não é papo de "o modelo alucinou"
Bora destrinchar os riscos concretos e as formas de contenção?
O caso Replit mostra o tamanho do estrago
Julho de 2025: o agente de IA da Replit apagou um banco de dados de produção durante um code freeze, mesmo com instruções repetidas pra não fazer mudança nenhuma
O CEO Amjad Masad reconheceu publicamente o ocorrido em 19/07/2025 e classificou o caso como inaceitável
Tem um detalhe que importa MUITO pra nossa conversa: o agente afirmou que o rollback não funcionaria
O rollback funcionou, e os dados voltaram
Ou seja: além de fazer a besteira, ele deu um diagnóstico errado sobre a própria besteira
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Depois do incidente vieram salvaguardas anunciadas pela empresa: separação automática entre bancos de desenvolvimento e produção, rollback de um clique e um modo somente planejamento/chat
Repara no formato da resposta
Não foi "vamos escrever uma instrução mais firme no prompt", foi trava técnica
Esse é o resumo da ópera pra quem roda agentes em paralelo: instrução em texto não é controle, é pedido
Controle é o que o sistema não deixa acontecer, mesmo se o agente decidir tentar
Um agente apaga ou sobrescreve o trabalho do outro
O sintoma:
Você volta pro projeto e a alteração que o agente A tinha feito sumiu
Ou pior: ela ainda está lá, mas metade dela, misturada com a versão que o agente B escreveu por cima
O teste passa num terminal e quebra no outro, e você fica caçando fantasma no git diff
A causa:
Agentes paralelos escrevendo no mesmo diretório de trabalho, sem nenhuma coordenação entre eles
E aqui vale abrir um parêntese pra entender por que isso é estrutural
Cada subagente do Claude Code roda na própria janela de contexto, com system prompt próprio, lista própria de ferramentas e permissões independentes, e devolve ao agente principal apenas o resultado final
Isolamento de contexto é ótimo pra foco, beleza? Só que ele significa que o agente B não faz ideia do que o agente A escreveu no arquivo
O padrão orquestrador-trabalhador da Anthropic é explícito nisso: os subagentes não conseguem se coordenar entre si e o agente líder não consegue direcioná-los enquanto rodam
O risco documentado disso é trabalho duplicado, quando um subagente refaz o que o colega já fez por não saber que existe
É como contratar quatro devs fodões, colocar cada um numa sala fechada sem Slack e mandar todos editarem o mesmo arquivo
Alguém vai perder trabalho, é matemática
Como prevenir:
O caminho é isolamento de verdade, no nível do sistema de arquivos
O Claude Code suporta rodar sessões em paralelo em git worktrees: diretórios de trabalho separados, ligados a branches distintas, compartilhando o mesmo histórico do repositório
Cada sessão mexe nos SEUS arquivos, e edição de uma não toca na outra
A integração acontece depois, no merge, que é onde ela sempre deveria ter acontecido
Ressalva importante: worktrees no Claude Code exigem repositório git. Pra outro sistema de controle de versão é preciso configurar hooks substituindo a lógica de git
Se você ainda está na dúvida se dá pra manter duas sessões no mesmo projeto sem elas se atropelarem, esse é exatamente o ponto onde o worktree resolve
O agente toca em arquivo fora do escopo
O sintoma:
A tarefa era mexer num componente
O diff aparece com mudança numa pasta de config, num script de deploy, num arquivo que não tinha nada a ver com o pedido
Às vezes é uma "melhoria" bem intencionada, às vezes é aquele comando que limpa mais do que devia (os rm -rf da vida)
A causa:
Permissão ampla vale pro PROCESSO inteiro, não só pros arquivos que você tinha em mente quando aprovou
O bypassPermissions, por exemplo, pula praticamente todos os prompts de aprovação
Ele mantém pouquíssimos freios: regras explícitas de ask e deny continuam valendo, e ele se recusa a rodar como root
Só isso
Agora multiplica esse comportamento por quatro agentes rodando junto e pensa em quantas decisões silenciosas acontecem por minuto
Como prevenir:
Contenção em camadas, do mais barato pro mais forte
- Regras de permissão escritas antes. As regras são avaliadas em ordem fixa: deny, depois ask, depois allow, e a primeira correspondência decide o resultado. A especificidade da regra não muda essa ordem, então não adianta caprichar num padrão super detalhado achando que ele vai ganhar de um allow genérico
- Hook PreToolUse. Ele roda depois que o Claude monta os parâmetros da ferramenta e antes da chamada ser processada, casando por nome de ferramenta (Bash, Edit, Write, Read). Um hook PreToolUse que sai com código 2 bloqueia a chamada e devolve o texto do stderr ao Claude como mensagem de erro. E tem um detalhe topzera: esse bloqueio acontece ANTES da avaliação das regras de permissão, valendo mesmo quando uma regra allow deixaria passar
- Sandbox. O sandbox do Claude Code oferece isolamento de sistema de arquivos, permitindo leitura e escrita no diretório de trabalho atual e bloqueando a modificação de arquivos fora dele, além de isolamento de rede que só libera conexão com domínios aprovados via proxy
O sandbox é construído sobre primitivas de nível de sistema operacional: bubblewrap no Linux e seatbelt no macOS
E não, isso não é só freio
No uso interno da Anthropic, o sandboxing reduziu os prompts de permissão em 84%
Faz sentido: quando o ambiente não deixa o agente sair da caixa, você não precisa mais ser o segurança de cada chamada 🙂
A mudança que o rewind não desfaz
O sintoma:
Deu ruim, você roda /rewind (ou aperta Esc duas vezes com o prompt vazio), restaura, respira aliviado
Aí percebe que parte do estrago continua lá
A causa:
O checkpointing vem ativado por padrão no Claude Code: depois de cada resposta ele tira um snapshot dos arquivos que modificou, e a cada prompt enviado um checkpoint é criado
Na hora de reverter você escolhe entre restaurar o código, restaurar a conversa ou restaurar os dois
Parece rede de segurança completa, né? Só que tem dois buracos que você precisa conhecer ANTES de precisar deles
Primeiro: o checkpoint só rastreia mudanças feitas pelas ferramentas Write, Edit e NotebookEdit
Alteração feita via comando Bash não é capturada pelo sistema de checkpoint
E é justamente por Bash que passam as coisas mais destrutivas de um projeto
Segundo: o checkpointing não reverte arquivos que sejam symlink ou hard link. Na restauração esses caminhos são pulados e mantêm o conteúdo atual
Como prevenir:
Commit frequente é a rede REAL, o checkpoint é conveniência
Antes de soltar o lote de agentes, deixa a árvore limpa e commitada. Assim o git diff vira seu revisor e o reset vira sua saída de emergência
Restringir comando Bash por regra deny também entra aqui, porque tira do caminho justamente a categoria de mudança que o checkpoint não enxerga
E guarda esse número: os checkpoints persistem entre sessões e são limpos automaticamente depois de 30 dias
Ou seja, checkpoint não é backup de longo prazo, é desfazer de curto prazo
Modos de permissão do Claude Code: o que cada um libera
Antes de escalar pra vários agentes, vale ter na cabeça o que cada modo autoriza sozinho
| Modo | O que ele libera | Caminhos protegidos |
|---|---|---|
| padrão | Pergunta antes de executar o que precisa de aprovação explícita | Nunca auto-aprovados |
| acceptEdits | Auto-aprova edições de arquivo e criação, movimentação e cópia dentro do working directory, e ainda pausa no que for mais arriscado | Nunca auto-aprovados |
| plan | Lê arquivos e explora pra propor mudanças, sem aplicar nada no source | Nunca auto-aprovados |
| bypassPermissions | O mais permissivo: pula praticamente todos os prompts, mantendo regras deny e ask ativas e recusando rodar como root | Podem ser escritos neste modo |
Se liga na última coluna: em todos os modos exceto bypassPermissions, escritas em caminhos protegidos nunca são aprovadas automaticamente
É o tipo de diferença que passa despercebida até o dia em que ela importa
Quando vale soltar agentes paralelos com escrita (e quando não vale)
Nem todo cenário merece a mesma dose de paranoia. Separando por caso:
Vale, com worktree: tarefas independentes por arquivo ou por módulo
Quatro correções que não se cruzam, cada uma no seu diretório de trabalho, cada uma na sua branch. O paralelismo entrega aqui porque não existe arquivo disputado
Vale, com plan mode: varredura ampla de código antes de qualquer escrita
Mapear onde uma mudança bate, levantar dependência, montar o plano. O plan lê e propõe sem editar o source, então você pode soltar vários sem medo nenhum
Vale, com sandbox: agente que precisa rodar comando e mexer em arquivo, mas cuja tarefa cabe inteira dentro do diretório atual
Escrita restrita ao working directory mais rede por domínio aprovado dá pra dormir tranquilo
Não vale: qualquer coisa perto de dado de produção
O caso Replit não foi falta de instrução, foi falta de separação. Se produção está alcançável pelo agente, o modo de permissão não é a sua primeira linha de defesa
Não vale: duas ou mais tarefas que tocam o MESMO arquivo compartilhado
Aqui o paralelismo é ilusão de velocidade: você paga depois, resolvendo conflito ou caçando o trecho que evaporou
Esse raciocínio de escopo por tarefa não é exclusivo de uma ferramenta só. Vale pra qualquer stack onde dá pra rodar vários agentes no mesmo projeto, a régua é a mesma
Vale a pena? Depende do isolamento, não da confiança no agente
Veredito honesto: rodar agentes em paralelo com permissão de escrita é ganho REAL de tempo
Não é hype, tarefa independente rodando ao mesmo tempo comprime cronograma de um jeito que trabalho sequencial não comprime
Mas o risco aqui é de sistema, não de comportamento
Não adianta escrever no CLAUDE.md "não mexa nesta pasta" e achar que resolveu, porque instrução em texto é sugestão, e a Replit já pagou essa conta em público
A régua que eu usaria pra decidir se pode soltar o lote tem três itens:
- isolamento de verdade (worktree ou sandbox), pra que dois agentes não escrevam no mesmo lugar
- regra deny explícita, lembrando que a ordem é deny, ask, allow, com a primeira correspondência decidindo
- commit antes, porque o checkpoint não cobre Bash nem symlink
Sem esses três, o que você ganha em velocidade devolve em recuperação
E recuperação é sempre mais lenta que a geração, porque envolve você entendendo o que quatro processos fizeram sem te contar
Conclusão
A contenção mínima pra soltar agentes em paralelo cabe em três frentes
Isola o diretório de trabalho, pra que um agente não escreva por cima do outro
Escreve as regras deny e ask ANTES de liberar, não depois do primeiro susto
E commita o estado limpo antes de soltar o lote, porque essa é a única rede que cobre até o que o checkpoint não enxerga
O próximo passo prático? Não comece pelos quatro agentes
Começa com UM em plan mode, vê o que ele propõe tocar, confere se o escopo bate com o que você imaginava, e só então escala pro paralelo com escrita
É menos empolgante, mas é assim que a velocidade fica sua de verdade 😀
até o próximo post!
Perguntas frequentes
Qual a diferença entre acceptEdits e bypassPermissions ao rodar agentes em paralelo?
O acceptEdits aprova automaticamente edições de arquivo e operações de sistema de arquivos consideradas seguras dentro do diretório de trabalho, mas ainda pausa para o que for mais arriscado. Já o bypassPermissions pula praticamente todos os prompts de aprovação, mantendo pouquíssimos freios: regras explícitas de ask e deny continuam valendo, e ele se recusa a rodar como root. Outra diferença importante: no acceptEdits, escritas em caminhos protegidos nunca são auto-aprovadas, enquanto o bypassPermissions é o único modo em que essa proteção não se aplica.
Dá pra desfazer o que um agente fez sozinho durante a execução em paralelo?
Sim, o checkpointing vem ligado por padrão: depois de cada resposta o Claude Code tira um snapshot dos arquivos modificados, e a cada prompt enviado um checkpoint é criado. Pra reverter, roda-se /rewind ou aperta-se Esc duas vezes com o prompt vazio, escolhendo entre restaurar o código, a conversa ou os dois. Vale lembrar: mudanças feitas via comandos Bash não são capturadas pelo checkpoint, e symlinks ou hard links são pulados na restauração.
Worktrees funcionam em qualquer sistema de controle de versão?
Não. O uso de worktrees no Claude Code exige um repositório git. Se o projeto usa outro sistema de controle de versão, é preciso configurar hooks substituindo a lógica de git antes de contar com esse isolamento.
O modo plan ajuda antes de liberar agentes com permissão de escrita?
Ajuda como etapa de reconhecimento: no modo plan o Claude pesquisa e propõe mudanças sem aplicá-las, ou seja, ele lê arquivos e explora, mas não edita o código-fonte. É um jeito de ver o que cada agente pretende fazer antes de trocar pra um modo que efetivamente escreve.
Subagentes conseguem se coordenar entre si enquanto rodam em paralelo?
Não. No padrão orquestrador-trabalhador da Anthropic, os subagentes não conseguem se coordenar entre si e o agente líder não consegue direcioná-los enquanto estão em execução. Isso é justamente o que documenta o risco de um subagente duplicar o trabalho de outro, já que cada um roda isolado, com sua própria janela de contexto e devolve só o resultado final pro agente principal.
Um hook PreToolUse consegue bloquear uma ferramenta mesmo com regra allow liberando?
Consegue. O PreToolUse roda depois que o Claude monta os parâmetros da ferramenta e antes da chamada ser processada, casando por nome como Bash, Edit, Write ou Read. Se esse hook sai com código 2, ele bloqueia a chamada e devolve o stderr como mensagem de erro, e isso acontece antes da avaliação das regras de permissão, valendo mesmo quando um allow deixaria passar.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
Como acompanhar uma orquestração de agentes que roda por horas sem ficar de babá?
Orquestração de agentes rodando por horas? Veja como acompanhar com hooks, transcripts JSONL, agent view e push no celular, sem virar babá do terminal.
Pipeline vs paralelo na orquestração de agentes: quando usar cada padrão?
Orquestração de agentes define sucesso do seu sistema. Pipeline ou paralelo? Entenda latência, custo e throughput na prática com exemplos reais de 2026.
Quando vale a pena usar vários agentes no Claude Code em vez de um só?
Vários agentes no Claude Code valem a pena? Veja quando dividir tarefas compensa (e quando só atrasa e encarece), com os 4 canais disponíveis na prática.
