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) |
477| `asyncRewake` | não | Se `true`, executa em background e acorda Claude na saída do código 2. O stderr do hook, ou stdout se stderr estiver vazio, é mostrado ao Claude como um [lembrete do sistema](/docs/pt/glossary#system-reminder) para que possa reagir a uma falha de background de longa duração |477| `asyncRewake` | não | Se `true`, executa em background e acorda Claude na saída do código 2. O stderr do hook, ou stdout se stderr estiver vazio, é mostrado ao Claude como um [lembrete do sistema](/docs/pt/glossary#system-reminder) para que possa reagir a uma falha de background de longa duração |
478| `shell` | não | Shell a usar para este hook. Aceita `"bash"` ou `"powershell"`. Padrão é `"bash"`, ou `"powershell"` no Windows quando Git Bash não está instalado. Definir `"powershell"` executa o comando via PowerShell no Windows. Não requer `CLAUDE_CODE_USE_POWERSHELL_TOOL` já que hooks geram PowerShell diretamente. Ignorado quando `args` é definido |478| `shell` | não | Shell a usar para este hook. Aceita `"bash"` ou `"powershell"`. Padrão é `"bash"`, ou `"powershell"` no Windows quando Git Bash não está instalado. Definir `"powershell"` executa o comando via PowerShell no Windows. Não requer `CLAUDE_CODE_USE_POWERSHELL_TOOL` já que hooks geram PowerShell diretamente. Ignorado quando `args` é definido |
479| `onFailure` | não | O que acontece com a ação quando o hook falha: `"continue"`, o padrão, ou `"block"`. Consulte [Bloquear a ação quando um hook falha](#block-the-action-when-a-hook-fails). Requer Claude Code v2.1.295 ou posterior |479| `onFailure` | não | Se a ação que acionou o hook prossegue quando o hook falha: `"continue"` ou `"block"`. Consulte [Bloquear a ação quando um hook falha](#block-the-action-when-a-hook-fails) para `"block"` e para deixar o campo sem definir. Requer Claude Code v2.1.295 ou posterior |
480 480
481<a id="exec-form-and-shell-form" />481<a id="exec-form-and-shell-form" />
482 482
829 829
830* **Sucesso**: seu hook sai com 0. Claude Code aplica quaisquer campos de [saída JSON](#json-output) que seu hook imprimiu, e a ação prossegue, a menos que esses campos a bloqueiem ou neguem. [Hooks que iniciam um processo em segundo plano](#hooks-that-start-a-background-process) cobre a exceção.830* **Sucesso**: seu hook sai com 0. Claude Code aplica quaisquer campos de [saída JSON](#json-output) que seu hook imprimiu, e a ação prossegue, a menos que esses campos a bloqueiem ou neguem. [Hooks que iniciam um processo em segundo plano](#hooks-that-start-a-background-process) cobre a exceção.
831* **Erro bloqueador**: seu hook sai com 2. Em [eventos que podem bloquear](#exit-code-2-behavior-per-event), Claude Code interrompe a ação.831* **Erro bloqueador**: seu hook sai com 2. Em [eventos que podem bloquear](#exit-code-2-behavior-per-event), Claude Code interrompe a ação.
832* **Erro não-bloqueador**: seu hook sai com qualquer outro código, ou falha de alguma outra forma, como não iniciar ou imprimir JSON inválido. A ação prossegue, e em eventos como `PreToolUse` você vê um aviso `<hook name> hook error` na transcrição. Se você quiser que um hook com falha bloqueie a ação, defina [`onFailure: "block"`](#block-the-action-when-a-hook-fails).832* **Erro não-bloqueador**: seu hook sai com qualquer outro código, ou falha de alguma outra forma, como não iniciar ou imprimir JSON inválido. A ação prossegue, exceto para hooks [cuja falha bloqueia a ação](#block-the-action-when-a-hook-fails), por exemplo um hook com `onFailure` definido como `"block"`. Em eventos como `PreToolUse`, você vê um aviso `<hook name> hook error` na transcrição.
833 833
834O que seu hook imprime em stdout pode mudar o resultado. Por exemplo, se um hook `PreToolUse` sai com 1 mas imprime JSON que passa na validação, a execução é um sucesso e os campos JSON decidem o que acontece. Para encontrar o resultado do seu hook em um evento como `PreToolUse`, combine o que ele imprimiu em stdout na primeira coluna com seu código de saída no topo:834O que seu hook imprime em stdout pode mudar o resultado. Por exemplo, quando um hook `PreToolUse` sai com 1 mas imprime JSON que passa na validação, esse JSON ainda pode decidir o que acontece. Para encontrar o resultado do seu hook em um evento como `PreToolUse`, combine o que ele imprimiu em stdout na primeira coluna com seu código de saída no topo:
835 835
836| Stdout | Saída 0 | Saída 2 | Qualquer outro código de saída |836| Stdout | Saída 0 | Saída 2 | Qualquer outro código de saída |
837| :- | :- | :- | :- |837| :- | :- | :- | :- |
838| Objeto JSON que passa na [validação de esquema](#json-output) | Sucesso. Os campos se aplicam | Erro bloqueador. Claude Code ainda lê os campos, mas eles não podem sobrescrever o bloqueio | Sucesso. Claude Code ignora o código de saída, e apenas os campos decidem. Com [`onFailure: "block"`](#block-the-action-when-a-hook-fails), isso conta como uma falha |838| Objeto JSON que passa na [validação de esquema](#json-output) | Sucesso. Os campos se aplicam | Erro bloqueador. Claude Code ainda lê os campos, mas eles não podem sobrescrever o bloqueio | Sucesso. Claude Code ignora o código de saída, e apenas os campos decidem. Para hooks [cuja falha bloqueia a ação](#block-the-action-when-a-hook-fails), a execução conta como uma falha em vez disso |
839| JSON que [não pode ser analisado](#exit-code-0) ou falha na validação de esquema | Erro não-bloqueador. O aviso carrega a mensagem de análise ou validação | Erro bloqueador. Seu stderr é a razão | Erro não-bloqueador. O aviso carrega a mensagem de análise ou validação |839| JSON que [não pode ser analisado](#exit-code-0) ou falha na validação de esquema | Erro não-bloqueador. O aviso carrega a mensagem de análise ou validação | Erro bloqueador. Seu stderr é a razão | Erro não-bloqueador. O aviso carrega a mensagem de análise ou validação |
840| [Texto simples](#exit-code-0), ou nada | Sucesso | Erro bloqueador. Seu stderr é a razão | Erro não-bloqueador. O aviso carrega a primeira linha do seu stderr |840| [Texto simples](#exit-code-0), ou nada | Sucesso | Erro bloqueador. Seu stderr é a razão | Erro não-bloqueador. O aviso carrega a primeira linha do seu stderr |
841 841
864* **Duas ou mais linhas que cada uma analisa como JSON por conta própria, a primeira começando com `{` e a última terminando com `}`**: texto simples quando nenhuma linha é um objeto de saída JSON que define um campo, e uma falha de análise quando alguma é.864* **Duas ou mais linhas que cada uma analisa como JSON por conta própria, a primeira começando com `{` e a última terminando com `}`**: texto simples quando nenhuma linha é um objeto de saída JSON que define um campo, e uma falha de análise quando alguma é.
865* **Qualquer outra coisa que começa com `{` e termina com `}` mas não é JSON válido**: uma falha de análise.865* **Qualquer outra coisa que começa com `{` e termina com `}` mas não é JSON válido**: uma falha de análise.
866 866
867Quando Claude Code tenta analisar seu stdout como JSON e não consegue, ou o objeto analisado falha na [validação de esquema](#json-output), a execução é um [erro não-bloqueador](#exit-code-output). O aviso `<hook name> hook error` carrega a mensagem de análise ou validação. Nos eventos que adicionam stdout em texto simples como contexto, Claude Code não adiciona stdout que não conseguiu analisar.867A menos que o hook seja um [cuja falha bloqueia a ação](#block-the-action-when-a-hook-fails), uma falha de análise ou um objeto analisado que falha na [validação de esquema](#json-output) é um [erro não-bloqueador](#exit-code-output). O aviso `<hook name> hook error` carrega a mensagem de análise ou validação. Nos eventos que adicionam stdout em texto simples como contexto, Claude Code não adiciona stdout que não conseguiu analisar.
868 868
869Claude nunca vê stderr de um hook que sai com 0. Para lê-lo você mesmo em eventos como `PreToolUse`, ative [debug logging](#debug-hooks). Para exibir um aviso para Claude de um hook `PostToolUse` ou `PostToolUseFailure`, saia com 2 em vez disso para que [Claude veja o stderr](#exit-code-2-behavior-per-event) mesmo que a ferramenta já tenha executado.869Claude nunca vê stderr de um hook que sai com 0. Para lê-lo você mesmo em eventos como `PreToolUse`, ative [debug logging](#debug-hooks). Para exibir um aviso para Claude de um hook `PostToolUse` ou `PostToolUseFailure`, saia com 2 em vez disso para que [Claude veja o stderr](#exit-code-2-behavior-per-event) mesmo que a ferramenta já tenha executado.
870 870
907 Outros códigos de saída907 Outros códigos de saída
908</h4>908</h4>
909 909
910Quando seu hook sai com um código diferente de 0 ou 2 e imprime texto simples ou nada em stdout, a execução é um [erro não-bloqueador](#exit-code-output). Você vê um aviso `<hook name> hook error` na transcrição com `Failed with non-blocking status code:` e a primeira linha do stderr do seu hook. Por exemplo, quando um hook `PreToolUse` em `Bash` imprime `something broke` em stderr e sai com 1, o aviso `PreToolUse:Bash hook error` carrega esta linha:910A menos que o hook seja um [cuja falha bloqueia a ação](#block-the-action-when-a-hook-fails), um código de saída diferente de 0 ou 2 com texto simples ou nada em stdout é um [erro não-bloqueador](#exit-code-output). Se a ação prosseguir, você vê um aviso `<hook name> hook error` na transcrição com `Failed with non-blocking status code:` e a primeira linha do stderr do seu hook.
911
912Por exemplo, quando um hook `PreToolUse` em `Bash` imprime `something broke` em stderr e sai com 1, o aviso `PreToolUse:Bash hook error` carrega esta linha:
911 913
912```text theme={null}914```text theme={null}
913Failed with non-blocking status code: something broke915Failed with non-blocking status code: something broke
915 917
916Para capturar o stderr completo em vez de sua primeira linha, ative [debug logging](#debug-hooks).918Para capturar o stderr completo em vez de sua primeira linha, ative [debug logging](#debug-hooks).
917 919
918Um hook que não consegue iniciar também é um erro não-bloqueador. Na forma shell, quando o caminho do script não existe ou não é executável, o shell sai com um código como 127 e o aviso carrega a mensagem do interpretador, por exemplo `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Quando você configura um hook de política, observe este aviso em sua primeira execução, porque um caminho digitado incorretamente em `settings.json` significa que o hook nunca executa. Para bloquear a ação em vez disso, defina [`onFailure: "block"`](#block-the-action-when-a-hook-fails).920A menos que o hook seja um [cuja falha bloqueia a ação](#block-the-action-when-a-hook-fails), um hook que não consegue iniciar também é um erro não-bloqueador. Na forma shell, quando o caminho do script não existe ou não é executável, o shell sai com um código como 127 e o aviso carrega a mensagem do interpretador. Por exemplo, quando o caminho do script não existe, o aviso carrega uma linha como esta:
921
922```text theme={null}
923Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory
924```
925
926Quando você configura um hook de política, observe este aviso em sua primeira execução, porque um caminho digitado incorretamente em `settings.json` significa que o hook nunca executa. Para bloquear a ação quando o hook não consegue iniciar, defina [`onFailure: "block"`](#block-the-action-when-a-hook-fails).
919 927
920<Warning>928<Warning>
921 Sem JSON válido em stdout, Claude Code trata código de saída 1 como um erro não-bloqueador, mesmo que 1 seja o código de falha Unix convencional. Se seu hook se destina a impor uma política, use `exit 2`.929 Código de saída 1 sem saída JSON válida é um erro não-bloqueador, a menos que o hook seja um [cuja falha bloqueia a ação](#block-the-action-when-a-hook-fails), mesmo que 1 seja o código de falha Unix convencional. Se seu hook se destina a impor uma política, use `exit 2`.
922</Warning>930</Warning>
923 931
924<h4 id="timeouts">932<h4 id="timeouts">
929 937
930Em [`PreModelSwitch`](#premodelswitch), um hook cancelado em seu timeout bloqueia a mudança de modelo. Em `PreToolUse`, as duas famílias de hook diferem:938Em [`PreModelSwitch`](#premodelswitch), um hook cancelado em seu timeout bloqueia a mudança de modelo. Em `PreToolUse`, as duas famílias de hook diferem:
931 939
932* Um hook `command`, `http` ou `mcp_tool` expirado não bloqueia a chamada da ferramenta. A chamada continua através do [fluxo de permissão](/docs/pt/permissions) normal, portanto não conte com um hook travado para agir como um portão. Para bloquear a chamada quando um hook `command` ou `http` atinge o timeout, defina [`onFailure: "block"`](#block-the-action-when-a-hook-fails).940* Um hook `command`, `http` ou `mcp_tool` expirado não bloqueia a chamada da ferramenta, exceto para hooks [cuja falha bloqueia a ação](#block-the-action-when-a-hook-fails). A chamada continua através do [fluxo de permissão](/docs/pt/permissions) normal, portanto não conte com um hook travado para agir como um portão. Para bloquear a chamada quando um hook `command` ou `http` atinge o timeout, defina [`onFailure: "block"`](#block-the-action-when-a-hook-fails).
933* Um hook de callback [Agent SDK](/docs/pt/agent-sdk/hooks) que excede seu timeout [bloqueia a chamada da ferramenta](#pretooluse).941* Um hook de callback [Agent SDK](/docs/pt/agent-sdk/hooks) que excede seu timeout [bloqueia a chamada da ferramenta](#pretooluse).
934 942
935<h4 id="hooks-that-start-a-background-process">943<h4 id="hooks-that-start-a-background-process">
959 Bloquear a ação quando um hook falha967 Bloquear a ação quando um hook falha
960</h4>968</h4>
961 969
962Na maioria dos eventos, quando um hook falha ou atinge o timeout, Claude Code ainda executa a ação, portanto um hook de política com um caminho errado ou um script que trava deixa tudo passar. Para bloquear a ação em vez disso, defina `"onFailure": "block"` em um hook `command` ou `http`. O valor padrão é `"continue"`. Requer Claude Code v2.1.295 ou posterior.970Na maioria dos eventos, quando um hook falha ou atinge o timeout, Claude Code ainda executa a ação. Um hook de política com um caminho errado ou um script que trava então deixa tudo passar. Para bloquear a ação em vez disso, defina `"onFailure": "block"` em um hook `command` ou `http`. Requer Claude Code v2.1.295 ou posterior.
971
972<Note>
973 No Windows sem Git Bash, um hook de comando `PreToolUse` ou `PermissionRequest` em forma shell que falha com `onFailure` não definido pode, em vez disso, [bloquear a chamada de ferramenta](#failed-hooks-on-windows-without-git-bash).
974</Note>
963 975
964Este hook `PreToolUse` em `.claude/settings.json` executa um script do projeto antes de cada comando Bash, e bloqueia o comando se o script falhar:976Este hook `PreToolUse` em `.claude/settings.json` executa um script do projeto antes de cada comando Bash, e bloqueia o comando se o script falhar:
965 977
1007* **Hooks `Stop`, `SubagentStop`, `TaskCompleted` e `TeammateIdle`**: o código de saída 2 nesses eventos manda Claude de volta para continuar trabalhando, e Claude não consegue reparar um hook que não executa1019* **Hooks `Stop`, `SubagentStop`, `TaskCompleted` e `TeammateIdle`**: o código de saída 2 nesses eventos manda Claude de volta para continuar trabalhando, e Claude não consegue reparar um hook que não executa
1008* **Hooks de comando em segundo plano**: hooks de comando que definem [`async` ou `asyncRewake`](#run-hooks-in-the-background)1020* **Hooks de comando em segundo plano**: hooks de comando que definem [`async` ou `asyncRewake`](#run-hooks-in-the-background)
1009 1021
1022<h4 id="failed-hooks-on-windows-without-git-bash">
1023 Hooks com falha no Windows sem Git Bash
1024</h4>
1025
1026Se o erro de uma chamada de ferramenta bloqueada incluir este texto, um hook de comando `PreToolUse` ou `PermissionRequest` falhou ou atingiu o timeout e bloqueou a chamada:
1027
1028```text theme={null}
1029blocking because Git Bash wasn't found and this hook doesn't set "shell" to "powershell", so only exit code 0 or 2 counts as its verdict.
1030```
1031
1032Um hook em forma shell sem `shell` definido é executado no PowerShell quando o Git Bash não está instalado, e um script escrito para Bash pode não funcionar ali como foi escrito. Escolha a correção que corresponde ao seu hook:
1033
1034* **O hook é escrito para Bash**: instale o [Git for Windows](https://git-scm.com/downloads/win), ou defina [`CLAUDE_CODE_GIT_BASH_PATH`](/docs/pt/env-vars) se o Git Bash estiver instalado em um local onde o Claude Code não o encontra, e então inicie uma nova sessão
1035* **O hook executa um único `.exe`, não um arquivo `.cmd` ou `.bat`**: coloque o programa em `command` e seus argumentos em `args` para usar a [forma exec](#exec-form-and-shell-form), e adicione [`"onFailure": "block"`](#block-the-action-when-a-hook-fails). Claude Code então inicia o programa sem shell. Sem `"onFailure": "block"`, a chamada pode prosseguir quando o programa falha, está ausente ou atinge o timeout
1036* **O hook é escrito para PowerShell**: adicione `"shell": "powershell"` e [`"onFailure": "block"`](#block-the-action-when-a-hook-fails) ao hook. Sem `"onFailure": "block"`, a chamada pode prosseguir quando o hook ainda falha ou atinge o timeout. Para descobrir por que o hook falhou, verifique o [log de debug](#debug-hooks)
1037* **A ação deve prosseguir quando o hook falha**: adicione `"onFailure": "continue"` ao hook
1038
1039Para um hook que mostra este erro, qualquer código de saída diferente de 0 ou 2 conta como uma [falha](#block-the-action-when-a-hook-fails), mesmo quando o hook imprime JSON que não nega a chamada.
1040
1010<h4 id="exit-code-2-behavior-per-event">1041<h4 id="exit-code-2-behavior-per-event">
1011 Comportamento de código de saída 2 por evento1042 Comportamento de código de saída 2 por evento
1012</h4>1043</h4>
1060* **2xx com corpo vazio**: sucesso, equivalente a código de saída 0 sem saída1091* **2xx com corpo vazio**: sucesso, equivalente a código de saída 0 sem saída
1061* **2xx com corpo de objeto JSON**: analisado usando o mesmo esquema [saída JSON](#json-output) que hooks de comando. Um corpo que falha na validação de esquema é um erro não-bloqueador1092* **2xx com corpo de objeto JSON**: analisado usando o mesmo esquema [saída JSON](#json-output) que hooks de comando. Um corpo que falha na validação de esquema é um erro não-bloqueador
1062* **2xx com qualquer outro corpo, como texto simples**: erro não-bloqueador, tratado da mesma forma que um status não-2xx. Claude Code não adiciona o texto ao contexto de Claude1093* **2xx com qualquer outro corpo, como texto simples**: erro não-bloqueador, tratado da mesma forma que um status não-2xx. Claude Code não adiciona o texto ao contexto de Claude
1063* **Status não-2xx**: erro não-bloqueador, execução continua1094* **Status não-2xx**: erro não-bloqueador
1064* **Falha de conexão**: erro não-bloqueador, execução continua1095* **Falha de conexão**: erro não-bloqueador
1065* **Timeout**: o hook é cancelado, conforme descrito em [Timeouts](#timeouts)1096* **Timeout**: o hook é cancelado, conforme descrito em [Timeouts](#timeouts)
1066 1097
1067Hooks HTTP não podem sinalizar um erro bloqueador apenas através do código de status: um status não-2xx ou uma conexão com falha é um [erro não-bloqueador](#exit-code-output). Para bloquear uma chamada de ferramenta ou negar uma permissão, retorne uma resposta 2xx com um corpo JSON contendo os campos de decisão apropriados. Para bloquear a ação quando a requisição falha ou retorna um status não-2xx, defina [`onFailure: "block"`](#block-the-action-when-a-hook-fails).1098Após um [erro não-bloqueador](#exit-code-output), a ação prossegue, a menos que o hook seja um [cuja falha bloqueia a ação](#block-the-action-when-a-hook-fails). Para bloquear uma chamada de ferramenta ou negar uma permissão, retorne uma resposta 2xx com um corpo JSON contendo os [campos de decisão](#decision-control) apropriados. Para bloquear a ação quando a requisição falha ou retorna um status não-2xx, defina [`onFailure: "block"`](#block-the-action-when-a-hook-fails).
1068 1099
1069<h3 id="json-output">1100<h3 id="json-output">
1070 Saída JSON1101 Saída JSON
1573}1604}
1574```1605```
1575 1606
1607Quando o prompt é uma [skill](/docs/pt/skills) ou um comando personalizado que você digitou, como `/deploy staging`, o hook recebe essa linha como você a digitou, em vez do conteúdo expandido da skill. Se o hook bloquear o prompt, o comando não é executado, portanto os comandos de shell que a skill [injeta com `` !`<command>` ``](/docs/pt/skills#inject-dynamic-context) também não são executados. Para fazer a correspondência pelo nome ou pelos argumentos do comando, use [UserPromptExpansion](#userpromptexpansion).
1608
1576<h4 id="userpromptsubmit-decision-control">1609<h4 id="userpromptsubmit-decision-control">
1577 Controle de decisão do UserPromptSubmit1610 Controle de decisão do UserPromptSubmit
1578</h4>1611</h4>
2076 2109
2077| Campo | Descrição |2110| Campo | Descrição |
2078| :- | :- |2111| :- | :- |
2079| `permissionDecision` | `"allow"` ignora o prompt de permissão, exceto para as [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves), para [leituras de caminhos de rede](/docs/pt/permissions#network-paths) e para `AskUserQuestion` e `ExitPlanMode`, que precisam de [`updatedInput` associado a ele](#allow-with-updatedinput). `"deny"` impede a chamada de ferramenta. `"ask"` pede ao usuário que confirme. `"defer"` sai de forma controlada para que a ferramenta possa ser retomada mais tarde. As [regras de negação e de pergunta](/docs/pt/permissions#manage-permissions) ainda são avaliadas independentemente do que o hook retorna |2112| `permissionDecision` | `"allow"` pula o prompt de permissão, exceto para [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves) e [leituras de caminhos de rede](/docs/pt/permissions#network-paths). `AskUserQuestion` e `ExitPlanMode` precisam de [`updatedInput` combinado com `"allow"`](#allow-with-updatedinput). Para o modo de planejamento, consulte [Aprovações de hooks no modo de planejamento](/docs/pt/permissions#hook-approvals-in-plan-mode). `"deny"` impede a chamada de ferramenta. `"ask"` solicita que o usuário confirme. `"defer"` encerra de forma controlada para que a ferramenta possa ser retomada mais tarde. [Regras de negação e de confirmação](/docs/pt/permissions#manage-permissions) ainda são avaliadas independentemente do que o hook retornar |
2080| `permissionDecisionReason` | Para `"ask"`, mostrado ao usuário no prompt de permissão. Quando o Claude Code [nega a chamada](/docs/pt/headless#turn-off-permission-prompts-in-unattended-runs) em uma execução `-p` em que ninguém pode responder a esse prompt, o Claude lê o motivo no resultado da ferramenta. Para `"deny"`, mostrado ao Claude. Para `"allow"` e `"defer"`, gravado apenas no [log de depuração](#debug-hooks) |2113| `permissionDecisionReason` | Para `"ask"`, mostrado ao usuário no prompt de permissão. Quando o Claude Code [nega a chamada](/docs/pt/headless#turn-off-permission-prompts-in-unattended-runs) em uma execução `-p` em que ninguém pode responder a esse prompt, o Claude lê o motivo no resultado da ferramenta. Para `"deny"`, mostrado ao Claude. Para `"allow"` e `"defer"`, gravado apenas no [log de depuração](#debug-hooks) |
2081| `updatedInput` | Modifica os parâmetros de entrada da ferramenta antes da execução. Substitui o objeto de entrada inteiro, portanto inclua os campos inalterados junto com os modificados. O Claude Code avalia as regras de permissão e a [elegibilidade para segundo plano automático](/docs/pt/tools-reference#foreground-commands-that-move-to-the-background) de um comando Bash com base na entrada que seu hook retorna, e não na entrada que o Claude enviou. Combine com `"allow"` para aprovar automaticamente, ou com `"ask"` para mostrar a entrada modificada ao usuário. Para `"defer"`, é ignorado |2114| `updatedInput` | Modifica os parâmetros de entrada da ferramenta antes da execução. Substitui o objeto de entrada inteiro, portanto inclua os campos inalterados junto com os modificados. O Claude Code avalia as regras de permissão e a [elegibilidade para segundo plano automático](/docs/pt/tools-reference#foreground-commands-that-move-to-the-background) de um comando Bash com base na entrada que seu hook retorna, e não na entrada que o Claude enviou. Combine com `"allow"` para aprovar automaticamente, ou com `"ask"` para mostrar a entrada modificada ao usuário. Para `"defer"`, é ignorado |
2082| `additionalContext` | String adicionada ao contexto do Claude junto com o resultado da ferramenta. Ignorado quando `permissionDecision` é `"defer"`. Consulte [Adicionar contexto para o Claude](#add-context-for-claude) |2115| `additionalContext` | String adicionada ao contexto do Claude junto com o resultado da ferramenta. Ignorado quando `permissionDecision` é `"defer"`. Consulte [Adicionar contexto para o Claude](#add-context-for-claude) |
3718 3751
3719O Claude Code mostra ao usuário qualquer `systemMessage` que o seu hook retorne, independentemente da decisão, então um hook de relatório de custos pode retornar `{"systemMessage": "..."}` e terminar com 0.3752O Claude Code mostra ao usuário qualquer `systemMessage` que o seu hook retorne, independentemente da decisão, então um hook de relatório de custos pode retornar `{"systemMessage": "..."}` e terminar com 0.
3720 3753
3721Um hook PreModelSwitch que não responde antes do seu timeout bloqueia a troca. Para saber o que um timeout faz em outros eventos, consulte [Timeouts](#timeouts). O timeout padrão para este evento é de 30 segundos. O `PreModelSwitch` executa apenas hooks `command`, `http` e `mcp_tool`, então os padrões de `prompt` e `agent` não se aplicam.3754<h4 id="premodelswitch-timeouts-and-other-exit-codes">
3755 Timeouts e outros códigos de saída do PreModelSwitch
3756</h4>
3757
3758Um hook PreModelSwitch que não responde antes do seu timeout bloqueia a troca. O timeout padrão para este evento é de 30 segundos.
3722 3759
3723Um hook que termina com um código diferente de 0 ou 2 e não imprime nenhuma decisão JSON é um erro não bloqueante, conforme descrito em [Outros códigos de saída](#other-exit-codes).3760Para saber o que um código de saída diferente de 0 ou 2 faz, consulte [Outros códigos de saída](#other-exit-codes).
3724 3761
3725<h3 id="postmodelswitch">3762<h3 id="postmodelswitch">
3726 PostModelSwitch3763 PostModelSwitch