Leitura executiva
Worktree evita colisão; segurança exige sandbox, identidade, capabilities, dados, tempo, policy e evidência vinculados à tarefa.
Dois agentes trabalham em branches diferentes. Nenhum sobrescreve o arquivo do outro. O time conclui que a execução está isolada.
Mas os dois ainda podem usar a mesma credencial, consultar a mesma base, chamar a mesma ferramenta e alcançar a mesma rede. A separação de arquivos resolveu uma colisão de trabalho; não resolveu a fronteira de segurança.
Em sistemas agentic, segurança precisa acompanhar a tarefa inteira: quem executa, em qual ambiente, com quais capabilities, sobre quais dados, durante quanto tempo e sob qual autoridade.
Resumo executivo
Um worktree protege concorrência no repositório. Um sandbox limita execução. Identidade atribui ações. Capabilities restringem o que cada identidade pode fazer. Policy decide quando a combinação é válida.
| Camada | Pergunta | Falha que evita |
|---|---|---|
| workspace | onde o trabalho acontece? | colisão de arquivos e estado |
| sandbox | o que o processo consegue alcançar? | escrita, processo ou rede fora da fronteira |
| identidade | quem realizou a ação? | atividade sem atribuição |
| capability | qual operação está autorizada? | excesso de privilégio |
| dado | sobre qual classe de informação? | exposição ou mistura indevida |
| tempo | até quando o grant vale? | permissão residual |
| evidência | como provar uso e revogação? | confiança baseada em configuração declarada |
Nenhuma camada substitui as outras. Segurança por tarefa nasce da interseção entre elas.
Worktree não é sandbox
Worktrees são excelentes para isolar mudanças concorrentes. Cada sessão recebe uma árvore de trabalho, branch e histórico próprios. Isso reduz colisões e facilita revisão.
O sistema operacional, porém, não interpreta uma branch como fronteira de permissão. Um processo pode continuar lendo caminhos externos, variáveis, keychains, sockets ou serviços de rede se o ambiente permitir.
O contrato correto é:
worktree = isolamento de mudança
sandbox = isolamento de execução
policy = isolamento de autoridade
Documentação pública de agentes de código descreve sandbox, acesso ao workspace e rede como controles distintos. A FORGE usa essa separação como princípio de projeto; a existência de um sandbox específico não certifica o produto que o adota. [R2-C3]
Identidade precisa chegar à ação
“O agente fez” é uma frase operacionalmente fraca. Qual agente? Em nome de quem? Em qual sessão? Com qual papel? Qual versão do workflow concedeu a permissão?
Uma identidade útil deve permitir ligar:
- pessoa ou sistema que iniciou a tarefa;
- sessão que recebeu o objetivo;
- papel ou especialidade assumida;
- grant efetivo;
- ação executada;
- artefato ou efeito produzido;
- decisão de revisão ou aceite.
Isso não exige expor raciocínio interno. Exige registrar fatos operacionais suficientes para atribuir, investigar e revogar.
Capability é mais precisa do que “acesso”
Permitir “GitHub” diz pouco. Uma tarefa pode precisar ler uma issue, criar uma branch e abrir um PR, sem poder alterar secrets, regras de proteção ou releases.
Modele grants como verbos sobre recursos:
issue:read
branch:create
repository:write@worktree
pull_request:create
secret:read = denied
release:publish = denied
O mesmo vale para banco, CRM, arquivos e infraestrutura. A capability deve ser mínima, vinculada à tarefa e revogável. Modelos e adapters podem sugerir operações; o enforcement precisa estar fora do texto que o próprio executor controla. Fontes públicas mostram implementações diferentes de agents, workspaces e permissões, não um padrão universal de autorização. [HARNESS31-C4]
Uma matriz de cinco dimensões
Antes de iniciar uma execução com efeito material, responda:
| Dimensão | Exemplo de contrato |
|---|---|
| subject | session:SQ21 atuando em nome do owner aprovado |
| resource | repo, diretório, API, dataset ou tenant exatos |
| action | ler, sugerir, escrever, executar, aprovar ou publicar |
| condition | ambiente, branch, risco, rede e horário |
| expiry | fim da sessão, merge, timeout ou revogação explícita |
O grant não deveria sobreviver à razão pela qual foi criado. Uma sessão concluída não precisa manter acesso de escrita; um preview não precisa de credencial de produção; um reviewer não precisa executar o código que avalia.
Rede é parte do contrato
Agentes que navegam, instalam dependências ou consultam serviços externos ampliam a superfície de prompt injection, exfiltração e supply chain.
Três políticas são mais úteis do que o binário “internet ligada”:
- deny: nenhuma saída; dependências e dados entram por artefatos aprovados;
- allowlist: somente destinos e métodos necessários;
- escalate: domínio novo exige decisão antes da primeira chamada.
Também importa controlar retorno: baixar um pacote, enviar conteúdo, criar uma transação e publicar um comentário são efeitos diferentes.
Segredos não pertencem ao prompt
Uma credencial inserida no contexto pode reaparecer em transcript, tool call, erro ou artefato. O modelo não precisa conhecer o segredo para usar uma capability.
Prefira:
- broker ou vault que troca identidade por token curto;
- escopo mínimo e ambiente explícito;
- injeção somente no processo autorizado;
- logs com valor mascarado;
- revogação observável;
- teste negativo que prove acesso negado fora da tarefa.
O resultado esperado não é “o agente prometeu não mostrar”. É “a arquitetura não entregou o valor ao contexto e o efeito fora do grant falhou”.
Segurança por tarefa na prática
Considere um agente encarregado de corrigir documentação pública:
- recebe uma issue pública e um worktree exclusivo;
- lê somente o repositório e fontes allowlisted;
- não recebe secrets de deploy;
- pode editar arquivos do escopo e executar validadores locais;
- pode abrir PR, mas não aprová-lo nem publicar release;
- o CI usa identidade separada para verificar;
- o deploy usa outra identidade, depois do merge;
- todos os grants da sessão expiram no fechamento.
Separar identidades reduz autoridade circular. Também torna incidentes mais localizáveis: uma falha de pesquisa, implementação, revisão ou publicação deixa evidência em um plano diferente.
O teste mais importante é o negativo
Configuração declarada não basta. Verifique que:
- o agente não lê arquivo fora do workspace;
- rede para destino não autorizado falha;
- token de desenvolvimento não alcança produção;
- reviewer não escreve no asset;
- grant expirado deixa de funcionar;
- uma sessão não acessa memória ou dado de outra;
- logs identificam subject, recurso e decisão sem vazar conteúdo sensível.
Uma arquitetura pode parecer restrita e ainda carregar um bypass. O teste negativo transforma a fronteira em propriedade observável.
O que este artigo prova — e o que não prova
As fontes elegíveis sustentam que sandbox, rede, identidade e autorização são controles separados e que o perfil exato depende do ambiente. Elas não demonstram que uma ferramenta específica é segura em qualquer configuração, nem que isolamento elimina prompt injection, erro humano ou risco de cadeia de suprimentos.
Este artigo propõe um contrato de segurança por tarefa. Threat model, testes e operação continuam específicos de cada produto.
Conclusão
Um agente não deveria receber “acesso ao sistema”. Deveria receber uma capacidade pequena, em um ambiente delimitado, por um tempo curto, ligada a uma identidade e a uma evidência.
Worktree organiza concorrência. Sandbox reduz alcance. Identidade atribui. Capability limita. Policy decide. A segurança aparece quando todas essas camadas concordam sobre a mesma tarefa.
Leitura anterior: Graph, loop ou híbrido?. Próxima leitura sugerida: Taste, responsabilidade e clareza.
Nota editorial e de responsabilidade
- Corte da pesquisa
- Última revisão
- Correções registradas
- Nenhuma correção registrada.
Este artigo combina fontes citadas, análise e experiência profissional do autor. Dados e afirmações factuais verificáveis estão vinculados às respectivas fontes. Interpretações, hipóteses, projeções, recomendações e opiniões representam o ponto de vista profissional do autor no momento da publicação; não constituem fatos comprovados, promessa de resultado nem aconselhamento jurídico, financeiro ou técnico aplicável a um caso específico. Consulte as fontes originais e profissionais habilitados antes de tomar decisões.
Claims e fontes
R2-C3
Least privilege, isolated execution and supply-chain provenance are complementary controls; none substitutes for the others in an agentic system.
Limite: The exact control profile remains environment-specific and must be threat-modeled per product. This is a research-synthesis design input; it does not prove product adoption, operational maturity, independent attestation or outcome.
- OpenAI — OpenAI, Apache-2.0 repository; analysis-only excerpts
- OWASP Foundation — OWASP Foundation, CC-BY-SA-4.0 standard; analysis-only excerpts
- OpenSSF SLSA — OpenSSF SLSA, CC-BY-4.0 specification; analysis-only excerpts
HARNESS31-C4
Shared agent capabilities should be scoped and administered explicitly, while web, Slack and future channels remain replaceable integration surfaces rather than implicit organization-wide authority.
Limite: The sources do not define a universal authorization model. FORGE still needs deny-by-default grants, tenant tests and revocation evidence before enforcement. This is a source-bound design input; it does not prove product adoption, operational maturity, independent attestation, search ranking, AI citation or outcome.
- YC Software — YC Software, MIT
- YC Software — YC Software, MIT
- YC Software — YC Software, MIT
- Anthropic — Anthropic, proprietary-site-terms