35A tabela abaixo resume quando cada evento dispara. A seção [Eventos de hook](#hook-events) documenta o esquema de entrada completo e as opções de controle de decisão para cada um.35A tabela abaixo resume quando cada evento dispara. A seção [Eventos de hook](#hook-events) documenta o esquema de entrada completo e as opções de controle de decisão para cada um.
36 36
37| Evento | Quando dispara |37| Evento | Quando dispara |
38| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |38| :- | :- |
39| `SessionStart` | Quando uma sessão começa ou é retomada |39| `SessionStart` | Quando uma sessão começa ou é retomada |
40| `Setup` | Quando você inicia Claude Code com `--init-only`, ou com `--init` ou `--maintenance` no modo `-p`. Para preparação única em CI ou scripts |40| `Setup` | Quando você inicia Claude Code com `--init-only`, ou com `--init` ou `--maintenance` no modo `-p`. Para preparação única em CI ou scripts |
41| `UserPromptSubmit` | Quando você envia um prompt, antes de Claude processá-lo |41| `UserPromptSubmit` | Quando você envia um prompt, antes de Claude processá-lo |
259Onde você define um hook determina seu escopo:259Onde você define um hook determina seu escopo:
260 260
261| Local | Escopo | Compartilhável |261| Local | Escopo | Compartilhável |
262| :------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------- |262| :- | :- | :- |
263| `~/.claude/settings.json` | Todos os seus projetos | Não, local para sua máquina |263| `~/.claude/settings.json` | Todos os seus projetos | Não, local para sua máquina |
264| `.claude/settings.json` | Projeto único | Sim, pode ser confirmado no repositório |264| `.claude/settings.json` | Projeto único | Sim, pode ser confirmado no repositório |
265| `.claude/settings.local.json` | Projeto único | Não, gitignored quando Claude Code salva uma configuração nele |265| `.claude/settings.local.json` | Projeto único | Não, gitignored quando Claude Code salva uma configuração nele |
297O campo `matcher` filtra quando hooks disparam. Como um matcher é avaliado depende dos caracteres que contém:297O campo `matcher` filtra quando hooks disparam. Como um matcher é avaliado depende dos caracteres que contém:
298 298
299| Valor do matcher | Avaliado como | Exemplo |299| Valor do matcher | Avaliado como | Exemplo |
300| :---------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |300| :- | :- | :- |
301| `"*"`, `""` ou omitido | Corresponder a todos | dispara em cada ocorrência do evento |301| `"*"`, `""` ou omitido | Corresponder a todos | dispara em cada ocorrência do evento |
302| Apenas letras, dígitos, `_`, `-`, espaços, `,` e `\|` | String exata ou lista de strings exatas separadas por `\|` ou `,` com espaço em branco opcional ao redor | `Bash` corresponde apenas à ferramenta Bash; `Edit\|Write` e `Edit, Write` cada um corresponde a qualquer ferramenta exatamente; `code-reviewer` corresponde apenas a esse tipo de agente |302| Apenas letras, dígitos, `_`, `-`, espaços, `,` e `\|` | String exata ou lista de strings exatas separadas por `\|` ou `,` com espaço em branco opcional ao redor | `Bash` corresponde apenas à ferramenta Bash; `Edit\|Write` e `Edit, Write` cada um corresponde a qualquer ferramenta exatamente; `code-reviewer` corresponde apenas a esse tipo de agente |
303| Contém qualquer outro caractere | Expressão regular JavaScript, não ancorada | `^Notebook` corresponde a qualquer ferramenta cujo nome começa com `Notebook`; `mcp__memory__.*` corresponde a cada ferramenta do servidor `memory` |303| Contém qualquer outro caractere | Expressão regular JavaScript, não ancorada | `^Notebook` corresponde a qualquer ferramenta cujo nome começa com `Notebook`; `mcp__memory__.*` corresponde a cada ferramenta do servidor `memory` |
313Cada tipo de evento corresponde em um campo diferente:313Cada tipo de evento corresponde em um campo diferente:
314 314
315| Evento | O que o matcher filtra | Valores de matcher de exemplo |315| Evento | O que o matcher filtra | Valores de matcher de exemplo |
316| :------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |316| :- | :- | :- |
317| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nome da ferramenta | `Bash`, `Edit\|Write`, `mcp__.*` |317| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nome da ferramenta | `Bash`, `Edit\|Write`, `mcp__.*` |
318| `SessionStart` | como a sessão começou | `startup`, `resume`, `clear`, `compact`, `fork` |318| `SessionStart` | como a sessão começou | `startup`, `resume`, `clear`, `compact`, `fork` |
319| `Setup` | qual sinalizador CLI acionou a configuração | `init`, `maintenance` |319| `Setup` | qual sinalizador CLI acionou a configuração | `init`, `maintenance` |
438Esses campos se aplicam a todos os tipos de hook:438Esses campos se aplicam a todos os tipos de hook:
439 439
440| Campo | Obrigatório | Descrição |440| Campo | Obrigatório | Descrição |
441| :-------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |441| :- | :- | :- |
442| `type` | sim | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` ou `"agent"` |442| `type` | sim | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` ou `"agent"` |
443| `if` | não | Sintaxe de regra de permissão para filtrar quando este hook executa, como `"Bash(git *)"` ou `"Edit(*.ts)"`. O comando do hook apenas é executado se a chamada de ferramenta corresponde ao padrão. Consulte a [tabela de correspondência Bash](#bash-if-matching) abaixo para saber como padrões Bash são avaliados contra subcomandos, `$()` e backticks. Apenas avaliado em eventos de ferramenta: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied`. Em outros eventos, um hook com `if` definido nunca executa. Usa a mesma sintaxe que [regras de permissão](/docs/pt/permissions) |443| `if` | não | Sintaxe de regra de permissão para filtrar quando este hook executa, como `"Bash(git *)"` ou `"Edit(*.ts)"`. O comando do hook apenas é executado se a chamada de ferramenta corresponde ao padrão. Consulte a [tabela de correspondência Bash](#bash-if-matching) abaixo para saber como padrões Bash são avaliados contra subcomandos, `$()` e backticks. Apenas avaliado em eventos de ferramenta: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied`. Em outros eventos, um hook com `if` definido nunca executa. Usa a mesma sintaxe que [regras de permissão](/docs/pt/permissions) |
444| `timeout` | não | Segundos antes de cancelar. Claude Code não o impõe em um hook de comando que você executa com [`async: true`](#run-hooks-in-the-background). Padrões: 600 para `command`, `http` e `mcp_tool`; 30 para `prompt`; 60 para `agent`. Claude Code reduz o padrão de `command`, `http` e `mcp_tool` para 30 em [`UserPromptSubmit`](#userpromptsubmit), [`PreModelSwitch`](#premodelswitch) e [`PostModelSwitch`](#postmodelswitch), e para 10 em [`MessageDisplay`](#messagedisplay). Hooks de [`SessionEnd`](#sessionend) compartilham um orçamento de 1,5 segundo; se suas configurações definirem um `timeout` por hook mais longo, Claude Code aumenta o orçamento para corresponder, até 60 segundos |444| `timeout` | não | Segundos antes de cancelar. Claude Code não o impõe em um hook de comando que você executa com [`async: true`](#run-hooks-in-the-background). Padrões: 600 para `command`, `http` e `mcp_tool`; 30 para `prompt`; 60 para `agent`. Claude Code reduz o padrão de `command`, `http` e `mcp_tool` para 30 em [`UserPromptSubmit`](#userpromptsubmit), [`PreModelSwitch`](#premodelswitch) e [`PostModelSwitch`](#postmodelswitch), e para 10 em [`MessageDisplay`](#messagedisplay). Hooks de [`SessionEnd`](#sessionend) compartilham um orçamento de 1,5 segundo; se suas configurações definirem um `timeout` por hook mais longo, Claude Code aumenta o orçamento para corresponder, até 60 segundos |
452<span id="bash-if-matching" />Para padrões Bash, se seu comando de hook executa depende da forma do padrão e do comando Bash que Claude está invocando. Atribuições `VAR=value` iniciais são removidas antes da correspondência.452<span id="bash-if-matching" />Para padrões Bash, se seu comando de hook executa depende da forma do padrão e do comando Bash que Claude está invocando. Atribuições `VAR=value` iniciais são removidas antes da correspondência.
453 453
454| padrão `if` | Comando Bash | Hook executa? | Por quê |454| padrão `if` | Comando Bash | Hook executa? | Por quê |
455| :----------------- | :-------------------------- | :------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------- |455| :- | :- | :- | :- |
456| `Bash(git *)` | `FOO=bar git push` | sim | atribuições iniciais são removidas; `git push` corresponde |456| `Bash(git *)` | `FOO=bar git push` | sim | atribuições iniciais são removidas; `git push` corresponde |
457| `Bash(git *)` | `npm test && git push` | sim | cada subcomando é verificado; `git push` corresponde |457| `Bash(git *)` | `npm test && git push` | sim | cada subcomando é verificado; `git push` corresponde |
458| `Bash(rm *)` | `echo $(rm -rf /)` | sim | comandos dentro de `$()` e backticks são verificados; `rm -rf /` corresponde |458| `Bash(rm *)` | `echo $(rm -rf /)` | sim | comandos dentro de `$()` e backticks são verificados; `rm -rf /` corresponde |
470Além dos [campos comuns](#common-fields), hooks de comando aceitam esses campos:470Além dos [campos comuns](#common-fields), hooks de comando aceitam esses campos:
471 471
472| Campo | Obrigatório | Descrição |472| Campo | Obrigatório | Descrição |
473| :------------ | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |473| :- | :- | :- |
474| `command` | sim | Comando shell a executar. Com `args`, o executável a gerar diretamente. Consulte [Forma exec e forma shell](#exec-form-and-shell-form) |474| `command` | sim | Comando shell a executar. Com `args`, o executável a gerar diretamente. Consulte [Forma exec e forma shell](#exec-form-and-shell-form) |
475| `args` | não | Lista de argumentos. Quando presente, `command` é resolvido como um executável e gerado diretamente com `args` como o vetor de argumentos, sem shell envolvido. Consulte [Forma exec e forma shell](#exec-form-and-shell-form) |475| `args` | não | Lista de argumentos. Quando presente, `command` é resolvido como um executável e gerado diretamente com `args` como o vetor de argumentos, sem shell envolvido. Consulte [Forma exec e forma shell](#exec-form-and-shell-form) |
476| `async` | não | Se `true`, executa em background sem bloquear. Consulte [Executar hooks em background](#run-hooks-in-the-background) |476| `async` | não | Se `true`, executa em background sem bloquear. Consulte [Executar hooks em background](#run-hooks-in-the-background) |
529Além dos [campos comuns](#common-fields), hooks HTTP aceitam esses campos:529Além dos [campos comuns](#common-fields), hooks HTTP aceitam esses campos:
530 530
531| Campo | Obrigatório | Descrição |531| Campo | Obrigatório | Descrição |
532| :--------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |532| :- | :- | :- |
533| `url` | sim | URL para enviar a solicitação POST |533| `url` | sim | URL para enviar a solicitação POST |
534| `headers` | não | Cabeçalhos HTTP adicionais como pares chave-valor. Valores suportam interpolação de variável de ambiente usando sintaxe `$VAR_NAME` ou `${VAR_NAME}`. Apenas variáveis listadas em `allowedEnvVars` são resolvidas |534| `headers` | não | Cabeçalhos HTTP adicionais como pares chave-valor. Valores suportam interpolação de variável de ambiente usando sintaxe `$VAR_NAME` ou `${VAR_NAME}`. Apenas variáveis listadas em `allowedEnvVars` são resolvidas |
535| `allowedEnvVars` | não | Lista de nomes de variáveis de ambiente que podem ser interpoladas em valores de cabeçalho. Referências a variáveis não listadas são substituídas por strings vazias. Obrigatório para qualquer interpolação de variável de ambiente funcionar |535| `allowedEnvVars` | não | Lista de nomes de variáveis de ambiente que podem ser interpoladas em valores de cabeçalho. Referências a variáveis não listadas são substituídas por strings vazias. Obrigatório para qualquer interpolação de variável de ambiente funcionar |
570Além dos [campos comuns](#common-fields), hooks de ferramenta MCP aceitam esses campos:570Além dos [campos comuns](#common-fields), hooks de ferramenta MCP aceitam esses campos:
571 571
572| Campo | Obrigatório | Descrição |572| Campo | Obrigatório | Descrição |
573| :------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |573| :- | :- | :- |
574| `server` | sim | Nome de um servidor MCP configurado. Para um [servidor fornecido por plugin](/docs/pt/mcp#plugin-provided-mcp-servers), este é o nome com escopo `plugin:<plugin-name>:<server-name>`, como `plugin:my-plugin:db`, não a chave do servidor simples. O servidor já deve estar conectado; o hook nunca dispara um fluxo OAuth ou de conexão |574| `server` | sim | Nome de um servidor MCP configurado. Para um [servidor fornecido por plugin](/docs/pt/mcp#plugin-provided-mcp-servers), este é o nome com escopo `plugin:<plugin-name>:<server-name>`, como `plugin:my-plugin:db`, não a chave do servidor simples. O servidor já deve estar conectado; o hook nunca dispara um fluxo OAuth ou de conexão |
575| `tool` | sim | Nome da ferramenta a chamar naquele servidor |575| `tool` | sim | Nome da ferramenta a chamar naquele servidor |
576| `input` | não | Argumentos passados para a ferramenta. Valores de string suportam substituição `${path}` da [entrada JSON](#hook-input-and-output) do hook, como `"${tool_input.file_path}"` |576| `input` | não | Argumentos passados para a ferramenta. Valores de string suportam substituição `${path}` da [entrada JSON](#hook-input-and-output) do hook, como `"${tool_input.file_path}"` |
634Além dos [campos comuns](#common-fields), hooks de prompt e agente aceitam esses campos:634Além dos [campos comuns](#common-fields), hooks de prompt e agente aceitam esses campos:
635 635
636| Campo | Obrigatório | Descrição |636| Campo | Obrigatório | Descrição |
637| :------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |637| :- | :- | :- |
638| `prompt` | sim | Texto do prompt a enviar para o modelo. Use `$ARGUMENTS` como placeholder para a entrada JSON do hook. Escape com uma barra invertida para incluir texto literal: `\$1.00` renderiza como `$1.00` |638| `prompt` | sim | Texto do prompt a enviar para o modelo. Use `$ARGUMENTS` como placeholder para a entrada JSON do hook. Escape com uma barra invertida para incluir texto literal: `\$1.00` renderiza como `$1.00` |
639| `model` | não | Modelo a usar para avaliação. Padrão para um modelo rápido |639| `model` | não | Modelo a usar para avaliação. Padrão para um modelo rápido |
640 640
786Eventos de hook recebem esses campos como JSON, além de campos específicos do evento documentados em cada seção [evento de hook](#hook-events). Para hooks de comando, este JSON chega via stdin. Para hooks HTTP, chega como corpo da solicitação POST.786Eventos de hook recebem esses campos como JSON, além de campos específicos do evento documentados em cada seção [evento de hook](#hook-events). Para hooks de comando, este JSON chega via stdin. Para hooks HTTP, chega como corpo da solicitação POST.
787 787
788| Campo | Descrição |788| Campo | Descrição |
789| :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |789| :- | :- |
790| `session_id` | Identificador de sessão atual |790| `session_id` | Identificador de sessão atual |
791| `prompt_id` | UUID identificando o prompt do usuário sendo processado atualmente. Corresponde ao [atributo `prompt.id` em eventos OpenTelemetry](/docs/pt/monitoring-usage#event-correlation-attributes), para que você possa correlacionar saída de hook com telemetria para um único prompt. Ausente até a primeira entrada do usuário. Requer Claude Code v2.1.196 ou posterior |791| `prompt_id` | UUID identificando o prompt do usuário sendo processado atualmente. Corresponde ao [atributo `prompt.id` em eventos OpenTelemetry](/docs/pt/monitoring-usage#event-correlation-attributes), para que você possa correlacionar saída de hook com telemetria para um único prompt. Ausente até a primeira entrada do usuário. Requer Claude Code v2.1.196 ou posterior |
792| `transcript_path` | Caminho para JSON de conversa. O arquivo de transcrição é escrito de forma assíncrona e pode ficar atrás da conversa na memória, portanto pode não incluir ainda as mensagens mais recentes da rodada atual quando um hook dispara. Hooks que precisam do texto final do assistente da rodada atual devem usar `last_assistant_message` em [Stop](#stop) e [SubagentStop](#subagentstop) em vez de ler a transcrição |792| `transcript_path` | Caminho para JSON de conversa. O arquivo de transcrição é escrito de forma assíncrona e pode ficar atrás da conversa na memória, portanto pode não incluir ainda as mensagens mais recentes da rodada atual quando um hook dispara. Hooks que precisam do texto final do assistente da rodada atual devem usar `last_assistant_message` em [Stop](#stop) e [SubagentStop](#subagentstop) em vez de ler a transcrição |
799Ao executar com `--agent` ou dentro de um subagente, dois campos adicionais são incluídos:799Ao executar com `--agent` ou dentro de um subagente, dois campos adicionais são incluídos:
800 800
801| Campo | Descrição |801| Campo | Descrição |
802| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |802| :- | :- |
803| `agent_id` | Identificador único para o subagente. Presente apenas quando o hook dispara dentro de uma chamada de subagente. Use isso para distinguir chamadas de hook de subagente de chamadas de thread principal. |803| `agent_id` | Identificador único para o subagente. Presente apenas quando o hook dispara dentro de uma chamada de subagente. Use isso para distinguir chamadas de hook de subagente de chamadas de thread principal. |
804| `agent_type` | Nome do agente (por exemplo, `"Explore"` ou `"security-reviewer"`). Presente quando a sessão usa `--agent` ou o hook dispara dentro de um subagente. Para subagentes, o tipo do subagente tem precedência sobre o valor `--agent` da sessão. Consulte [SubagentStart](#subagentstart) para os valores que subagentes personalizados e de plugin relatam e como escrever um matcher contra um nome com escopo de plugin. |804| `agent_type` | Nome do agente (por exemplo, `"Explore"` ou `"security-reviewer"`). Presente quando a sessão usa `--agent` ou o hook dispara dentro de um subagente. Para subagentes, o tipo do subagente tem precedência sobre o valor `--agent` da sessão. Consulte [SubagentStart](#subagentstart) para os valores que subagentes personalizados e de plugin relatam e como escrever um matcher contra um nome com escopo de plugin. |
805 805
926Código de saída 2 é a forma de um hook sinalizar "pare, não faça isso". O efeito depende do evento, porque alguns eventos representam ações que podem ser bloqueadas (como uma chamada de ferramenta que ainda não aconteceu) e outros representam coisas que já aconteceram ou não podem ser prevenidas.926Código de saída 2 é a forma de um hook sinalizar "pare, não faça isso". O efeito depende do evento, porque alguns eventos representam ações que podem ser bloqueadas (como uma chamada de ferramenta que ainda não aconteceu) e outros representam coisas que já aconteceram ou não podem ser prevenidas.
927 927
928| Evento de hook | Pode bloquear? | O que acontece na saída 2 |928| Evento de hook | Pode bloquear? | O que acontece na saída 2 |
929| :-------------------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |929| :- | :- | :- |
930| `PreToolUse` | Sim | Bloqueia a chamada da ferramenta |930| `PreToolUse` | Sim | Bloqueia a chamada da ferramenta |
931| `PermissionRequest` | Não | Código de saída 2 não é honrado para este evento e o fluxo de permissão prossegue inalterado. Negue através do objeto [`decision`](#permissionrequest-decision-control) em vez disso |931| `PermissionRequest` | Não | Código de saída 2 não é honrado para este evento e o fluxo de permissão prossegue inalterado. Negue através do objeto [`decision`](#permissionrequest-decision-control) em vez disso |
932| `UserPromptSubmit` | Sim | Bloqueia o processamento de prompt e apaga o prompt |932| `UserPromptSubmit` | Sim | Bloqueia o processamento de prompt e apaga o prompt |
1003* **`hookSpecificOutput`** é um objeto aninhado para eventos que precisam de controle mais rico. Requer um campo `hookEventName` definido para o nome do evento.1003* **`hookSpecificOutput`** é um objeto aninhado para eventos que precisam de controle mais rico. Requer um campo `hookEventName` definido para o nome do evento.
1004 1004
1005| Campo | Padrão | Descrição |1005| Campo | Padrão | Descrição |
1006| :----------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1006| :- | :- | :- |
1007| `continue` | `true` | Se `false`, Claude para de processar inteiramente após o hook executar. Tem precedência sobre qualquer campo de decisão específico do evento |1007| `continue` | `true` | Se `false`, Claude para de processar inteiramente após o hook executar. Tem precedência sobre qualquer campo de decisão específico do evento |
1008| `stopReason` | nenhum | Mensagem mostrada ao usuário quando `continue` é `false`. Fica na conversa, portanto Claude a vê se a conversa continuar |1008| `stopReason` | nenhum | Mensagem mostrada ao usuário quando `continue` é `false`. Fica na conversa, portanto Claude a vê se a conversa continuar |
1009| `suppressOutput` | `false` | Não tem efeito: Claude Code aceita o campo mas não age sobre ele. O stdout de um hook bem-sucedido nunca é mostrado na transcrição e é registrado no log de debug |1009| `suppressOutput` | `false` | Não tem efeito: Claude Code aceita o campo mas não age sobre ele. O stdout de um hook bem-sucedido nunca é mostrado na transcrição e é registrado no log de debug |
1101Nem todo evento suporta bloqueio ou controle de comportamento através de JSON. Os eventos que fazem cada um usam um conjunto diferente de campos para expressar essa decisão. Use esta tabela como referência rápida antes de escrever um hook:1101Nem todo evento suporta bloqueio ou controle de comportamento através de JSON. Os eventos que fazem cada um usam um conjunto diferente de campos para expressar essa decisão. Use esta tabela como referência rápida antes de escrever um hook:
1102 1102
1103| Eventos | Padrão de decisão | Campos-chave |1103| Eventos | Padrão de decisão | Campos-chave |
1104| :---------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1104| :- | :- | :- |
1105| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` de nível superior | `decision: "block"`, `reason`. Stop e SubagentStop também aceitam `hookSpecificOutput.additionalContext` para [feedback não-erro que continua a conversa](#stop-decision-control) |1105| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` de nível superior | `decision: "block"`, `reason`. Stop e SubagentStop também aceitam `hookSpecificOutput.additionalContext` para [feedback não-erro que continua a conversa](#stop-decision-control) |
1106| TeammateIdle, TaskCompleted | Código de saída ou `continue: false` | Código de saída 2 bloqueia a ação com feedback de stderr. JSON `{"continue": false, "stopReason": "..."}` também para o colega inteiramente, correspondendo ao comportamento do hook `Stop`; [TaskCompleted ignora quando a ferramenta `TaskUpdate` disparou o evento](#taskcompleted-decision-control) |1106| TeammateIdle, TaskCompleted | Código de saída ou `continue: false` | Código de saída 2 bloqueia a ação com feedback de stderr. JSON `{"continue": false, "stopReason": "..."}` também para o colega inteiramente, correspondendo ao comportamento do hook `Stop`; [TaskCompleted ignora quando a ferramenta `TaskUpdate` disparou o evento](#taskcompleted-decision-control) |
1107| TaskCreated | Código de saída ou `decision` de nível superior | Código de saída 2 ou `decision: "block"` [cancela a tarefa](#taskcreated-decision-control) e retorna a mensagem para Claude. `continue: false` é ignorado |1107| TaskCreated | Código de saída ou `decision` de nível superior | Código de saída 2 ou `decision: "block"` [cancela a tarefa](#taskcreated-decision-control) e retorna a mensagem para Claude. `continue: false` é ignorado |
1192O valor do matcher corresponde a como a sessão foi iniciada:1192O valor do matcher corresponde a como a sessão foi iniciada:
1193 1193
1194| Matcher | Quando é disparado |1194| Matcher | Quando é disparado |
1195| :-------- | :---------------------------------------------------------------------------------------------------------------------------------- |1195| :- | :- |
1196| `startup` | Nova sessão |1196| `startup` | Nova sessão |
1197| `resume` | `--resume`, `--continue`, ou `/resume` |1197| `resume` | `--resume`, `--continue`, ou `/resume` |
1198| `clear` | `/clear` |1198| `clear` | `/clear` |
1216Além dos [campos de entrada comuns](#common-input-fields), os hooks SessionStart recebem `source` e opcionalmente `model`, `agent_type` e `session_title`:1216Além dos [campos de entrada comuns](#common-input-fields), os hooks SessionStart recebem `source` e opcionalmente `model`, `agent_type` e `session_title`:
1217 1217
1218| Campo | Descrição |1218| Campo | Descrição |
1219| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1219| :- | :- |
1220| `source` | Como a sessão começou: `"startup"` para novas sessões, `"resume"` para sessões retomadas, `"clear"` após `/clear`, `"compact"` após compactação, ou `"fork"` para uma nova sessão bifurcada de uma existente |1220| `source` | Como a sessão começou: `"startup"` para novas sessões, `"resume"` para sessões retomadas, `"clear"` após `/clear`, `"compact"` após compactação, ou `"fork"` para uma nova sessão bifurcada de uma existente |
1221| `model` | O identificador do modelo ativo. Pode ser omitido, por exemplo após `/clear` ou quando uma sessão é restaurada através da recuperação de conversa, portanto verifique o campo antes de lê-lo |1221| `model` | O identificador do modelo ativo. Pode ser omitido, por exemplo após `/clear` ou quando uma sessão é restaurada através da recuperação de conversa, portanto verifique o campo antes de lê-lo |
1222| `agent_type` | O nome do agente, presente quando você inicia Claude Code com `claude --agent <name>` |1222| `agent_type` | O nome do agente, presente quando você inicia Claude Code com `claude --agent <name>` |
1225Quando `source` é `"resume"` ou `"fork"` e a transcrição contém pelo menos uma resposta do Claude, os hooks SessionStart também recebem os quatro campos abaixo. Seu hook pode usá-los para relatar qual é o custo de retomar uma conversa obsoleta antes da primeira solicitação, por exemplo em uma [`systemMessage`](#json-output). Esses campos requerem Claude Code v2.1.251 ou posterior.1225Quando `source` é `"resume"` ou `"fork"` e a transcrição contém pelo menos uma resposta do Claude, os hooks SessionStart também recebem os quatro campos abaixo. Seu hook pode usá-los para relatar qual é o custo de retomar uma conversa obsoleta antes da primeira solicitação, por exemplo em uma [`systemMessage`](#json-output). Esses campos requerem Claude Code v2.1.251 ou posterior.
1226 1226
1227| Campo | Descrição |1227| Campo | Descrição |
1228| :---------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1228| :- | :- |
1229| `seconds_since_last_response` | Segundos de relógio de parede desde a última resposta na transcrição retomada |1229| `seconds_since_last_response` | Segundos de relógio de parede desde a última resposta na transcrição retomada |
1230| `context_tokens` | Tokens que a primeira solicitação da sessão retomada reenvia como seu prompt |1230| `context_tokens` | Tokens que a primeira solicitação da sessão retomada reenvia como seu prompt |
1231| `prompt_cache_likely_expired` | `true` quando a última resposta é mais antiga que o [tempo de vida do cache de prompt](/docs/pt/prompt-caching#cache-lifetime) da sessão ou uma compactação posterior substituiu a conversa em cache |1231| `prompt_cache_likely_expired` | `true` quando a última resposta é mais antiga que o [tempo de vida do cache de prompt](/docs/pt/prompt-caching#cache-lifetime) da sessão ou uma compactação posterior substituiu a conversa em cache |
1255Claude Code adiciona stdout que [trata como texto simples](#exit-code-0) ao contexto do Claude. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar esses campos específicos do evento:1255Claude Code adiciona stdout que [trata como texto simples](#exit-code-0) ao contexto do Claude. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar esses campos específicos do evento:
1256 1256
1257| Campo | Descrição |1257| Campo | Descrição |
1258| :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1258| :- | :- |
1259| `additionalContext` | String adicionada ao contexto do Claude no início da conversa, antes do primeiro prompt. Veja [Adicionar contexto para Claude](#add-context-for-claude) para como o texto é entregue e o que colocar nele |1259| `additionalContext` | String adicionada ao contexto do Claude no início da conversa, antes do primeiro prompt. Veja [Adicionar contexto para Claude](#add-context-for-claude) para como o texto é entregue e o que colocar nele |
1260| `initialUserMessage` | String usada como a primeira mensagem do usuário da sessão. Aplica-se em [modo não interativo](/docs/pt/headless) com a flag `-p`, onde se torna o primeiro turno mesmo que nenhum prompt seja fornecido. Se um prompt for fornecido, ele segue como o próximo turno. Ao contrário de `additionalContext`, que se anexa a um turno existente, isso cria o turno |1260| `initialUserMessage` | String usada como a primeira mensagem do usuário da sessão. Aplica-se em [modo não interativo](/docs/pt/headless) com a flag `-p`, onde se torna o primeiro turno mesmo que nenhum prompt seja fornecido. Se um prompt for fornecido, ele segue como o próximo turno. Ao contrário de `additionalContext`, que se anexa a um turno existente, isso cria o turno |
1261| `sessionTitle` | Define o título da sessão, com o mesmo efeito que `/rename`. Use para nomear sessões automaticamente a partir da pasta de lançamento, ramo git ou nome de worktree. Aplica-se quando `source` é `"startup"`, `"resume"` ou `"fork"`; ignorado em `"clear"` e `"compact"` |1261| `sessionTitle` | Define o título da sessão, com o mesmo efeito que `/rename`. Use para nomear sessões automaticamente a partir da pasta de lançamento, ramo git ou nome de worktree. Aplica-se quando `source` é `"startup"`, `"resume"` ou `"fork"`; ignorado em `"clear"` e `"compact"` |
1339O valor do matcher corresponde à flag CLI que disparou o hook:1339O valor do matcher corresponde à flag CLI que disparou o hook:
1340 1340
1341| Matcher | Quando é disparado |1341| Matcher | Quando é disparado |
1342| :------------ | :----------------------------------------- |1342| :- | :- |
1343| `init` | `claude --init-only` ou `claude -p --init` |1343| `init` | `claude --init-only` ou `claude -p --init` |
1344| `maintenance` | `claude -p --maintenance` |1344| `maintenance` | `claude -p --maintenance` |
1345 1345
1392Além dos [campos de entrada comuns](#common-input-fields), os hooks InstructionsLoaded recebem estes campos:1392Além dos [campos de entrada comuns](#common-input-fields), os hooks InstructionsLoaded recebem estes campos:
1393 1393
1394| Campo | Descrição |1394| Campo | Descrição |
1395| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1395| :- | :- |
1396| `file_path` | Caminho absoluto para o arquivo de instrução que foi carregado |1396| `file_path` | Caminho absoluto para o arquivo de instrução que foi carregado |
1397| `memory_type` | Escopo do arquivo: `"User"`, `"Project"`, `"Local"` ou `"Managed"` |1397| `memory_type` | Escopo do arquivo: `"User"`, `"Project"`, `"Local"` ou `"Managed"` |
1398| `load_reason` | Por que o arquivo foi carregado: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` ou `"compact"`. O valor `"compact"` é disparado quando arquivos de instrução são recarregados após um evento de compactação |1398| `load_reason` | Por que o arquivo foi carregado: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` ou `"compact"`. O valor `"compact"` é disparado quando arquivos de instrução são recarregados após um evento de compactação |
1463Para bloquear um prompt, retorne um objeto JSON com `decision` definido como `"block"`:1463Para bloquear um prompt, retorne um objeto JSON com `decision` definido como `"block"`:
1464 1464
1465| Campo | Descrição |1465| Campo | Descrição |
1466| :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------- |1466| :- | :- |
1467| `decision` | `"block"` impede que o prompt seja processado e o apaga do contexto. Omita para permitir que o prompt prossiga |1467| `decision` | `"block"` impede que o prompt seja processado e o apaga do contexto. Omita para permitir que o prompt prossiga |
1468| `reason` | Mostrado ao usuário quando `decision` é `"block"`. Não adicionado ao contexto |1468| `reason` | Mostrado ao usuário quando `decision` é `"block"`. Não adicionado ao contexto |
1469| `additionalContext` | String adicionada ao contexto do Claude ao lado do prompt enviado. Veja [Adicionar contexto para Claude](#add-context-for-claude) |1469| `additionalContext` | String adicionada ao contexto do Claude ao lado do prompt enviado. Veja [Adicionar contexto para Claude](#add-context-for-claude) |
1522Os hooks `UserPromptExpansion` podem bloquear a expansão ou adicionar contexto. Todos os [campos de saída JSON](#json-output) estão disponíveis.1522Os hooks `UserPromptExpansion` podem bloquear a expansão ou adicionar contexto. Todos os [campos de saída JSON](#json-output) estão disponíveis.
1523 1523
1524| Campo | Descrição |1524| Campo | Descrição |
1525| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------- |1525| :- | :- |
1526| `decision` | `"block"` impede que o comando se expanda. Omita para permitir que prossiga |1526| `decision` | `"block"` impede que o comando se expanda. Omita para permitir que prossiga |
1527| `reason` | Mostrado ao usuário quando `decision` é `"block"` |1527| `reason` | Mostrado ao usuário quando `decision` é `"block"` |
1528| `additionalContext` | String adicionada ao contexto do Claude ao lado do prompt expandido. Veja [Adicionar contexto para Claude](#add-context-for-claude) |1528| `additionalContext` | String adicionada ao contexto do Claude ao lado do prompt expandido. Veja [Adicionar contexto para Claude](#add-context-for-claude) |
1567Além dos [campos de entrada comuns](#common-input-fields), os hooks MessageDisplay recebem identificadores para o turno e mensagem, a posição desta chamada dentro da mensagem e o novo texto em `delta`. Os limites de lote dependem de como o texto é transmitido, portanto use `index` e `final` para rastrear o progresso através de uma mensagem em vez de esperar que as linhas sejam agrupadas de uma forma particular.1567Além dos [campos de entrada comuns](#common-input-fields), os hooks MessageDisplay recebem identificadores para o turno e mensagem, a posição desta chamada dentro da mensagem e o novo texto em `delta`. Os limites de lote dependem de como o texto é transmitido, portanto use `index` e `final` para rastrear o progresso através de uma mensagem em vez de esperar que as linhas sejam agrupadas de uma forma particular.
1568 1568
1569| Campo | Descrição |1569| Campo | Descrição |
1570| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1570| :- | :- |
1571| `turn_id` | UUID do turno atual |1571| `turn_id` | UUID do turno atual |
1572| `message_id` | UUID da mensagem do assistente sendo exibida. Estável em cada lote da mesma mensagem. Este não é o `msg_…` id da API, portanto não pode ser correlacionado com ids de mensagem de transcrição |1572| `message_id` | UUID da mensagem do assistente sendo exibida. Estável em cada lote da mesma mensagem. Este não é o `msg_…` id da API, portanto não pode ser correlacionado com ids de mensagem de transcrição |
1573| `index` | Índice baseado em zero deste lote dentro da mensagem |1573| `index` | Índice baseado em zero deste lote dentro da mensagem |
1595Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, os hooks MessageDisplay podem retornar `displayContent` para substituir o delta na tela:1595Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, os hooks MessageDisplay podem retornar `displayContent` para substituir o delta na tela:
1596 1596
1597| Campo | Descrição |1597| Campo | Descrição |
1598| :--------------- | :------------------------------------------------------------ |1598| :- | :- |
1599| `displayContent` | Texto exibido no lugar do delta. Omita para exibir o original |1599| `displayContent` | Texto exibido no lugar do delta. Omita para exibir o original |
1600 1600
1601Os hooks MessageDisplay não têm controle de decisão. Eles não podem bloquear a mensagem ou alterar o que é armazenado na transcrição ou enviado ao Claude. Claude Code atua em `displayContent` de sua saída JSON e descarta `systemMessage` e `continue`.1601Os hooks MessageDisplay não têm controle de decisão. Eles não podem bloquear a mensagem ou alterar o que é armazenado na transcrição ou enviado ao Claude. Claude Code atua em `displayContent` de sua saída JSON e descarta `systemMessage` e `continue`.
1736Executa comandos de shell.1736Executa comandos de shell.
1737 1737
1738| Campo | Tipo | Exemplo | Descrição |1738| Campo | Tipo | Exemplo | Descrição |
1739| :------------------ | :------ | :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |1739| :- | :- | :- | :- |
1740| `command` | string | `"npm test"` | O comando de shell a executar |1740| `command` | string | `"npm test"` | O comando de shell a executar |
1741| `description` | string | `"Run test suite"` | Descrição opcional do que o comando faz |1741| `description` | string | `"Run test suite"` | Descrição opcional do que o comando faz |
1742| `timeout` | number | `120000` | Tempo limite opcional em milissegundos. Valores acima do [máximo](/docs/pt/tools-reference#bash-tool-behavior) são reduzidos ao máximo em vez de rejeitados |1742| `timeout` | number | `120000` | Tempo limite opcional em milissegundos. Valores acima do [máximo](/docs/pt/tools-reference#bash-tool-behavior) são reduzidos ao máximo em vez de rejeitados |
1753`changedFiles` e `files` listam o que o comando mudou; os campos restantes dizem como completo e confiável essa lista é.1753`changedFiles` e `files` listam o que o comando mudou; os campos restantes dizem como completo e confiável essa lista é.
1754 1754
1755| Campo | Tipo | Exemplo | Descrição |1755| Campo | Tipo | Exemplo | Descrição |
1756| :------------- | :------ | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1756| :- | :- | :- | :- |
1757| `changedFiles` | array | `["/path/to/src/app.ts"]` | Caminhos absolutos dos arquivos que o comando mudou, no máximo 200. Presente sempre que `files` contém um diff ou `moreFiles` está acima de zero |1757| `changedFiles` | array | `["/path/to/src/app.ts"]` | Caminhos absolutos dos arquivos que o comando mudou, no máximo 200. Presente sempre que `files` contém um diff ou `moreFiles` está acima de zero |
1758| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs de até 5 arquivos alterados, para exibição. `created` ou `deleted` é `true` para um arquivo que o comando adicionou ou removeu |1758| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs de até 5 arquivos alterados, para exibição. `created` ou `deleted` é `true` para um arquivo que o comando adicionou ou removeu |
1759| `moreFiles` | number | `2` | Contagem de arquivos alterados sem diff em `files` |1759| `moreFiles` | number | `2` | Contagem de arquivos alterados sem diff em `files` |
1772Os campos correspondem à ferramenta Bash, com a string de comando em `command`:1772Os campos correspondem à ferramenta Bash, com a string de comando em `command`:
1773 1773
1774| Campo | Tipo | Exemplo | Descrição |1774| Campo | Tipo | Exemplo | Descrição |
1775| :------------------ | :------ | :------------------------- | :----------------------------------------------- |1775| :- | :- | :- | :- |
1776| `command` | string | `"Get-ChildItem -Recurse"` | O comando do PowerShell a executar |1776| `command` | string | `"Get-ChildItem -Recurse"` | O comando do PowerShell a executar |
1777| `description` | string | `"List files recursively"` | Descrição opcional do que o comando faz |1777| `description` | string | `"List files recursively"` | Descrição opcional do que o comando faz |
1778| `timeout` | number | `120000` | Tempo limite opcional em milissegundos |1778| `timeout` | number | `120000` | Tempo limite opcional em milissegundos |
1791Cria ou sobrescreve um arquivo.1791Cria ou sobrescreve um arquivo.
1792 1792
1793| Campo | Tipo | Exemplo | Descrição |1793| Campo | Tipo | Exemplo | Descrição |
1794| :---------- | :----- | :-------------------- | :----------------------------------------- |1794| :- | :- | :- | :- |
1795| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a escrever |1795| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a escrever |
1796| `content` | string | `"file content"` | Conteúdo a escrever no arquivo |1796| `content` | string | `"file content"` | Conteúdo a escrever no arquivo |
1797 1797
1802Substitui uma string em um arquivo existente.1802Substitui uma string em um arquivo existente.
1803 1803
1804| Campo | Tipo | Exemplo | Descrição |1804| Campo | Tipo | Exemplo | Descrição |
1805| :------------ | :------ | :-------------------- | :--------------------------------------- |1805| :- | :- | :- | :- |
1806| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a editar |1806| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a editar |
1807| `old_string` | string | `"original text"` | Texto a encontrar e substituir |1807| `old_string` | string | `"original text"` | Texto a encontrar e substituir |
1808| `new_string` | string | `"replacement text"` | Texto de substituição |1808| `new_string` | string | `"replacement text"` | Texto de substituição |
1815Lê conteúdo de arquivo.1815Lê conteúdo de arquivo.
1816 1816
1817| Campo | Tipo | Exemplo | Descrição |1817| Campo | Tipo | Exemplo | Descrição |
1818| :---------- | :----- | :-------------------- | :------------------------------------------ |1818| :- | :- | :- | :- |
1819| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a ler |1819| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a ler |
1820| `offset` | number | `10` | Número de linha opcional para começar a ler |1820| `offset` | number | `10` | Número de linha opcional para começar a ler |
1821| `limit` | number | `50` | Número opcional de linhas a ler |1821| `limit` | number | `50` | Número opcional de linhas a ler |
1827Encontra arquivos correspondentes a um padrão glob.1827Encontra arquivos correspondentes a um padrão glob.
1828 1828
1829| Campo | Tipo | Exemplo | Descrição |1829| Campo | Tipo | Exemplo | Descrição |
1830| :-------- | :----- | :--------------- | :---------------------------------------------------------------------- |1830| :- | :- | :- | :- |
1831| `pattern` | string | `"**/*.ts"` | Padrão glob para corresponder arquivos |1831| `pattern` | string | `"**/*.ts"` | Padrão glob para corresponder arquivos |
1832| `path` | string | `"/path/to/dir"` | Diretório opcional para pesquisar. Padrão é diretório de trabalho atual |1832| `path` | string | `"/path/to/dir"` | Diretório opcional para pesquisar. Padrão é diretório de trabalho atual |
1833 1833
1838Pesquisa conteúdo de arquivo com expressões regulares.1838Pesquisa conteúdo de arquivo com expressões regulares.
1839 1839
1840| Campo | Tipo | Exemplo | Descrição |1840| Campo | Tipo | Exemplo | Descrição |
1841| :------------ | :------ | :--------------- | :-------------------------------------------------------------------------------- |1841| :- | :- | :- | :- |
1842| `pattern` | string | `"TODO.*fix"` | Padrão de expressão regular para pesquisar |1842| `pattern` | string | `"TODO.*fix"` | Padrão de expressão regular para pesquisar |
1843| `path` | string | `"/path/to/dir"` | Arquivo ou diretório opcional para pesquisar |1843| `path` | string | `"/path/to/dir"` | Arquivo ou diretório opcional para pesquisar |
1844| `glob` | string | `"*.ts"` | Padrão glob opcional para filtrar arquivos |1844| `glob` | string | `"*.ts"` | Padrão glob opcional para filtrar arquivos |
1853Busca e processa conteúdo da web.1853Busca e processa conteúdo da web.
1854 1854
1855| Campo | Tipo | Exemplo | Descrição |1855| Campo | Tipo | Exemplo | Descrição |
1856| :------- | :----- | :---------------------------- | :--------------------------------------- |1856| :- | :- | :- | :- |
1857| `url` | string | `"https://example.com/api"` | URL para buscar conteúdo |1857| `url` | string | `"https://example.com/api"` | URL para buscar conteúdo |
1858| `prompt` | string | `"Extract the API endpoints"` | Prompt para executar no conteúdo buscado |1858| `prompt` | string | `"Extract the API endpoints"` | Prompt para executar no conteúdo buscado |
1859 1859
1864Pesquisa a web.1864Pesquisa a web.
1865 1865
1866| Campo | Tipo | Exemplo | Descrição |1866| Campo | Tipo | Exemplo | Descrição |
1867| :---------------- | :----- | :----------------------------- | :-------------------------------------------------- |1867| :- | :- | :- | :- |
1868| `query` | string | `"react hooks best practices"` | Consulta de pesquisa |1868| `query` | string | `"react hooks best practices"` | Consulta de pesquisa |
1869| `allowed_domains` | array | `["docs.example.com"]` | Opcional: incluir apenas resultados desses domínios |1869| `allowed_domains` | array | `["docs.example.com"]` | Opcional: incluir apenas resultados desses domínios |
1870| `blocked_domains` | array | `["spam.example.com"]` | Opcional: excluir resultados desses domínios |1870| `blocked_domains` | array | `["spam.example.com"]` | Opcional: excluir resultados desses domínios |
1876Gera um [subagente](/docs/pt/sub-agents).1876Gera um [subagente](/docs/pt/sub-agents).
1877 1877
1878| Campo | Tipo | Exemplo | Descrição |1878| Campo | Tipo | Exemplo | Descrição |
1879| :-------------- | :----- | :------------------------- | :-------------------------------------------------- |1879| :- | :- | :- | :- |
1880| `prompt` | string | `"Find all API endpoints"` | A tarefa para o agente executar |1880| `prompt` | string | `"Find all API endpoints"` | A tarefa para o agente executar |
1881| `description` | string | `"Find API endpoints"` | Descrição curta da tarefa |1881| `description` | string | `"Find API endpoints"` | Descrição curta da tarefa |
1882| `subagent_type` | string | `"Explore"` | Tipo de agente especializado a usar |1882| `subagent_type` | string | `"Explore"` | Tipo de agente especializado a usar |
1885Quando uma chamada Agent em primeiro plano é concluída, seu [hook PostToolUse](#posttooluse) recebe o resultado do subagente e telemetria de execução em `tool_response`. Leia esses campos para inspecionar a execução; para rollups de token e custo entre subagentes, use os [contadores de token e custo](/docs/pt/monitoring-usage#token-counter) filtrados para `query_source` `"subagent"`, já que `totalTokens` e `usage` cobrem apenas a solicitação final:1885Quando uma chamada Agent em primeiro plano é concluída, seu [hook PostToolUse](#posttooluse) recebe o resultado do subagente e telemetria de execução em `tool_response`. Leia esses campos para inspecionar a execução; para rollups de token e custo entre subagentes, use os [contadores de token e custo](/docs/pt/monitoring-usage#token-counter) filtrados para `query_source` `"subagent"`, já que `totalTokens` e `usage` cobrem apenas a solicitação final:
1886 1886
1887| Campo | Tipo | Exemplo | Descrição |1887| Campo | Tipo | Exemplo | Descrição |
1888| :------------------ | :----- | :---------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1888| :- | :- | :- | :- |
1889| `status` | string | `"completed"` | `"completed"` para subagentes em primeiro plano, `"async_launched"` para subagentes em segundo plano. A partir da v2.1.198, subagentes são executados em segundo plano por padrão, portanto um `run_in_background` omitido também produz `"async_launched"` |1889| `status` | string | `"completed"` | `"completed"` para subagentes em primeiro plano, `"async_launched"` para subagentes em segundo plano. A partir da v2.1.198, subagentes são executados em segundo plano por padrão, portanto um `run_in_background` omitido também produz `"async_launched"` |
1890| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificador para a execução do subagente |1890| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificador para a execução do subagente |
1891| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Os blocos de texto final do subagente, ou, para um subagente cujo relatório passa por `SubagentHandback`, uma nota breve sobre esse hand-back em seu lugar |1891| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Os blocos de texto final do subagente, ou, para um subagente cujo relatório passa por `SubagentHandback`, uma nota breve sobre esse hand-back em seu lugar |
1911Faz ao usuário uma a quatro perguntas de múltipla escolha.1911Faz ao usuário uma a quatro perguntas de múltipla escolha.
1912 1912
1913| Campo | Tipo | Exemplo | Descrição |1913| Campo | Tipo | Exemplo | Descrição |
1914| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1914| :- | :- | :- | :- |
1915| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Perguntas a apresentar, cada uma com uma string `question`, `header` curto, array `options` e flag `multiSelect` opcional |1915| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Perguntas a apresentar, cada uma com uma string `question`, `header` curto, array `options` e flag `multiSelect` opcional |
1916| `answers` | object | `{"Which framework?": "React"}` | Opcional. Mapeia texto de pergunta para rótulo de opção selecionada. Respostas de seleção múltipla unem rótulos com vírgulas. Claude não define este campo; forneça-o via `updatedInput` para responder programaticamente |1916| `answers` | object | `{"Which framework?": "React"}` | Opcional. Mapeia texto de pergunta para rótulo de opção selecionada. Respostas de seleção múltipla unem rótulos com vírgulas. Claude não define este campo; forneça-o via `updatedInput` para responder programaticamente |
1917 1917
1922Apresenta um plano e pede ao usuário para aprová-lo antes de Claude sair do [modo de plano](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode). Claude escreve o plano em um arquivo no disco antes de chamar a ferramenta, portanto o `tool_input` literal do modelo é tipicamente vazio. Claude Code injeta o conteúdo do plano e o caminho do arquivo antes de passar a entrada para hooks.1922Apresenta um plano e pede ao usuário para aprová-lo antes de Claude sair do [modo de plano](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode). Claude escreve o plano em um arquivo no disco antes de chamar a ferramenta, portanto o `tool_input` literal do modelo é tipicamente vazio. Claude Code injeta o conteúdo do plano e o caminho do arquivo antes de passar a entrada para hooks.
1923 1923
1924| Campo | Tipo | Exemplo | Descrição |1924| Campo | Tipo | Exemplo | Descrição |
1925| :--------------- | :----- | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1925| :- | :- | :- | :- |
1926| `plan` | string | `"## Refactor auth\n1. Extract..."` | Conteúdo do plano em Markdown. Injetado do arquivo de plano no disco |1926| `plan` | string | `"## Refactor auth\n1. Extract..."` | Conteúdo do plano em Markdown. Injetado do arquivo de plano no disco |
1927| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Caminho para o arquivo de plano. Injetado |1927| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Caminho para o arquivo de plano. Injetado |
1928| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Descontinuado. Claude Code aceita o campo mas o ignora. Antes da v2.1.205, ele carregava permissões baseadas em prompt que Claude solicitou para implementar o plano |1928| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Descontinuado. Claude Code aceita o campo mas o ignora. Antes da v2.1.205, ele carregava permissões baseadas em prompt que Claude solicitou para implementar o plano |
1936Os hooks `PreToolUse` podem controlar se uma chamada de ferramenta prossegue. Ao contrário de outros hooks que usam um campo `decision` de nível superior, PreToolUse retorna sua decisão dentro de um objeto `hookSpecificOutput`. Isso lhe dá controle mais rico: quatro resultados (permitir, negar, perguntar ou adiar) mais a capacidade de modificar a entrada da ferramenta antes da execução.1936Os hooks `PreToolUse` podem controlar se uma chamada de ferramenta prossegue. Ao contrário de outros hooks que usam um campo `decision` de nível superior, PreToolUse retorna sua decisão dentro de um objeto `hookSpecificOutput`. Isso lhe dá controle mais rico: quatro resultados (permitir, negar, perguntar ou adiar) mais a capacidade de modificar a entrada da ferramenta antes da execução.
1937 1937
1938| Campo | Descrição |1938| Campo | Descrição |
1939| :------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1939| :- | :- |
1940| `permissionDecision` | `"allow"` pula o prompt de permissão, exceto para as [ações que nenhum modo auto-aprova](/docs/pt/permission-modes#actions-no-mode-auto-approves) e para `AskUserQuestion` e `ExitPlanMode`, que precisam de [`updatedInput` emparelhado com ele](#allow-with-updatedinput). `"deny"` impede a chamada de ferramenta. `"ask"` solicita ao usuário para confirmar. `"defer"` sai graciosamente para que a ferramenta possa ser retomada mais tarde. [Regras de negação e pergunta](/docs/pt/permissions#manage-permissions) ainda são avaliadas independentemente do que o hook retorna |1940| `permissionDecision` | `"allow"` pula o prompt de permissão, exceto para as [ações que nenhum modo auto-aprova](/docs/pt/permission-modes#actions-no-mode-auto-approves) e para `AskUserQuestion` e `ExitPlanMode`, que precisam de [`updatedInput` emparelhado com ele](#allow-with-updatedinput). `"deny"` impede a chamada de ferramenta. `"ask"` solicita ao usuário para confirmar. `"defer"` sai graciosamente para que a ferramenta possa ser retomada mais tarde. [Regras de negação e pergunta](/docs/pt/permissions#manage-permissions) ainda são avaliadas independentemente do que o hook retorna |
1941| `permissionDecisionReason` | Para `"allow"` e `"ask"`, mostrado ao usuário mas não ao Claude. Para `"deny"`, mostrado ao Claude. Para `"defer"`, ignorado |1941| `permissionDecisionReason` | Para `"allow"` e `"ask"`, mostrado ao usuário mas não ao Claude. Para `"deny"`, mostrado ao Claude. Para `"defer"`, ignorado |
1942| `updatedInput` | Modifica os parâmetros de entrada da ferramenta antes da execução. Substitui o objeto de entrada inteiro, portanto inclua campos inalterados ao lado dos modificados. Claude Code avalia regras de permissão e a elegibilidade de [auto-fundo](/docs/pt/tools-reference#background-commands) de um comando Bash contra a entrada que seu hook retorna, não a entrada que Claude enviou. Combine com `"allow"` para auto-aprovar, ou `"ask"` para mostrar a entrada modificada ao usuário. Para `"defer"`, ignorado |1942| `updatedInput` | Modifica os parâmetros de entrada da ferramenta antes da execução. Substitui o objeto de entrada inteiro, portanto inclua campos inalterados ao lado dos modificados. Claude Code avalia regras de permissão e a elegibilidade de [auto-fundo](/docs/pt/tools-reference#background-commands) de um comando Bash contra a entrada que seu hook retorna, não a entrada que Claude enviou. Combine com `"allow"` para auto-aprovar, ou `"ask"` para mostrar a entrada modificada ao usuário. Para `"defer"`, ignorado |
2069Os hooks `PermissionRequest` podem permitir ou negar solicitações de permissão. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar um objeto `decision` com esses campos específicos do evento:2069Os hooks `PermissionRequest` podem permitir ou negar solicitações de permissão. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar um objeto `decision` com esses campos específicos do evento:
2070 2070
2071| Campo | Descrição |2071| Campo | Descrição |
2072| :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2072| :- | :- |
2073| `behavior` | `"allow"` concede a permissão, `"deny"` a nega. [Regras de negação e pergunta](/docs/pt/permissions#manage-permissions) ainda são avaliadas, portanto um hook retornando `"allow"` não sobrescreve uma regra de negação correspondente |2073| `behavior` | `"allow"` concede a permissão, `"deny"` a nega. [Regras de negação e pergunta](/docs/pt/permissions#manage-permissions) ainda são avaliadas, portanto um hook retornando `"allow"` não sobrescreve uma regra de negação correspondente |
2074| `updatedInput` | Para `"allow"` apenas: modifica os parâmetros de entrada da ferramenta antes da execução. Substitui o objeto de entrada inteiro, portanto inclua campos inalterados ao lado dos modificados. A entrada modificada é re-avaliada contra regras de negação e pergunta |2074| `updatedInput` | Para `"allow"` apenas: modifica os parâmetros de entrada da ferramenta antes da execução. Substitui o objeto de entrada inteiro, portanto inclua campos inalterados ao lado dos modificados. A entrada modificada é re-avaliada contra regras de negação e pergunta |
2075| `updatedPermissions` | Para `"allow"` apenas: array de [entradas de atualização de permissão](#permission-update-entries) a aplicar, como adicionar uma regra de permissão ou alterar o modo de permissão da sessão |2075| `updatedPermissions` | Para `"allow"` apenas: array de [entradas de atualização de permissão](#permission-update-entries) a aplicar, como adicionar uma regra de permissão ou alterar o modo de permissão da sessão |
2099O campo de saída `updatedPermissions` e o campo de entrada [`permission_suggestions`](#permissionrequest-input) ambos usam o mesmo array de objetos de entrada. Cada entrada tem um `type` que determina seus outros campos, e um `destination` que controla onde a mudança é escrita.2099O campo de saída `updatedPermissions` e o campo de entrada [`permission_suggestions`](#permissionrequest-input) ambos usam o mesmo array de objetos de entrada. Cada entrada tem um `type` que determina seus outros campos, e um `destination` que controla onde a mudança é escrita.
2100 2100
2101| `type` | Campos | Efeito |2101| `type` | Campos | Efeito |
2102| :------------------ | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2102| :- | :- | :- |
2103| `addRules` | `rules`, `behavior`, `destination` | Adiciona regras de permissão. `rules` é um array de objetos `{toolName, ruleContent?}`. Omita `ruleContent` para corresponder a toda a ferramenta. `behavior` é `"allow"`, `"deny"` ou `"ask"` |2103| `addRules` | `rules`, `behavior`, `destination` | Adiciona regras de permissão. `rules` é um array de objetos `{toolName, ruleContent?}`. Omita `ruleContent` para corresponder a toda a ferramenta. `behavior` é `"allow"`, `"deny"` ou `"ask"` |
2104| `replaceRules` | `rules`, `behavior`, `destination` | Substitui todas as regras do `behavior` dado no `destination` pelas `rules` fornecidas |2104| `replaceRules` | `rules`, `behavior`, `destination` | Substitui todas as regras do `behavior` dado no `destination` pelas `rules` fornecidas |
2105| `removeRules` | `rules`, `behavior`, `destination` | Remove regras correspondentes do `behavior` dado |2105| `removeRules` | `rules`, `behavior`, `destination` | Remove regras correspondentes do `behavior` dado |
2116O campo `destination` em cada entrada determina se a mudança permanece na memória ou persiste em um arquivo de configurações.2116O campo `destination` em cada entrada determina se a mudança permanece na memória ou persiste em um arquivo de configurações.
2117 2117
2118| `destination` | Escreve para |2118| `destination` | Escreve para |
2119| :---------------- | :---------------------------------------------------- |2119| :- | :- |
2120| `session` | apenas na memória, descartado quando a sessão termina |2120| `session` | apenas na memória, descartado quando a sessão termina |
2121| `localSettings` | `.claude/settings.local.json` |2121| `localSettings` | `.claude/settings.local.json` |
2122| `projectSettings` | `.claude/settings.json` |2122| `projectSettings` | `.claude/settings.json` |
2165```2165```
2166 2166
2167| Campo | Descrição |2167| Campo | Descrição |
2168| :------------ | :------------------------------------------------------------------------------------------------------------------------ |2168| :- | :- |
2169| `duration_ms` | Opcional. Tempo de execução da ferramenta em milissegundos. Exclui tempo gasto em prompts de permissão e hooks PreToolUse |2169| `duration_ms` | Opcional. Tempo de execução da ferramenta em milissegundos. Exclui tempo gasto em prompts de permissão e hooks PreToolUse |
2170 2170
2171<h4 id="posttooluse-decision-control">2171<h4 id="posttooluse-decision-control">
2175Os hooks `PostToolUse` podem fornecer feedback ao Claude após a execução da ferramenta. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:2175Os hooks `PostToolUse` podem fornecer feedback ao Claude após a execução da ferramenta. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:
2176 2176
2177| Campo | Descrição |2177| Campo | Descrição |
2178| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2178| :- | :- |
2179| `decision` | `"block"` adiciona o `reason` ao lado do resultado da ferramenta. Claude ainda vê a saída original; para substituí-la, use `updatedToolOutput` |2179| `decision` | `"block"` adiciona o `reason` ao lado do resultado da ferramenta. Claude ainda vê a saída original; para substituí-la, use `updatedToolOutput` |
2180| `reason` | Explicação mostrada ao Claude quando `decision` é `"block"` |2180| `reason` | Explicação mostrada ao Claude quando `decision` é `"block"` |
2181| `additionalContext` | String adicionada ao contexto do Claude ao lado do resultado da ferramenta. Veja [Adicionar contexto para Claude](#add-context-for-claude) |2181| `additionalContext` | String adicionada ao contexto do Claude ao lado do resultado da ferramenta. Veja [Adicionar contexto para Claude](#add-context-for-claude) |
2277```2277```
2278 2278
2279| Campo | Descrição |2279| Campo | Descrição |
2280| :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2280| :- | :- |
2281| `error` | String descrevendo o que deu errado. O formato depende da ferramenta que falhou |2281| `error` | String descrevendo o que deu errado. O formato depende da ferramenta que falhou |
2282| `is_interrupt` | Booleano opcional. True quando a falha chegou a Claude Code como um aborto em vez de como um erro que a ferramenta relatou. Cancelar uma ferramenta em execução não dispara este hook; o resultado da ferramenta carrega a mensagem de interrupção em vez disso |2282| `is_interrupt` | Booleano opcional. True quando a falha chegou a Claude Code como um aborto em vez de como um erro que a ferramenta relatou. Cancelar uma ferramenta em execução não dispara este hook; o resultado da ferramenta carrega a mensagem de interrupção em vez disso |
2283| `duration_ms` | Opcional. Tempo de execução da ferramenta em milissegundos. Exclui tempo gasto em prompts de permissão e hooks PreToolUse |2283| `duration_ms` | Opcional. Tempo de execução da ferramenta em milissegundos. Exclui tempo gasto em prompts de permissão e hooks PreToolUse |
2295Os hooks `PostToolUseFailure` podem fornecer contexto ao Claude após uma falha de ferramenta. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:2295Os hooks `PostToolUseFailure` podem fornecer contexto ao Claude após uma falha de ferramenta. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:
2296 2296
2297| Campo | Descrição |2297| Campo | Descrição |
2298| :------------------ | :---------------------------------------------------------------------------------------------------------------------- |2298| :- | :- |
2299| `additionalContext` | String adicionada ao contexto do Claude ao lado do erro. Veja [Adicionar contexto para Claude](#add-context-for-claude) |2299| `additionalContext` | String adicionada ao contexto do Claude ao lado do erro. Veja [Adicionar contexto para Claude](#add-context-for-claude) |
2300 2300
2301```json theme={null}2301```json theme={null}
2356Os hooks `PostToolBatch` podem injetar contexto para Claude. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:2356Os hooks `PostToolBatch` podem injetar contexto para Claude. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:
2357 2357
2358| Campo | Descrição |2358| Campo | Descrição |
2359| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2359| :- | :- |
2360| `additionalContext` | String de contexto injetada uma vez antes da próxima chamada do modelo. Veja [Adicionar contexto para Claude](#add-context-for-claude) para detalhes de entrega, o que colocar nela e como sessões retomadas lidam com valores passados |2360| `additionalContext` | String de contexto injetada uma vez antes da próxima chamada do modelo. Veja [Adicionar contexto para Claude](#add-context-for-claude) para detalhes de entrega, o que colocar nela e como sessões retomadas lidam com valores passados |
2361 2361
2362```json theme={null}2362```json theme={null}
2402```2402```
2403 2403
2404| Campo | Descrição |2404| Campo | Descrição |
2405| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2405| :- | :- |
2406| `reason` | O motivo da negação. Para um veredicto do classificador, na maioria das sessões ele nomeia a regra correspondente entre colchetes, como `[Data Exfiltration]`; veja [Revisar negações](/docs/pt/auto-mode-config#review-denials) para as outras formas. Para uma [negação sem veredicto](#permissiondenied-decision-control), começa com `Auto mode could not evaluate this action and is blocking it for safety`. Para uma negação porque o modelo do classificador não estava disponível, é o texto fixo `Classifier unavailable` |2406| `reason` | O motivo da negação. Para um veredicto do classificador, na maioria das sessões ele nomeia a regra correspondente entre colchetes, como `[Data Exfiltration]`; veja [Revisar negações](/docs/pt/auto-mode-config#review-denials) para as outras formas. Para uma [negação sem veredicto](#permissiondenied-decision-control), começa com `Auto mode could not evaluate this action and is blocking it for safety`. Para uma negação porque o modelo do classificador não estava disponível, é o texto fixo `Classifier unavailable` |
2407 2407
2408<h4 id="permissiondenied-decision-control">2408<h4 id="permissiondenied-decision-control">
2433Você recebe esses eventos de hook mesmo com notificações de desktop desativadas: a configuração `preferredNotifChannel`, incluindo `notifications_disabled`, altera apenas como você é alertado, não se seu hook é executado.2433Você recebe esses eventos de hook mesmo com notificações de desktop desativadas: a configuração `preferredNotifChannel`, incluindo `notifications_disabled`, altera apenas como você é alertado, não se seu hook é executado.
2434 2434
2435| Matcher | Quando é disparado |2435| Matcher | Quando é disparado |
2436| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2436| :- | :- |
2437| `permission_prompt` | Claude precisa de sua permissão para usar uma ferramenta ou a [solicitação de rede](/docs/pt/sandboxing#network-isolation) de um comando em sandbox, e o prompt esperou cerca de seis segundos |2437| `permission_prompt` | Claude precisa de sua permissão para usar uma ferramenta ou a [solicitação de rede](/docs/pt/sandboxing#network-isolation) de um comando em sandbox, e o prompt esperou cerca de seis segundos |
2438| `idle_prompt` | Claude terminou de responder cerca de 60 segundos atrás e você não digitou desde então |2438| `idle_prompt` | Claude terminou de responder cerca de 60 segundos atrás e você não digitou desde então |
2439| `auth_success` | A autenticação é concluída |2439| `auth_success` | A autenticação é concluída |
2550Os hooks SubagentStart não podem bloquear a criação de subagente, mas podem injetar contexto no subagente. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar:2550Os hooks SubagentStart não podem bloquear a criação de subagente, mas podem injetar contexto no subagente. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar:
2551 2551
2552| Campo | Descrição |2552| Campo | Descrição |
2553| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |2553| :- | :- |
2554| `additionalContext` | String adicionada ao contexto do subagente no início de sua conversa, antes de seu primeiro prompt. Veja [Adicionar contexto para Claude](#add-context-for-claude) |2554| `additionalContext` | String adicionada ao contexto do subagente no início de sua conversa, antes de seu primeiro prompt. Veja [Adicionar contexto para Claude](#add-context-for-claude) |
2555 2555
2556```json theme={null}2556```json theme={null}
2632```2632```
2633 2633
2634| Campo | Descrição |2634| Campo | Descrição |
2635| :----------------- | :----------------------------------------------------------------------------------- |2635| :- | :- |
2636| `task_id` | Identificador da tarefa sendo criada |2636| `task_id` | Identificador da tarefa sendo criada |
2637| `task_subject` | Título da tarefa |2637| `task_subject` | Título da tarefa |
2638| `task_description` | Descrição detalhada da tarefa. Pode estar ausente |2638| `task_description` | Descrição detalhada da tarefa. Pode estar ausente |
2693```2693```
2694 2694
2695| Campo | Descrição |2695| Campo | Descrição |
2696| :----------------- | :----------------------------------------------------------------------------------- |2696| :- | :- |
2697| `task_id` | Identificador da tarefa sendo concluída |2697| `task_id` | Identificador da tarefa sendo concluída |
2698| `task_subject` | Título da tarefa |2698| `task_subject` | Título da tarefa |
2699| `task_description` | Descrição detalhada da tarefa. Pode estar ausente |2699| `task_description` | Descrição detalhada da tarefa. Pode estar ausente |
2748Cada entrada em `background_tasks` descreve uma tarefa em voo e usa estes campos:2748Cada entrada em `background_tasks` descreve uma tarefa em voo e usa estes campos:
2749 2749
2750| Campo | Descrição |2750| Campo | Descrição |
2751| :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2751| :- | :- |
2752| `id` | Identificador de tarefa |2752| `id` | Identificador de tarefa |
2753| `type` | Rótulo de tipo de tarefa amigável como `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session` ou `MCP task`. Cada rótulo identifica qual recurso Claude Code criou a tarefa. Volta para o discriminante bruto para tipos não reconhecidos |2753| `type` | Rótulo de tipo de tarefa amigável como `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session` ou `MCP task`. Cada rótulo identifica qual recurso Claude Code criou a tarefa. Volta para o discriminante bruto para tipos não reconhecidos |
2754| `status` | Status atual da tarefa |2754| `status` | Status atual da tarefa |
2762Cada entrada em `session_crons` descreve um despertar agendado com escopo de sessão, originário de `CronCreate`, `ScheduleWakeup` e `/loop`:2762Cada entrada em `session_crons` descreve um despertar agendado com escopo de sessão, originário de `CronCreate`, `ScheduleWakeup` e `/loop`:
2763 2763
2764| Campo | Descrição |2764| Campo | Descrição |
2765| :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |2765| :- | :- |
2766| `id` | Identificador de tarefa Cron |2766| `id` | Identificador de tarefa Cron |
2767| `schedule` | Expressão Cron, por exemplo `0 9 * * 1-5` |2767| `schedule` | Expressão Cron, por exemplo `0 9 * * 1-5` |
2768| `recurring` | `false` para despertares únicos cuja programação codifica um tempo de disparo único, `true` para tarefas que disparam novamente em cada correspondência |2768| `recurring` | `false` para despertares únicos cuja programação codifica um tempo de disparo único, `true` para tarefas que disparam novamente em cada correspondência |
2806Os hooks `Stop` e `SubagentStop` podem controlar se Claude continua. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:2806Os hooks `Stop` e `SubagentStop` podem controlar se Claude continua. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:
2807 2807
2808| Campo | Descrição |2808| Campo | Descrição |
2809| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2809| :- | :- |
2810| `decision` | `"block"` impede que Claude pare. Omita para permitir que Claude pare |2810| `decision` | `"block"` impede que Claude pare. Omita para permitir que Claude pare |
2811| `reason` | Necessário quando `decision` é `"block"`. Diz ao Claude por que deve continuar |2811| `reason` | Necessário quando `decision` é `"block"`. Diz ao Claude por que deve continuar |
2812| `hookSpecificOutput.additionalContext` | Feedback sem erro para Claude. A conversa continua para que Claude possa agir sobre isso, mas ao contrário de `decision: "block"` é mostrado na transcrição como feedback de hook em vez de um erro de hook |2812| `hookSpecificOutput.additionalContext` | Feedback sem erro para Claude. A conversa continua para que Claude possa agir sobre isso, mas ao contrário de `decision: "block"` é mostrado na transcrição como feedback de hook em vez de um erro de hook |
2844Além dos [campos de entrada comuns](#common-input-fields), os hooks StopFailure recebem `error`, `error_details` opcional e `last_assistant_message` opcional. O campo `error` identifica o tipo de erro e é usado para filtragem de matcher.2844Além dos [campos de entrada comuns](#common-input-fields), os hooks StopFailure recebem `error`, `error_details` opcional e `last_assistant_message` opcional. O campo `error` identifica o tipo de erro e é usado para filtragem de matcher.
2845 2845
2846| Campo | Descrição |2846| Campo | Descrição |
2847| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2847| :- | :- |
2848| `error` | Tipo de erro: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` ou `unknown` |2848| `error` | Tipo de erro: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` ou `unknown` |
2849| `error_details` | Detalhes adicionais sobre o erro, quando disponível |2849| `error_details` | Detalhes adicionais sobre o erro, quando disponível |
2850| `last_assistant_message` | O texto de erro renderizado mostrado na conversa. Ao contrário de `Stop` e `SubagentStop`, onde este campo contém a saída conversacional do Claude, para `StopFailure` ele contém a string de erro da API em si, como `"API Error: Rate limit reached"` |2850| `last_assistant_message` | O texto de erro renderizado mostrado na conversa. Ao contrário de `Stop` e `SubagentStop`, onde este campo contém a saída conversacional do Claude, para `StopFailure` ele contém a string de erro da API em si, como `"API Error: Rate limit reached"` |
2890```2890```
2891 2891
2892| Campo | Descrição |2892| Campo | Descrição |
2893| :-------------- | :----------------------------------------------------------------------------------- |2893| :- | :- |
2894| `teammate_name` | Nome do colega que está prestes a ficar inativo |2894| `teammate_name` | Nome do colega que está prestes a ficar inativo |
2895| `team_name` | Descontinuado. Nome de equipe derivado de sessão; será removido em uma versão futura |2895| `team_name` | Descontinuado. Nome de equipe derivado de sessão; será removido em uma versão futura |
2896 2896
2927O matcher filtra na fonte de configuração:2927O matcher filtra na fonte de configuração:
2928 2928
2929| Matcher | Quando é disparado |2929| Matcher | Quando é disparado |
2930| :----------------- | :------------------------------------------------------------------ |2930| :- | :- |
2931| `user_settings` | `~/.claude/settings.json` muda |2931| `user_settings` | `~/.claude/settings.json` muda |
2932| `project_settings` | `.claude/settings.json` muda |2932| `project_settings` | `.claude/settings.json` muda |
2933| `local_settings` | `.claude/settings.local.json` muda |2933| `local_settings` | `.claude/settings.local.json` muda |
2978Os hooks ConfigChange podem bloquear mudanças de configuração de serem aplicadas. Use código de saída 2 ou um JSON `decision` para impedir a mudança. Quando bloqueado, as novas configurações não são aplicadas à sessão em execução.2978Os hooks ConfigChange podem bloquear mudanças de configuração de serem aplicadas. Use código de saída 2 ou um JSON `decision` para impedir a mudança. Quando bloqueado, as novas configurações não são aplicadas à sessão em execução.
2979 2979
2980| Campo | Descrição |2980| Campo | Descrição |
2981| :--------- | :------------------------------------------------------------------------------------------ |2981| :- | :- |
2982| `decision` | `"block"` impede que a mudança de configuração seja aplicada. Omita para permitir a mudança |2982| `decision` | `"block"` impede que a mudança de configuração seja aplicada. Omita para permitir a mudança |
2983| `reason` | Aceito mas nunca mostrado |2983| `reason` | Aceito mas nunca mostrado |
2984 2984
3027Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, os hooks CwdChanged podem retornar `watchPaths` para definir dinamicamente quais caminhos de arquivo [FileChanged](#filechanged) observa:3027Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, os hooks CwdChanged podem retornar `watchPaths` para definir dinamicamente quais caminhos de arquivo [FileChanged](#filechanged) observa:
3028 3028
3029| Campo | Descrição |3029| Campo | Descrição |
3030| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3030| :- | :- |
3031| `watchPaths` | Array de caminhos absolutos. Substitui a lista de observação dinâmica atual. Caminhos de sua configuração `matcher` são sempre observados. Retornar um array vazio limpa a lista dinâmica, que é típico ao entrar em um novo diretório |3031| `watchPaths` | Array de caminhos absolutos. Substitui a lista de observação dinâmica atual. Caminhos de sua configuração `matcher` são sempre observados. Retornar um array vazio limpa a lista dinâmica, que é típico ao entrar em um novo diretório |
3032 3032
3033Os hooks CwdChanged não têm controle de decisão. Eles não podem bloquear a mudança de diretório.3033Os hooks CwdChanged não têm controle de decisão. Eles não podem bloquear a mudança de diretório.
3053O matcher filtra em como o diretório foi adicionado:3053O matcher filtra em como o diretório foi adicionado:
3054 3054
3055| Matcher | Quando é disparado |3055| Matcher | Quando é disparado |
3056| :------------------- | :-------------------------------------------------------------------------------------- |3056| :- | :- |
3057| `slash_command` | Você adiciona um diretório com `/add-dir` |3057| `slash_command` | Você adiciona um diretório com `/add-dir` |
3058| `register_repo_root` | Um cliente SDK adiciona um diretório com a solicitação de controle `register_repo_root` |3058| `register_repo_root` | Um cliente SDK adiciona um diretório com a solicitação de controle `register_repo_root` |
3059 3059
3064Além dos [campos de entrada comuns](#common-input-fields), os hooks DirectoryAdded recebem `directory` e `source`.3064Além dos [campos de entrada comuns](#common-input-fields), os hooks DirectoryAdded recebem `directory` e `source`.
3065 3065
3066| Campo | Descrição |3066| Campo | Descrição |
3067| :---------- | :--------------------------------------------------------------------------------------------------------------------------------- |3067| :- | :- |
3068| `directory` | Caminho absoluto do diretório que foi adicionado |3068| `directory` | Caminho absoluto do diretório que foi adicionado |
3069| `source` | Como o diretório foi adicionado, `"slash_command"` para `/add-dir` ou `"register_repo_root"` para a solicitação de controle do SDK |3069| `source` | Como o diretório foi adicionado, `"slash_command"` para `/add-dir` ou `"register_repo_root"` para a solicitação de controle do SDK |
3070 3070
3138Além dos [campos de entrada comuns](#common-input-fields), os hooks FileChanged recebem `file_path` e `event`.3138Além dos [campos de entrada comuns](#common-input-fields), os hooks FileChanged recebem `file_path` e `event`.
3139 3139
3140| Campo | Descrição |3140| Campo | Descrição |
3141| :---------- | :---------------------------------------------------------------------------------------------------------------------------- |3141| :- | :- |
3142| `file_path` | Caminho absoluto para o arquivo que mudou |3142| `file_path` | Caminho absoluto para o arquivo que mudou |
3143| `event` | O que aconteceu: `"change"` para um arquivo modificado, `"add"` para um arquivo criado ou `"unlink"` para um arquivo excluído |3143| `event` | O que aconteceu: `"change"` para um arquivo modificado, `"add"` para um arquivo criado ou `"unlink"` para um arquivo excluído |
3144 3144
3160Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, os hooks FileChanged podem retornar `watchPaths` para atualizar dinamicamente quais caminhos de arquivo são observados:3160Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, os hooks FileChanged podem retornar `watchPaths` para atualizar dinamicamente quais caminhos de arquivo são observados:
3161 3161
3162| Campo | Descrição |3162| Campo | Descrição |
3163| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3163| :- | :- |
3164| `watchPaths` | Array de caminhos absolutos. Substitui a lista de observação dinâmica atual. Caminhos de sua configuração `matcher` são sempre observados. Use isso quando seu script de hook descobre arquivos adicionais para observar com base no arquivo alterado |3164| `watchPaths` | Array de caminhos absolutos. Substitui a lista de observação dinâmica atual. Caminhos de sua configuração `matcher` são sempre observados. Use isso quando seu script de hook descobre arquivos adicionais para observar com base no arquivo alterado |
3165 3165
3166Os hooks FileChanged não têm controle de decisão. Eles não podem bloquear a mudança de arquivo de ocorrer.3166Os hooks FileChanged não têm controle de decisão. Eles não podem bloquear a mudança de arquivo de ocorrer.
3296O valor do matcher indica se a compactação foi disparada manualmente ou automaticamente:3296O valor do matcher indica se a compactação foi disparada manualmente ou automaticamente:
3297 3297
3298| Matcher | Quando é disparado |3298| Matcher | Quando é disparado |
3299| :------- | :--------------------------------------------------------------------------------------------------------------------------------- |3299| :- | :- |
3300| `manual` | `/compact` |3300| `manual` | `/compact` |
3301| `auto` | Compactação automática quando a conversa atinge a [janela de compactação automática](/docs/pt/model-config#set-the-auto-compact-window) |3301| `auto` | Compactação automática quando a conversa atinge a [janela de compactação automática](/docs/pt/model-config#set-the-auto-compact-window) |
3302 3302
3332Os mesmos valores de matcher se aplicam como para `PreCompact`:3332Os mesmos valores de matcher se aplicam como para `PreCompact`:
3333 3333
3334| Matcher | Quando é disparado |3334| Matcher | Quando é disparado |
3335| :------- | :-------------------------------------------------------------------------------------------------------------------------------------- |3335| :- | :- |
3336| `manual` | Após `/compact` |3336| `manual` | Após `/compact` |
3337| `auto` | Após compactação automática quando a conversa atinge a [janela de compactação automática](/docs/pt/model-config#set-the-auto-compact-window) |3337| `auto` | Após compactação automática quando a conversa atinge a [janela de compactação automática](/docs/pt/model-config#set-the-auto-compact-window) |
3338 3338
3450Além dos [campos de entrada comuns](#common-input-fields), os hooks PreModelSwitch recebem os campos nesta tabela. Os últimos cinco descrevem qual é o custo de reenviar a conversa para o novo modelo, portanto um hook pode mostrar essa figura antes da mudança acontecer.3450Além dos [campos de entrada comuns](#common-input-fields), os hooks PreModelSwitch recebem os campos nesta tabela. Os últimos cinco descrevem qual é o custo de reenviar a conversa para o novo modelo, portanto um hook pode mostrar essa figura antes da mudança acontecer.
3451 3451
3452| Campo | Tipo | Descrição |3452| Campo | Tipo | Descrição |
3453| :-------------------------- | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3453| :- | :- | :- |
3454| `from_model` | string | ID de modelo da mudança de |3454| `from_model` | string | ID de modelo da mudança de |
3455| `to_model` | string | ID de modelo da mudança para. O matcher compara contra o nome canônico deste modelo |3455| `to_model` | string | ID de modelo da mudança para. O matcher compara contra o nome canônico deste modelo |
3456| `requested_model` | string ou `null` | O modelo que a solicitação nomeou: um alias como `opus`, um ID de modelo completo, ou `null` quando a solicitação foi para o modelo padrão |3456| `requested_model` | string ou `null` | O modelo que a solicitação nomeou: um alias como `opus`, um ID de modelo completo, ou `null` quando a solicitação foi para o modelo padrão |
3490Para controle mais fino, retorne `permissionDecision` e `permissionDecisionReason` em um objeto `hookSpecificOutput`, como em [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` aceita `"allow"`, `"deny"` e `"ask"`. Não aceita `"defer"`, `updatedInput` ou `additionalContext`. A tabela abaixo descreve ambos os campos:3490Para controle mais fino, retorne `permissionDecision` e `permissionDecisionReason` em um objeto `hookSpecificOutput`, como em [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` aceita `"allow"`, `"deny"` e `"ask"`. Não aceita `"defer"`, `updatedInput` ou `additionalContext`. A tabela abaixo descreve ambos os campos:
3491 3491
3492| Campo | Descrição |3492| Campo | Descrição |
3493| :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3493| :- | :- |
3494| `permissionDecision` | `"allow"` prossegue e pula a [confirmação que Claude Code mostra enquanto o cache de prompt está quente](/docs/pt/prompt-caching#switching-models). `"deny"` cancela a mudança. `"ask"` solicita ao usuário para confirmá-la |3494| `permissionDecision` | `"allow"` prossegue e pula a [confirmação que Claude Code mostra enquanto o cache de prompt está quente](/docs/pt/prompt-caching#switching-models). `"deny"` cancela a mudança. `"ask"` solicita ao usuário para confirmá-la |
3495| `permissionDecisionReason` | Para `"deny"`, mostrado ao usuário como o motivo pelo qual a mudança foi bloqueada, ou retornado como o erro para uma solicitação `set_model`. Para `"ask"`, mostrado no prompt de confirmação. Ignorado para `"allow"` |3495| `permissionDecisionReason` | Para `"deny"`, mostrado ao usuário como o motivo pelo qual a mudança foi bloqueada, ou retornado como o erro para uma solicitação `set_model`. Para `"ask"`, mostrado no prompt de confirmação. Ignorado para `"allow"` |
3496 3496
3570Claude Code pega seu stdout de [texto simples](#exit-code-0) do hook ao sair com 0, ou `additionalContext` de saída JSON, e o entrega ao Claude com a próxima solicitação após a mudança. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar:3570Claude Code pega seu stdout de [texto simples](#exit-code-0) do hook ao sair com 0, ou `additionalContext` de saída JSON, e o entrega ao Claude com a próxima solicitação após a mudança. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar:
3571 3571
3572| Campo | Descrição |3572| Campo | Descrição |
3573| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------- |3573| :- | :- |
3574| `additionalContext` | String adicionada ao contexto do Claude com a próxima solicitação. Veja [Adicionar contexto para Claude](#add-context-for-claude) |3574| `additionalContext` | String adicionada ao contexto do Claude com a próxima solicitação. Veja [Adicionar contexto para Claude](#add-context-for-claude) |
3575 3575
3576Se o hook não terminar dentro de cinco segundos após você enviar a próxima solicitação, Claude Code envia essa solicitação sem a saída e a anexa à solicitação seguinte em vez disso. Se o modelo mudar várias vezes antes da próxima solicitação, Claude Code entrega apenas a saída para a mudança de alvo do último modelo.3576Se o hook não terminar dentro de cinco segundos após você enviar a próxima solicitação, Claude Code envia essa solicitação sem a saída e a anexa à solicitação seguinte em vez disso. Se o modelo mudar várias vezes antes da próxima solicitação, Claude Code entrega apenas a saída para a mudança de alvo do último modelo.
3584O campo `reason` na entrada do hook indica por que a sessão terminou:3584O campo `reason` na entrada do hook indica por que a sessão terminou:
3585 3585
3586| Motivo | Descrição |3586| Motivo | Descrição |
3587| :---------------------------- | :------------------------------------------------------------------------------------ |3587| :- | :- |
3588| `clear` | Sessão limpa com comando `/clear` |3588| `clear` | Sessão limpa com comando `/clear` |
3589| `resume` | Sessão mudada via `/resume` interativo |3589| `resume` | Sessão mudada via `/resume` interativo |
3590| `logout` | Usuário fez logout |3590| `logout` | Usuário fez logout |
3691```3691```
3692 3692
3693| Campo | Valores | Descrição |3693| Campo | Valores | Descrição |
3694| :-------- | :---------------------------- | :------------------------------------------------------------------------------- |3694| :- | :- | :- |
3695| `action` | `accept`, `decline`, `cancel` | Se deve aceitar, recusar ou cancelar a solicitação |3695| `action` | `accept`, `decline`, `cancel` | Se deve aceitar, recusar ou cancelar a solicitação |
3696| `content` | object | Valores de campo de formulário a enviar. Usado apenas quando `action` é `accept` |3696| `content` | object | Valores de campo de formulário a enviar. Usado apenas quando `action` é `accept` |
3697 3697
3744```3744```
3745 3745
3746| Campo | Valores | Descrição |3746| Campo | Valores | Descrição |
3747| :-------- | :---------------------------- | :------------------------------------------------------------------------------------------ |3747| :- | :- | :- |
3748| `action` | `accept`, `decline`, `cancel` | Sobrescreve a ação do usuário |3748| `action` | `accept`, `decline`, `cancel` | Sobrescreve a ação do usuário |
3749| `content` | object | Sobrescreve valores de campo de formulário. Significativo apenas quando `action` é `accept` |3749| `content` | object | Sobrescreve valores de campo de formulário. Significativo apenas quando `action` é `accept` |
3750 3750
3834```3834```
3835 3835
3836| Campo | Obrigatório | Descrição |3836| Campo | Obrigatório | Descrição |
3837| :---------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3837| :- | :- | :- |
3838| `type` | sim | Deve ser `"prompt"` |3838| `type` | sim | Deve ser `"prompt"` |
3839| `prompt` | sim | O texto do prompt a enviar para o LLM. Use `$ARGUMENTS` como placeholder para a entrada JSON do hook. Se `$ARGUMENTS` não estiver presente, entrada JSON é anexada ao prompt |3839| `prompt` | sim | O texto do prompt a enviar para o LLM. Use `$ARGUMENTS` como placeholder para a entrada JSON do hook. Se `$ARGUMENTS` não estiver presente, entrada JSON é anexada ao prompt |
3840| `model` | não | Modelo a usar para avaliação. Padrão para um modelo rápido |3840| `model` | não | Modelo a usar para avaliação. Padrão para um modelo rápido |
3856```3856```
3857 3857
3858| Campo | Descrição |3858| Campo | Descrição |
3859| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3859| :- | :- |
3860| `ok` | `true` para permitir. Para `false`, veja o comportamento por evento abaixo |3860| `ok` | `true` para permitir. Para `false`, veja o comportamento por evento abaixo |
3861| `reason` | Obrigatório quando `ok` é `false` |3861| `reason` | Obrigatório quando `ok` é `false` |
3862| `impossible` | Opcional. O modelo o retorna com `ok: false` quando julga que a condição nunca pode ser satisfeita. Em `Stop` e `SubagentStop`, Claude Code então permite que o turno termine em vez de alimentar a razão de volta. Hooks de agente e outros eventos o ignoram |3862| `impossible` | Opcional. O modelo o retorna com `ok: false` quando julga que a condição nunca pode ser satisfeita. Em `Stop` e `SubagentStop`, Claude Code então permite que o turno termine em vez de alimentar a razão de volta. Hooks de agente e outros eventos o ignoram |