Valida estilo de código, formatação e padrões de nomenclatura automaticamente.
Intercepte, valide e controle o comportamento de agentes em cada ponto do ciclo de vida. A camada de governança que o agente não pode contornar: do pre-hook que bloqueia ao post-hook que encadeia o próximo agente.
Os sensores silenciosos da automação agêntica. Dormem até serem ativados, e o agente não pode contorná-los.
Respondem a eventos específicos no ciclo de vida de um agente. Dormem até serem ativados automaticamente.
Agentes NÃO podem contorná-los. Hooks são impostos pelo sistema, garantindo que toda ação siga padrões de governança.
Hooks só custam ciclos quando realmente precisam executar. Quando dormem, o overhead é virtualmente zero.
Sem hooks, cada agente gerenciaria sua própria validação e tratamento de erros. Hooks centralizam essas responsabilidades, garantindo consistência em toda a frota.
app.use(authMiddleware); // PRE app.get("/api", handler); // EXECUTION app.use(loggerMiddleware); // POST
Intercepta requests HTTP antes e depois do handler principal. Valida auth, loga, transforma dados.
pre_hook: validate_permissions // PRE execution: agent_task // EXECUTION post_hook: quality_check // POST err_hook: fallback_handler // ON ERROR
Intercepta ações de agentes antes e depois da execução. Valida permissões, escaneia segurança, garante qualidade.
A mesma intuição de middleware se aplica: interceptar, validar, transformar. Mas para agentes de IA em vez de HTTP requests.
Assim como sensores tornam uma fábrica eficiente e confiável, hooks tornam agentes governados, auditáveis e seguros.
Pre-generation, post-generation, validação e hooks customizados. Cada tipo guarda um momento diferente do ciclo.
{
"hooks": {
"pre-generation": [{
"handler": "command",
"script": "check_permissions.sh",
"on_failure": "block",
"timeout": 5000
}]
}
}
Valida permissões do usuário antes de qualquer geração.
Carrega diretrizes do repo, como os arquivos .instructions.md.
Verifica recursos e pré-condições do ambiente.
Pode BLOQUEAR a ação se falhar. É o único momento de dizer não.
{
"hooks": {
"post-generation": [{
"handler": "prompt",
"action": "Review output quality",
"min_coverage": 80,
"next_agent": "SecurityAgent"
}]
}
}
Valida a qualidade dos resultados gerados.
Registra métricas e logs de cada execução.
Notifica sistemas interessados ao concluir.
Dispara o próximo agente via chaining, criando pipelines multi-agente.
Valida estilo de código, formatação e padrões de nomenclatura automaticamente.
Escaneia código gerado para vulnerabilidades, secrets expostos e padrões inseguros.
Verifica aderência a políticas corporativas, LGPD, HIPAA e padrões regulatórios.
Garante que código gerado tem cobertura mínima de testes antes de aceitar.
hooks: validation: - name: security-scan handler: command script: "semgrep --config auto ." on_failure: block - name: lint-check handler: command script: "eslint --fix ." on_failure: warn - name: coverage-gate handler: command script: "jest --coverageThreshold=80" on_failure: block
Envia alertas para Slack, Teams ou email quando agentes completam tarefas críticas.
Coleta métricas de performance, custo e qualidade para dashboards de observabilidade.
Transforma o output do agente antes de entregar ao usuário: sanitiza, formata, enriquece.
Extensibilidade: custom hooks permitem que organizações adaptem o framework às suas necessidades únicas sem modificar o core do sistema.
Da requisição ao output, todos os pontos de interceptação. Nada passa sem verificação.
Cada ponto no ciclo de vida é uma oportunidade de interceptação. Hooks garantem que nada passe sem verificação.
A timeline: disparo, execução, validação. Sucesso continua, bloqueio para, erro aciona o error hook. É a semântica mais importante do sistema.
Scripts de shell diretos que executam ações rápidas. Ideais para validações simples e leves.
BRANCH=$(git branch --show-current) if [[ "$BRANCH" == "main" ]]; then exit 2 # Block fi exit 0 # Continue
LLMs que analisam e tomam decisões inteligentes. Usam raciocínio para avaliar contexto complexo.
"Analyze the diff for: 1. Security vulnerabilities 2. Breaking changes If critical: exit 2 (block) Otherwise: exit 0 (approve)"
Subagentes completos com ferramentas e habilidades. Executam tarefas complexas como revisão de código.
Agent: SecurityReviewAgent
Skills: [code-review, vuln-scan]
Tools: [semgrep, codeql, gitleaks]
Output: structured_report.json
Comece com command para validações leves. Gradue para prompt quando precisar de raciocínio, e para agent quando a verificação for uma tarefa completa.
Post-hooks disparam o próximo agente. O pipeline vira uma cadeia onde cada elo adiciona valor.
Lint e security são blocking e vêm primeiro: falhe rápido, antes de gastar com os agentes caros.
28 segundos de pipeline automatizado contra 45 minutos de revisão manual por PR.
A configuração real, o hook de security scanning linha a linha, e onde os hooks do GitHub Copilot rodam hoje.
{
"hooks": {
"pre-commit": [{
"name": "validate-syntax",
"handler": "command",
"script": "npx eslint .",
"on_failure": "block",
"timeout": 10000
}, {
"name": "check-secrets",
"handler": "command",
"script": "gitleaks detect --source .",
"on_failure": "block"
}],
"post-commit": [{
"name": "notify-team",
"handler": "command",
"script": "curl -X POST $SLACK_WEBHOOK",
"on_failure": "warn"
}]
}
}
Cada hook tem nome, handler, script, comportamento em falha e timeout. Cinco campos, contrato completo.
on_failure block para o crítico (sintaxe, secrets). warn para o informativo (notificação). Separe sempre.
Em .github/hooks/*.json no branch padrão. Vale para todo agente do repositório, herdado pelo time.
#!/bin/bash # Security scanning para código gerado por agente # 1. Secrets expostos gitleaks detect --source . --no-git [ $? -ne 0 ] && exit 2 # BLOCK # 2. Análise estática OWASP semgrep --config "p/owasp-top-ten" --error . [ $? -ne 0 ] && exit 2 # BLOCK # 3. Auditoria de dependências npm audit --audit-level=critical [ $? -ne 0 ] && exit 2 # BLOCK exit 0 # CONTINUE: todas as varreduras passaram
Detecta secrets e credenciais expostas antes de chegarem ao commit.
Varre o código gerado contra o OWASP top ten. Vulnerabilidade crítica bloqueia.
Audita dependências e barra vulnerabilidades de nível crítico na cadeia.
O script pode executar múltiplas verificações em sequência. Exit code 2 bloqueia, exit code 0 continua. Simples de auditar, impossível de pular.
No CLI, disableAllHooks pausa a configuração sem apagar nada: útil em debug, em releases sensíveis, ou para um contribuidor fazer opt-out local.
Desde junho de 2026, admins distribuem hooks gerenciados por todo o enterprise: a mesma configuração, sempre ativa, em cada cliente do GitHub Copilot da organização.
Três cenários reais, o impacto medido com versus sem hooks, e as práticas que separam quem opera de quem apaga incêndio.
Branch protection no pre-hook, semgrep e gitleaks como blocking, post-hooks disparando o pipeline completo de CI.
ESLint e Prettier como blocking, hook agent gera testes e valida cobertura acima de 80%, JSDoc obrigatório.
Hook com LLM analisa cada diff por padrões HIPAA, cadeia SAST + SCA + secrets + DAST, auditoria com hash e timestamp.
O padrão é o mesmo: pre-hook valida, blocking escaneia, post-hook encadeia, custom hook mede. O que muda é só o domínio.
Uma regra em instructions ocupa o contexto e é cobrada como input em cada request. A mesma regra num hook roda como shell: custo zero de token.
O deny do preToolUse corta o ciclo executar, falhar, analisar, tentar de novo. Cada loop evitado é input e output que não vai para a fatura.
No CLI, um hook de userPromptSubmitted pode devolver a resposta direto no stdout e pular o modelo inteiro. Zero tokens para respostas determinísticas.
O stdout do hook entra no contexto do agente. Hook verboso adiciona tokens cobrados. Silencioso no sucesso, específico na falha.
Desde 1º de junho de 2026, o GitHub Copilot cobra por AI Credits medidos em tokens de input, output e cache, com 1 crédito valendo um centavo de dólar. Cada loop desperdiçado do agente agora aparece na fatura.
Interceptadores passivos no lifecycle do agente. Governança centralizada.
Validam antes da ação. Podem bloquear a execução com exit 2.
Validam resultados. Disparam chaining para o próximo agente.
Capturam falhas, tentam fallback, notificam a equipe.
Command (shell), Prompt (LLM), Agent (subagente completo).
Hooks criam pipelines multi-agente. Cada etapa adiciona valor.
"pre-commit": [{ "name": "check-secrets", "handler": "command", "script": "gitleaks detect --source .", "on_failure": "block" }] # e nenhum secret passa de novo
Publicado em 2026-06-11 · v2.1