Arquitetura de Agentes: Construindo Harnesses de Desenvolvimento com IA
# O sistema completo para construir harnesses de agentes de IA em produção. Skills, hooks, memória, subagentes, orquestração multi-agente e os padrões que tornam os agentes de codificação com IA uma infraestrutura confiável.
TL;DR: Claude Code não é uma caixa de chat com acesso a arquivos. É um runtime programável com 29 eventos de ciclo de vida documentados, cada um vinculável a hooks com shell scripts que o modelo não pode pular. Empilhe hooks em dispatchers, dispatchers em skills, skills em agents, agents em workflows, e você obtém um harness de desenvolvimento autônomo que aplica restrições, delega trabalho, persiste memória entre sessões e orquestra deliberação multi-agent. Este guia cobre cada camada dessa stack: de um único hook a um sistema de consenso com 10 agents. Zero frameworks necessários. Tudo bash e JSON.
Andrej Karpathy cunhou um termo para o que cresce ao redor de um agent LLM: claws (garras). Os hooks, scripts e orquestração que permitem ao agent agarrar o mundo fora de sua janela de contexto.1 A maioria dos desenvolvedores trata os AI coding agents como assistentes interativos. Eles digitam um prompt, observam ele editar um arquivo, e seguem em frente. Esse enquadramento limita a produtividade ao que você consegue supervisionar pessoalmente.
O modelo mental de infraestrutura é diferente: um AI coding agent é um runtime programável com um kernel LLM. Cada ação que o modelo executa passa por hooks que você controla. Você define políticas, não prompts. O modelo opera dentro da sua infraestrutura da mesma forma que um servidor web opera dentro das regras do nginx. Você não senta no nginx e digita requisições. Você o configura, faz o deploy e monitora.
A distinção importa porque infraestrutura se acumula. Um hook que bloqueia credenciais em comandos bash protege toda sessão, todo agent, toda execução autônoma. Uma skill que codifica sua rubrica de avaliação se aplica consistentemente, seja você quem a invoca ou um agent. Um agent que revisa código em busca de problemas de segurança executa as mesmas verificações esteja você observando ou não.2
Principais conclusões
- Hooks garantem execução; prompts não. Use hooks para linting, formatação, verificações de segurança e qualquer coisa que precise rodar todas as vezes, independentemente do comportamento do modelo. Exit code 2 bloqueia ações. Exit code 1 apenas avisa.3
- Skills codificam expertise de domínio que ativa automaticamente. O campo
descriptiondetermina tudo. Claude usa raciocínio LLM (não correspondência de palavras-chave) para decidir quando aplicar uma skill.4 - Subagents previnem inchaço de contexto. Janelas de contexto isoladas para exploração e análise mantêm a sessão principal enxuta. Execute subagents independentes em paralelo, e use equipes de agents quando os workers precisarem de coordenação sustentada.5
- A memória vive no sistema de arquivos. Arquivos persistem entre janelas de contexto. CLAUDE.md, MEMORY.md, diretórios de rules e documentos de handoff formam um sistema estruturado de memória externa.6
- Deliberação multi-agent captura pontos cegos. Agents individuais não conseguem desafiar suas próprias suposições. Dois agents independentes com diferentes prioridades de avaliação capturam falhas estruturais que portões de qualidade não conseguem abordar.7
- O padrão do harness é o sistema. CLAUDE.md, hooks, skills, agents e memória não são recursos independentes. Eles se compõem em uma camada determinística entre você e o modelo que escala com automação.
Como usar este guia
| Experiência | Comece aqui | Em seguida explore |
|---|---|---|
| Usa Claude Code diariamente, quer mais | The Harness Pattern | Skills System, Hook Architecture |
| Construindo workflows autônomos | Subagent Patterns | Multi-Agent Orchestration, Production Patterns |
| Avaliando arquitetura de agent | Why Agent Architecture Matters | Decision Framework, Security Considerations |
| Configurando um harness de equipe | CLAUDE.md Design | Hook Architecture, Quick Reference Card |
Cada seção se baseia na anterior. O Decision Framework no final fornece uma tabela de consulta para escolher o mecanismo certo para cada tipo de problema.
Caminho Direto de Cinco Minutos
Antes do mergulho profundo, aqui está o caminho mais curto do zero a um harness funcional. Um hook, um skill, um subagent, um resultado.
Passo 1: Criar um hook de segurança (2 minutos)
Crie .claude/hooks/block-secrets.sh:
#!/bin/bash
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
if echo "$CMD" | grep -qEi '(AKIA|sk-|ghp_|password=)'; then
echo "BLOCKED: Potential secret in command" >&2
exit 2
fi
Conecte-o em .claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": ".claude/hooks/block-secrets.sh" }]
}
]
}
}
Resultado: Todo comando bash que o Claude executa agora é verificado em busca de credenciais vazadas. O modelo não pode pular essa verificação.
Passo 2: Criar um skill de revisão de código (1 minuto)
Crie .claude/skills/reviewer/SKILL.md com frontmatter (name: reviewer, description: Review code for security issues, bugs, and quality problems. Use when examining changes, reviewing PRs, or auditing code., allowed-tools: Read, Grep, Glob) e um checklist: SQL injection, XSS, segredos hardcoded, tratamento de erros ausente, funções com mais de 50 linhas.
Resultado: Claude ativa automaticamente esse conhecimento sempre que você mencionar revisar, verificar ou auditar.
Passo 3: Invocar um subagent (30 segundos)
Em qualquer sessão do Claude Code, peça ao Claude para revisar os últimos 3 commits em busca de problemas de segurança usando um agent separado. O Claude invoca um Explore agent que lê o diff, aplica o seu skill de revisão e retorna um resumo. Seu contexto principal permanece limpo.
O que você tem agora
Um harness de três camadas: um portão de segurança determinístico (hook), conhecimento de domínio que ativa automaticamente (skill) e análise isolada que protege seu contexto (subagent). Cada seção abaixo expande uma dessas três camadas.
Por que a arquitetura de agents importa
Simon Willison enquadra o momento atual em torno de uma única observação: escrever código ficou barato agora.8 Correto. Mas o corolário é que a verificação agora é a parte cara. Código barato sem infraestrutura de verificação produz bugs em escala. O investimento que compensa não é um prompt melhor. É o sistema em torno do modelo que captura o que o modelo deixa passar.
Três forças tornam a arquitetura de agents necessária:
Context windows são finitas e sujeitas a perdas. Cada arquivo lido, saída de tool e turno de conversa consome tokens. A Microsoft Research e a Salesforce testaram 15 LLMs em mais de 200.000 conversas simuladas e encontraram uma queda média de desempenho de 39% da interação de turno único para multi-turno.9 A degradação começa em tão poucos quanto dois turnos e segue uma curva previsível: edições precisas em múltiplos arquivos nos primeiros 30 minutos degeneram em visão de túnel em um único arquivo por volta do minuto 90. Context windows mais longas não resolvem isso. A condição “Concat” do mesmo estudo (conversa completa como um único prompt) alcançou 95,1% do desempenho de turno único com conteúdo idêntico. A degradação vem dos limites entre turnos, não dos limites de tokens.
O comportamento do modelo é probabilístico, não determinístico. Dizer ao Claude “sempre execute o Prettier após editar arquivos” funciona aproximadamente 80% das vezes.3 O modelo pode esquecer, priorizar velocidade ou decidir que a mudança é “pequena demais”. Para compliance, segurança e padrões de equipe, 80% não é aceitável. Hooks garantem a execução: todo Edit ou Write aciona seu formatador, toda vez, sem exceções. Determinístico vence probabilístico.
Perspectivas únicas deixam passar problemas multidimensionais. Um único agent revisando um endpoint API verificou autenticação, validou sanitização de entrada e conferiu cabeçalhos CORS. Atestado de saúde impecável. Um segundo agent, instruído separadamente como pentester, descobriu que o endpoint aceitava parâmetros de consulta ilimitados que podiam disparar negação de serviço através de amplificação de consultas ao banco de dados.7 O primeiro agent nunca verificou porque nada em seu framework de avaliação tratava a complexidade de consultas como superfície de segurança. Essa lacuna é estrutural. Nenhuma quantidade de prompt engineering corrige isso.
A arquitetura de agents aborda as três questões: hooks impõem restrições determinísticas, subagents gerenciam isolamento de contexto e a orquestração multi-agent fornece perspectivas independentes. Juntos, eles formam o harness.
O Padrão Harness
O harness não é um framework. É um padrão: um conjunto componível de arquivos, scripts e convenções que envolvem um agente de codificação de IA em uma infraestrutura determinística. Os componentes:
┌──────────────────────────────────────────────────────────────┐
│ THE HARNESS PATTERN │
├──────────────────────────────────────────────────────────────┤
│ ORCHESTRATION │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Agent │ │ Agent │ │ Consensus │ │
│ │ Teams │ │ Spawning │ │ Validation│ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ Multi-agent deliberation, parallel research, voting │
├──────────────────────────────────────────────────────────────┤
│ EXTENSION LAYER │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Skills │ │ Hooks │ │ Memory │ │ Agents │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ Domain expertise, deterministic gates, persistent state, │
│ specialized subagents │
├──────────────────────────────────────────────────────────────┤
│ INSTRUCTION LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ CLAUDE.md + .claude/rules/ + MEMORY.md │ │
│ └──────────────────────────────────────────────────────┘ │
│ Project context, operational policy, cross-session memory │
├──────────────────────────────────────────────────────────────┤
│ CORE LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Main Conversation Context (LLM) │ │
│ └──────────────────────────────────────────────────────┘ │
│ Your primary interaction; finite context; costs money │
└──────────────────────────────────────────────────────────────┘
Camada de Instrução: Os arquivos CLAUDE.md e diretórios de rules definem o que o agente sabe sobre o seu projeto. Eles são carregados automaticamente no início da sessão e após cada compactação. Esta é a memória arquitetural de longo prazo do agente.
Camada de Extensão: Skills fornecem expertise de domínio que se ativa automaticamente com base no contexto. Hooks fornecem gates determinísticos que disparam em cada chamada de tool correspondente. Arquivos de memória persistem o estado entre sessões. Agents personalizados fornecem configurações de subagents especializados.
Camada de Orquestração: Padrões multi-agent coordenam agents independentes para pesquisa, revisão e deliberação. Orçamentos de spawn previnem recursão descontrolada. A validação por consenso garante a qualidade.
A percepção principal: a maioria dos usuários trabalha inteiramente na Camada Core, observando o contexto inflar e os custos subirem. Usuários avançados configuram as camadas de Instrução e Extensão e, então, usam a Camada Core apenas para orquestração e decisões finais.2
Harnesses Gerenciados vs. Auto-Hospedados (Abril de 2026)
Durante o início de 2026, o caminho “construa seu próprio harness” era a única opção real. Em abril de 2026, isso mudou. Anthropic lançou os Claude Managed Agents em beta público (8 de abril): loop de harness + execução de tools + container de sandbox + persistência de estado como uma REST API, cobrado em tokens padrão mais $0,08/sessão-hora. A atualização do Agents SDK da OpenAI (16 de abril) formalizou a mesma divisão — harness e computação como camadas separadas, com provedores nativos de sandbox (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel) e snapshot/rehydrate para sobreviver à perda de container.2324
A superfície SDK mais profunda do lado da OpenAI chegou no openai-agents Python v0.14.0 (lançado em 15 de abril de 2026; anunciado em 16 de abril): uma subclasse SandboxAgent de Agent com default_manifest, instruções de sandbox e capabilities; um Manifest descrevendo o contrato de workspace fresco (arquivos, dirs, arquivos locais, repos Git, env, users, mounts); um SandboxRunConfig para fiação por execução de cliente sandbox, injeção de sessão ao vivo, sobrescritas de manifest, snapshots e limites de concorrência de materialização. As capabilities integradas cobrem acesso ao shell, edição do filesystem, inspeção de imagem, skills, memória de sandbox e compactação. A memória de sandbox persiste lições extraídas entre execuções e as divulga progressivamente; workspaces suportam arquivos locais, entradas de repo Git e mounts remotos (S3, R2, GCS, Azure Blob, S3 Files); snapshots são portáveis entre provedores. Backends: UnixLocalSandboxClient, DockerSandboxClient e clientes hospedados para Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop e Vercel via extras opcionais.24
Para projetos Python que querem incorporar o runtime do Claude Code como uma biblioteca — entre “shell out para claude” e “REST API para Managed Agents” — claude-agent-sdk-python é a terceira opção. A série de 28-29 de abril (v0.1.69 → v0.1.71) atualizou o CLI embutido para v2.1.123, elevou o piso da dependência mcp para >=1.19.0 (versões mais antigas descartavam silenciosamente os retornos CallToolResult de tools MCP in-process, deixando o modelo com um blob de erro de validação) e trouxe SandboxNetworkConfig para paridade de schema com o TypeScript SDK (allowedDomains, deniedDomains, allowManagedDomainsOnly, allowMachLookup).30
A bifurcação arquitetural agora é real:
| Dimensão | Harness auto-hospedado (padrão deste guia) | Harness gerenciado (Claude Managed Agents / OpenAI Agents SDK) |
|---|---|---|
| Carga operacional | Você executa tudo | Fornecedor executa loop, sandbox, estado |
| Customização | Total — seus hooks, suas skills, sua memória | Limitada — pontos de extensão definidos pelo fornecedor |
| Modelo de custo | Token + computação auto-hospedada | Token + adicional de runtime-hora |
| Durabilidade do estado | Você projeta | Fornecedor faz checkpoints entre desconexões |
| Orquestração de equipes de agents | Construa o seu próprio | Coordenação multi-agent fornecida pelo vendor |
Quando escolher cada um: auto-hospedado continua sendo certo para equipes que já têm musculatura de infraestrutura, querem skills/hooks que controlam, ou estão otimizando profundamente um fluxo de trabalho específico. Gerenciado é certo para equipes sem engenheiros de plataforma dedicados, quando time-to-value importa mais que customização, ou quando execuções de agent precisam sobreviver ao fechamento do laptop de forma confiável sem que você tenha que construir essa camada de persistência. Os dois são compatíveis — você pode executar um harness auto-hospedado que delega tarefas específicas de longa duração para Managed Agents via sua REST API.
Como o Harness se Apresenta no Disco
~/.claude/
├── CLAUDE.md # Personal global instructions
├── settings.json # User-level hooks and permissions
├── skills/ # Personal skills (44+)
│ ├── code-reviewer/SKILL.md
│ ├── security-auditor/SKILL.md
│ └── api-designer/SKILL.md
├── agents/ # Custom subagent definitions
│ ├── security-reviewer.md
│ └── code-explorer.md
├── rules/ # Categorized rule files
│ ├── security.md
│ ├── testing.md
│ └── git-workflow.md
├── hooks/ # Hook scripts
│ ├── validate-bash.sh
│ ├── auto-format.sh
│ └── recursion-guard.sh
├── configs/ # JSON configuration
│ ├── recursion-limits.json
│ └── deliberation-config.json
├── state/ # Runtime state
│ ├── recursion-depth.json
│ └── agent-lineage.json
├── handoffs/ # Session handoff documents
│ └── deliberation-prd-7.md
└── projects/ # Per-project memory
└── {project}/memory/MEMORY.md
.claude/ # Project-level (in repo)
├── CLAUDE.md # Project instructions
├── settings.json # Project hooks
├── skills/ # Team-shared skills
├── agents/ # Team-shared agents
└── rules/ # Project rules
Cada arquivo nesta estrutura tem um propósito. A árvore ~/.claude/ é infraestrutura pessoal que se aplica a todos os projetos. A árvore .claude/ em cada repositório é específica do projeto e compartilhada via git. Juntas, elas formam o harness completo.
Sistema de Skills
Skills são extensões invocadas pelo modelo. Claude as descobre e aplica automaticamente com base no contexto, sem você chamá-las explicitamente.4 No momento em que você se pegar reexplicando o mesmo contexto entre sessões, é a hora de criar uma skill.
Quando criar uma Skill
| Situação | Crie um(a)… | Por quê |
|---|---|---|
| Você cola a mesma checklist em toda sessão | Skill | Conhecimento de domínio que ativa automaticamente |
| Você executa a mesma sequência de comandos explicitamente | Slash command | Ação invocada pelo usuário com gatilho previsível |
| Você precisa de uma análise isolada que não deve poluir o contexto | Subagent | Janela de contexto separada para trabalho focado |
| Você precisa de um prompt único com instruções específicas | Nada | Apenas digite. Nem tudo precisa de abstração. |
Skills são para conhecimento que Claude sempre tem disponível. Slash commands são para ações que você dispara explicitamente. Se estiver decidindo entre as duas, pergunte: “Claude deveria aplicar isso automaticamente, ou eu deveria decidir quando executar?”
Criando uma Skill
Skills ficam em quatro locais possíveis, do escopo mais amplo ao mais restrito:4
| Escopo | Local | Aplica-se a |
|---|---|---|
| Empresa | Configurações gerenciadas | Todos os usuários da organização |
| Pessoal | ~/.claude/skills/<name>/SKILL.md |
Todos os seus projetos |
| Projeto | .claude/skills/<name>/SKILL.md |
Apenas este projeto |
| Plugin | <plugin>/skills/<name>/SKILL.md |
Onde o plugin estiver habilitado |
Toda skill requer um arquivo SKILL.md com frontmatter YAML:
---
name: code-reviewer
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
allowed-tools: Read, Grep, Glob
---
# Code Review Expertise
## Security Checks
When reviewing code, verify:
### Input Validation
- All user input sanitized before database operations
- Parameterized queries (no string interpolation in SQL)
- Output encoding for rendered HTML content
### Authentication
- Session tokens validated on every protected endpoint
- Permission checks before data mutations
- No hardcoded credentials or API keys in source
Referência de Frontmatter
| Campo | Obrigatório | Finalidade |
|---|---|---|
name |
Sim | Identificador único (minúsculas, hifens, máx. 64 caracteres) |
description |
Sim | Gatilho de descoberta (máx. 1024 caracteres). Claude usa isso para decidir quando aplicar a skill |
allowed-tools |
Não | Restringe as capacidades do Claude (ex.: Read, Grep, Glob para somente leitura) |
disable-model-invocation |
Não | Impede ativação automática; a skill só ativa via /skill-name |
user-invocable |
Não | Defina como false para ocultar do menu / por completo |
model |
Não | Sobrescreve qual modelo usar quando a skill estiver ativa |
context |
Não | Defina como fork para executar em janela de contexto isolada |
agent |
Não | Executa como subagent com seu próprio contexto isolado |
hooks |
Não | Define hooks de ciclo de vida com escopo nesta skill |
$ARGUMENTS |
Não | Substituição de string: substituído pela entrada do usuário após /skill-name |
O campo Description é tudo
No início da sessão, Claude Code extrai o name e a description de cada skill e os injeta no contexto do Claude. Quando você envia uma mensagem, Claude usa raciocínio de modelo de linguagem para decidir se alguma skill é relevante. Análise independente do código-fonte do Claude Code confirma o mecanismo: as descrições de skills são injetadas em uma seção available_skills do system prompt, e o modelo usa compreensão de linguagem padrão para selecionar as skills relevantes.10
Descrição ruim:
description: Helps with code
Descrição eficaz:
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
A descrição eficaz inclui: o que ela faz (revisar código em busca de tipos específicos de problemas), quando usá-la (examinar mudanças, PRs, análise de qualidade) e frases-gatilho (review, audit, check) que os usuários naturalmente digitam.
Orçamento de contexto
Todas as descrições de skills compartilham um orçamento de contexto que escala dinamicamente em 1% da janela de contexto, com um fallback de 8.000 caracteres.4 Se você tiver muitas skills, mantenha cada descrição concisa e coloque o caso de uso principal em primeiro lugar. Você pode sobrescrever o orçamento via a variável de ambiente SLASH_COMMAND_TOOL_CHAR_BUDGET,11 mas a melhor solução é descrições mais curtas e precisas. Execute /context durante uma sessão para verificar se alguma skill está sendo excluída.
Arquivos de apoio e organização
Skills podem referenciar arquivos adicionais no mesmo diretório:
~/.claude/skills/code-reviewer/
├── SKILL.md # Required: frontmatter + core expertise
├── SECURITY_PATTERNS.md # Referenced: detailed vulnerability patterns
└── PERFORMANCE_CHECKLIST.md # Referenced: optimization guidelines
Faça referência a eles no SKILL.md com links relativos. Claude lê esses arquivos sob demanda quando a skill é ativada. Mantenha o SKILL.md com menos de 500 linhas e mova material de referência detalhado para arquivos de apoio.12
Compartilhando Skills via Git
Skills de projeto (.claude/skills/ na raiz do repositório) são compartilhadas via controle de versão:4
mkdir -p .claude/skills/domain-expert
# ... write SKILL.md ...
git add .claude/skills/
git commit -m "feat: add domain-expert skill for payment processing rules"
git push
Quando os colegas de equipe fazem pull, recebem a skill automaticamente. Sem instalação, sem configuração. Esta é a forma mais eficaz de padronizar conhecimento em uma equipe.
Skills como uma biblioteca de prompts
Além de skills de propósito único, a estrutura de diretórios funciona como uma biblioteca de prompts organizada:
~/.claude/skills/
├── code-reviewer/ # Activates on: review, audit, check
├── api-designer/ # Activates on: design API, endpoint, schema
├── sql-analyst/ # Activates on: query, database, migration
├── deploy-checker/ # Activates on: deploy, release, production
└── incident-responder/ # Activates on: error, failure, outage, debug
Cada skill codifica uma faceta diferente do seu conhecimento. Juntas, formam uma base de conhecimento da qual Claude extrai automaticamente com base no contexto. Um desenvolvedor júnior recebe orientação de nível sênior sem precisar pedir.
Skills compõem com Hooks
Skills podem definir seus próprios hooks no frontmatter que ativam apenas enquanto a skill é executada. Isso cria comportamento específico de domínio que não polui outras sessões:2
---
name: deploy-checker
description: Verify deployment readiness. Use when preparing to deploy,
release, or push to production.
hooks:
PreToolUse:
- matcher: Bash
hooks:
- type: command
command: "bash -c 'INPUT=$(cat); CMD=$(echo \"$INPUT\" | jq -r \".tool_input.command\"); if echo \"$CMD\" | grep -qE \"deploy|release|publish\"; then echo \"DEPLOYMENT COMMAND DETECTED. Running pre-flight checks.\" >&2; fi'"
---
Skills de filosofia ativam automaticamente via hooks SessionStart, injetando restrições de qualidade em cada sessão sem invocação explícita. A skill em si é conhecimento. O hook é a aplicação. Juntos, formam uma camada de política.
Erros comuns em Skills
Descrições amplas demais. Uma skill git-rebase-helper que ativa em qualquer prompt relacionado a git (rebases, merges, cherry-picks, até git status) polui o contexto em 80% das sessões. A correção é apertar a descrição ou adicionar disable-model-invocation: true e exigir invocação explícita via /skill-name.4
Skills demais competindo por orçamento. Mais skills significam mais descrições competindo pelo orçamento de contexto de 1%. Se notar que skills não estão ativando, verifique /context em busca das que foram excluídas. Priorize menos skills, bem descritas, em vez de muitas vagas.
Informação crítica enterrada em arquivos de apoio. Claude lê o SKILL.md imediatamente, mas só acessa os arquivos de apoio quando necessário. Se informação crítica estiver em um arquivo de apoio, Claude pode não encontrá-la. Coloque informações essenciais diretamente no SKILL.md.4
Superfície de Skills do SDK (8 de maio de 2026)
Harnesses auto-hospedadas no claude-agent-sdk-python v0.1.77+ devem usar a opção skills em ClaudeAgentOptions para declarar as skills disponíveis, não o valor legado "Skill" em allowed_tools.37 O atalho "Skill" está obsoleto e a opção dedicada fornece ao Claude Code informações mais estruturadas sobre quais skills estão disponíveis. O CLI incluído na v0.1.77 é a v2.1.133.
Arquitetura de Hooks
Hooks são comandos shell acionados por eventos de ciclo de vida do Claude Code.3 Eles rodam fora do LLM como scripts simples, não como prompts interpretados pelo modelo. O modelo quer executar rm -rf /? Um script bash de 10 linhas verifica o comando contra uma blocklist e o rejeita antes que o shell sequer o veja. O hook dispara quer o modelo queira ou não.
Eventos disponíveis
O Claude Code expõe 29 eventos de ciclo de vida documentados em oito categorias na atualização deste guia. A lista de eventos cresce a cada release, então trate a documentação de referência como a fonte da verdade e consulte o cheat sheet para a tabela completa atual antes de configurar hooks em produção:13
| Categoria | Eventos | Pode bloquear? |
|---|---|---|
| Sessão | SessionStart, Setup, SessionEnd |
Não |
| Usuário / conclusão | UserPromptSubmit, UserPromptExpansion, Stop, StopFailure, TeammateIdle |
Prompt/expansion/stop/idle podem bloquear; StopFailure não |
| Tool | PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, PostToolBatch |
Pre/permission/batch podem bloquear; eventos post não |
| Subagent / task | SubagentStart, SubagentStop, TaskCreated, TaskCompleted |
Eventos stop/task podem bloquear; start não |
| Contexto | PreCompact, PostCompact, InstructionsLoaded |
PreCompact pode bloquear; post/load não |
| Sistema de arquivos / workspace | CwdChanged, FileChanged, WorktreeCreate, WorktreeRemove |
Criação de worktree pode bloquear; outros não |
| Configuração / notificação | ConfigChange, Notification |
Mudanças de configuração podem bloquear, exceto policy settings; notificações não |
| MCP | Elicitation, ElicitationResult |
Sim |
Semântica dos exit codes
Os exit codes determinam se os hooks bloqueiam ações:3
| Exit Code | Significado | Ação |
|---|---|---|
| 0 | Sucesso | A operação prossegue. Stdout exibido em modo verbose. |
| 2 | Erro de bloqueio | A operação para. Stderr vira mensagem de erro alimentada ao Claude. |
| 1, 3, etc. | Erro não-bloqueante | A operação continua. Stderr exibido apenas em modo verbose (Ctrl+O). |
Crítico: Todo hook de segurança deve usar exit 2, não exit 1. Exit 1 é um aviso não-bloqueante. O comando perigoso ainda é executado. Este é o erro de hook mais comum entre as equipes.14
Configuração de hooks
Hooks ficam em arquivos de configurações. Nível de projeto (.claude/settings.json) para hooks compartilhados. Nível de usuário (~/.claude/settings.json) para hooks pessoais:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/validate-bash.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
O campo matcher filtra um valor específico do evento. Para eventos de tool, ele combina com valores de tool_name como Bash, Edit, Write, Read, Glob, Grep, nomes de tools MCP como mcp__server__tool, ou * para todas as tools. Nomes simples e listas separadas por | são correspondências exatas; valores com outros caracteres são expressões regulares JavaScript. Alguns eventos não suportam matchers e sempre disparam quando configurados.13
Protocolo de entrada/saída de hooks
Hooks recebem JSON via stdin com contexto completo:
{
"tool_name": "Bash",
"tool_input": {
"command": "npm test",
"description": "Run test suite"
},
"session_id": "abc-123",
"agent_id": "main",
"agent_type": "main"
}
Para controle avançado, hooks PreToolUse podem retornar JSON para modificar a entrada da tool, injetar contexto ou tomar decisões de permissão. Use o wrapper hookSpecificOutput — o formato anterior decision/reason no nível superior está obsoleto para PreToolUse:
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "Command validated and modified",
"updatedInput": {
"command": "npm test -- --coverage --ci"
},
"additionalContext": "Note: This database has a 5-second query timeout."
}
}
Três tipos de garantias
Antes de escrever qualquer hook, pergunte: que tipo de garantia eu preciso?14
Garantias de formatação asseguram consistência depois do fato. Hooks PostToolUse em Write/Edit rodam seu formatter após cada mudança de arquivo. A saída do modelo não importa porque o formatter normaliza tudo.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; elif [[ \"$FILE_PATH\" == *.js ]] || [[ \"$FILE_PATH\" == *.ts ]]; then npx prettier --write \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
Garantias de segurança previnem ações perigosas antes que sejam executadas. Hooks PreToolUse em Bash inspecionam comandos e bloqueiam padrões destrutivos com exit code 2:
#!/bin/bash
# validate-bash.sh — block dangerous commands
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "rm\s+-rf\s+/|git\s+push\s+(-f|--force)\s+(origin\s+)?main|git\s+reset\s+--hard|DROP\s+TABLE"; then
echo "BLOCKED: Dangerous command detected: $CMD" >&2
exit 2
fi
Garantias de qualidade validam o estado em pontos de decisão. Hooks PreToolUse em comandos git commit rodam seu linter ou suíte de testes e bloqueiam o commit se as verificações de qualidade falharem:
#!/bin/bash
# quality-gate.sh — lint before commit
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "^git\s+commit"; then
if ! LINT_OUTPUT=$(ruff check . --select E,F,W 2>&1); then
echo "LINT FAILED -- fix before committing:" >&2
echo "$LINT_OUTPUT" >&2
exit 2
fi
fi
Tipos de hooks além de comandos shell
O Claude Code suporta cinco tipos de hooks:13
Command hooks (type: "command") rodam scripts shell. Rápidos, determinísticos, sem custo de tokens.
MCP tool hooks (type: "mcp_tool") chamam uma tool em um servidor MCP já conectado. Use-os quando a lógica de validação já vive atrás de uma fronteira MCP e não precisa de um script shell separado.
Prompt hooks (type: "prompt") enviam um prompt single-turn para um modelo Claude rápido. O modelo retorna { "ok": true } para permitir ou { "ok": false, "reason": "..." } para bloquear. Use para avaliação nuançada que regex não consegue expressar.
Agent hooks (type: "agent") instanciam um subagent com acesso a tools (Read, Grep, Glob) para verificação multi-turn. Eles são experimentais; prefira command hooks para gates de produção e reserve agent hooks para verificações que realmente exigem inspecionar arquivos reais ou saída de testes:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "agent",
"prompt": "Verify all unit tests pass. Run the test suite and check results. $ARGUMENTS",
"timeout": 120
}
]
}
]
}
}
HTTP hooks (type: "http") enviam a entrada JSON do evento como uma requisição POST para uma URL e recebem JSON de volta. Use para webhooks, serviços externos de notificação ou validação baseada em API (v2.1.63+). Não suportado para eventos SessionStart:
{
"hooks": {
"PostToolUse": [
{
"hooks": [
{
"type": "http",
"url": "https://your-webhook.example.com/hook",
"headers": { "Authorization": "Bearer $WEBHOOK_TOKEN" },
"allowedEnvVars": ["WEBHOOK_TOKEN"],
"timeout": 10
}
]
}
]
}
}
Hooks assíncronos
Hooks podem rodar em segundo plano sem bloquear a execução. Adicione async: true para operações não-críticas como notificações e logging:13
{
"type": "command",
"command": ".claude/hooks/notify-slack.sh",
"async": true
}
Use async para notificações, telemetria e backups. Nunca use async para formatação, validação ou qualquer coisa que precise terminar antes da próxima ação.
Dispatchers em vez de hooks independentes
Rodar sete hooks disparando todos no mesmo evento, cada um lendo stdin de forma independente, cria condições de corrida. Dois hooks escrevendo no mesmo arquivo de estado JSON concorrentemente vão truncar o JSON. Cada hook downstream que faz parse desse arquivo quebra.2
A correção: um dispatcher por evento que roda hooks sequencialmente a partir de stdin em cache:
#!/bin/bash
# dispatcher.sh — run hooks sequentially with cached stdin
INPUT=$(cat)
HOOK_DIR="$HOME/.claude/hooks/pre-tool-use.d"
for hook in "$HOOK_DIR"/*.sh; do
[ -x "$hook" ] || continue
echo "$INPUT" | "$hook"
EXIT_CODE=$?
if [ "$EXIT_CODE" -eq 2 ]; then
exit 2 # Propagate block
fi
done
Depuração de hooks
Cinco técnicas para depurar hooks que falham silenciosamente:14
- Teste scripts de forma independente. Faça pipe de JSON de exemplo:
echo '{"tool_input":{"command":"git commit -m test"}}' | bash your-hook.sh - Use stderr para saída de debug. O stderr do exit code 2 é alimentado de volta ao Claude como mensagem de erro. Stderr não-bloqueante (exit 1, 3, etc.) aparece apenas em modo verbose (Ctrl+O).
- Atenção a falhas do jq. Caminhos JSON errados retornam
nullsilenciosamente. Teste expressõesjqcontra entradas de tool reais. - Verifique os exit codes. Um hook PreToolUse que usa
exit 1fornece zero enforcement enquanto aparenta funcionar. - Mantenha os hooks rápidos. Hooks rodam de forma síncrona. Mantenha todos os hooks abaixo de 2 segundos, idealmente abaixo de 500ms.
Streaming de eventos de hook no lado do SDK
Harnesses self-hosted construídos sobre claude-agent-sdk-python (v0.1.74+, 6 de maio de 2026) podem se inscrever em eventos de hook diretamente do stream de mensagens em vez de passar por callbacks de scripts shell.36 Defina include_hook_events=True em ClaudeAgentOptions e objetos HookEventMessage (PreToolUse, PostToolUse, Stop, e outros) são produzidos pelo mesmo iterador que mensagens do assistant e resultados de tools. Isso espelha a opção includeHookEvents do SDK TypeScript; o CLI empacotado foi atualizado para v2.1.129 no mesmo release.
O padrão de event-stream é a opção certa quando seu harness já vive em Python e você quer sinais de hook no mesmo fluxo de controle que a saída do modelo. O contrato de hooks via script shell (exit codes, JSON no stdin, dispatchers) continua sendo a resposta certa para harnesses que compõem múltiplas tools, compartilham hooks entre Claude Code e Codex, ou precisam da semântica de exit code para bloqueio.
Effort e proveniência de sessão (7-8 de maio de 2026)
Duas adições no Claude Code v2.1.132 e v2.1.133 dão a hooks e subprocessos um sinal melhor sobre seu contexto de execução:3839
effort.levelna entrada do hook. Hooks agora recebem um campo JSONeffort.levelna mesma entrada que carregatool_inputesession_id. O mesmo valor é exportado como a env var$CLAUDE_EFFORT, então comandos Bash podem lê-lo sem fazer parse de JSON. Use isso para escalar o custo do hook conforme o effort tier: pule validação cara emlow, rode o gate de segurança completo emxhighoumax.- Env var
CLAUDE_CODE_SESSION_IDem subprocessos Bash. Subprocessos da tool Bash agora veem o mesmo valorsession_idque os hooks veem, exposto comoCLAUDE_CODE_SESSION_ID. Isso fecha a lacuna de proveniência para tools que registram estado por sessão e antes não conseguiam correlacionar eventos de subprocesso com eventos de hook.
Ambos os sinais estão disponíveis sem mudanças de código; hooks existentes que ignoram os novos campos continuam funcionando.
Memória e contexto
Toda conversa com IA opera dentro de uma janela de contexto finita. À medida que a conversa cresce, o sistema comprime turnos anteriores para abrir espaço para novo conteúdo. A compressão tem perdas. Decisões arquiteturais documentadas no turno 3 podem não sobreviver até o turno 15.9
Os três mecanismos do colapso multi-turno
O estudo da MSR/Salesforce identificou três mecanismos independentes, cada um exigindo uma intervenção diferente:9
| Mecanismo | O que acontece | Intervenção |
|---|---|---|
| Compressão de contexto | Informações anteriores são descartadas para acomodar novo conteúdo | Checkpoint de estado no sistema de arquivos |
| Perda de coerência no raciocínio | O modelo contradiz suas próprias decisões anteriores entre turnos | Iteração com contexto limpo (Ralph loop) |
| Falha de coordenação | Múltiplos agentes mantêm snapshots de estado diferentes | Protocolos de estado compartilhado entre agentes |
Estratégia 1: Sistema de arquivos como memória
A memória mais confiável que atravessa fronteiras de contexto vive no sistema de arquivos. Claude Code lê CLAUDE.md e arquivos de memória no início de toda sessão e após cada compactação.6
~/.claude/
├── configs/ # 14 JSON configs (thresholds, rules, budgets)
│ ├── deliberation-config.json
│ ├── recursion-limits.json
│ └── consensus-profiles.json
├── hooks/ # 95 lifecycle event handlers
├── skills/ # 44 reusable knowledge modules
├── state/ # Runtime state (recursion depth, agent lineage)
├── handoffs/ # 49 multi-session context documents
├── docs/ # 40+ system documentation files
└── projects/ # Per-project memory directories
└── {project}/memory/
└── MEMORY.md # Always loaded into context
O arquivo MEMORY.md captura erros, decisões e padrões entre sessões. Quando você descobre que ((VAR++)) falha com set -e no bash quando VAR é 0, você registra. Três sessões depois, quando você encontra um caso de borda similar com inteiros em Python, a entrada do MEMORY.md traz o padrão à tona.15
Auto Memory (v2.1.32+): Claude Code registra e recupera automaticamente o contexto do projeto. À medida que você trabalha, Claude escreve observações em ~/.claude/projects/{project-path}/memory/MEMORY.md. O auto memory carrega as primeiras 200 linhas no seu system prompt no início da sessão. Mantenha-o conciso e crie links para arquivos de tópicos separados para anotações detalhadas.6
Estratégia 2: Compactação proativa
O comando /compact do Claude Code resume a conversa e libera espaço de contexto preservando decisões-chave, conteúdo de arquivos e estado das tarefas.15
Quando compactar: - Após concluir uma subtarefa distinta (recurso implementado, bug corrigido) - Antes de começar uma nova área da base de código - Quando Claude começa a repetir ou esquecer contexto anterior - Aproximadamente a cada 25-30 minutos durante sessões intensivas
Instruções customizadas de compactação no CLAUDE.md:
# Summary Instructions
When using compact, focus on:
- Recent code changes
- Test results
- Architecture decisions made this session
Estratégia 3: Handoffs de sessão
Para tarefas que abrangem múltiplas sessões, crie documentos de handoff que capturem o estado completo:
## Handoff: Deliberation Infrastructure PRD-7
**Status:** Hook wiring complete, 81 Python unit tests passing
**Files changed:** hooks/post-deliberation.sh, hooks/deliberation-pride-check.sh
**Decision:** Placed post-deliberation in PostToolUse:Task, pride-check in Stop
**Blocked:** Spawn budget model needs inheritance instead of depth increment
**Next:** PRD-8 integration tests in tests/test_deliberation_lib.py
A estrutura Status/Files/Decision/Blocked/Next fornece à sessão sucessora contexto completo com custo mínimo de tokens. Começar uma nova sessão com claude -c (continue) ou ler o documento de handoff vai direto para a implementação.15
Estratégia 4: Iteração com contexto limpo (Ralph Loop)
Para sessões que excedem 60-90 minutos, gere uma instância nova de Claude por iteração. O estado persiste através do sistema de arquivos, não através da memória conversacional. Cada iteração recebe o orçamento completo de contexto:16
Iteration 1: [200K tokens] -> writes code, creates files, updates state
Iteration 2: [200K tokens] -> reads state from disk, continues
Iteration 3: [200K tokens] -> reads updated state, continues
...
Iteration N: [200K tokens] -> reads final state, verifies criteria
Compare com uma única sessão longa:
Minute 0: [200K tokens available] -> productive
Minute 30: [150K tokens available] -> somewhat productive
Minute 60: [100K tokens available] -> degraded
Minute 90: [50K tokens available] -> significantly degraded
Minute 120: [compressed, lossy] -> errors accumulate
A abordagem de contexto limpo por iteração troca 15-20% de overhead da etapa de orientação (ler arquivos de estado, escanear histórico do git) por recursos cognitivos completos a cada iteração.16 O cálculo de custo-benefício: para sessões abaixo de 60 minutos, uma única conversa é mais eficiente. Acima de 90 minutos, contexto limpo produz output de qualidade superior apesar do overhead.
Estratégia 5: Curadoria de memória gerenciada (Dreaming)
Os Managed Agents de Claude da Anthropic adicionaram Dreaming como Research Preview em 6 de maio de 2026.35 Segundo a Anthropic: “Dreaming é um processo agendado que revisa as sessões dos seus agentes e os armazenamentos de memória, extrai padrões e faz curadoria de memórias para que seus agentes melhorem ao longo do tempo.”35
O Dreaming roda em segundo plano entre sessões, não no caminho crítico. Ele complementa em vez de substituir o padrão de sistema-de-arquivos-como-memória: seu arquivo MEMORY.md continua sendo a superfície principal; o Dreaming escreve entradas de memória curadas no armazenamento de memória dos Managed Agents, que o agente lê no início da sessão. Os dois padrões coexistem para harnesses que misturam estado de sistema de arquivos auto-hospedado com curadoria do lado gerenciado.
| Memória de sistema de arquivos | Dreaming (gerenciado) | |
|---|---|---|
| Onde a memória vive | Seu repositório, com controle de versão | Armazenamento de memória gerenciado pela Anthropic |
| Quando atualiza | Você escreve entradas manualmente ou via hooks | Processo em segundo plano entre sessões |
| O que captura | Decisões, erros, padrões que você sinaliza | Padrões extraídos do histórico de sessões |
| Melhor para | Conhecimento institucional específico do projeto | Descoberta de padrões entre sessões que você não pegaria à mão |
O Dreaming está em Research Preview, então o comportamento pode mudar. Os padrões de session-handoffs e CLAUDE.md documentados acima permanecem como o mecanismo de memória autoritativo para harnesses auto-hospedados.
Os anti-padrões
Ler arquivos inteiros quando você precisa de 10 linhas. Uma única leitura de arquivo com 2.000 linhas consome 15.000-20.000 tokens. Use offsets de linha: Read file.py offset=100 limit=20 economiza a vasta maioria desse custo.15
Manter saídas de erro verbosas no contexto. Após depurar um bug, seu contexto contém mais de 40 stack traces de iterações que falharam. Um único /compact após corrigir o bug libera esse peso morto.
Começar toda sessão lendo todos os arquivos. Deixe as ferramentas glob e grep do Claude Code encontrarem os arquivos relevantes sob demanda, economizando mais de 100.000 tokens de pré-carregamento desnecessário.15
Padrões de Subagents
Subagents são instâncias especializadas de Claude que lidam com tarefas complexas de forma independente. Eles começam com um contexto limpo (sem poluição da conversa principal), operam com tools especificadas e retornam resultados como resumos. Os resultados da exploração não inflam sua conversa principal; apenas as conclusões retornam.5
Tipos de Subagent integrados
| Tipo | Modelo | Modo | Tools | Use para |
|---|---|---|---|---|
| Explore | Haiku (rápido) | Somente leitura | Glob, Grep, Read, bash seguro | Exploração de codebase, busca de arquivos |
| General-purpose | Herda | Leitura/escrita completa | Todas as disponíveis | Pesquisa complexa + modificação |
| Plan | Herda (ou Opus) | Somente leitura | Read, Glob, Grep, Bash | Planejamento antes da execução |
Criando subagents customizados
Defina subagents em .claude/agents/ (projeto) ou ~/.claude/agents/ (pessoal):
---
name: security-reviewer
description: Expert security code reviewer. Use PROACTIVELY after any code
changes to authentication, authorization, or data handling.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
You are a senior security engineer reviewing code for vulnerabilities.
When invoked:
1. Identify the files that were recently changed
2. Analyze for OWASP Top 10 vulnerabilities
3. Check for secrets, hardcoded credentials, SQL injection
4. Report findings with severity levels and remediation steps
Focus on actionable security findings, not style issues.
Campos de configuração de subagent
| Campo | Obrigatório | Propósito |
|---|---|---|
name |
Sim | Identificador único (minúsculas + hífens) |
description |
Sim | Quando invocar (inclua “PROACTIVELY” para incentivar a auto-delegação) |
tools |
Não | Separados por vírgula. Herda todas as tools se omitido. Suporta Agent(agent_type) para restringir os agents que podem ser criados |
disallowedTools |
Não | Tools a serem negadas, removidas da lista herdada ou especificada |
model |
Não | sonnet, opus, haiku, inherit (padrão: inherit) |
permissionMode |
Não | default, acceptEdits, delegate, dontAsk, bypassPermissions, plan |
maxTurns |
Não | Máximo de turnos agênticos antes do subagent parar |
memory |
Não | Escopo de memória persistente: user, project, local |
skills |
Não | Carrega automaticamente o conteúdo de skills no contexto do subagent na inicialização. A partir da v2.1.133, subagents também descobrem skills de projeto, usuário e plugin via a tool Skill do mesmo modo que a sessão pai faz. Versões anteriores descartavam silenciosamente essas skills do contexto do subagent.39 |
hooks |
Não | Hooks de ciclo de vida com escopo na execução desse subagent |
background |
Não | Sempre executa como tarefa em background |
isolation |
Não | Defina como worktree para uma cópia isolada de git worktree |
Isolamento por worktree
Subagents podem operar em git worktrees temporários, fornecendo uma cópia isolada e completa do repositório:5
---
name: experimental-refactor
description: Attempt risky refactoring in isolation
isolation: worktree
tools: Read, Write, Edit, Bash, Grep, Glob
---
You have an isolated copy of the repository. Make changes freely.
If the refactoring succeeds, the changes can be merged back.
If it fails, the worktree is discarded with no impact on the main branch.
O isolamento por worktree é essencial para trabalhos experimentais que podem quebrar o codebase.
Subagents paralelos
Use subagents paralelos para tarefas de pesquisa independentes que não precisam se coordenar entre si:5
> Have three explore agents search in parallel:
> 1. Authentication code
> 2. Database models
> 3. API routes
Cada agent executa em sua própria janela de contexto, encontra o código relevante e retorna um resumo. O contexto principal permanece limpo.
O recursion guard
Sem limites de spawn, agents delegam para agents que delegam para agents, cada um perdendo contexto e queimando tokens. O padrão recursion guard impõe orçamentos:16
#!/bin/bash
# recursion-guard.sh — enforce spawn budget
CONFIG_FILE="${HOME}/.claude/configs/recursion-limits.json"
STATE_FILE="${HOME}/.claude/state/recursion-depth.json"
MAX_DEPTH=2
MAX_CHILDREN=5
DELIB_SPAWN_BUDGET=2
DELIB_MAX_AGENTS=12
# Read current depth
current_depth=$(jq -r '.depth // 0' "$STATE_FILE" 2>/dev/null)
if [[ "$current_depth" -ge "$MAX_DEPTH" ]]; then
echo "BLOCKED: Maximum recursion depth ($MAX_DEPTH) reached" >&2
exit 2
fi
# Increment depth using safe arithmetic (not ((VAR++)) with set -e)
new_depth=$((current_depth + 1))
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Lição crítica: Use orçamentos de spawn, não apenas limites de profundidade. Limites baseados em profundidade rastreiam cadeias pai-filho (bloqueados na profundidade 3), mas ignoram a largura: 23 agents na profundidade 1 ainda são “profundidade 1”. Um orçamento de spawn rastreia o total de filhos ativos por pai, limitado a um máximo configurável. O modelo de orçamento mapeia o modo de falha real (agents totais demais) em vez de uma métrica proxy (níveis de aninhamento demais).7
Agent Teams (Research Preview)
Agent Teams coordenam múltiplas instâncias de Claude Code que trabalham de forma independente, se comunicam por uma mailbox e uma task list compartilhadas e podem questionar as descobertas umas das outras:5
| Componente | Função |
|---|---|
| Team lead | Sessão principal que cria o time, gera os teammates, coordena o trabalho |
| Teammates | Instâncias separadas de Claude Code trabalhando em tarefas atribuídas |
| Task list | Itens de trabalho compartilhados que os teammates reivindicam e concluem (com lock de arquivo) |
| Mailbox | Sistema de mensagens para comunicação entre agents |
Habilite com: export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
Quando usar agent teams vs subagents:
| Subagents | Agent Teams | |
|---|---|---|
| Comunicação | Apenas reportam resultados | Teammates trocam mensagens diretamente |
| Coordenação | Agent principal gerencia todo o trabalho | Task list compartilhada com auto-coordenação |
| Melhor para | Tarefas focadas em que só o resultado importa | Trabalho complexo que requer discussão e colaboração |
| Custo em tokens | Menor | Maior (cada teammate = janela de contexto separada) |
Orquestração Multiagente
Sistemas de IA com agente único têm um ponto cego estrutural: não conseguem desafiar suas próprias suposições.7 A deliberação multiagente força avaliação independente a partir de múltiplas perspectivas antes que qualquer decisão seja travada.
Orquestração entre ferramentas (abril de 2026): O Google liberou o código do Scion em 7 de abril — um hipervisor multiagente que executa Claude Code, Gemini CLI e outros “deep agents” como processos concorrentes, cada um com container isolado, git worktree e credenciais. Roda local, em hub ou em Kubernetes. Filosofia explícita: “isolamento sobre restrições” — agentes operam com alta autonomia dentro de fronteiras impostas na camada de infraestrutura, não no prompt.25 Isso estende diretamente o argumento de isolamento de subagents para fornecedores de ferramentas distintos. Se seu workflow abrange Claude e modelos OpenAI, o Scion é a primeira implementação de referência real para subagents entre ferramentas com worktree + isolamento de credenciais por agente.
Debate não é uma bala de prata: O cluster de pesquisa M3MAD-Bench (início de 2026) descobriu que o debate multiagente atinge um platô e pode ser subvertido por consenso enganoso — argumentos válidos perdem quando outros agentes afirmam a resposta errada com confiança.26 O Tool-MAD melhora isso dando a cada agente acesso heterogêneo a ferramentas e usando pontuações de Faithfulness/Relevance no estágio de julgamento. Se você está construindo orquestração no estilo debate, invista em (a) heterogeneidade de ferramentas por agente e (b) pontuação quantitativa do juiz, em vez de assumir que mais agentes = melhores respostas.
Orquestração e Outcomes Multiagente Gerenciados (Public Beta)
Se você não quer construir a infraestrutura de deliberação descrita abaixo, a Multiagent Orchestration entrou em Public Beta em Claude Managed Agents em 6 de maio de 2026.35 Segundo a Anthropic: “Quando há trabalho demais para um único agente fazer bem, a orquestração multiagente permite que um agente líder divida o trabalho em partes e delegue cada uma a um especialista com seu próprio modelo, prompt e ferramentas.”35 Os especialistas “trabalham em paralelo em um sistema de arquivos compartilhado e contribuem para o contexto geral do agente líder.”35
O tracing já vem na caixa. Segundo a Anthropic: “você também pode rastrear cada passo no Claude Console: qual agente fez o quê, em que ordem e por quê, dando a você visibilidade total de como sua tarefa foi delegada e executada.”35
O recurso companheiro em Public Beta é Outcomes. Segundo a Anthropic: “você escreve uma rubrica descrevendo como é o sucesso e o agente trabalha em direção a ela. Um avaliador separado julga a saída contra seus critérios em sua própria janela de contexto, então não é influenciado pelo raciocínio do agente.”35 Esta é a versão gerenciada do padrão de validação de duas portas documentado mais adiante nesta seção: a rubrica substitui a porta escrita à mão, o avaliador separado substitui o validador de consenso.
| Deliberação auto-hospedada (esta seção) | Multiagent + Outcomes Gerenciado | |
|---|---|---|
| Roteamento de especialistas | Você escreve a lógica de spawn | Agente líder divide o trabalho em partes |
| Validação | Hooks de duas portas + pontuação por consenso | Rubrica + avaliador em contexto separado |
| Tracing | Você instrumenta | Claude Console |
| Melhor para | Padrões que precisam de controle total ou composição específica de ferramentas | Padrões padrão de delegação onde a rubrica de validação é o contrato |
| Preço | Apenas custo de tokens + harness | Tokens padrão mais a taxa por hora de sessão dos Managed Agents (base do lançamento de 8 de abril; veja 23) |
A deliberação auto-hospedada continua sendo a resposta certa quando a validação precisa se integrar com sua própria superfície de hooks (bloqueio PreToolUse, semântica de exit code, dispatchers customizados) ou quando o harness deve rodar sem dependências externas. A Multiagent Gerenciada é a resposta certa quando a delegação padrão mais avaliação por rubrica é o contrato que você realmente precisa.
Deliberação Mínima Viável
Comece com 2 agentes e 1 regra: os agentes devem avaliar de forma independente antes de ver o trabalho um do outro.7
Decision arrives
|
v
Confidence check: is this risky, ambiguous, or irreversible?
|
+-- NO -> Single agent decides (normal flow)
|
+-- YES -> Spawn 2 agents with different system prompts
Agent A: "Argue FOR this approach"
Agent B: "Argue AGAINST this approach"
|
v
Compare findings
|
+-- Agreement with different reasoning -> Proceed
+-- Genuine disagreement -> Investigate the conflict
+-- Agreement with same reasoning -> Suspect herding
Esse padrão cobre 80% do valor. Tudo o mais adiciona melhoria incremental.
O Gatilho de Confiança
Nem toda tarefa precisa de deliberação. Um módulo de pontuação de confiança avalia quatro dimensões:17
- Ambiguidade - A consulta tem múltiplas interpretações válidas?
- Complexidade do domínio - Requer conhecimento especializado?
- Impacto - A decisão é reversível?
- Dependência de contexto - Requer entendimento do sistema mais amplo?
A pontuação mapeia para três níveis:
| Nível | Limiar | Ação |
|---|---|---|
| ALTO | 0,85+ | Prosseguir sem deliberação |
| MÉDIO | 0,70-0,84 | Prosseguir com nota de confiança registrada |
| BAIXO | Abaixo de 0,70 | Disparar deliberação multiagente completa |
O limiar se adapta por tipo de tarefa. Decisões de segurança exigem consenso de 0,85. Mudanças de documentação precisam apenas de 0,50. Isso evita superengenharia em tarefas simples enquanto garante que decisões arriscadas recebam escrutínio.7
A Máquina de Estados
Sete fases, cada uma controlada pela anterior:7
IDLE -> RESEARCH -> DELIBERATION -> RANKING -> PRD_GENERATION -> COMPLETE
|
(or FAILED)
RESEARCH: Agentes independentes investigam o tópico. Cada agente recebe uma persona diferente (Technical Architect, Security Analyst, Performance Engineer e outras). O isolamento de contexto garante que os agentes não consigam ver as descobertas uns dos outros durante a pesquisa.
DELIBERATION: Os agentes veem todas as descobertas da pesquisa e geram alternativas. O agente Debate identifica conflitos. O agente Synthesis combina descobertas não contraditórias.
RANKING: Cada agente pontua cada abordagem proposta em 5 dimensões ponderadas:
| Dimensão | Peso |
|---|---|
| Impacto | 0,25 |
| Qualidade | 0,25 |
| Viabilidade | 0,20 |
| Reusabilidade | 0,15 |
| Risco | 0,15 |
A Arquitetura de Validação de Duas Portas
Duas portas de validação capturam problemas em estágios diferentes:7
Porta 1: Validação de Consenso (hook PostToolUse). Roda imediatamente após cada agente de deliberação concluir: 1. A fase deve ter chegado pelo menos a RANKING 2. Mínimo de 2 agentes concluídos (configurável) 3. A pontuação de consenso atinge o limiar adaptativo à tarefa 4. Se algum agente discordou, as preocupações devem ser documentadas
Porta 2: Pride Check (hook Stop). Roda antes que a sessão possa fechar: 1. Métodos diversos: múltiplas personas únicas representadas 2. Transparência de contradições: dissidências têm razões documentadas 3. Tratamento de complexidade: pelo menos 2 alternativas geradas 4. Confiança do consenso: classificada como forte (acima de 0,85) ou moderada (0,70-0,84) 5. Evidência de melhoria: a confiança final excede a confiança inicial
Dois hooks em diferentes pontos do ciclo de vida correspondem a como as falhas realmente ocorrem: algumas são instantâneas (pontuação ruim) e outras são graduais (baixa diversidade, documentação de dissidência ausente).7
Por Que a Concordância É Perigosa
Charlan Nemeth estudou a dissidência minoritária de 1986 até seu livro de 2018 In Defense of Troublemakers. Grupos com dissidentes tomam decisões melhores do que grupos que chegam a um acordo rápido. O dissidente não precisa estar certo. O ato de discordar força a maioria a examinar suposições que de outra forma seriam ignoradas.18
Wu et al. testaram se agentes LLM conseguem debater genuinamente e descobriram que, sem incentivos estruturais para discordância, os agentes convergem para a resposta inicial mais confiante, independentemente da correção.19 Liang et al. identificaram a causa raiz como “Degeneration-of-Thought”: uma vez que um LLM estabelece confiança em uma posição, a auto-reflexão não consegue gerar contra-argumentos novos, tornando a avaliação multiagente estruturalmente necessária.20
Independência é a restrição crítica de design. Dois agentes avaliando a mesma estratégia de deployment com visibilidade das descobertas um do outro produziram pontuações de 0,45 e 0,48. Os mesmos agentes sem visibilidade: 0,45 e 0,72. A diferença entre 0,48 e 0,72 é o custo do efeito manada.7
Detectando Concordância Falsa
Um módulo de detecção de conformidade rastreia padrões que sugerem que agentes estão concordando sem avaliação genuína:7
Agrupamento de pontuações: Cada agente pontuando dentro de 0,3 pontos em uma escala de 10 sinaliza contaminação de contexto compartilhado em vez de avaliação independente. Quando cinco agentes avaliando uma refatoração de autenticação pontuaram o risco de segurança entre 7,1 e 7,4, executar novamente com isolamento de contexto fresco espalhou as pontuações para 5,8-8,9.
Dissidência boilerplate: Agentes copiando a linguagem de preocupação uns dos outros em vez de gerar objeções independentes.
Perspectivas minoritárias ausentes: Aprovação unânime de personas com prioridades conflitantes (um Security Analyst e um Performance Engineer raramente concordam em tudo).
O detector de conformidade captura os casos óbvios (aproximadamente 10-15% das deliberações em que os agentes convergem rápido demais). Para os 85-90% restantes, as portas de consenso e pride check fornecem validação suficiente.
O Que Não Funcionou na Deliberação
Rodadas de debate em formato livre. Três rodadas de texto de vai e vem para uma discussão de indexação de banco de dados produziram 7.500 tokens de debate. Rodada 1: discordância genuína. Rodada 2: posições reformuladas. Rodada 3: argumentos idênticos com palavras diferentes. Pontuação dimensional estruturada substituiu o debate em formato livre, reduzindo o custo em 60% enquanto melhorava a qualidade do ranking.7
Porta de validação única. A primeira implementação rodava um único hook de validação no final da sessão. Um agente concluía a deliberação com pontuação de consenso de 0,52 (abaixo do limiar), depois continuava em tarefas não relacionadas por 20 minutos antes que o hook de fim de sessão sinalizasse a falha. Dividir em duas portas (uma na conclusão da tarefa, outra no fim da sessão) capturou os mesmos problemas em diferentes pontos do ciclo de vida.7
Custo da Deliberação
Cada agente de pesquisa processa aproximadamente 5.000 tokens de contexto e gera 2.000-3.000 tokens de descobertas. Com 3 agentes, isso são 15.000-24.000 tokens adicionais por decisão. Com 10 agentes, aproximadamente 50.000-80.000 tokens.7
Nos preços atuais do Opus, uma deliberação de 3 agentes custa aproximadamente US$ 0,68-0,90. Uma deliberação de 10 agentes custa US$ 2,25-3,00. O sistema dispara deliberação em aproximadamente 10% das decisões, então o custo amortizado em todas as decisões é de US$ 0,23-0,30 por sessão. Se isso vale a pena depende de quanto custa uma decisão ruim.
Quando Deliberar
| Deliberar | Pular |
|---|---|
| Arquitetura de segurança | Erros de digitação em documentação |
| Design de schema de banco de dados | Renomeação de variáveis |
| Mudanças de contrato de API | Atualizações de mensagens de log |
| Estratégias de deployment | Reformulação de comentários |
| Atualizações de dependências | Atualizações de fixtures de teste |
Design do CLAUDE.md
CLAUDE.md é uma política operacional para um agente de IA, não um README para humanos.21 O agente não precisa entender por que você usa conventional commits. Ele precisa saber o comando exato a ser executado e como é o “concluído”.
A hierarquia de precedência
| Localização | Escopo | Compartilhado | Caso de uso |
|---|---|---|---|
| Configurações gerenciadas empresariais | Organização | Todos os usuários | Padrões da empresa |
./CLAUDE.md ou ./.claude/CLAUDE.md |
Projeto | Via git | Contexto de equipe |
~/.claude/CLAUDE.md |
Usuário | Todos os projetos | Preferências pessoais |
./CLAUDE.local.md |
Projeto-local | Nunca | Notas pessoais do projeto |
.claude/rules/*.md |
Regras do projeto | Via git | Políticas categorizadas |
~/.claude/rules/*.md |
Regras do usuário | Todos os projetos | Políticas pessoais |
Os arquivos de regras carregam automaticamente e fornecem contexto estruturado sem poluir o CLAUDE.md.6
O que é ignorado
Estes padrões produzem de forma confiável nenhuma mudança observável no comportamento do agente:21
Parágrafos em prosa sem comandos. “Valorizamos código limpo e bem testado” é documentação, não operações. O agente lê isso e segue escrevendo código sem testes, porque não há instrução acionável.
Diretivas ambíguas. “Tenha cuidado com migrações de banco de dados” não é uma restrição. “Execute alembic check antes de aplicar migrações. Aborte se o caminho de downgrade estiver ausente.” é.
Prioridades contraditórias. “Seja ágil e entregue rápido” mais “Garanta cobertura de testes abrangente” mais “Mantenha o tempo de execução abaixo de 5 minutos” mais “Execute testes de integração completos antes de cada commit.” O agente não pode satisfazer todos os quatro simultaneamente e por padrão pula a verificação.21
Guias de estilo sem aplicação. “Siga o Google Python Style Guide” sem ruff check --select D não dá ao agente nenhum mecanismo para verificar a conformidade.
O que funciona
Instruções com comandos em primeiro lugar:
## Build and Test Commands
- Install: `pip install -r requirements.txt`
- Lint: `ruff check . --fix`
- Format: `ruff format .`
- Test: `pytest -v --tb=short`
- Type check: `mypy app/ --strict`
- Full verify: `ruff check . && ruff format --check . && pytest -v`
Definições de fechamento:
## Definition of Done
A task is complete when ALL of the following pass:
1. `ruff check .` exits 0
2. `pytest -v` exits 0 with no failures
3. `mypy app/ --strict` exits 0
4. Changed files have been staged and committed
5. Commit message follows conventional format: `type(scope): description`
Seções organizadas por tarefa:
## When Writing Code
- Run `ruff check .` after every file change
- Add type hints to all new functions
## When Reviewing Code
- Check for security issues: `bandit -r app/`
- Verify test coverage: `pytest --cov=app --cov-fail-under=80`
## When Releasing
- Update version in `pyproject.toml`
- Run full suite: `pytest -v && ruff check . && mypy app/`
Regras de escalonamento:
## When Blocked
- If tests fail after 3 attempts: stop and report the failing test with full output
- If a dependency is missing: check `requirements.txt` first, then ask
- Never: delete files to resolve errors, force push, or skip tests
Ordem de escrita
Se começar do zero, adicione seções nesta ordem de prioridade:21
- Comandos de build e teste (o agente precisa deles antes de poder fazer qualquer coisa útil)
- Definição de concluído (previne falsas conclusões)
- Regras de escalonamento (previne soluções destrutivas)
- Seções organizadas por tarefa (reduz a análise de instruções irrelevantes)
- Escopo de diretório (monorepos: mantém as instruções de serviço isoladas)
Pule preferências de estilo até que as quatro primeiras estejam funcionando.
Imports de arquivos
Referencie outros arquivos dentro do CLAUDE.md:
See @README.md for project overview
Coding standards: @docs/STYLE_GUIDE.md
API documentation: @docs/API.md
Personal preferences: @~/.claude/preferences.md
Sintaxe de import: relativa (@docs/file.md), absoluta (@/absolute/path.md) ou diretório home (@~/.claude/file.md). Profundidade máxima: 5 níveis de imports.6
Compatibilidade de instruções entre ferramentas
AGENTS.md é um padrão aberto reconhecido por toda grande ferramenta de codificação com IA.21 Se sua equipe usa múltiplas ferramentas, escreva AGENTS.md como a fonte canônica e espelhe as seções relevantes em arquivos específicos de cada ferramenta:
| Ferramenta | Arquivo nativo | Lê AGENTS.md? |
|---|---|---|
| Codex CLI | AGENTS.md | Sim (nativo) |
| Cursor | .cursor/rules |
Sim (nativo) |
| GitHub Copilot | .github/copilot-instructions.md |
Sim (nativo) |
| Amp | AGENTS.md | Sim (nativo) |
| Windsurf | .windsurfrules |
Sim (nativo) |
| Claude Code | CLAUDE.md | Não (formato separado) |
Os padrões no AGENTS.md (comandos primeiro, fechamento definido, organizado por tarefa) funcionam em qualquer arquivo de instruções, independentemente da ferramenta. Não mantenha conjuntos paralelos de instruções que se distanciam. Escreva uma fonte autoritativa única e espelhe.
Notas de paridade do Codex
O Codex agora tem equivalentes de primeira classe para as principais camadas do harness, mas a migração é uma tradução de padrões, não uma cópia de arquivos. O Codex lê o AGENTS.md antes do início do trabalho, sobrepondo a orientação global de ~/.codex com instruções de projeto e de repositório aninhado.31 As skills do Codex usam o mesmo modelo mental de SKILL.md com divulgação progressiva: o Codex começa com o nome da skill, descrição e caminho do arquivo, e só carrega a skill completa quando decide usá-la.32 O Codex também tem hooks nativos, hooks empacotados em plugins, hooks gerenciados, suporte a MCP e fluxos de trabalho explícitos de subagents.3334
O mapeamento prático:
| Camada do harness do Claude Code | Equivalente no Codex | Regra de migração |
|---|---|---|
CLAUDE.md / .claude/rules/ |
AGENTS.md / AGENTS.override.md aninhado |
Mantenha comandos e regras de conclusão canônicos; divida apenas quando o escopo do diretório for genuinamente diferente |
.claude/skills/<name>/SKILL.md |
.agents/skills/<name>/SKILL.md ou plugin skill |
Porte fluxos de trabalho reutilizáveis, mas reescreva as descrições para a redação de ativação e o budget do Codex |
Hooks de .claude/settings.json |
config.toml do Codex, hooks de plugin ou hooks de requisitos gerenciados |
Porte primeiro os portões determinísticos; teste cada hook com eventos de tool reais antes de habilitá-lo amplamente |
.claude/agents/*.md |
~/.codex/agents/*.toml, .codex/agents/*.toml, ou worker / explorer integrados |
Porte apenas agents com valor recorrente; prefira delegação explícita, porque os subagents do Codex são explícitos |
| Plugins | Plugins do Codex | Use plugins como a unidade de distribuição depois que hooks e skills locais estiverem comprovados |
A diferença importante: subagents do Claude podem ser selecionados automaticamente a partir das descrições, enquanto o Codex atualmente documenta os fluxos de trabalho de subagents como explícitos. Isso torna skills e hooks o padrão certo para o comportamento sempre ativo do harness no Codex; subagents são para trabalho paralelo deliberado, revisão e exploração.
Testando suas instruções
Verifique se o agente realmente lê e segue suas instruções:
# Check active instructions
claude --print "What instructions are you following for this project?"
# Verify specific rules are active
claude --print "What is your definition of done?"
O teste decisivo: peça ao agente para explicar seus comandos de build. Se ele não conseguir reproduzi-los literalmente, as instruções estão verbosas demais (conteúdo empurrado para fora do contexto), vagas demais (o agente não consegue extrair instruções acionáveis) ou não estão sendo descobertas. A análise do GitHub de 2.500 repositórios constatou que a vagueza causa a maioria das falhas.21
Padrões de produção
Padrões de longo horizonte do Opus 4.7 (abril de 2026)
Claude Opus 4.7 (16 de abril de 2026) chegou com recursos específicos que mudam o que um harness precisa defender:29
- Resiliência a falhas de ferramentas: O Opus 4.7 continua mesmo com falhas de ferramentas que interrompiam sessões do Opus 4.6. Você pode reduzir — mas não eliminar — wrappers defensivos de retry no código de subagentes. Mantenha as proteções no nível de hooks; corte o scaffolding in-prompt do tipo “se a ferramenta falhar, tente novamente três vezes”.
- Tier de esforço
xhigh(apenas Opus-4.7): Fica entrehighemax. Padrão recomendado para workloads de coding e agênticos. Em subagentes de longa duração,xhighsupera significativamentehighcom custo de tokens sub-proporcional.maxcontinua sendo a escolha certa para raciocínio difícil em single-shot;xhighé melhor para tarefas sustentadas. - Teto de orçamento de tokens: Configurável por execução de agente via
output_config.task_budget(header betatask-budgets-2026-03-13). O modelo vê uma contagem regressiva em andamento e ajusta o escopo do trabalho ao orçamento de forma elegante, em vez de esgotar inesperadamente. Use para loops agênticos onde você quer gasto previsível de tokens sem sacrificar qualidade em prompts curtos. - Consciência de necessidades implícitas: Primeiro modelo Claude a passar em testes de “necessidade implícita” — reconhecendo quando a solicitação literal do usuário subespecifica o que ele realmente precisa. Isso torna a seção “regras de clarificação” do CLAUDE.md menos necessária. Se o seu CLAUDE.md tem 200 linhas de guardrails do tipo “considere também X quando o usuário pedir Y”, remova aqueles que agora são cobertos nativamente.
Worktree base, caminhos de sandbox e configurações de admin (7 de maio de 2026)
Claude Code v2.1.133 adiciona quatro configurações de tier admin que valem a pena conhecer para harnesses de produção:39
| Configuração | Valores | O que faz |
|---|---|---|
worktree.baseRef |
fresh (padrão) | head |
Novos worktrees fazem branch a partir de origin/<default> novamente. Reversão de padrão breaking da v2.1.128, que usava HEAD local. Defina worktree.baseRef: "head" se sua equipe depende de commits não enviados estarem disponíveis em novos worktrees. |
sandbox.bwrapPath |
caminho absoluto | Fixa a localização do binário Bubblewrap em hosts Linux/WSL onde ele não está no $PATH ou onde você distribui uma versão própria. |
sandbox.socatPath |
caminho absoluto | Mesma ideia para o binário socat usado pela rede do sandbox. |
parentSettingsBehavior |
'first-wins' (padrão) | 'merge' |
Controle de tier admin sobre como o managedSettings do SDK se compõe com configurações pai de enterprise/equipe. 'merge' permite que uma sessão filha herde e estenda; 'first-wins' mantém o pai como autoridade. |
A reversão de worktree.baseRef é a que vale sinalizar para os usuários: agentes que dependiam do comportamento da v2.1.128-v2.1.132 (worktrees fazendo branch a partir do HEAD local) perdem acesso a trabalho não enviado em worktrees novos, a menos que optem por voltar.
O Quality Loop
Um processo de revisão obrigatório para todas as mudanças não triviais:
- Implementar - Escrever o código
- Revisar - Reler cada linha. Pegar erros de digitação, erros de lógica, seções pouco claras
- Avaliar - Executar o evidence gate. Verificar padrões, casos extremos, cobertura de testes
- Refinar - Corrigir cada problema. Nunca adiar para “mais tarde”
- Zoom Out - Verificar pontos de integração, imports, código adjacente em busca de regressões
- Repetir - Se algum critério do evidence gate falhar, voltar ao passo 4
- Reportar - Listar o que mudou, como foi verificado, citar evidências específicas
O Evidence Gate
“Acredito que” e “deveria” não são evidências. Cite caminhos de arquivo, saída de testes ou código específico.
| Critério | Evidência exigida |
|---|---|
| Segue padrões do codebase | Nomeie o padrão e o arquivo onde ele existe |
| Solução funcional mais simples | Explique quais alternativas mais simples foram rejeitadas e por quê |
| Casos extremos tratados | Liste casos extremos específicos e como cada um é tratado |
| Testes passam | Cole a saída do teste mostrando 0 falhas |
| Sem regressões | Nomeie os arquivos/recursos verificados |
| Resolve o problema real | Declare a necessidade do usuário e como isso a resolve |
Se você não conseguir produzir evidências para alguma linha, volte para Refinar.22
Padrões de tratamento de erros
Escritas atômicas em arquivo. Múltiplos agentes escrevendo simultaneamente no mesmo arquivo de estado corrompem JSON. Escreva em arquivos .tmp e depois faça mv atomicamente. O sistema operacional garante que mv é atômico no mesmo sistema de arquivos.17
# Atomic state update
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Recuperação de corrupção de estado. Se o estado for corrompido, o padrão de recuperação recria a partir de defaults seguros em vez de quebrar:16
if ! jq -e '.depth' "$RECURSION_STATE_FILE" &>/dev/null; then
# Corrupted state file, recreate with safe defaults
echo '{"depth": 0, "agent_id": "root", "parent_id": null}' > "$RECURSION_STATE_FILE"
echo "- Recursion state recovered (was corrupted)"
fi
A armadilha do ((VAR++)) em bash. ((VAR++)) retorna código de saída 1 quando VAR é 0 porque 0++ avalia para 0, que o bash trata como falso. Com set -e habilitado, isso mata o script. Use VAR=$((VAR + 1)) no lugar.16
Classificação de blast radius
Classifique toda ação de agente por blast radius e aplique gates conforme:2
| Classificação | Exemplos | Gate |
|---|---|---|
| Local | Escritas em arquivo, execução de testes, linting | Auto-aprovar |
| Compartilhado | Commits git, criação de branch | Avisar + prosseguir |
| Externo | Git push, chamadas API, deploys | Exigir aprovação humana |
O Remote Control (conectar ao Claude Code local a partir de qualquer browser ou aplicativo mobile) transforma o gate “Externo” de uma espera bloqueante em uma notificação assíncrona. O agente continua trabalhando na próxima tarefa enquanto você revisa a anterior pelo seu celular.2
Especificação de tarefas para execuções autônomas
Tarefas autônomas eficazes incluem três elementos: objetivo, critérios de conclusão e ponteiros de contexto:16
OBJECTIVE: Implement multi-agent deliberation with consensus validation.
COMPLETION CRITERIA:
- All tests in tests/test_deliberation_lib.py pass (81 tests)
- post-deliberation.sh validates consensus above 70% threshold
- recursion-guard.sh enforces spawn budget (max 12 agents)
- No Python type errors (mypy clean)
CONTEXT:
- Follow patterns in lib/deliberation/state_machine.py
- Consensus thresholds in configs/deliberation-config.json
- Spawn budget model: agents inherit budget, not increment depth
Critérios precisam ser verificáveis por máquina: aprovação/falha de testes, saída de linter, códigos de status HTTP, checagens de existência de arquivo. Uma tarefa inicial que pediu ao agente para “escrever testes que passem” produziu assert True e assert 1 == 1. Tecnicamente correto. Praticamente inútil.16
| Qualidade dos critérios | Exemplo | Resultado |
|---|---|---|
| Vago | “Testes passam” | Agente escreve testes triviais |
| Mensurável mas incompleto | “Testes passam E cobertura >80%” | Testes cobrem linhas mas não testam nada significativo |
| Abrangente | “Todos os testes passam E cobertura >80% E nenhum erro de tipo E linter limpo E cada classe de teste testa um módulo distinto” | Saída com qualidade de produção |
Modos de falha para ficar de olho
| Modo de falha | Descrição | Prevenção |
|---|---|---|
| Shortcut Spiral | Pular passos do quality loop para terminar mais rápido | Evidence gate exige prova para cada critério |
| Confidence Mirage | “Estou confiante” sem rodar verificação | Banir linguagem hedging em relatórios de conclusão |
| Phantom Verification | Afirmar que testes passam sem rodá-los nesta sessão | Stop hook executa testes de forma independente |
| Deferred Debt | TODO/FIXME/HACK em código commitado | Hook PreToolUse no git commit faz scan do diff |
| Filesystem Pollution | Artefatos sem destino de iterações abandonadas | Passo de cleanup nos critérios de conclusão |
Um trace de sessão concreto
Um trace de sessão de uma execução autônoma processando uma PRD com 5 histórias:2
-
SessionStart dispara. O dispatcher injeta: data atual, detecção de projeto, restrições de filosofia, inicialização de cost tracking. Cinco hooks, 180ms no total.
-
O agente lê a PRD, planeja a primeira história.
UserPromptSubmitdispara. O dispatcher injeta: contexto do projeto ativo, baseline de drift da sessão. -
O agente chama Bash para rodar testes.
PreToolUse:Bashdispara. Checagem de credenciais, validação de sandbox, detecção de projeto. 90ms. Os testes rodam.PostToolUse:Bashdispara: heartbeat de atividade registrado, checagem de drift. -
O agente chama Write para criar um arquivo.
PreToolUse:Writedispara: checagem de escopo do arquivo.PostToolUse:Writedispara: checagem de lint, rastreamento de commit. -
O agente termina a história.
Stopdispara. Os quality gates checam: o agente citou evidências? Linguagem hedging? Comentários TODO no diff? Se alguma checagem falhar, exit 2 e o agente continua. -
Verificação independente: Um agente novo executa a suíte de testes sem confiar no auto-relato do agente anterior.
-
Três agentes de code review são spawned em paralelo. Cada um revisa o diff de forma independente. Se algum revisor sinalizar CRITICAL, a história volta para a fila.
-
A história passa. A próxima história é carregada. O ciclo se repete para todas as 5 histórias.
Total de hooks disparados ao longo das 5 histórias: ~340. Tempo total em hooks: ~12 segundos. Esse overhead preveniu três vazamentos de credenciais, um comando destrutivo e duas implementações incompletas em uma única execução overnight.
Estudo de caso: Processamento de PRD overnight
Um harness de produção processou 12 PRDs (47 histórias) em 8 sessões overnight. As métricas comparam as primeiras 4 PRDs (harness mínimo: apenas CLAUDE.md) com as últimas 8 (harness completo: hooks, skills, quality gates, revisão multiagente).
| Métrica | Mínimo (4 PRDs) | Harness completo (8 PRDs) | Mudança |
|---|---|---|---|
| Vazamentos de credenciais | 2 vazaram para o git | 7 bloqueados pré-commit | Reativo para preventivo |
| Comandos destrutivos | 1 force-push para main | 4 bloqueados | Exit 2 enforcement |
| Taxa de falsa conclusão | 35% testes falharam | 4% | Evidence gate + Stop hook |
| Rodadas de revisão/história | 2,1 | 0,8 | Skills + quality loop |
| Degradação de contexto | 6 incidentes | 1 incidente | Filesystem memory |
| Overhead de tokens | 0% | ~3,2% | Desprezível |
| Tempo de hook/história | 0s | ~2,4s | Desprezível |
Os dois vazamentos de credenciais exigiram rotacionar chaves de API e auditar serviços downstream: cerca de 4 horas de resposta a incidente. O overhead do harness que preveniu o equivalente foi 2,4 segundos de bash por história. A taxa de falsa conclusão caiu de 35% para 4% porque o Stop hook executou testes de forma independente antes de permitir que o agente reportasse pronto.
Considerações de segurança
Os cinco princípios de agentes confiáveis (Anthropic, abril de 2026)
A Anthropic publicou um framework formal para confiabilidade de agentes em 9 de abril de 2026.27 Os cinco princípios são paralelos — e estendem — o pensamento do Evidence Gate apresentado neste guia:
| Princípio | O que significa | Como este harness o satisfaz |
|---|---|---|
| Controle humano | Override humano significativo em cada ponto de decisão | Hooks controlam chamadas de tool; PreCompact bloqueante; classificador de Auto Mode como camada de verificação |
| Alinhamento de valor | Ações do agente seguem a intenção do usuário, não objetivos adjacentes | CLAUDE.md como especificação explícita de intenção; skills como escopo de capacidade |
| Segurança | Resistência a entradas adversárias e prompt injection | Sandbox + deny-rules + validação de input na camada de hook |
| Transparência | Registros auditáveis de decisões e ações | Logging de hooks; transcrições de sessão; rastros de invocação de skills |
| Privacidade | Tratamento e governança apropriados de dados | Limpeza de credenciais em env-vars; detecção de segredos na camada de hook |
A Anthropic também doou o MCP para a Agentic AI Foundation da Linux Foundation, juntando-se ao AGENTS.md (agora administrado conjuntamente com OpenAI, Google, Cursor, Factory, Sourcegraph). Os padrões de interoperabilidade de agentes agora são neutros em relação a fornecedores.27
Tooling de sandbox para skills: Para equipes que tratam skills como uma superfície de ataque, o SandyClaw da Permiso (lançado em 2 de abril de 2026) executa skills em um sandbox dedicado e entrega veredictos baseados em evidências a partir de detecção Sigma/YARA/Nova/Snort. Primeiro produto na categoria de sandbox para skills.28
O Sandbox
O Claude Code suporta um modo sandbox opcional (habilitado via settings.json ou pelo comando /sandbox) que restringe o acesso à rede e operações de filesystem usando isolamento em nível de SO (seatbelt no macOS, bubblewrap no Linux). Quando habilitado, o sandbox impede que o modelo faça requisições arbitrárias de rede ou acesse arquivos fora do diretório do projeto. Sem sandboxing, o Claude Code usa um modelo baseado em permissões onde você aprova ou nega chamadas de tool individuais.13
Limites de permissão
O sistema de permissões controla operações em múltiplos níveis:
| Nível | Controla | Exemplo |
|---|---|---|
| Permissões de tool | Quais tools podem ser usadas | Restringir subagent a Read, Grep, Glob |
| Permissões de arquivo | Quais arquivos podem ser modificados | Bloquear escritas em .env, credentials.json |
| Permissões de comando | Quais comandos bash podem ser executados | Bloquear rm -rf, git push --force |
| Permissões de rede | Quais domínios podem ser acessados | Allowlist para conexões de servidor MCP |
Defesa contra prompt injection
Skills e hooks fornecem defesa em profundidade contra prompt injection:
Skills com restrições de tool impedem que um prompt comprometido obtenha acesso de escrita:
allowed-tools: Read, Grep, Glob
PreToolUse hooks validam cada chamada de tool independentemente de como o modelo foi instruído via prompt:
# Block credential file access regardless of prompt
if echo "$FILE_PATH" | grep -qE "\.(env|pem|key|credentials)$"; then
echo "BLOCKED: Sensitive file access" >&2
exit 2
fi
Isolamento de subagents limita o raio de impacto. Um subagent com permissionMode: plan não pode fazer alterações mesmo que seu prompt seja comprometido.
Segurança de hooks
Hooks HTTP que interpolam variáveis de ambiente em headers exigem uma lista explícita allowedEnvVars para impedir a exfiltração arbitrária de variáveis de ambiente:13
{
"type": "http",
"url": "https://api.example.com/notify",
"headers": {
"Authorization": "Bearer $MY_TOKEN"
},
"allowedEnvVars": ["MY_TOKEN"]
}
A divisão de responsabilidade entre humano e agente
Segurança em arquiteturas de agentes exige uma divisão clara entre responsabilidades humanas e do agente:17
| Responsabilidade humana | Responsabilidade do agente |
|---|---|
| Definição do problema | Execução do pipeline |
| Limiares de confiança | Execução dentro dos limiares |
| Requisitos de consenso | Computação de consenso |
| Critérios de quality gate | Aplicação do quality gate |
| Análise de erros | Detecção de erros |
| Decisões de arquitetura | Opções de arquitetura |
| Injeção de contexto de domínio | Geração de documentação |
O padrão: humanos detêm decisões que exigem contexto organizacional, julgamento ético ou direção estratégica. Agentes detêm decisões que exigem busca computacional em grandes espaços de possibilidades. Hooks aplicam essa fronteira.
Aplicação recursiva de hooks
Hooks também disparam para ações de subagents.13 Se o Claude spawna um subagent via Agent tool, seus hooks PreToolUse e PostToolUse executam para cada tool que o subagent usa. Sem aplicação recursiva de hooks, um subagent poderia contornar seus gates de segurança. O evento SubagentStop permite que você execute limpeza ou validação quando um subagent é concluído.
Isso não é opcional. Um agent que spawna um subagent sem seus hooks de segurança é um agent que pode fazer force-push para a main, ler arquivos de credenciais ou executar comandos destrutivos enquanto seus gates observam a conversa principal sem fazer nada.
Custo como arquitetura
Custo é uma decisão arquitetural, não um detalhe operacional posterior.2 Três níveis:
Nível de token. Compressão do system prompt. Remova exemplos de código tutorial (o modelo conhece os APIs), colapse regras duplicadas entre arquivos e substitua explicações por restrições. “Reject tool calls matching sensitive paths” faz o mesmo trabalho que uma explicação de 15 linhas sobre por que credenciais não devem ser lidas.
Nível de agent. Spawns frescos em vez de conversas longas. Cada story em uma execução autônoma recebe um novo agent com contexto limpo. O contexto nunca infla porque cada agent começa do zero. Briefing em vez de memória: modelos executam um briefing claro melhor do que navegam 30 passos de contexto acumulado.
Nível de arquitetura. CLI-first em vez de MCP quando a operação é stateless. Uma chamada claude --print para uma avaliação one-shot custa menos e não adiciona overhead de conexão. MCP faz sentido quando a tool precisa de estado persistente ou streaming.
Framework de decisão
Quando usar cada mecanismo:
| Problema | Use | Por quê |
|---|---|---|
| Formatar código após cada edição | PostToolUse hook | Deve acontecer toda vez, deterministicamente |
| Bloquear comandos bash perigosos | PreToolUse hook | Deve bloquear antes da execução, exit code 2 |
| Aplicar padrões de revisão de segurança | Skill | Expertise de domínio que auto-ativa pelo contexto |
| Explorar codebase sem poluir o contexto | Explore subagent | Contexto isolado, retorna apenas o resumo |
| Executar refatoração experimental com segurança | Worktree-isolated subagent | Mudanças podem ser descartadas se falharem |
| Revisar código de múltiplas perspectivas | Subagents paralelos ou Agent Team | Avaliação independente evita pontos cegos |
| Decidir sobre arquitetura irreversível | Multi-agent deliberation | Trigger de confiança + validação de consenso |
| Persistir decisões entre sessões | MEMORY.md | Filesystem sobrevive aos limites de contexto |
| Compartilhar padrões da equipe | Project CLAUDE.md + .claude/rules/ | Distribuído via git, carrega automaticamente |
| Definir comandos de build/test do projeto | CLAUDE.md | Instruções command-first que o agent pode verificar |
| Executar desenvolvimento autônomo longo | Ralph loop (iteração com contexto fresco) | Orçamento total de contexto por iteração, estado em filesystem |
| Notificar o Slack quando a sessão termina | Async Stop hook | Não bloqueante, não atrasa a sessão |
| Validar qualidade antes do commit | PreToolUse hook em git commit | Bloqueia o commit se lint/testes falharem |
| Aplicar critérios de conclusão | Stop hook | Impede que o agent pare antes da tarefa estar concluída |
Skills vs Hooks vs Subagents
| Dimensão | Skills | Hooks | Subagents |
|---|---|---|---|
| Invocação | Automática (raciocínio do LLM) | Determinística (event-driven) | Explícita ou auto-delegada |
| Garantia | Probabilística (o modelo decide) | Determinística (sempre dispara) | Determinística (contexto isolado) |
| Custo de contexto | Injetado no contexto principal | Zero (executa fora do LLM) | Janela de contexto separada |
| Custo de token | Orçamento de descrição (2% da janela) | Zero | Contexto completo por subagent |
| Melhor para | Expertise de domínio | Aplicação de políticas | Trabalho focado, exploração |
FAQ
Quantos hooks são demais?
A restrição é desempenho, não quantidade. Cada hook é executado de forma síncrona, então o tempo total de execução dos hooks soma-se a cada chamada de tool correspondente. 95 hooks distribuídos entre configurações de usuário e de projeto rodam sem latência perceptível quando cada hook é concluído em menos de 200ms. O limite a observar: se um hook PostToolUse adicionar mais de 500ms a cada edição de arquivo, a sessão fica lenta. Faça profiling dos seus hooks com time antes de implantá-los.14
Os hooks podem impedir que o Claude Code execute um comando?
Sim. Hooks PreToolUse bloqueiam qualquer ação de tool ao sair com código 2. O Claude Code cancela a ação pendente e mostra a saída de stderr do hook para o modelo. O Claude vê o motivo da rejeição e sugere uma alternativa mais segura. O código de saída 1 é um aviso não bloqueante em que a ação ainda prossegue.3
Onde devo colocar os arquivos de configuração de hooks?
As configurações de hooks ficam em .claude/settings.json para hooks de nível de projeto (commitados no seu repositório, compartilhados com seu time) ou em ~/.claude/settings.json para hooks de nível de usuário (pessoais, aplicados a cada projeto). Hooks de nível de projeto têm precedência quando ambos existem. Use caminhos absolutos para arquivos de script para evitar problemas com diretório de trabalho.14
Toda decisão precisa de deliberação?
Não. O módulo de confiança pontua decisões em quatro dimensões (ambiguidade, complexidade, riscos, dependência de contexto). Apenas decisões com pontuação abaixo de 0,70 de confiança geral acionam deliberação, aproximadamente 10% do total de decisões. Correções de documentação, renomeação de variáveis e edições rotineiras pulam a deliberação completamente. Arquitetura de segurança, mudanças de schema de banco de dados e deploys irreversíveis acionam-na consistentemente.7
Como testar um sistema projetado para produzir discordância?
Teste tanto os caminhos de sucesso quanto os de falha. Sucesso: os agents discordam produtivamente e chegam a consenso. Falha: os agents convergem rápido demais, nunca convergem ou excedem o orçamento de spawn. Testes ponta a ponta simulam cada cenário com respostas determinísticas dos agents, verificando se ambos os portões de validação capturam cada modo de falha documentado. Um sistema de deliberação em produção executa 141 testes em três camadas: 48 testes de integração em bash, 81 testes unitários em Python e 12 simulações de pipeline ponta a ponta.7
Qual é o impacto de latência da deliberação?
Uma deliberação com 3 agents adiciona de 30 a 60 segundos de tempo real (os agents rodam sequencialmente via Agent tool). Uma deliberação com 10 agents adiciona de 2 a 4 minutos. Os hooks de consenso e de pride check rodam cada um em menos de 200ms. O gargalo principal é o tempo de inferência do LLM por agent, não o overhead de orquestração.7
Qual deve ser o tamanho de um arquivo CLAUDE.md?
Mantenha cada seção com menos de 50 linhas e o arquivo total com menos de 150 linhas. Arquivos longos são truncados pelas janelas de contexto, por isso coloque as instruções mais críticas no início: comandos e definições de fechamento antes das preferências de estilo.21
Isso pode funcionar com tools diferentes do Claude Code?
Os princípios arquiteturais (hooks como portões determinísticos, skills como expertise de domínio, subagents como contextos isolados, filesystem como memória) se aplicam conceitualmente a qualquer sistema agêntico. A implementação específica usa os eventos de ciclo de vida, padrões de matcher e Agent tool do Claude Code. O AGENTS.md leva os mesmos padrões para Codex, Cursor, Copilot, Amp e Windsurf.21 O padrão de harness é agnóstico de tool, mesmo que os detalhes de implementação sejam específicos da tool.
Cartão de referência rápida
Configuração de hooks
{
"hooks": {
"PreToolUse": [{"matcher": "Bash", "hooks": [{"type": "command", "command": "script.sh"}]}],
"PostToolUse": [{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "format.sh"}]}],
"Stop": [{"matcher": "", "hooks": [{"type": "agent", "prompt": "Verify tests pass. $ARGUMENTS"}]}],
"SessionStart": [{"matcher": "", "hooks": [{"type": "command", "command": "setup.sh"}]}]
}
}
Frontmatter de skill
---
name: my-skill
description: What it does and when to use it. Include trigger phrases.
allowed-tools: Read, Grep, Glob
---
Definição de subagent
---
name: my-agent
description: When to invoke. Include PROACTIVELY for auto-delegation.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
Instructions for the subagent.
Códigos de saída
| Código | Significado | Usado para |
|---|---|---|
| 0 | Sucesso | Permitir a operação |
| 2 | Bloquear | Portões de segurança, portões de qualidade |
| 1 | Aviso não bloqueante | Logging, mensagens de aviso |
Comandos principais
| Comando | Finalidade |
|---|---|
/compact |
Comprime o contexto, preserva decisões |
/context |
Visualiza alocação de contexto e skills ativas |
/agents |
Gerencia subagents |
claude -c |
Continua a sessão mais recente |
claude --print |
Invocação única do CLI (sem conversa) |
# <note> |
Adiciona nota ao arquivo de memória |
/memory |
Visualiza e gerencia a auto-memória |
Localizações de arquivos
| Caminho | Finalidade |
|---|---|
~/.claude/CLAUDE.md |
Instruções globais pessoais |
.claude/CLAUDE.md |
Instruções do projeto (compartilhadas via git) |
.claude/settings.json |
Hooks e permissões do projeto |
~/.claude/settings.json |
Hooks e permissões do usuário |
~/.claude/skills/<name>/SKILL.md |
Skills pessoais |
.claude/skills/<name>/SKILL.md |
Skills do projeto (compartilhadas via git) |
~/.claude/agents/<name>.md |
Definições pessoais de subagents |
.claude/agents/<name>.md |
Definições de subagents do projeto |
.claude/rules/*.md |
Arquivos de regras do projeto |
~/.claude/rules/*.md |
Arquivos de regras do usuário |
~/.claude/projects/{path}/memory/MEMORY.md |
Auto-memória |
Changelog
| Data | Alteração |
|---|---|
| 2026-05-08 | Guia v1.6: Acompanhamento do dia 2 sobre Claude Code v2.1.132/v2.1.133 + SDK v0.1.77. Adicionada subseção SDK Skill Surface ao Sistema de Skills cobrindo a opção skills em ClaudeAgentOptions e a descontinuação de "Skill" em allowed_tools.37 Adicionada subseção Effort and Session Provenance à Arquitetura de Hooks cobrindo o novo campo JSON effort.level + variável de ambiente $CLAUDE_EFFORT na entrada de hook, e a variável de ambiente CLAUDE_CODE_SESSION_ID em subprocessos Bash.3839 Adicionada correção de descoberta de skills por subagent à tabela Subagent Configuration Fields (subagents agora descobrem skills de projeto, usuário e plugin via a ferramenta Skill, silenciosamente descartadas antes da v2.1.133).39 Adicionada subseção Worktree Base, Sandbox Paths, and Admin Settings aos Production Patterns cobrindo worktree.baseRef (reversão de breaking-default de volta para origin/<default> a partir do HEAD local), sandbox.bwrapPath, sandbox.socatPath e parentSettingsBehavior.39 |
| 2026-05-07 | Guia v1.5: Claude Managed Agents, expansão SF de 6 de maio. Adicionada Estratégia 5 (Managed Memory Curation: Dreaming, Research Preview) à Memory and Context com tabela contrastando filesystem-as-memory vs. Dreaming.35 Adicionados Managed Multiagent Orchestration (Public Beta) e Outcomes (Public Beta) no topo da Multi-Agent Orchestration com citações textuais de Anthropic sobre especialistas de filesystem compartilhado e tracing do Claude Console, mais uma tabela comparativa vs. deliberação self-hosted. Adicionada subseção de streaming de eventos de hook do lado SDK cobrindo include_hook_events e HookEventMessage da claude-agent-sdk-python v0.1.74.36 Apenas changelog: Claude Code v2.1.124-v2.1.131 (claude project purge, --dangerously-skip-permissions para diretórios de projeto, skill_activated invocation_trigger, correção de PostToolUse format-on-save, correção de bloqueio JSON+exit-2 em PreToolUse, configurações skillOverrides); claude-agent-sdk-python v0.1.72 (CLI 2.1.126), v0.1.73 (session_store_flush), v0.1.75 (CLI 2.1.131), v0.1.76 (api_error_status); openai-agents-python v0.15.0-v0.16.1 com v0.16.0 (7 de maio) tendo gpt-5.4-mini como padrão, removendo o teto implícito max_turns e adicionando concorrência de execução de ferramentas no lado SDK. |
| 2026-05-07 | Guia v1.4: Atualizada a mecânica de hooks e skills do Claude Code contra a documentação oficial atual e evidências do runtime local (claude --version 2.1.132, codex --version retornou codex-cli 0.128.0). Atualizada a superfície de hooks de 22/26+ para 29 eventos documentados, corrigido o orçamento de descrição de skill de 2%/16.000 para 1%/8.000, alterada a contagem de tipos de hook de quatro para cinco com mcp_tool, removida a alegação não suportada de “10 subagents paralelos” fixos, e adicionada uma seção de paridade Codex pública e segura cobrindo AGENTS.md, skills, hooks, plugins e workflows explícitos de subagent. |
| 2026-04-29 | Guia v1.3: Expandida a cobertura de OpenAI Agents SDK na seção Managed vs. Self-Hosted Harnesses com a superfície SDK nomeada da openai-agents Python v0.14.0 (15 de abril) — SandboxAgent, Manifest, SandboxRunConfig, memória de sandbox com divulgação progressiva, mounts de workspace (S3/R2/GCS/Azure), snapshots portáveis e os backends de cliente local/Docker/hospedado (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel). Substituída a citação secundária do Help Net Security pela citação primária das release notes da v0.14.0. Adicionada uma nota curta sobre claude-agent-sdk-python v0.1.69-v0.1.71 (28-29 de abril) como a terceira opção self-hosted (incorporar runtime do Claude Code como uma biblioteca Python): CLI Claude empacotado atualizado para v2.1.123, piso de dependência mcp elevado para >=1.19.0 (versões mais antigas descartavam silenciosamente CallToolResult de ferramentas MCP in-process), correção de cancelamento de Trio nursery e paridade do campo allowlist SandboxNetworkConfig com SDK TS. Refinamentos do SDK v0.14.7-v0.14.8 documentados em [^58]. |
| 2026-04-25 | Guia v1.2: Google Cloud Next 2026 (22-24 de abril) — Vertex AI renomeado para Gemini Enterprise Agent Platform; Agentspace absorvido pelo Gemini Enterprise unificado; Workspace Studio (construtor de agentes no-code); 200+ modelos no Model Garden incluindo Anthropic Claude; partner agents da Box, Workday, Salesforce, ServiceNow; ADK v1.0 stable em quatro linguagens; Project Mariner (agente de navegação web); servidores MCP gerenciados com Apigee como ponte API-para-agente; protocolo A2A v1.0 em produção em 150 organizações. Microsoft Agent Framework 1.0 (abril de 2026): APIs estáveis, compromisso LTS, suporte completo a MCP, .NET + Python. O DevUI baseado em navegador que visualiza execução de agente e chamadas de ferramenta em tempo real é lançado como preview junto com a superfície estável 1.0. Salesforce Headless 360 (15 de abril, TDX): cada capacidade do Salesforce (CRM, serviço, marketing, ecommerce) exposta como ferramenta/comando API/MCP/CLI para que agentes como Claude Code, Cursor e Codex possam construir na plataforma sem um navegador. (TDX 2026 aconteceu em 15-16 de abril; o anúncio do Headless 360 está datado de 15 de abril.) MetaComp StableX KYA (21 de abril): framework de governança Know Your Agent para serviços financeiros regulamentados (pagamentos, compliance, wealth) — primeiro do tipo de uma instituição financeira licenciada; disponível em Claude, Claude Code, OpenClaw e outras plataformas de IA compatíveis. Preço do Claude Managed Agents: $0,08 por hora-sessão enquanto uma sessão está em execução, sem cobrança de runtime enquanto está ocioso — em cima das taxas normais de tokens de modelo Claude. (Conforme a página de preços Claude da Anthropic; o lançamento public-beta foi em 8 de abril de 2026.) Memory for Managed Agents entrou em public beta em 23 de abril de 2026 sob o cabeçalho beta managed-agents-2026-04-01. Todos os endpoints Managed Agents agora requerem este cabeçalho beta. |
| 2026-04-16 | Guia v1.1: Adicionada seção Managed vs. Self-Hosted Harnesses cobrindo Claude Managed Agents (beta de 8 de abril) e separação harness/compute do OpenAI Agents SDK (16 de abril). Adicionado hipervisor multi-agente cross-tool Scion (7 de abril, Google). Documentada descoberta do platô de debate M3MAD-Bench. Adicionados The Five Principles of Trustworthy Agents (Anthropic, 9 de abril) + governança MCP/AGENTS.md da Linux Foundation. Referência ao skill-sandbox Permiso SandyClaw. Novos Opus 4.7 Long-Horizon Patterns: resiliência a falhas de ferramenta, tier de esforço xhigh, teto de orçamento de token (task_budget beta), consciência de necessidade implícita reduzindo scaffolding do CLAUDE.md. |
| 2026-03-24 | Publicação inicial |
Referências
-
Andrej Karpathy sobre “claws” como uma nova camada sobre agentes LLM. Discussão no HN (406 pontos, 917 comentários). ↩
-
Implementação do autor. 84 hooks, 48 skills, 19 agents, ~15.000 linhas de orquestração. Documentado em Claude Code as Infrastructure. ↩↩↩↩↩↩↩↩
-
Anthropic, “Claude Code Hooks: Exit Codes.” code.claude.com/docs/en/hooks. Exit 0 permite, exit 2 bloqueia, exit 1 emite aviso para a maioria dos eventos;
WorktreeCreateé mais rigoroso. ↩↩↩↩↩ -
Anthropic, “Extend Claude with Skills.” code.claude.com/docs/en/skills. Estrutura de skills, campos de frontmatter, correspondência baseada em LLM e orçamento de descrição de 1% / 8.000 caracteres. ↩↩↩↩↩↩↩
-
Anthropic, “Claude Code Sub-agents.” code.claude.com/docs/en/sub-agents. Contexto isolado, suporte a worktree, equipes de agents. ↩↩↩↩↩
-
Anthropic, “Claude Code Documentation.” docs.anthropic.com/en/docs/claude-code. Arquivos de memória, CLAUDE.md, auto-memory. ↩↩↩↩↩
-
Sistema de deliberação multi-agente do autor. 10 personas de pesquisa, máquina de estados de 7 fases, 141 testes. Documentado em Multi-Agent Deliberation. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Simon Willison, “Writing code is cheap now.” Agentic Engineering Patterns. ↩
-
Laban, Philippe, et al., “LLMs Get Lost In Multi-Turn Conversation,” arXiv:2505.06120, maio de 2025. Microsoft Research e Salesforce. 15 LLMs, mais de 200.000 conversas, queda média de desempenho de 39%. ↩↩↩
-
Mikhail Shilkov, “Inside Claude Code Skills: Structure, Prompts, Invocation.” mikhail.io. Análise independente da descoberta de skills, injeção de contexto e seção de prompt
available_skills. ↩ -
Claude Code Source,
SLASH_COMMAND_TOOL_CHAR_BUDGET. github.com/anthropics/claude-code. ↩ -
Anthropic, “Skill Authoring Best Practices.” platform.claude.com. Limite de 500 linhas, arquivos de suporte, convenções de nomenclatura. ↩
-
Anthropic, “Claude Code Hooks: Lifecycle Events.” code.claude.com/docs/en/hooks. 29 eventos de ciclo de vida documentados, tipos de hooks, comportamento de matcher, hooks assíncronos, HTTP hooks, prompt hooks, agent hooks e hooks de ferramentas MCP. ↩↩↩↩↩↩↩
-
Tutorial de hooks do Claude Code feito pelo autor. 5 hooks de produção do zero. Documentado em Claude Code Hooks Tutorial. ↩↩↩↩↩
-
Gerenciamento da janela de contexto do autor ao longo de 50 sessões. Documentado em Context Window Management. ↩↩↩↩↩
-
Implementação do Ralph Loop pelo autor. Iteração com contexto fresco usando estado em filesystem, orçamentos de spawn. Documentado em The Ralph Loop. ↩↩↩↩↩↩↩
-
Arquitetura do sistema de deliberação do autor. 3.500 linhas de Python, 12 módulos, gatilho de confiança, validação de consenso. Documentado em Building AI Systems: From RAG to Agents. ↩↩↩
-
Nemeth, Charlan, In Defense of Troublemakers: The Power of Dissent in Life and Business, Basic Books, 2018. ↩
-
Wu, H., Li, Z., e Li, L., “Can LLM Agents Really Debate?” arXiv:2511.07784, 2025. ↩
-
Liang, T. et al., “Encouraging Divergent Thinking in Large Language Models through Multi-Agent Debate,” EMNLP 2024. ↩
-
Análise de AGENTS.md do autor em repositórios do mundo real. Documentado em AGENTS.md Patterns. Veja também: Blog do GitHub, “How to Write a Great agents.md: Lessons from Over 2,500 Repositories.” ↩↩↩↩↩↩↩↩
-
Metodologia de quality loop e evidence gate do autor. Parte do sistema Jiro Craftsmanship. ↩
-
Anthropic, “Claude Managed Agents Overview”. Beta pública lançada em 8 de abril de 2026. Harness-as-a-service com checkpointing de sessão, sandbox empacotada, REST API. Preços: tokens padrão + US$ 0,08/hora-sessão. Header de beta
managed-agents-2026-04-01. ↩↩ -
OpenAI, “openai-agents Python v0.14.0 release notes”. Lançado em 15 de abril de 2026; o anúncio foi coberto em 16 de abril. Apresenta a superfície SDK Sandbox Agents como uma camada beta sobre o fluxo
Agent/Runnerexistente:SandboxAgent,Manifest(contrato de workspace),SandboxRunConfig, capacidades (shell, edição de filesystem, inspeção de imagens, skills, memória de sandbox, compactação), montagens de workspace (local, Git, remoto: S3, R2, GCS, Azure Blob, S3 Files), snapshots portáveis com normalização de paths e preservação de symlinks, e serialização de estado de execução para retomada. Backends:UnixLocalSandboxClient,DockerSandboxCliente clientes hospedados para Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel via extras opcionais. O anúncio de 16 de abril foi resumido em Help Net Security. ↩↩ -
Google Cloud, “Scion: Multi-Agent Hypervisor”. Tornado open source em 7 de abril de 2026. Orquestra Claude Code, Gemini CLI e outros deep agents como processos isolados com container, git worktree e credenciais por agent. Modos de implantação local/hub/Kubernetes. Cobertura do InfoQ. ↩
-
Cluster de pesquisa sobre debate multi-agente, Q1–Q2 2026. Wu et al., “Can LLM Agents Really Debate?” (arXiv 2511.07784); M3MAD-Bench — benchmark de debate multi-modelo multi-agente mostrando platôs de desempenho e suscetibilidade a consenso enganoso; Tool-MAD — atribuição heterogênea de ferramentas por agent + scores de juiz de Faithfulness/Relevance. ↩
-
Anthropic, “Our framework for developing safe and trustworthy agents”. 9 de abril de 2026. Cinco princípios: controle humano, alinhamento de valores, segurança, transparência, privacidade. Doação de MCP para a Agentic AI Foundation da Linux Foundation. ↩↩
-
Permiso Security, “SandyClaw: First Dynamic Sandbox for AI Agent Skills”. 2 de abril de 2026. Sandbox de execução de skills com detecção Sigma/YARA/Nova/Snort e veredictos baseados em evidências. ↩
-
Anthropic, “Introducing Claude Opus 4.7”. 16 de abril de 2026. Melhorias para agents de longo horizonte: 3× a resolução de tarefas de produção do SWE-Bench em comparação com Opus 4.6, resiliência a falhas de ferramentas, tier de esforço
xhigh, orçamentos de tarefas (beta), consciência de necessidade implícita. Veja também What’s new in Opus 4.7 para mudanças disruptivas no Messages API. ↩ -
Referência composta — OpenAI
openai-agents-pythonv0.14.7 (28 de abril de 2026) e v0.14.8 (29 de abril de 2026); Anthropicclaude-agent-sdk-pythonv0.1.69 (28 de abril), v0.1.70 (28 de abril) e v0.1.71 (29 de abril). Destaques de v0.14.7: propriedades de conveniênciatool_name/call_idem itens de ferramenta, limite elevado de turnos para consolidação de memória da Phase 2, aliases GPT-5.5 para compactação de sandbox, validação mais rigorosa de membros tar/zip, rejeição de symlinks em fontesLocalFile, remoção de campos não definidos das chamadas de Responses API. Destaques de v0.14.8: preservação de erros de import no re-export MCP, delimitação de seções de instruções de prompt do sandbox. claude-agent-sdk-python v0.1.69 adicionou docstrings aos campos deClaudeAgentOptionse atualizou o CLI empacotado para v2.1.121; v0.1.70 elevou o piso da dependênciamcppara>=1.19.0(versões mais antigas descartavam silenciosamente retornosCallToolResultde handlers de ferramentas MCP in-process), corrigiu corrupção de nursery do Trio em cancelamento precoce ao iterarquery()comoptions.stderrdefinido (spawn_detached()agora é usado para o reader de stderr) e atualizou o CLI empacotado para v2.1.122; v0.1.71 adicionou campos de domain-allowlist (allowedDomains,deniedDomains,allowManagedDomainsOnly,allowMachLookup) aoSandboxNetworkConfigpara paridade com o schema TypeScript e atualizou o CLI empacotado para v2.1.123. ↩ -
OpenAI, “Custom instructions with AGENTS.md”. O Codex lê arquivos globais e de projeto
AGENTS.md/AGENTS.override.mdantes do trabalho, mescla orientações da raiz até o diretório atual e limita a documentação do projeto porproject_doc_max_bytes. ↩ -
OpenAI, “Agent Skills”. Skills do Codex usam
SKILL.md, divulgação progressiva, invocação explícita de$skille ativação implícita a partir de descrições. ↩ -
OpenAI, “Codex Hooks”. Hooks do Codex suportam command hooks na configuração, plugin hooks, managed hooks, matchers para eventos suportados, entrada JSON via stdin e campos de saída JSON. ↩
-
OpenAI, “Codex Subagents” e “Codex CLI 0.128.0 changelog”. O Codex suporta workflows explícitos de subagents paralelos, agents
default,workereexplorerintegrados, agents TOML personalizados, política de sandbox herdada, hooks empacotados em plugins, estado de habilitação de hooks e workflows/goalpersistidos em 0.128.0. ↩ -
Anthropic, “New in Claude Managed Agents”. 6 de maio de 2026. Dreaming (Research Preview): processo agendado em segundo plano que revisa sessões de agents e armazenamentos de memória, extrai padrões e cura memórias. Outcomes (Public Beta): avaliação baseada em rubrica em que um grader separado pontua a saída em relação à rubrica em sua própria janela de contexto, de modo a não ser influenciado pelo raciocínio do agent. Multiagent Orchestration (Public Beta): um lead agent delega partes de um trabalho a especialistas, cada um com seu próprio modelo, prompt e ferramentas; os especialistas trabalham em paralelo em um filesystem compartilhado e contribuem para o contexto geral do lead agent, com tracing completo passo a passo no Claude Console. ↩↩↩↩↩↩↩↩
-
Anthropic,
claude-agent-sdk-pythonv0.1.74. 6 de maio de 2026. Adicionainclude_hook_eventsaClaudeAgentOptions; quando definido, eventos de hook (PreToolUse, PostToolUse, Stop, outros) são emitidos pelo CLI e entregues no stream de mensagens comoHookEventMessage, espelhando oincludeHookEventsdo SDK TypeScript. CLI Claude empacotado atualizado para v2.1.129. ↩↩ -
Anthropic,
claude-agent-sdk-pythonv0.1.77. 8 de maio de 2026. Descontinua o valor"Skill"emallowed_toolsem favor de uma opçãoskillsdedicada emClaudeAgentOptions, fornece ao Claude Code um sinal mais estruturado sobre as skills disponíveis, melhora as mensagens de erro em exceçõesCommand failede empacota o CLI Claude v2.1.133. ↩↩ -
Anthropic, Claude Code v2.1.132. 6 de maio de 2026. Adiciona a variável de ambiente
CLAUDE_CODE_SESSION_IDem subprocessos da ferramenta Bash (correspondente aosession_idque os hooks já enxergam),CLAUDE_CODE_DISABLE_ALTERNATE_SCREENpara manter a conversa no scrollback nativo, banner de inicialização atualizado para/tui fullscreen(menor uso de memória, suporte a mouse, auto-cópia ao selecionar) e cerca de vinte correções de bugs abrangendo desligamento gracioso por SIGINT, corrupção de--resumepor emojis surrogate, flag--permission-modeno plan mode, manipulação de cursor para Indic e ZWJ, ops vim em NFD, swallow de paste iniciando com/, uso de memória ilimitado em MCP, retry detools/listem MCP, 400 emENABLE_PROMPT_CACHING_1Hno Bedrock + Vertex econtext_windowda statusline mostrando tokens cumulativos. ↩↩ -
Anthropic, Claude Code v2.1.133. 7 de maio de 2026. Hooks agora recebem entrada JSON
effort.level+ variável de ambiente$CLAUDE_EFFORT(também legível a partir de comandos Bash). Subagents descobrem skills de projeto, usuário e plugin via a ferramentaSkill(correção de regressão). Novas configurações de admin:worktree.baseRef(fresh|head) reverte a base do worktree de volta paraorigin/<default>após a mudança da v2.1.128 paraHEADlocal;sandbox.bwrapPathesandbox.socatPathfixam binários do sandbox em Linux/WSL;parentSettingsBehavior('first-wins' | 'merge') controla comomanagedSettingsdo SDK se compõem com configurações pai. Outras correções: race de 401-após-refresh-token em sessões paralelas, escopo de allow-rule em raiz de drive, suporte a proxy/mTLS em OAuth MCP, stop/interrupt do Remote Control completando o cancel, vazamento de/effortentre sessões,--remote-controllistado em--help. ↩↩↩↩↩↩