4 4
5# Configurar permissões5# Configurar permissões
6 6
7> Controle como seu agente usa ferramentas com modos de permissão, hooks e regras declarativas de permitir/negar.7> Controle como seu agente usa ferramentas com modos de permissão, hooks e regras declarativas de permissão/negação.
8 8
9O Claude Agent SDK fornece controles de permissão para gerenciar como Claude usa ferramentas. Use modos de permissão e regras para definir o que é permitido automaticamente, e o callback [`canUseTool`](/docs/pt/agent-sdk/user-input) para lidar com tudo mais em tempo de execução.9O Claude Agent SDK fornece controles de permissão para gerenciar como Claude usa ferramentas. Use modos de permissão e regras para definir o que é permitido automaticamente, e o callback [`canUseTool`](/docs/pt/agent-sdk/user-input) para lidar com tudo mais em tempo de execução.
10 10
16 16
17<Steps>17<Steps>
18 <Step title="Hooks">18 <Step title="Hooks">
19 Execute [hooks](/docs/pt/agent-sdk/hooks) primeiro. Um hook pode negar a chamada completamente ou passá-la adiante. Um hook que retorna `allow` não ignora as regras de negar e perguntar abaixo; essas são avaliadas independentemente do resultado do hook. Um hook `PreToolUse` allow também não pode aprovar uma remoção `rm` ou `rmdir` direcionada a um [caminho crítico](/docs/pt/permission-modes#critical-paths).19 Execute [hooks](/docs/pt/agent-sdk/hooks) primeiro. Um hook pode negar a chamada completamente ou deixá-la passar. Um hook que retorna `allow` não ignora as regras de negação e pergunta abaixo; essas são avaliadas independentemente do resultado do hook. Um hook `PreToolUse` allow também não pode aprovar uma remoção `rm` ou `rmdir` direcionada a um [caminho crítico](/docs/pt/permission-modes#critical-paths).
20 </Step>20 </Step>
21 21
22 <Step title="Regras de negação">22 <Step title="Regras de negação">
23 Verifique as regras `deny` (de `disallowed_tools` e [settings.json](/docs/pt/settings-reference#permission-settings)). Se uma regra de negação corresponder, a ferramenta é bloqueada, mesmo no modo `bypassPermissions`. Regras com nome simples como `Bash` removem a ferramenta do contexto do Claude antes desta avaliação começar, portanto apenas regras com escopo como `Bash(rm *)` são verificadas neste passo.23 Verifique as regras `deny` (de `disallowed_tools` e [settings.json](/docs/pt/settings-reference#permission-settings)). Se uma regra de negação corresponder, a ferramenta é bloqueada, mesmo no modo `bypassPermissions`. Regras de negação com nome simples como `Bash` removem a ferramenta do contexto do Claude antes desta avaliação começar, portanto apenas regras com escopo como `Bash(rm *)` são verificadas nesta etapa.
24 </Step>24 </Step>
25 25
26 <Step title="Regras de pergunta">26 <Step title="Regras de pergunta">
27 Verifique as regras `ask` de [settings.json](/docs/pt/settings-reference#permission-settings). Se uma regra de pergunta corresponder, a chamada passa para seu callback [`canUseTool`](/docs/pt/agent-sdk/user-input) para confirmação, mesmo no modo `bypassPermissions`.27 Verifique as regras `ask` de [settings.json](/docs/pt/settings-reference#permission-settings). Se uma regra de pergunta corresponder, a chamada passa para seu callback [`canUseTool`](/docs/pt/agent-sdk/user-input) para confirmação, mesmo no modo `bypassPermissions`.
28 28
29 Ferramentas que requerem interação do usuário se comportam da mesma forma: `AskUserQuestion` e ferramentas MCP cujo servidor define [`_meta["anthropic/requiresUserInteraction"]`](/docs/pt/mcp#require-approval-for-a-specific-tool) sempre passam para o callback, mesmo quando uma regra de permitir corresponde. No modo `dontAsk` ambos os casos são negados, porque esse modo nunca solicita. A anotação MCP requer Claude Code v2.1.199 ou posterior.29 Ferramentas que requerem interação do usuário se comportam da mesma forma: `AskUserQuestion` e ferramentas MCP cujo servidor define [`_meta["anthropic/requiresUserInteraction"]`](/docs/pt/mcp#require-approval-for-a-specific-tool) sempre passam para o callback, mesmo quando uma regra de permissão corresponde. No modo `dontAsk` ambos os casos são negados, porque esse modo nunca solicita. A anotação MCP requer Claude Code v2.1.199 ou posterior.
30 30
31 Ferramentas do conector [claude.ai](/docs/pt/mcp#organization-controls-on-connector-tools) que sua organização definiu como `ask` também saem do fluxo neste passo. Cada chamada passa para o callback, mesmo no modo `bypassPermissions` e mesmo quando uma regra de permitir corresponde. O callback recebe o motivo `Sua organização requer aprovação para esta ferramenta`. No modo `dontAsk` a chamada é negada, porque esse modo nunca solicita.31 Ferramentas do conector [claude.ai](/docs/pt/mcp#organization-controls-on-connector-tools) que sua organização definiu como `ask` também saem do fluxo nesta etapa. Cada chamada passa para o callback, mesmo no modo `bypassPermissions` e mesmo quando uma regra de permissão corresponde. O callback recebe o motivo `Your organization requires approval for this tool`. No modo `dontAsk` a chamada é negada, porque esse modo nunca solicita.
32 </Step>32 </Step>
33 33
34 <Step title="Modo de permissão">34 <Step title="Modo de permissão">
35 Aplique o [modo de permissão](#permission-modes) ativo:35 Aplique o [modo de permissão](#permission-modes) ativo:
36 36
37 * No modo `bypassPermissions`, Claude Code aprova tudo que chega a este passo, exceto remoções `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths), que passam adiante.37 * No modo `bypassPermissions`, Claude Code aprova tudo que chega a esta etapa, exceto remoções `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths), que passam para a próxima etapa.
38 * No modo `acceptEdits`, Claude Code aprova as operações de arquivo listadas em [Modo Accept edits](#accept-edits-mode-acceptedits).38 * No modo `acceptEdits`, Claude Code aprova as operações de arquivo listadas em [Modo Accept edits](#accept-edits-mode-acceptedits).
39 * No modo `plan`, Claude Code envia ferramentas de edição de arquivo e escrita de shell para seu callback `canUseTool` independentemente das regras de permitir, portanto operações de escrita não podem ser aprovadas automaticamente durante o planejamento.39 * No modo `plan`, Claude Code envia ferramentas de edição de arquivo e escrita de shell para seu callback `canUseTool` independentemente das regras de permissão, para que operações de escrita não possam ser aprovadas automaticamente durante o planejamento.
40 * Em outros modos, a solicitação passa adiante.40 * Em outros modos, a solicitação passa para a próxima etapa.
41 </Step>41 </Step>
42 42
43 <Step title="Regras de permitir">43 <Step title="Regras de permissão">
44 Verifique as regras `allow` (de `allowed_tools` e settings.json). Se uma regra corresponder, a ferramenta é aprovada. Uma chamada que a ferramenta aprova por conta própria é resolvida neste passo também, sem necessidade de regra: por exemplo uma leitura de arquivo dentro de seus diretórios de trabalho ou um [comando Bash somente leitura](/docs/pt/permissions#read-only-commands). Remoções `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths) nunca são aprovadas por uma regra de permitir: elas chegam ao seu callback nos modos que solicitam, vão para o [classificador](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) no modo `auto` no Claude Code v2.1.218 ou posterior, e são negadas no modo `dontAsk`.44 Verifique as regras `allow` (de `allowed_tools` e settings.json). Se uma regra corresponder, a ferramenta é aprovada. Uma chamada que a ferramenta aprova por conta própria é resolvida nesta etapa também, sem necessidade de regra: por exemplo uma leitura de arquivo dentro de seus diretórios de trabalho ou um [comando Bash somente leitura](/docs/pt/permissions#read-only-commands). Remoções `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths) nunca são aprovadas por uma regra de permissão: elas chegam ao seu callback nos modos que solicitam, vão para o [classificador](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) no modo `auto` no Claude Code v2.1.218 ou posterior, e são negadas no modo `dontAsk`.
45 </Step>45 </Step>
46 46
47 <Step title="Callback canUseTool">47 <Step title="Callback canUseTool">
48 Se não for resolvido por nenhum dos anteriores, chame seu callback [`canUseTool`](/docs/pt/agent-sdk/user-input) para uma decisão. No modo `dontAsk`, este passo é ignorado e a ferramenta é negada.48 Se não for resolvido por nenhum dos anteriores, chame seu callback [`canUseTool`](/docs/pt/agent-sdk/user-input) para uma decisão. No modo `dontAsk`, esta etapa é ignorada e a ferramenta é negada.
49 49
50 No SDK TypeScript, se você definir [`permissionPrompts: 'none'`](/docs/pt/agent-sdk/typescript#options), seu callback não é chamado neste passo. Um hook [`PermissionRequest`](/docs/pt/hooks#permissionrequest) ainda tem a chance de decidir, e se não o fizer, Claude Code nega a chamada. A opção requer Claude Code v2.1.259 ou posterior.50 No SDK TypeScript, se você definir [`permissionPrompts: 'none'`](/docs/pt/agent-sdk/typescript#options), seu callback não é chamado nesta etapa. Um hook [`PermissionRequest`](/docs/pt/hooks#permissionrequest) ainda tem a chance de decidir, e se não decidir, Claude Code nega a chamada. A opção requer Claude Code v2.1.259 ou posterior.
51 </Step>51 </Step>
52</Steps>52</Steps>
53 53
54<img src="https://mintcdn.com/claude-code/jYgs7qigNjO1Badj/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=jYgs7qigNjO1Badj&q=85&s=c771ad9085b1277d3708027a49c744bc" className="dark:hidden" alt="Diagrama do fluxo de avaliação de permissões em seis etapas correspondendo aos passos acima: uma solicitação de ferramenta passa por hooks, regras de negação, regras de pergunta, modo de permissão, regras de permitir e canUseTool. Hooks, regras de negação e canUseTool podem rotear para Bloqueado; bypass de modo de permissão, regras de permitir e canUseTool podem rotear para Executar; regras de pergunta rotear para canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow.svg" />54<img src="https://mintcdn.com/claude-code/jYgs7qigNjO1Badj/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=jYgs7qigNjO1Badj&q=85&s=c771ad9085b1277d3708027a49c744bc" className="dark:hidden" alt="Diagrama do fluxo de avaliação de permissões em seis etapas correspondendo às etapas acima: uma solicitação de ferramenta passa por hooks, regras de negação, regras de pergunta, modo de permissão, regras de permissão e canUseTool. Hooks, regras de negação e canUseTool podem rotear para Bloqueado; bypass do modo de permissão, regras de permissão e canUseTool podem rotear para Executar; regras de pergunta rotear para canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow.svg" />
55 55
56<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-sdk/permissions-flow-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=e53a91e9059cbf51852b7cedb4dd4251" className="hidden dark:block" alt="Diagrama do fluxo de avaliação de permissões em seis etapas correspondendo aos passos acima: uma solicitação de ferramenta passa por hooks, regras de negação, regras de pergunta, modo de permissão, regras de permitir e canUseTool. Hooks, regras de negação e canUseTool podem rotear para Bloqueado; bypass de modo de permissão, regras de permitir e canUseTool podem rotear para Executar; regras de pergunta rotear para canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow-dark.svg" />56<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-sdk/permissions-flow-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=e53a91e9059cbf51852b7cedb4dd4251" className="hidden dark:block" alt="Diagrama do fluxo de avaliação de permissões em seis etapas correspondendo às etapas acima: uma solicitação de ferramenta passa por hooks, regras de negação, regras de pergunta, modo de permissão, regras de permissão e canUseTool. Hooks, regras de negação e canUseTool podem rotear para Bloqueado; bypass do modo de permissão, regras de permissão e canUseTool podem rotear para Executar; regras de pergunta rotear para canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow-dark.svg" />
57 57
58Se você passar um callback `canUseTool` em uma configuração onde o SDK TypeScript espera que a ordem de avaliação aprove automaticamente as chamadas antes do callback ser consultado, o SDK emite um aviso de processo Node.js uma vez quando a consulta é construída. O código do aviso é `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Duas configurações o acionam:58Se você passar um callback `canUseTool` em uma configuração onde o SDK TypeScript espera que a ordem de avaliação aprove automaticamente as chamadas antes do callback ser consultado, o SDK emite um aviso de processo Node.js uma vez quando a consulta é construída. O código do aviso é `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Duas configurações o acionam:
59 59
60* `permissionMode: 'bypassPermissions'`, que aprova automaticamente cada chamada que chega ao passo do modo de permissão, exceto pelas [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves)60* `permissionMode: 'bypassPermissions'`, que aprova automaticamente cada chamada que chega à etapa do modo de permissão, exceto pelas [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves)
61* Cada entrada `allowedTools` simples como `"Read"`, que aprova automaticamente essa ferramenta inteira antes do callback ser consultado, exceto pelas [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves)61* Cada entrada `allowedTools` simples como `"Read"`, que aprova automaticamente essa ferramenta inteira antes do callback ser consultado, exceto pelas [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves)
62 62
63Entradas com um especificador como `Bash(ls *)` e o modo `acceptEdits` não o acionam, e regras de permitir provenientes de arquivos de configuração não são visíveis para a verificação.63Entradas com um especificador como `Bash(ls *)` e o modo `acceptEdits` não o acionam, e regras de permissão provenientes de arquivos de configuração não são visíveis para a verificação.
64 64
65Ouça com `process.on('warning', ...)` e corresponda o código para registrá-lo ou suprimi-lo. Para controlar cada chamada de ferramenta independentemente do modo e das regras, use um [hook `PreToolUse`](/docs/pt/agent-sdk/hooks) em vez disso.65Ouça com `process.on('warning', ...)` e corresponda o código para registrá-lo ou suprimi-lo. Para controlar cada chamada de ferramenta independentemente do modo e das regras, use um [hook `PreToolUse`](/docs/pt/agent-sdk/hooks).
66 66
67Esta página se concentra em **regras de permitir e negar** e **modos de permissão**. Para os outros passos:67Esta página se concentra em **regras de permissão e negação** e **modos de permissão**. Para as outras etapas:
68 68
69* **Hooks:** execute código personalizado para permitir, negar ou modificar solicitações de ferramentas. Consulte [Controlar execução com hooks](/docs/pt/agent-sdk/hooks).69* **Hooks:** execute código personalizado para permitir, negar ou modificar solicitações de ferramenta. Veja [Controlar execução com hooks](/docs/pt/agent-sdk/hooks).
70* **Callback canUseTool:** solicite aprovação dos usuários em tempo de execução, quando nenhum passo anterior resolver a chamada. Consulte [Lidar com aprovações e entrada do usuário](/docs/pt/agent-sdk/user-input).70* **Callback canUseTool:** solicite aprovação dos usuários em tempo de execução, quando nenhuma etapa anterior resolver a chamada. Veja [Lidar com aprovações e entrada do usuário](/docs/pt/agent-sdk/user-input).
71 71
72<h2 id="allow-and-deny-rules">72<h2 id="allow-and-deny-rules">
73 Regras de permitir e negar73 Regras de permissão e negação
74</h2>74</h2>
75 75
76`allowed_tools` e `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) adicionam entradas às listas de regras de permitir e negar no fluxo de avaliação acima. Se você nomear uma das [ferramentas de rastreamento de tarefas](/docs/pt/agent-sdk/todo-tracking#model-availability) em `allowed_tools`, Claude Code também opta a sessão. Qualquer outra ferramenta não listada em `allowed_tools` ainda está disponível para Claude, e uma chamada a ela que precisa de aprovação passa para o modo de permissão. Regras de negar se comportam de forma diferente dependendo se nomeiam uma ferramenta ou definem um padrão dentro de uma.76`allowed_tools` e `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) adicionam entradas às listas de regras de permissão e negação no fluxo de avaliação acima. Se você nomear uma das [ferramentas de rastreamento de tarefas](/docs/pt/agent-sdk/todo-tracking#model-availability) em `allowed_tools`, Claude Code também ativa a sessão. Qualquer outra ferramenta não listada em `allowed_tools` ainda está disponível para Claude, e uma chamada a ela que precisa de aprovação passa para o modo de permissão. As regras de negação se comportam de forma diferente dependendo se nomeiam uma ferramenta ou definem um padrão dentro de uma.
77 77
78| Opção | Efeito |78| Opção | Efeito |
79| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |79| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
80| `allowed_tools=["Read", "Grep"]` | `Read` e `Grep` são auto-aprovadas. Outras ferramentas não listadas aqui ainda existem, e chamadas a elas que precisam de aprovação passam para o modo de permissão e `canUseTool`. |80| `allowed_tools=["Read", "Grep"]` | `Read` e `Grep` são aprovadas automaticamente. Outras ferramentas não listadas aqui ainda existem, e chamadas a elas que precisam de aprovação passam para o modo de permissão e `canUseTool`. |
81| `disallowed_tools=["Bash"]` | A definição da ferramenta `Bash` é removida da solicitação. Claude não vê a ferramenta e não pode tentar usá-la. |81| `disallowed_tools=["Bash"]` | A definição da ferramenta `Bash` é removida da solicitação. Claude não vê a ferramenta e não pode tentar usá-la. |
82| `disallowed_tools=["Bash(rm *)"]` | `Bash` permanece disponível. Chamadas correspondentes a `rm *` [conforme escrito](/docs/pt/permissions#bash-rule-limits) são negadas em todos os modos de permissão, incluindo `bypassPermissions`. Outras chamadas de `Bash`, incluindo `/bin/rm`, passam para o modo de permissão. |82| `disallowed_tools=["Bash(rm *)"]` | `Bash` permanece disponível. Chamadas correspondentes a `rm *` [conforme escrito](/docs/pt/permissions#bash-rule-limits) são negadas em todos os modos de permissão, incluindo `bypassPermissions`. Outras chamadas `Bash`, incluindo `/bin/rm`, passam para o modo de permissão. |
83| `disallowed_tools=["*"]` | Toda definição de ferramenta é removida da solicitação. Globs de nome de ferramenta são suportados em regras de negar: `"*"` corresponde a todas as ferramentas e `"mcp__*"` corresponde a todas as ferramentas MCP em todos os servidores. |83| `disallowed_tools=["*"]` | Toda definição de ferramenta é removida da solicitação. Globs de nome de ferramenta são suportados em regras de negação: `"*"` corresponde a todas as ferramentas e `"mcp__*"` corresponde a todas as ferramentas MCP em todos os servidores. |
84 84
85Regras de permitir aceitam globs de nome de ferramenta apenas após um prefixo literal `mcp__<server>__`. O segmento do servidor deve estar livre de glob para que a regra nomeie um servidor específico que você configurou: `mcp__puppeteer__*` corresponde a todas as ferramentas do servidor `puppeteer`, e `mcp__github__get_*` corresponde às suas ferramentas `get_`. Uma entrada não ancorada como `allowed_tools=["*"]` ou `allowed_tools=["mcp__*"]` é ignorada com um aviso de inicialização e não auto-aprova nada.85As regras de permissão aceitam globs de nome de ferramenta apenas após um prefixo literal `mcp__<server>__`. O segmento do servidor deve estar livre de glob para que a regra nomeie um servidor específico que você configurou: `mcp__puppeteer__*` corresponde a todas as ferramentas do servidor `puppeteer`, e `mcp__github__get_*` corresponde às suas ferramentas `get_`. Uma entrada não ancorada como `allowed_tools=["*"]` ou `allowed_tools=["mcp__*"]` é ignorada com um aviso de inicialização e não aprova automaticamente nada.
86 86
87Regras com escopo para `Read` e `Edit` usam um padrão de caminho. Regras `Edit(path)` governam todas as ferramentas integradas que escrevem arquivos, incluindo `Write` e `NotebookEdit`; uma regra `Write(path)` nunca é correspondida pelas verificações de permissão de arquivo.87As regras com escopo para `Read` e `Edit` usam um padrão de caminho. As regras `Edit(path)` governam todas as ferramentas integradas que escrevem arquivos, incluindo `Write` e `NotebookEdit`; uma regra `Write(path)` nunca é correspondida pelas verificações de permissão de arquivo.
88 88
89Use `//path` para um caminho absoluto do sistema de arquivos: uma regra de negar de `Edit(//secrets/**)` bloqueia escritas em qualquer lugar sob `/secrets` no disco. Com uma única barra inicial, `Edit(/secrets/**)` ancora na fonte da regra em vez disso. Para regras passadas através de `allowed_tools` ou `disallowed_tools`, isso significa o diretório de trabalho da sessão, portanto a regra não bloqueia `/secrets` no disco. Consulte [Regras de Read e Edit](/docs/pt/permissions#read-and-edit) para as quatro formas de âncora e como regras de arquivos de configuração são resolvidas.89Use `//path` para um caminho absoluto do sistema de arquivos: uma regra de negação de `Edit(//secrets/**)` bloqueia escritas em qualquer lugar sob `/secrets` no disco. Com uma única barra inicial, `Edit(/secrets/**)` ancora na fonte da regra. Para regras passadas através de `allowed_tools` ou `disallowed_tools`, isso significa o diretório de trabalho da sessão, portanto a regra não bloqueia `/secrets` no disco. Veja [Regras Read e Edit](/docs/pt/permissions#read-and-edit) para as quatro formas de âncora e como as regras dos arquivos de configuração são resolvidas.
90 90
91<Warning>91<Warning>
92 **Ferramentas auto-aprovadas nunca chegam a `canUseTool`.** Uma chamada de ferramenta aprovada em qualquer etapa anterior, por `acceptEdits` ou `bypassPermissions`, ou por uma regra de permitir, ignora seu callback `canUseTool`, portanto verificações de permissão que você coloca lá são silenciosamente contornadas para essa ferramenta. `AskUserQuestion`, ferramentas MCP marcadas [`_meta["anthropic/requiresUserInteraction"]`](/docs/pt/mcp#require-approval-for-a-specific-tool), ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools), e remoções de `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths) ainda chegam ao callback, mesmo quando uma regra de permitir corresponde. No modo `auto`, remoções de caminho crítico vão para o [classificador](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) em vez do callback, enquanto as outras chamadas listadas aqui ainda chegam a ele; o roteamento do classificador requer Claude Code v2.1.218 ou posterior. No modo `dontAsk` essas chamadas são negadas em vez disso, sem invocar o callback.92 **Ferramentas aprovadas automaticamente nunca chegam a `canUseTool`.** Uma chamada de ferramenta aprovada em qualquer etapa anterior, por `acceptEdits` ou `bypassPermissions`, ou por uma regra de permissão, ignora seu callback `canUseTool`, portanto as verificações de permissão que você coloca lá são silenciosamente ignoradas para essa ferramenta. `AskUserQuestion`, ferramentas MCP marcadas [`_meta["anthropic/requiresUserInteraction"]`](/docs/pt/mcp#require-approval-for-a-specific-tool), ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools), e remoções `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths) ainda chegam ao callback, mesmo quando uma regra de permissão corresponde. No modo `auto`, as remoções de caminho crítico vão para o [classificador](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) em vez do callback, enquanto as outras chamadas listadas aqui ainda chegam a ele; o roteamento do classificador requer Claude Code v2.1.218 ou posterior. No modo `dontAsk` essas chamadas são negadas, sem invocar o callback.
93 93
94 A cobertura depende da forma da entrada: um nome simples como `Read` ou `mcp__github__get_issue` auto-aprova todas as chamadas para essa ferramenta, exceto as exceções acima, enquanto uma regra com escopo como `Bash(npm test *)` auto-aprova apenas chamadas correspondentes, e outras chamadas de `Bash` que precisam de aprovação ainda passam para o callback. Para verificações que devem ser executadas em todas as chamadas de ferramenta, use um hook [`PreToolUse`](/docs/pt/agent-sdk/hooks): hooks são executados antes de qualquer outra etapa, e uma negação de hook se aplica mesmo no modo `bypassPermissions`.94 A cobertura depende da forma da entrada: um nome simples como `Read` ou `mcp__github__get_issue` aprova automaticamente todas as chamadas a essa ferramenta, exceto as exceções acima, enquanto uma regra com escopo como `Bash(npm test *)` aprova automaticamente apenas chamadas correspondentes, e outras chamadas `Bash` que precisam de aprovação ainda passam para o callback. Para verificações que devem ser executadas em todas as chamadas de ferramenta, use um [hook `PreToolUse`](/docs/pt/agent-sdk/hooks): hooks são executados antes de qualquer outra etapa, e uma negação de hook se aplica mesmo no modo `bypassPermissions`.
95</Warning>95</Warning>
96 96
97Para um agente bloqueado, combine `allowedTools` com `permissionMode: "dontAsk"`:97Para um agente bloqueado, combine `allowedTools` com `permissionMode: "dontAsk"`:
103};103};
104```104```
105 105
106Ferramentas listadas são aprovadas, exceto pelas [ações que nenhum modo auto-aprova](/docs/pt/permission-modes#actions-no-mode-auto-approves), e toda outra chamada que solicitaria é negada em vez disso. Chamadas que não precisam de aprovação no modo `default` são executadas independentemente de você listá-las, como [comandos Bash somente leitura](/docs/pt/permissions#read-only-commands), ferramentas como `Agent` que não solicitam antes de executar, e leituras de arquivo dentro de seus diretórios de trabalho. Para colocar uma ferramenta completamente fora do alcance de Claude, adicione seu nome simples a `disallowedTools`.106As ferramentas listadas são aprovadas, exceto pelas [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves), e todas as outras chamadas que solicitariam aprovação são negadas. Chamadas que não precisam de aprovação no modo `default` são executadas independentemente de você listá-las, como [comandos Bash somente leitura](/docs/pt/permissions#read-only-commands), ferramentas como `Agent` que não solicitam antes de executar, e leituras de arquivo dentro de seus diretórios de trabalho. Para colocar uma ferramenta completamente fora do alcance de Claude, adicione seu nome simples a `disallowedTools`.
107 107
108<Warning>108<Warning>
109 **`allowed_tools` não restringe `bypassPermissions`.** `allowed_tools` pré-aprova apenas as ferramentas que você lista. Ferramentas não listadas não são correspondidas por nenhuma regra de permitir e passam para o modo de permissão, onde `bypassPermissions` as aprova. Definir `allowed_tools=["Read"]` junto com `permission_mode="bypassPermissions"` ainda aprova todas as ferramentas, incluindo `Bash`, `Write` e `Edit`. Se você precisar de `bypassPermissions` mas quiser que ferramentas específicas sejam bloqueadas, use `disallowed_tools`.109 **`allowed_tools` não restringe `bypassPermissions`.** `allowed_tools` aprova previamente as ferramentas que você lista. Outras ferramentas não listadas não são correspondidas por nenhuma regra de permissão e passam para o modo de permissão, onde `bypassPermissions` as aprova. Definir `allowed_tools=["Read"]` junto com `permission_mode="bypassPermissions"` ainda aprova todas as ferramentas, incluindo `Bash`, `Write` e `Edit`. Se você precisar de `bypassPermissions` mas quiser ferramentas específicas bloqueadas, use `disallowed_tools`.
110</Warning>110</Warning>
111 111
112Você também pode configurar regras de permitir, negar e perguntar declarativamente em `.claude/settings.json`. Essas regras são lidas quando a fonte de configuração `project` está habilitada, o que é o padrão para opções `query()`. Se você definir `setting_sources` (TypeScript: `settingSources`) explicitamente, inclua `"project"` para que se apliquem. Consulte [Configurações de permissão](/docs/pt/settings-reference#permission-settings) para a sintaxe das regras.112Você também pode configurar regras de permissão, negação e solicitação de forma declarativa em `.claude/settings.json`. Essas regras são lidas quando a fonte de configuração `project` está habilitada, o que é o padrão para opções `query()`. Se você definir `setting_sources` (TypeScript: `settingSources`) explicitamente, inclua `"project"` para que se apliquem. Veja [Configurações de permissão](/docs/pt/settings-reference#permission-settings) para a sintaxe das regras.
113 113
114<h2 id="permission-modes">114<h2 id="permission-modes">
115 Modos de permissão115 Modos de permissão
124O SDK suporta estes modos de permissão:124O SDK suporta estes modos de permissão:
125 125
126| Modo | Descrição | Comportamento da ferramenta |126| Modo | Descrição | Comportamento da ferramenta |
127| :------------------ | :---------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |127| :------------------ | :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
128| `default` | Comportamento de permissão padrão | Sem auto-aprovações baseadas em modo; chamadas que precisam de aprovação e não correspondem a nenhuma regra de permissão acionam seu callback `canUseTool` |128| `default` | Comportamento de permissão padrão | Sem aprovações automáticas baseadas em modo; chamadas que precisam de aprovação e não correspondem a nenhuma regra de permissão acionam seu callback `canUseTool` |
129| `dontAsk` | Negar em vez de solicitar | Qualquer chamada que de outra forma solicitaria é negada. Chamadas aprovadas por `allowed_tools` ou regras são executadas, assim como chamadas que não precisam de aprovação no modo `default`, como leituras de arquivo dentro de seus diretórios de trabalho e chamadas para `Agent`; ferramentas de conector [sua organização definida como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) e ferramentas que requerem interação do usuário são negadas mesmo se você as pré-aprovou, assim como remoções de `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths). `canUseTool` nunca é chamado |129| `dontAsk` | Negar em vez de solicitar | Qualquer chamada que de outra forma solicitaria é negada. Chamadas aprovadas por `allowed_tools` ou regras são executadas, assim como chamadas que não precisam de aprovação no modo `default`, como leituras de arquivo dentro de seus diretórios de trabalho e chamadas para `Agent`. Ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) e ferramentas que exigem interação do usuário são negadas mesmo que você as tenha pré-aprovado, assim como remoções `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths). `canUseTool` nunca é chamado |
130| `acceptEdits` | Auto-aceitar edições de arquivo | Edições de arquivo e [operações de sistema de arquivos](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) são automaticamente aprovadas |130| `acceptEdits` | Aceitar automaticamente edições de arquivo | Edições de arquivo e [operações do sistema de arquivos](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) são automaticamente aprovadas |
131| `bypassPermissions` | Ignorar verificações de permissão | As ferramentas são executadas sem solicitações de permissão, exceto pelas [ações que nenhum modo auto-aprova](/docs/pt/permission-modes#actions-no-mode-auto-approves). Use com cuidado |131| `bypassPermissions` | Contornar verificações de permissão | As ferramentas são executadas sem prompts de permissão, exceto pelas [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves). Use com cuidado |
132| `plan` | Modo de planejamento | Claude explora e planeja sem editar seus arquivos de origem; edições de arquivo nunca são auto-aprovadas e solicitam através de seu callback `canUseTool` |132| `plan` | Modo de planejamento | Claude explora e planeja sem editar seus arquivos de origem; edições de arquivo nunca são aprovadas automaticamente e solicitam através de seu callback `canUseTool` |
133| `auto` | Aprovações classificadas por modelo | Um classificador de modelo aprova ou nega solicitações de permissão. Consulte [Auto mode](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) para disponibilidade |133| `auto` | Aprovações classificadas pelo modelo | Um classificador de modelo aprova ou nega prompts de permissão. Consulte [Modo Auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) para disponibilidade |
134 134
135<Warning>135<Warning>
136 **Herança de subagentos:** Um subagentos é executado no modo de permissão da sessão pai, a menos que você defina `permissionMode` em sua [`AgentDefinition`](/docs/pt/agent-sdk/typescript#agentdefinition) e a sessão pai esteja em modo `default`, `dontAsk` ou `plan`. Mesmo assim, Claude Code nunca aplica um valor `"bypassPermissions"`. Um subagentos é executado em modo `bypassPermissions` apenas quando a sessão pai também está. A exceção `bypassPermissions` requer Claude Code v2.1.267 ou posterior.136 **Herança de subagente:** Um subagente é executado no modo de permissão da sessão pai, a menos que você defina `permissionMode` em sua [`AgentDefinition`](/docs/pt/agent-sdk/typescript#agentdefinition) e a sessão pai esteja em modo `default`, `dontAsk` ou `plan`. Mesmo assim, Claude Code nunca aplica um valor `"bypassPermissions"`. Um subagente é executado em modo `bypassPermissions` apenas quando a sessão pai também está. A exceção `bypassPermissions` requer Claude Code v2.1.267 ou posterior.
137 137
138 Subagentos podem ter prompts de sistema diferentes e comportamento menos restrito do que seu agente principal, portanto herdar `bypassPermissions` concede a eles acesso completo e autônomo ao sistema. As [ações que nenhum modo auto-aprova](/docs/pt/permission-modes#actions-no-mode-auto-approves) ainda se aplicam.138 Subagentes podem ter prompts de sistema diferentes e comportamento menos restrito do que seu agente principal, portanto herdar `bypassPermissions` concede a eles acesso completo e autônomo ao sistema. As [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves) ainda se aplicam.
139</Warning>139</Warning>
140 140
141<h3 id="set-permission-mode">141<h3 id="set-permission-mode">
190 </Tab>190 </Tab>
191 191
192 <Tab title="Durante streaming">192 <Tab title="Durante streaming">
193 Chame `set_permission_mode()` (Python) ou `setPermissionMode()` (TypeScript) para alterar o modo no meio da sessão. O novo modo entra em vigor imediatamente para todas as solicitações de ferramentas subsequentes. Isso permite que você comece restritivo e afrouxe as permissões conforme a confiança aumenta, por exemplo, alternando para `acceptEdits` após revisar a abordagem inicial de Claude.193 Chame `set_permission_mode()` (Python) ou `setPermissionMode()` (TypeScript) para alterar o modo durante a sessão. O novo modo entra em vigor imediatamente para todas as solicitações de ferramenta subsequentes. Isso permite que você comece restritivo e afrouxe as permissões conforme a confiança aumenta, por exemplo, alternando para `acceptEdits` após revisar a abordagem inicial de Claude.
194 194
195 <CodeGroup>195 <CodeGroup>
196 ```python Python theme={null}196 ```python Python theme={null}
254 Modo aceitar edições (`acceptEdits`)254 Modo aceitar edições (`acceptEdits`)
255</h4>255</h4>
256 256
257Auto-aprova operações de arquivo para que Claude possa editar código sem solicitar. Outras ferramentas (como comandos Bash que não são operações de sistema de arquivos) ainda requerem permissões normais.257Aprova automaticamente operações de arquivo para que Claude possa editar código sem solicitar. Outras ferramentas (como comandos Bash que não são operações do sistema de arquivos) ainda exigem permissões normais.
258 258
259**Operações auto-aprovadas:**259**Operações aprovadas automaticamente:**
260 260
261* Edições de arquivo (ferramentas Edit, Write)261* Edições de arquivo (ferramentas Edit, Write)
262* Comandos de sistema de arquivos: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`262* Comandos do sistema de arquivos: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`
263 263
264Ambos se aplicam apenas a caminhos dentro do diretório de trabalho ou `additionalDirectories`. No modo `acceptEdits`, Claude Code não auto-aprova a solicitação quando Claude:264Ambos se aplicam apenas a caminhos dentro do diretório de trabalho ou `additionalDirectories`. No modo `acceptEdits`, Claude Code não aprova automaticamente a solicitação quando Claude:
265 265
266* Trabalha em um caminho fora desse escopo266* Trabalha em um caminho fora desse escopo
267* Escreve em um caminho protegido267* Escreve em um caminho protegido
268* Remove um [caminho crítico](/docs/pt/permission-modes#critical-paths) com `rm` ou `rmdir`268* Remove um [caminho crítico](/docs/pt/permission-modes#critical-paths) com `rm` ou `rmdir`
269 269
270**Use quando:** você confia nas edições de Claude e quer iteração mais rápida, como durante prototipagem ou ao trabalhar em um diretório isolado.270**Use quando:** você confia nas edições de Claude e deseja iteração mais rápida, como durante prototipagem ou ao trabalhar em um diretório isolado.
271 271
272<h4 id="don’t-ask-mode-dontask">272<h4 id="don’t-ask-mode-dontask">
273 Modo não perguntar (`dontAsk`)273 Modo não perguntar (`dontAsk`)
274</h4>274</h4>
275 275
276Converte qualquer solicitação de permissão em uma negação, sem chamar `canUseTool`. Ferramentas pré-aprovadas por `allowed_tools`, regras de permissão em `settings.json` ou um hook são executadas normalmente, assim como chamadas que não precisam de aprovação no modo `default`, como leituras de arquivo dentro de seus diretórios de trabalho e chamadas para `Agent`. Ferramentas de conector [sua organização definida como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools), ferramentas que requerem interação do usuário e remoções de `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths) são negadas mesmo quando uma regra de permissão corresponde. Um allow de hook `PreToolUse` não limpa uma remoção de caminho crítico.276Converte qualquer prompt de permissão em uma negação, sem chamar `canUseTool`. Ferramentas pré-aprovadas por `allowed_tools`, regras de permissão em `settings.json` ou um hook são executadas normalmente, assim como chamadas que não precisam de aprovação no modo `default`, como leituras de arquivo dentro de seus diretórios de trabalho e chamadas para `Agent`. Ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools), ferramentas que exigem interação do usuário e remoções `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths) são negadas mesmo quando uma regra de permissão corresponde. Uma permissão de hook `PreToolUse` também não limpa uma remoção de caminho crítico.
277 277
278**Use quando:** você quer uma superfície de ferramenta fixa e explícita para um agente sem cabeça e prefere uma negação dura sobre confiança silenciosa em `canUseTool` estar ausente.278**Use quando:** você deseja uma superfície de ferramenta fixa e explícita para um agente sem interface e prefere uma negação definitiva em vez de depender silenciosamente de `canUseTool` estar ausente.
279 279
280<h4 id="bypass-permissions-mode-bypasspermissions">280<h4 id="bypass-permissions-mode-bypasspermissions">
281 Modo ignorar permissões (`bypassPermissions`)281 Modo contornar permissões (`bypassPermissions`)
282</h4>282</h4>
283 283
284Auto-aprova usos de ferramentas sem solicitar, exceto os casos listados no aviso abaixo. Hooks ainda são executados e podem bloquear operações se necessário.284Aprova automaticamente usos de ferramentas sem solicitar, exceto os casos listados no aviso abaixo. Hooks ainda são executados e podem bloquear operações se necessário.
285 285
286<Warning>286<Warning>
287 Use com extrema cautela. Claude tem acesso completo ao sistema neste modo. Use apenas em ambientes controlados onde você confia em todas as operações possíveis.287 Use com extrema cautela. Claude tem acesso completo ao sistema neste modo. Use apenas em ambientes controlados onde você confia em todas as operações possíveis.
288 288
289 `allowed_tools` não restringe este modo. Todas as ferramentas são aprovadas, não apenas as que você listou. Estes controles ainda se aplicam:289 `allowed_tools` não restringe este modo. Cada ferramenta é aprovada, não apenas as que você listou. Estes controles ainda se aplicam:
290 290
291 * Regras de negação, regras explícitas de `ask` e hooks são avaliados antes da verificação do modo e ainda podem bloquear uma ferramenta.291 * Regras de negação, regras explícitas `ask` e hooks são avaliados antes da verificação de modo e ainda podem bloquear uma ferramenta.
292 * Ferramentas de conector [sua organização definida como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools), ferramentas que requerem interação do usuário e remoções de `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths) ainda caem através de seu callback `canUseTool`.292 * Ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools), ferramentas que exigem interação do usuário e remoções `rm` e `rmdir` direcionadas a um [caminho crítico](/docs/pt/permission-modes#critical-paths) ainda caem para seu callback `canUseTool`.
293 * As [proteções de mensagens entre sessões](/docs/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) ainda se aplicam.293 * Os [salvaguardas de mensagens entre sessões](/docs/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) ainda se aplicam.
294</Warning>294</Warning>
295 295
296<h4 id="plan-mode-plan">296<h4 id="plan-mode-plan">
297 Modo plano (`plan`)297 Modo plano (`plan`)
298</h4>298</h4>
299 299
300Claude explora a base de código e produz um plano sem editar seus arquivos de origem. Ferramentas somente leitura são executadas como no modo de permissão `default`.300Claude explora a base de código e produz um plano sem editar seus arquivos de origem. Ferramentas somente leitura são executadas como fazem no modo de permissão `default`.
301 301
302Edições de arquivo nunca são auto-aprovadas no modo plano, mesmo quando uma regra de permissão corresponde. Elas solicitam através de seu callback `canUseTool` em vez disso. No Claude Code v2.1.212 ou posterior, comandos shell que modificam arquivos, como `touch` e `rm`, chegam ao seu callback `canUseTool` da mesma forma.302Edições de arquivo nunca são aprovadas automaticamente no modo plano, mesmo quando uma regra de permissão corresponde. Em vez disso, elas solicitam através de seu callback `canUseTool`. No Claude Code v2.1.212 ou posterior, comandos shell que modificam arquivos, como `touch` e `rm`, chegam ao seu callback `canUseTool` da mesma forma.
303 303
304Claude pode usar `AskUserQuestion` para esclarecer requisitos antes de finalizar o plano. Consulte [Lidar com aprovações e entrada do usuário](/docs/pt/agent-sdk/user-input#handle-clarifying-questions) para lidar com essas solicitações.304Claude pode usar `AskUserQuestion` para esclarecer requisitos antes de finalizar o plano. Consulte [Lidar com aprovações e entrada do usuário](/docs/pt/agent-sdk/user-input#handle-clarifying-questions) para lidar com esses prompts.
305 305
306**Use quando:** você quer que Claude proponha mudanças sem executá-las, como durante revisão de código ou quando você precisa aprovar mudanças antes que sejam feitas.306**Use quando:** você deseja que Claude proponha alterações sem executá-las, como durante revisão de código ou quando você precisa aprovar alterações antes que sejam feitas.
307 307
308<h2 id="related-resources">308<h2 id="related-resources">
309 Recursos relacionados309 Recursos relacionados
310</h2>310</h2>
311 311
312Para os outros passos no fluxo de avaliação de permissões:312Para as outras etapas no fluxo de avaliação de permissões:
313 313
314* [Lidar com aprovações e entrada do usuário](/docs/pt/agent-sdk/user-input): solicitações de aprovação interativa e perguntas de esclarecimento314* [Lidar com aprovações e entrada do usuário](/docs/pt/agent-sdk/user-input): prompts de aprovação interativa e perguntas de esclarecimento
315* [Guia de hooks](/docs/pt/agent-sdk/hooks): execute código personalizado em pontos-chave do ciclo de vida do agente315* [Guia de hooks](/docs/pt/agent-sdk/hooks): executar código personalizado em pontos-chave do ciclo de vida do agente
316* [Regras de permissão](/docs/pt/settings-reference#permission-settings): regras declarativas de permitir/negar em `settings.json`316* [Regras de permissão](/docs/pt/settings-reference#permission-settings): regras declarativas de permissão/negação em `settings.json`