Seus agents criam tasks sem ninguém olhar. E o problema não é a IA.
Vou ser direto: se você tem uma software house usando Claude Code com agent teams em produção, seus teammates estão criando tasks agora. Sem convenção de nome. Sem ticket vinculado. Sem descrição obrigatória. Sem ninguém validando.
E quando seu cliente perguntar “quem autorizou essa mudança no módulo financeiro?”, a resposta vai ser: “um agent criou uma task, outro agent executou, ninguém validou”.
Na minha experiência com 300+ software houses, esse cenário já está acontecendo. Agent teams do Claude Code são a feature mais poderosa que vi em ferramentas de coding — múltiplas sessões independentes trabalhando em paralelo, com task list compartilhada, comunicação direta entre teammates, e self-coordination. Mas poder sem governance é receita pra desastre.
O que é o TaskCreated hook
O TaskCreated hook é um evento do sistema de hooks do Claude Code que dispara toda vez que uma task é criada via a ferramenta TaskCreate em agent teams.
Antes dele: um teammate decidia criar uma task, e ela era criada. Ponto. Sem validação, sem padrão, sem auditoria.
Depois dele: você intercepta a criação antes de acontecer. Valida o nome, exige descrição, verifica convenção, loga a tentativa, e decide se a task pode ou não ser criada.
O hook recebe um JSON com tudo que você precisa:
{
"hook_event_name": "TaskCreated",
"task_id": "task-001",
"task_subject": "Implement user authentication",
"task_description": "Add login and signup endpoints",
"teammate_name": "implementer",
"team_name": "my-project",
"session_id": "abc123",
"cwd": "/Users/dev/project"
}
Dois mecanismos de controle:
- Exit code 2 — bloqueia a criação da task e envia o stderr como feedback ao modelo. O teammate recebe o motivo, ajusta, e tenta de novo. Auto-correção.
- JSON
{"continue": false, "stopReason": "..."}— para o teammate inteiramente. Kill switch. OstopReasonaparece pro usuário.
Detalhe importante: não tem matcher support. O hook dispara em TODA criação de task. Zero gap de coverage. Você não precisa configurar quais tasks monitorar — todas são monitoradas.
Como funciona na prática
Um script que exige ticket no nome da task:
#!/bin/bash
INPUT=$(cat)
TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')
if [[ ! "$TASK_SUBJECT" =~ ^\[TICKET-[0-9]+\] ]]; then
echo "Task subject must start with a ticket number, e.g. '[TICKET-123] Add feature'" >&2
exit 2
fi
exit 0
O que acontece:
- Teammate tenta criar task “Fix login bug”
- Hook bloqueia com exit code 2
- Modelo recebe feedback: “Task subject must start with a ticket number”
- Teammate reformula para “[TICKET-456] Fix login bug”
- Hook aprova, task é criada
Auto-correção. Sem intervenção humana. O agent aprende a convenção na primeira tentativa.
Agora um exemplo mais robusto para uma software house:
#!/bin/bash
INPUT=$(cat)
TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')
TASK_DESC=$(echo "$INPUT" | jq -r '.task_description')
TEAMMATE=$(echo "$INPUT" | jq -r '.teammate_name')
TEAM=$(echo "$INPUT" | jq -r '.team_name')
# 1. Exigir ticket no subject
if [[ ! "$TASK_SUBJECT" =~ ^\[[A-Z]+-[0-9]+\] ]]; then
echo "Task deve começar com ticket: [PROJ-123] Descrição" >&2
exit 2
fi
# 2. Exigir descrição
if [[ -z "$TASK_DESC" || "$TASK_DESC" == "null" ]]; then
echo "Task deve ter descrição detalhada do que será feito" >&2
exit 2
fi
# 3. Log centralizado
echo "$(date -Iseconds) | TEAM=$TEAM | MATE=$TEAMMATE | TASK=$TASK_SUBJECT" >> /var/log/agent-tasks.log
exit 0
Três validações em um script:
- Convenção de nome com ticket obrigatório
- Descrição obrigatória (sem tasks vazias)
- Log centralizado de toda criação de task
E isso é só o script bash. O hook suporta command, HTTP, prompt e agent hooks. Com HTTP, você centraliza a lógica num endpoint e distribui via managed-settings para toda a frota.
Por que isso importa para sua software house
Vou colocar em números.
Segundo o Anthropic Agentic Coding Trends Report 2026, 95% dos devs profissionais já usam AI coding tools semanalmente. Claude Code é a ferramenta #1 com 46% de preferência.
Agent teams são o próximo passo natural. Uma SH com 20 devs usando agent teams com 5 teammates cada gera 100 sessões independentes criando tasks em paralelo.
A recomendação da própria Anthropic é 5-6 tasks por teammate. Isso são 500-600 tasks por sprint geradas por agents. Sem nenhuma validação.
Agora olha os dados de governance:
- Só 21% das organizações têm governance madura para AI agents (Gravitee State of AI Agent Security 2026)
- 80% reportaram comportamentos de risco de agents incluindo acesso não autorizado a dados
- 82% dos executivos se dizem confiantes nas policies — mas só 14.4% dos agents vão pra produção com full security/IT approval
- Gartner projeta que 40%+ dos projetos agentic AI serão cancelados até 2027 por custos e controles inadequados
Agent sprawl é o termo: a proliferação descontrolada de agents siloed e sem governance. Empresas hoje usam em média 12 AI agents, com projeção de crescimento de 67% em dois anos. IDC projeta 1.3 bilhão de agents enterprise globalmente até 2028 (Guild.ai).
Pra CIO e CTO de software house, isso se traduz em: risco de auditoria, exposição de compliance, e incapacidade de demonstrar ROI de IA.
TaskCreated hook é governance a nível de task. A unidade mais granular do trabalho de um agent.
A tríade de governance para agent teams
TaskCreated não trabalha sozinho. O Claude Code tem três hooks específicos para agent teams:
| Hook | Quando dispara | O que controla |
|---|---|---|
| TaskCreated | Task sendo criada | Valida nome, descrição, permissão |
| TaskCompleted | Task sendo marcada como completa | Valida entrega, qualidade, critérios |
| TeammateIdle | Teammate vai ficar ocioso | Monitora ociosidade, redireciona trabalho |
Os três usam exit code 2 para enviar feedback ao modelo e bloquear a ação.
Um stack de governance completo para agent teams:
{
"hooks": {
"TaskCreated": [
{
"type": "command",
"command": "./scripts/validate-task-creation.sh"
}
],
"TaskCompleted": [
{
"type": "command",
"command": "./scripts/validate-task-completion.sh"
}
],
"TeammateIdle": [
{
"type": "command",
"command": "./scripts/handle-teammate-idle.sh"
}
]
}
}
Com HTTP hooks, você manda todas as validações para um endpoint centralizado. Um microserviço que:
- Valida convenção de nome contra o board do Jira/Linear
- Verifica se o ticket existe e está no sprint correto
- Loga toda criação/conclusão em banco de dados
- Envia alertas no Slack quando tasks são bloqueadas
- Gera relatório semanal de compliance
Isso é observabilidade de agents. Não é opcional quando você tem 100 sessões gerando 500 tasks por sprint.
O gap que ninguém fala
O EY/AIUC-1 Consortium Survey (março 2026) revelou dados que me preocupam:
- Só 38% das organizações monitoram AI traffic end-to-end (prompts, tool calls, outputs)
- Só 17% monitoram interações agent-to-agent continuamente
- 64% das empresas com receita acima de $1B reportaram perdas superiores a $1M associadas a falhas de sistemas AI em 2025
Agent teams são o caso mais extremo de agent-to-agent interaction. Teammates criam tasks, outros teammates executam, mensagens fluem via mailbox, tasks são claimed via file locking. É um sistema distribuído rodando com context windows independentes.
Sem TaskCreated hook, você não tem visibilidade sobre o quê está sendo criado. Sem TaskCompleted hook, você não sabe como está sendo entregue. Sem TeammateIdle hook, você não sabe quando agents param de produzir.
É literalmente voar cego com 100 sessões paralelas.
Configuração para managed settings (enterprise)
Para SHs com Claude for Teams/Enterprise, a configuração via managed-settings garante que nenhum dev pode desabilitar os hooks:
{
"hooks": {
"TaskCreated": [
{
"type": "http",
"url": "https://governance.minha-sh.com/hooks/task-created",
"timeout": 5000
}
],
"TaskCompleted": [
{
"type": "http",
"url": "https://governance.minha-sh.com/hooks/task-completed",
"timeout": 5000
}
]
}
}
Distribuído via managed-settings.d, combinado com forceRemoteSettingsRefresh: true para garantir que os hooks carregam antes de qualquer sessão iniciar. O que já cobri em artigos anteriores — fail-closed é o padrão seguro.
Stack enterprise completo para agent teams:
- TaskCreated hook → valida criação de task
- TaskCompleted hook → valida conclusão
- TeammateIdle hook → monitora ociosidade
- managed-settings.d → distribui config para frota
- forceRemoteSettingsRefresh → garante carregamento
- PermissionDenied hook → retry de falsos positivos
- PreToolUse hook → bloqueia ferramentas perigosas
O que eu penso
Agent teams é a feature que vai separar SHs que usam IA como brinquedo de SHs que usam IA como infraestrutura de produção.
Mas sem governance, agent teams é um time de 5 pessoas trabalhando em paralelo sem tech lead, sem code review, sem board organizado, sem naming convention. Funciona no hackathon. Explode em produção.
TaskCreated hook é a menor unidade de governance que você pode implementar. Um script bash de 10 linhas que transforma task sprawl em task governance. Se cada task precisa de ticket, descrição, e log — você tem rastreabilidade. Se tem rastreabilidade, tem compliance. Se tem compliance, tem confiança do cliente.
40% dos projetos agentic AI vão ser cancelados até 2027, segundo o Gartner. Não por falta de capacidade técnica. Por falta de controles.
Não seja esse 40%.
Se você quer implementar agent teams com governance na sua software house, eu posso te mostrar como fazemos. Sou Thulio, mentoro 300+ SHs desde 2016.



