Os Hooks foram projetados para usuários avançados e equipes Enterprise que precisam de controle granular sobre o comportamento do Cascade. Eles exigem conhecimento básico de shell scripting.
O que você pode construir
- Registro e Analytics: Acompanhe cada arquivo lido, alteração de código, comando executado, prompt de usuário enviado ao Cascade ou resposta do Cascade para fins de conformidade e análise de uso
- Controles de segurança: Impeça o Cascade de acessar arquivos sensíveis, executar comandos perigosos ou processar prompts que violem políticas
- Garantia de qualidade: Execute linters, formatadores ou testes automaticamente após modificações no código
- Fluxos de trabalho personalizados: Integre com rastreadores de issues, sistemas de notificação ou pipelines de deploy
- Padronização da equipe: Faça cumprir padrões de codificação e melhores práticas em toda a organização
Como os Hooks Funcionam
- Recebe contexto (detalhes sobre a ação em execução) via JSON na entrada padrão
- Executa seu script — Python, Bash, Node.js ou qualquer executável
- Retorna um resultado por meio de código de saída e fluxos de saída
2. Isso torna os pré-hooks ideais para implementar políticas de segurança ou validações.
Configuração
Nível do sistema
- macOS:
/Library/Application Support/Windsurf/hooks.json - Linux/WSL:
/etc/windsurf/hooks.json - Windows:
C:\ProgramData\Windsurf\hooks.json
Nível do usuário
- IDE Windsurf:
~/.codeium/windsurf/hooks.json - Plugin JetBrains:
~/.codeium/hooks.json
Nível de workspace
- Local:
.windsurf/hooks.jsonna raiz do seu workspace
Hooks de todas as três origens são mesclados. Se o mesmo evento de hook estiver configurado em várias origens, todos os hooks serão executados na seguinte ordem: sistema → usuário → workspace.
Estrutura básica
Opções de configuração
Sobre o parâmetro
working_directory:- Em workspaces com múltiplos repositórios, o padrão é a raiz do repositório em que você está trabalhando no momento
- Caminhos relativos são resolvidos em relação à localização padrão (raiz do workspace ou do repositório)
- Caminhos absolutos são suportados
- Não há suporte ao uso de
~para expansão do diretório home
Eventos de Hook
Estrutura comum de entrada
Nos exemplos a seguir, os campos comuns são omitidos para brevidade. Existem doze tipos principais de eventos de hook:
pre_read_code
file_path pode ser um caminho de diretório quando o Cascade lê uma pasta de forma recursiva.
post_read_code
file_path pode ser um caminho de diretório quando o Cascade lê um diretório de forma recursiva.
pre_write_code
post_write_code
pre_run_command
post_run_command
pre_mcp_tool_use
post_mcp_tool_use
pre_user_prompt
show_output não se aplica a este hook.
post_cascade_response
response contém o conteúdo em formato markdown da resposta do Cascade desde a última entrada do usuário. Isso inclui respostas do planner, ações de ferramentas (leituras de arquivos, gravações, comandos) e quaisquer outras etapas que o Cascade executou. Ele também inclui informações sobre quais rules foram acionadas. Veja o exemplo Tracking Triggered Rules para saber como analisar o uso de regras.
A opção de configuração show_output não se aplica a este hook.
post_cascade_response_with_transcript
post_cascade_response. Em vez de fornecer um resumo em markdown inline, este hook grava a transcrição completa da conversa (desde o início da conversa) em um arquivo JSONL local e fornece o caminho desse arquivo.
Casos de uso: registro de auditoria e conformidade em Enterprise, rastreamento de contribuições geradas por IA, envio de transcrições para ferramentas externas de observabilidade ou Analytics
JSON de entrada:
transcript_path aponta para um arquivo JSONL em ~/.windsurf/transcripts/{trajectory_id}.jsonl. Cada linha é um objeto JSON que representa uma única etapa da conversa, com campos type e status, além de dados específicos dessa etapa. Por exemplo:
0600. O Windsurf limita automaticamente o diretório de transcrições a, no máximo, 100 arquivos, removendo os mais antigos com base no horário de modificação.
A opção de configuração show_output não se aplica a este hook.
Esta tabela mostra as principais diferenças entre os hooks post_cascade_response e post_cascade_response_with_transcript:
post_setup_worktree
.env ou outros arquivos não versionados para o worktree, instalar dependências, executar scripts de configuração
Variáveis de ambiente:
JSON de entrada:
Códigos de saída
Lembre-se de que o usuário pode ver qualquer saída padrão e erro padrão gerados pelos hooks na interface do Cascade se
show_output for true.
Exemplos de casos de uso
Registro de todas as ações do Cascade
log_input.py):
Restringir acesso a arquivos
block_read_access.py):
Bloqueando comandos perigosos
block_dangerous_commands.py):
Bloqueando Prompts que Violam Políticas
block_bad_prompts.py):
Registro das respostas do Cascade
log_cascade_response.py):
Monitorando Regras Acionadas
track_rules.py):
Always On- Regras que estão sempre incluídasModel Decision- Regras cujas descrições foram mostradas ao modelo de IA para aplicação condicionalManual- Regras explicitamente mencionadas com @ na entrada do usuárioGlobal- Regras globais deglobal_rules.mdGlob- Regras acionadas por acesso a arquivos que correspondam a padrões glob
Isso registra quais regras foram apresentadas ao modelo de IA ou acionadas por acesso a arquivos, mas não indica se o modelo realmente seguiu uma regra. Regras que já foram mostradas recentemente na conversa são deduplicadas e podem não aparecer novamente até mais tarde.
Executando formatadores de código após edições
format_code.sh):
Configurando Worktrees
.windsurf/hooks.json):
hooks/setup_worktree.sh):
Boas práticas
Segurança
- Valide todas as entradas: Nunca confie no JSON de entrada sem validação, especialmente para caminhos de arquivo e comandos.
- Use caminhos absolutos: Sempre use caminhos absolutos nas configurações de hooks para evitar ambiguidades.
- Proteja dados sensíveis: Evite registrar informações sensíveis, como chaves de API ou credenciais.
- Revise as permissões: Certifique-se de que seus scripts de hooks tenham permissões adequadas no sistema de arquivos.
- Audite antes da implantação: Revise cada comando e script de hooks antes de adicioná-los à sua configuração.
- Teste em isolamento: Execute hooks em um ambiente de teste antes de habilitá-los na sua máquina principal de desenvolvimento.
Considerações de desempenho
- Mantenha os hooks rápidos: Hooks lentos afetarão a responsividade do Cascade. Mire em tempos de execução abaixo de 100 ms.
- Use operações assíncronas: Para hooks não bloqueantes, considere registrar em uma fila ou em um banco de dados de forma assíncrona.
- Filtre o quanto antes: Verifique o tipo de ação no início do script para evitar processamento desnecessário.
Tratamento de erros
- Sempre valide o JSON: Use blocos try-catch para tratar entradas malformadas de forma adequada.
- Registre os erros corretamente: Escreva os erros em
stderrpara que fiquem visíveis quandoshow_outputestiver ativado. - Falhe com segurança: Se o seu hook encontrar um erro, avalie se ele deve bloquear a ação ou permitir que ela continue.
Testando seus hooks
- Comece registrando logs: Implemente um hook simples de logging para entender o fluxo de dados.
- Use
show_output: true: Ative a exibição de saída durante o desenvolvimento para ver o que seus hooks estão fazendo. - Teste o comportamento de bloqueio: Verifique se o código de saída 2 bloqueia corretamente as ações em pre-hooks.
- Verifique todos os caminhos de código: Teste cenários de sucesso e de falha nos seus scripts.
Distribuição Enterprise
- Cloud Dashboard - Configure hooks via Team Settings no dashboard do Windsurf
- System-Level Files - Implemente hooks via MDM ou ferramentas de gerenciamento de configuração
Configuração do painel na nuvem
- Plano Enterprise
- Permissão
TEAM_SETTINGS_UPDATE
- Acesse Team Settings no painel do Windsurf
- Encontre a seção Cascade Hooks
- Insira a configuração de seus hooks em formato JSON
- Salve suas alterações
Quando várias configurações de equipe são combinadas, os hooks são agregados por ação em vez de substituídos. Isso significa que os hooks de todas as configurações de equipe aplicáveis serão executados em conjunto.
Implantação de arquivos em nível de sistema
hooks.json nestes locais específicos do sistema operacional:
macOS:
/usr/local/share/windsurf-hooks/ em sistemas Unix).
Hooks em nível de sistema têm precedência sobre hooks de usuário e de workspace e não podem ser desativados por usuários finais sem permissões de root.
MDM e Gerenciamento de Configuração
- Jamf Pro (macOS) - Implante por meio de perfis de configuração ou scripts
- Microsoft Intune (Windows/macOS) - Use scripts do PowerShell ou implantação por políticas
- Workspace ONE, Google Endpoint Management e outras soluções de MDM
- Ansible, Puppet, Chef, SaltStack - Use sua automação de infraestrutura existente
- Scripts de implantação personalizados - Scripts de shell, PowerShell ou suas ferramentas preferidas
Verificação e auditoria
Importante: Hooks em nível de sistema são totalmente gerenciados pela sua equipe de TI ou segurança. O Windsurf não implanta nem gerencia arquivos em caminhos de sistema. Certifique-se de que suas equipes internas cuidem da implantação, das atualizações e da conformidade de acordo com as políticas da sua organização.
Hooks de workspace para projetos em equipe
Recursos adicionais
- Integração MCP: Saiba mais sobre o Model Context Protocol no Windsurf
- Workflows: Descubra como combinar hooks com os Workflows do Cascade
- Analytics: Acompanhe o uso do Cascade com Team Analytics