Os hooks foram projetados para usuários avançados e equipes corporativas que precisam de controle detalhado sobre o comportamento do Cascade. Eles exigem conhecimento básico de shell scripting.
O que você pode criar
- Logging & Analytics: Monitore cada arquivo lido, alteração de código, comando executado, prompt do usuário ou resposta do Cascade para fins de conformidade e análise de uso
- Security Controls: Impeça o Cascade de acessar arquivos sensíveis, executar comandos perigosos ou processar prompts que violem políticas
- Quality Assurance: Execute linters, formatadores ou testes automaticamente após modificações no código
- Custom Workflows: Integre com rastreadores de problemas, sistemas de notificação ou pipelines de deployment
- Team Standardization: Garanta padrões de código e boas práticas em toda a sua organização
Como os Hooks funcionam
- Recebe o 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 do código de saída e dos fluxos de saída
2. Isso torna os pre-hooks ideais para implementar políticas de segurança ou verificaçõ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 de usuário
- Devin Desktop IDE:
~/.codeium/windsurf/hooks.json - Plugin JetBrains:
~/.codeium/hooks.json
Nível do workspace
- Localização:
.windsurf/hooks.jsonna raiz do seu workspace
Os hooks dos três locais são mesclados. Se o mesmo evento de hook estiver configurado em vários locais, todos os hooks serão executados em ordem: system → user → workspace.
Estrutura básica
pre_read_code especifica tanto um comando para macOS/Linux quanto um comando do Windows PowerShell. O hook post_write_code especifica apenas command, então será executado em macOS/Linux e, no Windows, usará o PowerShell como alternativa.
Opções de configuração
Comportamento em diferentes plataformas
command e powershell permitem definir comandos apropriados para cada plataforma em uma única configuração. Isso é útil para equipes com ambientes mistos de macOS/Linux e Windows.
Sobre o parâmetro
working_directory:- Em workspaces com vários repositórios, o padrão é a raiz do repo que está sendo usado no momento
- Os caminhos relativos são resolvidos a partir do local padrão (workspace ou raiz do repo)
- Há suporte a caminhos absolutos
- Não há suporte ao uso de
~para expandir o diretório home
Eventos de hook
Estrutura comum de entrada
Nos exemplos a seguir, os campos comuns foram omitidos por brevidade. Há doze tipos principais de eventos de hook:
pre_read_code
file_path pode ser o caminho de um diretório quando o Cascade lê um diretório recursivamente.
post_read_code
file_path pode ser um caminho para um 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 markdown da resposta do Cascade desde a última entrada do usuário. Isso inclui respostas do planner, ações de ferramentas (leituras e gravações de arquivos, além de comandos) e quaisquer outras etapas executadas pelo Cascade. Também inclui informações sobre quais regras foram acionadas. Consulte o exemplo Rastreamento de regras acionadas para ver 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 do arquivo.
Casos de uso: registro de auditoria e conformidade do Enterprise, rastreamento de contribuições geradas por IA, envio de transcrições para ferramentas externas de observabilidade ou análises
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 os campos type e status, além de dados específicos da etapa. Por exemplo:
0600. O Devin Desktop limita automaticamente o diretório de transcrições a 100 arquivos, removendo os mais antigos com base na data 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 rastreados 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 UI do Cascade se
show_output estiver definido como true.
Exemplos de casos de uso
Registro de todas as ações do Cascade
log_input.py):
Restringir o acesso a arquivos
block_read_access.py):
Bloqueio de comandos perigosos
block_dangerous_commands.py):
Bloqueio de 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 sempre incluídasModel Decision- regras cujas descrições foram mostradas ao modelo para aplicação condicionalManual- regras explicitamente mencionadas com @ na entrada do usuárioGlobal- regras globais deglobal_rules.mdGlob- regras acionadas pelo acesso a arquivos que correspondem a padrões glob
Isso rastreia quais regras foram apresentadas ao modelo ou acionadas pelo 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.
Executar formatadores de código após alterações
format_code.sh):
Configurando worktrees
.windsurf/hooks.json):
hooks/setup_worktree.sh):
Boas práticas
Segurança
- Valide todos os dados de entrada: Nunca confie no JSON de entrada sem validá-lo, especialmente em caminhos de arquivos e comandos.
- Use caminhos absolutos: Sempre use caminhos absolutos nas configurações de hook para evitar ambiguidades.
- Proteja dados sensíveis: Evite registrar em log informações sensíveis, como Chaves de API ou credenciais.
- Revise as permissões: Garanta que seus scripts de hook tenham as permissões apropriadas no sistema de arquivos.
- Audite antes da implantação: Revise cada comando e script de hook antes de adicioná-los à sua configuração.
- Teste de forma isolada: 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 afetam a capacidade de resposta do Cascade. Procure manter o tempo de execução abaixo de 100 ms.
- Use operações assíncronas: Para hooks não bloqueantes, considere registrar logs em uma fila ou banco de dados de forma assíncrona.
- Filtre logo no início: Verifique o tipo de ação no começo do script para evitar processamento desnecessário.
Tratamento de erros
- Sempre valide o JSON: Use blocos try-catch para lidar com entradas inválidas sem causar falhas.
- Registre os erros corretamente: Grave 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 com logging: Comece implementando um hook simples de logging para entender o fluxo de dados.
- Use
show_output: true: Ative a 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 fluxos de execução: Teste tanto os cenários de sucesso quanto os de falha nos seus scripts.
Distribuição Enterprise
- dashboard na nuvem - Configure hooks por meio de Configurações da equipe no dashboard do Devin Desktop
- Arquivos em nível de sistema - Implante hooks por meio de ferramentas de MDM ou de gerenciamento de configurações
Configuração do Dashboard na Nuvem
- plano Enterprise
- permissão
TEAM_SETTINGS_UPDATE
- Acesse Configurações da equipe no dashboard do Devin Desktop
- Localize a seção Hooks do Cascade
- Insira a configuração dos hooks no formato JSON
- Salve suas alterações
Quando várias configurações de equipe são mescladas, os hooks são combinados por GitHub Action em vez de serem sobrescritos. Isso significa que os hooks de todas as configurações de equipe aplicáveis serão executados juntos.
Implantação de arquivos em nível de sistema
hooks.json nestes locais específicos de cada 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 políticas de implantação
- Workspace ONE, Google Endpoint Management e outras soluções de MDM
- Ansible, Puppet, Chef, SaltStack - Use a automação de infraestrutura existente
- Scripts de implantação personalizados - Scripts de shell, PowerShell ou a ferramenta de sua preferência
Verificação e auditoria
Importante: Os hooks em nível de sistema são de responsabilidade exclusiva da sua equipe de TI ou de segurança. O Devin Desktop não implanta nem gerencia arquivos em caminhos de sistema. Garanta 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 do Team
Recursos adicionais
- Integração com MCP: Saiba mais sobre o Model Context Protocol no Devin Desktop
- Fluxos de trabalho: Veja como combinar hooks com os Cascade Workflows
- Análises: Acompanhe o uso do Cascade com as Análises da equipe

