SpyBara
Go Premium

Documentation 2026-09-11 23:01 UTC to 2026-09-12 03:02 UTC

107 files changed +15,242 −1,034. View all changes and history on the product overview
2026
Fri 25 23:58 Thu 24 22:57 Wed 23 23:57 Tue 22 23:59 Mon 21 22:59 Sun 20 23:59 Sat 19 23:57 Fri 18 23:58 Tue 15 23:58 Mon 14 22:58 Sun 13 21:00 Sat 12 03:02 Thu 10 23:00 Wed 9 22:58 Tue 8 20:00 Tue 1 21:02

admin-setup.md +8 −1

Details

110| [Disable agent view](/docs/pt/agent-view#how-background-sessions-are-hosted) | Desativar `claude agents`, `--bg`, `/background` e o supervisor sob demanda | `disableAgentView` |110| [Disable agent view](/docs/pt/agent-view#how-background-sessions-are-hosted) | Desativar `claude agents`, `--bg`, `/background` e o supervisor sob demanda | `disableAgentView` |

111| [Configure the corporate launcher](/docs/pt/corporate-launcher) | Prefixar o [supervisor de agente de fundo](/docs/pt/agent-view#how-background-sessions-are-hosted), seus workers e os [outros processos de fundo cobertos](/docs/pt/corporate-launcher#what-the-launcher-covers) com um launcher corporativo obrigatório em vez de desativar a visualização de agente | `processWrapper` |111| [Configure the corporate launcher](/docs/pt/corporate-launcher) | Prefixar o [supervisor de agente de fundo](/docs/pt/agent-view#how-background-sessions-are-hosted), seus workers e os [outros processos de fundo cobertos](/docs/pt/corporate-launcher#what-the-launcher-covers) com um launcher corporativo obrigatório em vez de desativar a visualização de agente | `processWrapper` |

112| [Model restrictions](/docs/pt/model-config#restrict-model-selection) | `availableModels` filtra quais modelos aparecem no seletor. Adicionar `enforceAvailableModels` também restringe o modelo padrão selecionado automaticamente. Consulte [surface coverage](/docs/pt/model-config#surface-coverage) para saber como essa configuração alcança a CLI, web e IDE | `availableModels`, `enforceAvailableModels` |112| [Model restrictions](/docs/pt/model-config#restrict-model-selection) | `availableModels` filtra quais modelos aparecem no seletor. Adicionar `enforceAvailableModels` também restringe o modelo padrão selecionado automaticamente. Consulte [surface coverage](/docs/pt/model-config#surface-coverage) para saber como essa configuração alcança a CLI, web e IDE | `availableModels`, `enforceAvailableModels` |

113| [Effort cap](/docs/pt/settings-reference#maxeffortlevel) | Limitar o [nível de esforço](/docs/pt/model-config#adjust-effort-level) para cada modelo ou por modelo, em cada provedor | `maxEffortLevel` |

113| [Version floor](/docs/pt/settings-reference#minimumversion) | Impedir que a atualização automática instale abaixo de um mínimo em toda a organização | `minimumVersion` |114| [Version floor](/docs/pt/settings-reference#minimumversion) | Impedir que a atualização automática instale abaixo de um mínimo em toda a organização | `minimumVersion` |

114| [Required version range](/docs/pt/settings-reference#requiredminimumversion) | Recusar iniciar completamente quando a versão em execução está fora de um intervalo aprovado pela organização. Mais forte que `minimumVersion`, que apenas bloqueia downgrades | `requiredMinimumVersion`, `requiredMaximumVersion` |115| [Required version range](/docs/pt/settings-reference#requiredminimumversion) | Recusar iniciar completamente quando a versão em execução está fora de um intervalo aprovado pela organização. Mais forte que `minimumVersion`, que apenas bloqueia downgrades | `requiredMinimumVersion`, `requiredMaximumVersion` |

115| [Telemetry opt-out](/docs/pt/data-usage#telemetry-services) | Desativar métricas de uso vinculadas à Anthropic, relatórios de erro e pesquisas em cada dispositivo | `env` com `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` definido como `1`; a seção vinculada lista as variáveis por categoria |116| [Telemetry opt-out](/docs/pt/data-usage#telemetry-services) | Desativar métricas de uso vinculadas à Anthropic, relatórios de erro e pesquisas em cada dispositivo | `env` com `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` definido como `1`; a seção vinculada lista as variáveis por categoria |

116 117 

117As organizações cujos membros se autenticam através de claude.ai ou da API Anthropic também podem governar modelos sem implantar configurações: [restrições de modelo da organização](/docs/pt/model-config#organization-model-restrictions) desabilitam modelos individuais, um [modelo padrão da organização](/docs/pt/model-config#organization-default-model) define em qual modelo novas sessões começam, e [limites de esforço da organização](/docs/pt/model-config#organization-effort-limits) limitam níveis de esforço por função. Todos os três controles exigem um plano Claude Enterprise. As restrições de modelo e limites de esforço são aplicados no servidor; o modelo padrão é um ponto de partida que os usuários podem alterar, a menos que a organização o aplique. A aplicação está disponível para um conjunto limitado de organizações; pergunte ao seu time de contas Anthropic sobre disponibilidade. Nenhum desses controles alcança sessões no Amazon Bedrock, na Agent Platform do Google Cloud, no Microsoft Foundry, ou [Claude Platform on AWS](/docs/pt/claude-platform-on-aws); nesses provedores, use `availableModels` acima para restrições e a chave `model` em configurações gerenciadas para um padrão.118Se seus membros se autenticarem através de claude.ai ou da API Anthropic e você estiver em um plano Claude Enterprise, também poderá governar modelos a partir das configurações de administrador da sua organização sem implantar nada:

119 

120* [Organization model restrictions](/docs/pt/model-config#organization-model-restrictions): desabilitar modelos individuais. Aplicado no servidor.

121* [Organization default model](/docs/pt/model-config#organization-default-model): definir em qual modelo novas sessões começam. Os usuários podem alterá-lo, a menos que sua organização aplique o padrão, que está disponível para um conjunto limitado de organizações; pergunte ao seu time de contas Anthropic.

122* [Organization effort limits](/docs/pt/model-config#organization-effort-limits): limitar níveis de esforço por função. Aplicado no servidor.

123 

124Nenhum desses controles alcança sessões no Amazon Bedrock, na Agent Platform do Google Cloud, no Microsoft Foundry, ou [Claude Platform on AWS](/docs/pt/claude-platform-on-aws). Nesses provedores, use configurações gerenciadas em vez disso: `availableModels` para restrições, `model` para um padrão, e [`maxEffortLevel`](/docs/pt/settings-reference#maxeffortlevel) para um limite de esforço.

118 125 

119[Claude Code on the web](/docs/pt/claude-code-on-the-web) tem sua própria superfície de administrador: na página de ambientes de nuvem nas configurações de administrador, Proprietários criam [ambientes compartilhados da organização](/docs/pt/cloud-environments#organization-shared-environments) que definem o [nível de acesso à rede](/docs/pt/cloud-environments#network-access), variáveis de ambiente e script de configuração para sessões de nuvem dos membros. Os Proprietários escolhem o ambiente padrão da organização separadamente, em [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).126[Claude Code on the web](/docs/pt/claude-code-on-the-web) tem sua própria superfície de administrador: na página de ambientes de nuvem nas configurações de administrador, Proprietários criam [ambientes compartilhados da organização](/docs/pt/cloud-environments#organization-shared-environments) que definem o [nível de acesso à rede](/docs/pt/cloud-environments#network-access), variáveis de ambiente e script de configuração para sessões de nuvem dos membros. Os Proprietários escolhem o ambiente padrão da organização separadamente, em [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

120 127 

advisor.md +17 −6

Details

48/advisor opus48/advisor opus

49```49```

50 50 

51O comando confirma com `Advisor set to` seguido pelo nome do modelo advisor. Sua seleção é salva em `advisorModel` nas configurações do usuário e persiste entre sessões.51O comando confirma com `Advisor set to` seguido pelo nome do modelo advisor. Sua seleção é salva em `advisorModel` nas configurações do usuário e persiste entre sessões, exceto nos casos que a entrada [`advisorModel`](/docs/pt/settings-reference#advisormodel) lista como aplicável apenas à sessão atual.

52 

53O comando também funciona onde não há um seletor de terminal: em [modo não interativo](/docs/pt/headless) com `-p`, no Agent SDK, no aplicativo desktop e sobre [Remote Control](/docs/pt/remote-control). Isso requer Claude Code v2.1.260 ou posterior. Nessas superfícies:

54 

55* Execute `/advisor` sem argumento para imprimir o modelo advisor atual e os aliases que ele aceita.

56* Execute `/advisor` com um modelo, como `/advisor opus`, para defini-lo.

57* Execute `/advisor off` para desativá-lo.

52 58 

53Claude Code não invoca um advisor salvo que a allowlist [`availableModels`](/docs/pt/model-config#restrict-model-selection) da sua organização exclua. Para usar o advisor, escolha um modelo permitido com `/advisor`. Claude Code ainda salva um advisor que seu modelo principal atual não suporta. Esse advisor é ativado após você mudar para um [modelo principal compatível](#choose-an-advisor-model) com [`/model`](/docs/pt/model-config#setting-your-model).59Claude Code não invoca um advisor salvo que a allowlist [`availableModels`](/docs/pt/model-config#restrict-model-selection) da sua organização exclua. Para usar o advisor, escolha um modelo permitido com `/advisor`. Claude Code ainda salva um advisor que seu modelo principal atual não suporta. Esse advisor é ativado após você mudar para um [modelo principal compatível](#choose-an-advisor-model) com [`/model`](/docs/pt/model-config#setting-your-model).

54 60 


92O advisor deve ser pelo menos tão capaz quanto o modelo principal. Os advisors aceitos para cada modelo principal são:98O advisor deve ser pelo menos tão capaz quanto o modelo principal. Os advisors aceitos para cada modelo principal são:

93 99 

94| Modelo principal | Advisors aceitos | Notas |100| Modelo principal | Advisors aceitos | Notas |

95| --------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |101| --------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

96| Haiku 4.5 | Fable, Opus, Sonnet | Haiku pode chamar o advisor, mas não pode atuar como um |102| Haiku 4.5 | Fable, Opus, Sonnet | Haiku pode chamar o advisor, mas não pode atuar como um |

97| Sonnet 4.6 | Fable, Opus, Sonnet | |103| Sonnet 4.6 | Fable, Opus, Sonnet | |

98| Sonnet 5 | Fable, Opus, Sonnet 5 | Um advisor Sonnet 4.6 é rejeitado |104| Sonnet 5 | Fable, Opus, Sonnet 5 | Um advisor Sonnet 4.6 é rejeitado |

99| Opus 4.6 | Fable, Opus, Sonnet 5 | Sonnet 5 e Opus 4.6 são classificados como igualmente capazes, então um Opus 4.6 principal aceita um advisor Sonnet 5 |105| Opus 4.6 | Fable, Opus, Sonnet 5 | Sonnet 5 e Opus 4.6 são classificados como igualmente capazes, então um Opus 4.6 principal aceita um advisor Sonnet 5 |

100| Opus 4.7 ou posterior | Fable, e Opus 4.7 ou posterior | Opus 4.7 e modelos Opus posteriores são classificados como igualmente capazes, então qualquer um deles aceita outro como um advisor. Um Opus 4.7 principal com um advisor Opus 4.6 ou Sonnet 5 é rejeitado |106| Opus 4.7 ou posterior | Fable, e Opus 4.7 ou posterior | Opus 4.7 e modelos Opus posteriores são classificados como igualmente capazes, então qualquer um deles aceita outro como um advisor. Um Opus 4.7 principal com um advisor Opus 4.6 ou Sonnet 5 é rejeitado |

101| Fable 5.1 ou Fable 5 | Fable 5.1, ou a mesma versão Fable | Um advisor Opus ou Sonnet é rejeitado, e também um advisor Fable 5 para um modelo principal Fable 5.1 |107| Fable 5.1 ou Fable 5 | Fable 5.1 ou Fable 5 | Um advisor Opus ou Sonnet é rejeitado |

102 108 

103Fable 5.1 requer Claude Code v2.1.257 ou posterior, e Fable 5 requer v2.1.170 ou posterior. Ambos requerem [acesso a Fable](/docs/pt/model-config#work-with-fable).109Fable 5.1 requer Claude Code v2.1.257 ou posterior. Ambos os modelos Fable requerem [acesso a Fable](/docs/pt/model-config#work-with-fable).

104 110 

105Defina o advisor como `fable`, `opus`, ou `sonnet`. Esses aliases resolvem para a versão padrão integrada do Claude Code para cada família de modelos, que avança com novos lançamentos do Claude Code. Você também pode passar um ID de modelo completo como `claude-opus-5`.111Defina o advisor como `fable`, `opus`, ou `sonnet`. Esses aliases resolvem para a versão padrão integrada do Claude Code para cada família de modelos, que avança com novos lançamentos do Claude Code. Você também pode passar um ID de modelo completo como `claude-opus-5`.

106 112 


161 Custo167 Custo

162</h2>168</h2>

163 169 

164Quando Claude chama o advisor, o modelo advisor lê a conversa, então cada chamada consome tokens nas taxas do modelo advisor além do uso do seu modelo principal. Com faturamento por API, você paga as taxas de entrada e saída do modelo advisor para tokens do advisor. Em planos de assinatura, o uso do advisor conta para os limites de uso do seu plano, exceto que um advisor Fable é cobrado em [créditos de uso](/docs/pt/model-config#fable-and-usage-credits) em planos onde o uso de Fable o faz. Se sua conta exigir o consentimento de créditos de uso, um advisor Fable não cobra nada antes de você concedê-lo, porque Claude Code [não aplica a seleção](#fable-advisor-and-usage-credits) até então.170Quando Claude chama o advisor, o modelo advisor lê a conversa, então cada chamada consome tokens nas taxas do modelo advisor além do uso do seu modelo principal. Como esses tokens do advisor são faturados depende de como você paga:

171 

172* **Faturamento por API**: você paga as taxas de entrada e saída do modelo advisor para tokens do advisor

173* **Planos de assinatura**: o uso do advisor conta para os limites de uso do seu plano, exceto que um advisor Fable é cobrado em [créditos de uso](/docs/pt/model-config#fable-and-usage-credits) em planos onde o uso de Fable o faz

174 

175Se sua conta exigir o consentimento de créditos de uso, um advisor Fable não cobra nada antes de você concedê-lo, porque Claude Code [não aplica a seleção](#fable-advisor-and-usage-credits) até então.

165 176 

166Claude chama o advisor em pontos de decisão em vez de em cada turno, então emparelhar um modelo principal mais rápido com um advisor mais forte tipicamente custa menos que executar o modelo mais forte em toda parte. O uso do advisor conta para os totais da sessão mostrados por [`/usage`](/docs/pt/costs#track-your-costs).177Claude chama o advisor em pontos de decisão em vez de em cada turno, então emparelhar um modelo principal mais rápido com um advisor mais forte tipicamente custa menos que executar o modelo mais forte em toda parte. O uso do advisor conta para os totais da sessão mostrados por [`/usage`](/docs/pt/costs#track-your-costs).

167 178 


189 Desativar o advisor200 Desativar o advisor

190</h2>201</h2>

191 202 

192Para parar de usar o advisor e limpar seu `advisorModel` salvo, execute `/advisor off` ou escolha **No advisor** no seletor `/advisor`:203Para parar de usar o advisor, execute `/advisor off` ou escolha **No advisor** no seletor `/advisor`:

193 204 

194```205```

195/advisor off206/advisor off

Details

23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-loop-diagram-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=afe723c52a324d3c61fa72fb02432ab6" className="hidden dark:block" alt="Diagrama do loop do agente: seu prompt entra no loop agentic, onde Claude avalia e solicita chamadas de ferramentas, cujos resultados retornam para outra avaliação, ou retorna a resposta final" width="720" height="212" data-path="images/agent-loop-diagram-dark.svg" />23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-loop-diagram-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=afe723c52a324d3c61fa72fb02432ab6" className="hidden dark:block" alt="Diagrama do loop do agente: seu prompt entra no loop agentic, onde Claude avalia e solicita chamadas de ferramentas, cujos resultados retornam para outra avaliação, ou retorna a resposta final" width="720" height="212" data-path="images/agent-loop-diagram-dark.svg" />

24 24 

251. **Receber prompt.** Claude recebe seu prompt, junto com o prompt do sistema, definições de ferramentas e histórico de conversa. O SDK produz uma [`SystemMessage`](#message-types) com subtipo `"init"` contendo metadados da sessão.251. **Receber prompt.** Claude recebe seu prompt, junto com o prompt do sistema, definições de ferramentas e histórico de conversa. O SDK produz uma [`SystemMessage`](#message-types) com subtipo `"init"` contendo metadados da sessão.

262. **Avaliar e responder.** Claude avalia o estado atual e determina como proceder. Pode responder com texto, solicitar uma ou mais chamadas de ferramentas, ou ambos. O SDK produz uma [`AssistantMessage`](#message-types) contendo o texto e quaisquer solicitações de chamadas de ferramentas.262. **Avaliar e responder.** Claude avalia o estado atual e determina como proceder. Pode responder com texto, solicitar uma ou mais chamadas de ferramentas, ou ambos. O SDK produz um ou mais objetos [`AssistantMessage`](#message-types), um para cada bloco de conteúdo, como um bloco de texto ou uma solicitação de chamada de ferramenta.

273. **Executar ferramentas.** O SDK executa cada ferramenta solicitada e coleta os resultados. Cada conjunto de resultados de ferramentas retorna para Claude para a próxima decisão. Você pode usar [hooks](/docs/pt/agent-sdk/hooks) para interceptar, modificar ou bloquear chamadas de ferramentas antes de serem executadas.273. **Executar ferramentas.** O SDK executa cada ferramenta solicitada e coleta os resultados. Cada conjunto de resultados de ferramentas retorna para Claude para a próxima decisão. Você pode usar [hooks](/docs/pt/agent-sdk/hooks) para interceptar, modificar ou bloquear chamadas de ferramentas antes de serem executadas.

284. **Repetir.** Os passos 2 e 3 se repetem como um ciclo. Cada ciclo completo é uma volta. Claude continua chamando ferramentas e processando resultados até produzir uma resposta sem chamadas de ferramentas.284. **Repetir.** Os passos 2 e 3 se repetem como um ciclo. Cada ciclo completo é uma volta. Claude continua chamando ferramentas e processando resultados até produzir uma resposta sem chamadas de ferramentas.

295. **Retornar resultado.** O SDK produz uma [`AssistantMessage`](#message-types) final com a resposta de texto (sem chamadas de ferramentas), seguida por uma [`ResultMessage`](#message-types) com o texto final, uso de tokens, custo e ID da sessão.295. **Retornar resultado.** O SDK produz uma [`AssistantMessage`](#message-types) final com a resposta de texto (sem chamadas de ferramentas), seguida por uma [`ResultMessage`](#message-types) com o texto final, uso de tokens, custo e ID da sessão.


41Primeiro, o SDK envia seu prompt para Claude e produz uma [`SystemMessage`](#message-types) com os metadados da sessão. Então o loop começa:41Primeiro, o SDK envia seu prompt para Claude e produz uma [`SystemMessage`](#message-types) com os metadados da sessão. Então o loop começa:

42 42 

431. **Volta 1:** Claude chama `Bash` para executar `npm test`. O SDK produz uma [`AssistantMessage`](#message-types) com a chamada de ferramenta, executa o comando, então produz uma [`UserMessage`](#message-types) com a saída (três falhas).431. **Volta 1:** Claude chama `Bash` para executar `npm test`. O SDK produz uma [`AssistantMessage`](#message-types) com a chamada de ferramenta, executa o comando, então produz uma [`UserMessage`](#message-types) com a saída (três falhas).

442. **Volta 2:** Claude chama `Read` em `auth.ts` e `auth.test.ts`. O SDK retorna o conteúdo dos arquivos e produz uma `AssistantMessage`.442. **Volta 2:** Claude chama `Read` em `auth.ts` e `auth.test.ts`. O SDK produz uma `AssistantMessage` para cada chamada e retorna o conteúdo dos arquivos.

453. **Volta 3:** Claude chama `Edit` para corrigir `auth.ts`, então chama `Bash` para executar novamente `npm test`. Todos os três testes passam. O SDK produz uma `AssistantMessage`.453. **Volta 3:** Claude chama `Edit` para corrigir `auth.ts`, então chama `Bash` para executar novamente `npm test`. Todos os três testes passam. O SDK produz uma `AssistantMessage` para cada chamada.

464. **Volta final:** Claude produz uma resposta apenas com texto sem chamadas de ferramentas: "Corrigi o bug de autenticação, todos os três testes passam agora." O SDK produz uma `AssistantMessage` final com este texto, então uma [`ResultMessage`](#message-types) com o mesmo texto mais custo e uso.464. **Volta final:** Claude produz uma resposta apenas com texto sem chamadas de ferramentas: "Corrigi o bug de autenticação, todos os três testes passam agora." O SDK produz uma `AssistantMessage` final com este texto, então uma [`ResultMessage`](#message-types) com o mesmo texto mais custo e uso.

47 47 

48Foram quatro voltas: três com chamadas de ferramentas, uma resposta final apenas com texto.48Foram quatro voltas: três com chamadas de ferramentas, uma resposta final apenas com texto.


65 * `"worker_shutting_down"`: o loop terminará após a volta atual porque o host está saindo ou Remote Control foi desconectado65 * `"worker_shutting_down"`: o loop terminará após a volta atual porque o host está saindo ou Remote Control foi desconectado

66 66 

67 Em TypeScript, cada subtipo diferente de `"init"` é seu próprio tipo na união [`SDKMessage`](/docs/pt/agent-sdk/typescript#sdkmessage) em vez de um subtipo de `SDKSystemMessage`.67 Em TypeScript, cada subtipo diferente de `"init"` é seu próprio tipo na união [`SDKMessage`](/docs/pt/agent-sdk/typescript#sdkmessage) em vez de um subtipo de `SDKSystemMessage`.

68* **`AssistantMessage`:** emitida após cada resposta do Claude, incluindo a final apenas com texto. Contém blocos de conteúdo de texto e blocos de chamadas de ferramentas dessa volta.68* **`AssistantMessage`:** emitida para cada bloco de conteúdo nas respostas do Claude, incluindo a final apenas com texto. Cada uma carrega um único bloco de conteúdo, como texto ou uma chamada de ferramenta, e as mensagens de uma resposta compartilham um ID de mensagem.

69* **`UserMessage`:** emitida após cada execução de ferramenta com o conteúdo do resultado da ferramenta enviado de volta para Claude. Também emitida para quaisquer entradas do usuário que você transmita no meio do loop.69* **`UserMessage`:** emitida após cada execução de ferramenta com o conteúdo do resultado da ferramenta enviado de volta para Claude. Também emitida para quaisquer entradas do usuário que você transmita no meio do loop.

70* **`StreamEvent`:** emitida apenas quando mensagens parciais estão habilitadas. Contém eventos brutos de streaming da API (deltas de texto, pedaços de entrada de ferramentas). Veja [Respostas de streaming](/docs/pt/agent-sdk/streaming-output).70* **`StreamEvent`:** emitida apenas quando mensagens parciais estão habilitadas. Contém eventos brutos de streaming da API (deltas de texto, pedaços de entrada de ferramentas). Veja [Respostas de streaming](/docs/pt/agent-sdk/streaming-output).

71* **`ResultMessage`:** marca o fim do loop do agente. Contém o resultado de texto final, uso de tokens, custo e ID da sessão. Verifique o campo `subtype` para determinar se a tarefa foi bem-sucedida ou atingiu um limite. Um pequeno número de eventos de sistema finais, como `prompt_suggestion`, pode chegar após ele, então itere o fluxo até a conclusão em vez de quebrar no resultado. Veja [Lidar com o resultado](#handle-the-result).71* **`ResultMessage`:** marca o fim do loop do agente. Contém o resultado de texto final, uso de tokens, custo e ID da sessão. Verifique o campo `subtype` para determinar se a tarefa foi bem-sucedida ou atingiu um limite. Um pequeno número de eventos de sistema finais, como `prompt_suggestion`, pode chegar após ele, então itere o fluxo até a conclusão em vez de quebrar no resultado. Veja [Lidar com o resultado](#handle-the-result).


91 <CodeGroup>91 <CodeGroup>

92 ```python Python theme={null}92 ```python Python theme={null}

93 import asyncio93 import asyncio

94 from claude_agent_sdk import query, AssistantMessage, ResultMessage94 from claude_agent_sdk import query, AssistantMessage, ResultMessage, TextBlock, ToolUseBlock

95 95 

96 96 

97 async def main():97 async def main():

98 try:98 try:

99 async for message in query(prompt="Summarize this project"):99 async for message in query(prompt="Summarize this project"):

100 if isinstance(message, AssistantMessage):100 if isinstance(message, AssistantMessage):

101 print(f"Turn completed: {len(message.content)} content blocks")101 # Each AssistantMessage carries one content block

102 for block in message.content:

103 if isinstance(block, TextBlock):

104 print(f"Claude: {block.text}")

105 elif isinstance(block, ToolUseBlock):

106 print(f"Tool call: {block.name}")

102 if isinstance(message, ResultMessage):107 if isinstance(message, ResultMessage):

103 if message.subtype == "success":108 if message.subtype == "success":

104 print(message.result)109 print(message.result)


120 try {125 try {

121 for await (const message of query({ prompt: "Summarize this project" })) {126 for await (const message of query({ prompt: "Summarize this project" })) {

122 if (message.type === "assistant") {127 if (message.type === "assistant") {

123 console.log(`Turn completed: ${message.message.content.length} content blocks`);128 // Each assistant message carries one content block

129 for (const block of message.message.content) {

130 if (block.type === "text") {

131 console.log(`Claude: ${block.text}`);

132 } else if (block.type === "tool_use") {

133 console.log(`Tool call: ${block.name}`);

134 }

135 }

124 }136 }

125 if (message.type === "result") {137 if (message.type === "result") {

126 if (message.subtype === "success") {138 if (message.subtype === "success") {


175 187 

176Claude determina quais ferramentas chamar com base na tarefa, mas você controla se essas chamadas podem ser executadas. Você pode aprovar automaticamente ferramentas específicas, bloquear outras completamente ou exigir aprovação para tudo. Três opções funcionam juntas para determinar o que é executado:188Claude determina quais ferramentas chamar com base na tarefa, mas você controla se essas chamadas podem ser executadas. Você pode aprovar automaticamente ferramentas específicas, bloquear outras completamente ou exigir aprovação para tudo. Três opções funcionam juntas para determinar o que é executado:

177 189 

178* **`allowed_tools` / `allowedTools`** aprova automaticamente ferramentas listadas. Um agente somente leitura com `["Read", "Glob", "Grep"]` em sua lista de ferramentas permitidas executa essas ferramentas sem avisar. Ferramentas não listadas ainda estão disponíveis, mas exigem permissão.190* **`allowed_tools` / `allowedTools`** aprova automaticamente ferramentas listadas. Um agente somente leitura com `["Read", "Glob", "Grep"]` em sua lista de ferramentas permitidas executa essas ferramentas sem avisar. Ferramentas não listadas ainda estão disponíveis, e chamadas para elas que precisam de aprovação caem através do modo de permissão e `canUseTool`.

179* **`disallowed_tools` / `disallowedTools`** bloqueia ferramentas listadas, independentemente de outras configurações. Veja [Permissões](/docs/pt/agent-sdk/permissions) para a ordem em que as regras são verificadas antes de uma ferramenta ser executada.191* **`disallowed_tools` / `disallowedTools`** bloqueia ferramentas listadas, independentemente de outras configurações. Veja [Permissões](/docs/pt/agent-sdk/permissions) para a ordem em que as regras são verificadas antes de uma ferramenta ser executada.

180* **`permission_mode` / `permissionMode`** controla quanto de supervisão humana você deseja. O SDK avalia o modo ativo junto com suas regras de permissão e negação em uma ordem fixa, descrita em [Como as permissões são avaliadas](/docs/pt/agent-sdk/permissions#how-permissions-are-evaluated). Veja [Modo de permissão](#permission-mode) para os modos disponíveis.192* **`permission_mode` / `permissionMode`** controla quanto de supervisão humana você deseja. O SDK avalia o modo ativo junto com suas regras de permissão e negação em uma ordem fixa, descrita em [Como as permissões são avaliadas](/docs/pt/agent-sdk/permissions#how-permissions-are-evaluated). Veja [Modo de permissão](#permission-mode) para os modos disponíveis.

181 193 


192Ferramentas personalizadas padrão para execução sequencial. Para habilitar execução paralela para uma ferramenta personalizada, defina `readOnlyHint` em suas anotações. Ambos os SDKs [TypeScript](/docs/pt/agent-sdk/typescript#tool) e [Python](/docs/pt/agent-sdk/python#tool) usam este nome de campo do SDK MCP.204Ferramentas personalizadas padrão para execução sequencial. Para habilitar execução paralela para uma ferramenta personalizada, defina `readOnlyHint` em suas anotações. Ambos os SDKs [TypeScript](/docs/pt/agent-sdk/typescript#tool) e [Python](/docs/pt/agent-sdk/python#tool) usam este nome de campo do SDK MCP.

193 205 

194<h2 id="control-how-the-loop-runs">206<h2 id="control-how-the-loop-runs">

195 Controlar como o loop é executado207 Controle como o loop é executado

196</h2>208</h2>

197 209 

198Você pode limitar quantas voltas o loop leva, quanto custa, quão profundamente Claude raciocina e se as ferramentas exigem aprovação antes de serem executadas. Todas essas são campos em [`ClaudeAgentOptions`](/docs/pt/agent-sdk/python#claudeagentoptions) (Python) / [`Options`](/docs/pt/agent-sdk/typescript#options) (TypeScript).210Você pode limitar quantas voltas o loop faz, quanto custa, com que profundidade Claude raciocina e se as ferramentas exigem aprovação antes de serem executadas. Todos esses são campos em [`ClaudeAgentOptions`](/docs/pt/agent-sdk/python#claudeagentoptions) (Python) / [`Options`](/docs/pt/agent-sdk/typescript#options) (TypeScript).

199 211 

200<h3 id="turns-and-budget">212<h3 id="turns-and-budget">

201 Voltas e orçamento213 Voltas e orçamento


206| Max turns (`max_turns` / `maxTurns`) | Máximo de rodadas de uso de ferramentas | Sem limite |218| Max turns (`max_turns` / `maxTurns`) | Máximo de rodadas de uso de ferramentas | Sem limite |

207| Max budget (`max_budget_usd` / `maxBudgetUsd`) | Custo máximo antes de parar | Sem limite |219| Max budget (`max_budget_usd` / `maxBudgetUsd`) | Custo máximo antes de parar | Sem limite |

208 220 

209Quando qualquer limite é atingido, o SDK retorna uma `ResultMessage` com um subtipo de erro correspondente (`error_max_turns` ou `error_max_budget_usd`). Veja [Lidar com o resultado](#handle-the-result) para como verificar esses subtipos e [`ClaudeAgentOptions`](/docs/pt/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/pt/agent-sdk/typescript#options) para sintaxe.221Quando qualquer um dos limites é atingido, o SDK retorna uma `ResultMessage` com um subtipo de erro correspondente (`error_max_turns` ou `error_max_budget_usd`). Veja [Handle the result](#handle-the-result) para saber como verificar esses subtipos e [`ClaudeAgentOptions`](/docs/pt/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/pt/agent-sdk/typescript#options) para sintaxe.

210 222 

211O limite de orçamento cobre [subagentes](/docs/pt/agent-sdk/subagents): seus gastos contam para o total. Quando o gasto atinge o limite, gerar outro subagente falha com `Budget limit reached`, e Claude Code interrompe qualquer subagente em segundo plano ainda em execução. Os comportamentos de aplicação do limite exigem Claude Code v2.1.217 ou posterior.223O limite de orçamento cobre [subagents](/docs/pt/agent-sdk/subagents): seus gastos contam para o total. Quando o gasto atinge o limite, gerar outro subagent falha com `Budget limit reached`, e Claude Code para qualquer subagent em segundo plano ainda em execução. Os comportamentos de aplicação do limite exigem Claude Code v2.1.217 ou posterior.

212 224 

213Com [entrada em streaming](/docs/pt/agent-sdk/streaming-vs-single-mode), uma mensagem que ainda está enfileirada quando uma volta termina no limite de máximo de voltas permanece enfileirada. Claude Code não a adiciona à última chamada do modelo dessa volta. Ele inicia uma nova volta para a mensagem, e a contagem de máximo de voltas recomeça para essa volta.225Com [streaming input](/docs/pt/agent-sdk/streaming-vs-single-mode), uma mensagem que ainda está na fila quando uma volta termina no limite de max-turns permanece na fila. Claude Code não a adiciona à última chamada de modelo dessa volta. Ele inicia uma nova volta para a mensagem, e a contagem de max-turns recomeça para essa volta.

214 226 

215<h3 id="effort-level">227<h3 id="effort-level">

216 Nível de esforço228 Nível de esforço

217</h3>229</h3>

218 230 

219A opção `effort` controla quanto raciocínio Claude aplica. Níveis de esforço mais baixos usam menos tokens por volta e reduzem custo. Nem todos os modelos suportam o parâmetro de esforço. Veja [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) para quais modelos o suportam.231A opção `effort` controla quanto raciocínio Claude aplica. Níveis de esforço mais baixos usam menos tokens por volta e reduzem o custo. Nem todos os modelos suportam o parâmetro de esforço. Veja [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) para saber quais modelos o suportam.

220 232 

221| Nível | Comportamento | Bom para |233| Nível | Comportamento | Bom para |

222| :--------- | :----------------------------------- | :-------------------------------------------------------------------------------------------------- |234| :--------- | :----------------------------------- | :-------------------------------------------------------------------------------------------------- |


224| `"medium"` | Raciocínio equilibrado | Edições rotineiras, tarefas padrão |236| `"medium"` | Raciocínio equilibrado | Edições rotineiras, tarefas padrão |

225| `"high"` | Análise completa | Refatorações, depuração |237| `"high"` | Análise completa | Refatorações, depuração |

226| `"xhigh"` | Profundidade de raciocínio estendida | Tarefas de codificação e agentes nos [modelos que o suportam](/docs/pt/model-config#adjust-effort-level) |238| `"xhigh"` | Profundidade de raciocínio estendida | Tarefas de codificação e agentes nos [modelos que o suportam](/docs/pt/model-config#adjust-effort-level) |

227| `"max"` | Profundidade máxima de raciocínio | Problemas multi-etapas que exigem análise profunda |239| `"max"` | Profundidade máxima de raciocínio | Problemas com múltiplas etapas que exigem análise profunda |

228 240 

229Se você não definir `effort`, ambos os SDKs deixam o parâmetro indefinido e deferem para o comportamento padrão do modelo.241Se você não definir `effort`, ambos os SDKs deixam o parâmetro indefinido e adiam para o comportamento padrão do modelo.

230 242 

231<Note>243<Note>

232 `effort` negocia latência e custo de token por profundidade de raciocínio dentro de cada resposta. [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) é um recurso separado que produz blocos de `thinking` na saída, e o campo `display` em `ThinkingConfig` para [Python](/docs/pt/agent-sdk/python#thinkingconfig) ou [TypeScript](/docs/pt/agent-sdk/typescript#thinkingconfig) controla se você recebe seu texto. Eles são independentes: você pode definir `effort: "low"` com extended thinking habilitado, ou `effort: "max"` sem ele.244 `effort` troca latência e custo de token por profundidade de raciocínio dentro de cada resposta. [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) é um recurso separado que produz blocos `thinking` na saída, e o campo `display` em `ThinkingConfig` para [Python](/docs/pt/agent-sdk/python#thinkingconfig) ou [TypeScript](/docs/pt/agent-sdk/typescript#thinkingconfig) controla se você recebe seu texto. Eles são independentes: você pode definir `effort: "low"` com extended thinking habilitado, ou `effort: "max"` sem ele.

233</Note>245</Note>

234 246 

235Use esforço mais baixo para agentes fazendo tarefas simples e bem definidas (como listar arquivos ou executar um único grep) para reduzir custo e latência. Defina `effort` nas opções de nível superior `query()` para toda a sessão, ou por subagente com o campo `effort` em [`AgentDefinition`](/docs/pt/agent-sdk/subagents#agentdefinition-configuration) para sobrescrever o nível de sessão.247Use esforço mais baixo para agentes que fazem tarefas simples e bem definidas (como listar arquivos ou executar um único grep) para reduzir custo e latência. Defina `effort` nas opções de nível superior `query()` para toda a sessão, ou por subagent com o campo `effort` em [`AgentDefinition`](/docs/pt/agent-sdk/subagents#agentdefinition-configuration) para substituir o nível de sessão.

236 248 

237<h3 id="permission-mode">249<h3 id="permission-mode">

238 Modo de permissão250 Modo de permissão

239</h3>251</h3>

240 252 

241A opção de modo de permissão (`permission_mode` em Python, `permissionMode` em TypeScript) controla se o agente pede aprovação antes de usar ferramentas:253A opção de modo de permissão (`permission_mode` em Python, `permissionMode` em TypeScript) controla se o agente solicita aprovação antes de usar ferramentas:

242 254 

243| Modo | Comportamento | Caso de uso |255| Modo | Comportamento | Caso de uso |

244| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |256| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

245| `"default"` | Ferramentas não cobertas por regras de permissão acionam seu callback `canUseTool`; sem callback significa negar | Aplicações interativas com um callback de aprovação personalizado |257| `"default"` | Chamadas de ferramentas que precisam de aprovação e não são cobertas por regras de permissão acionam seu callback `canUseTool`; nenhum callback significa negar | Aplicações interativas com um callback de aprovação personalizado |

246| `"acceptEdits"` | Aprova automaticamente edições de arquivo e comandos comuns do sistema de arquivos (`mkdir`, `touch`, `mv`, `cp`, etc.); outros comandos Bash seguem regras padrão | 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 |258| `"acceptEdits"` | Aprova automaticamente edições de arquivo e comandos comuns do sistema de arquivos (`mkdir`, `touch`, `mv`, `cp`, etc.); outros comandos Bash seguem as regras padrão | Você confia nas edições do Claude e quer iteração mais rápida, como durante prototipagem ou ao trabalhar em um diretório isolado |

247| `"plan"` | 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` | 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 de serem feitas |259| `"plan"` | 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` | 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 de serem feitas |

248| `"dontAsk"` | Nunca avisa. Ferramentas pré-aprovadas por [regras de permissão](/docs/pt/settings-reference#permission-settings) são executadas; tudo mais é negado. `AskUserQuestion`, ferramentas de conector [sua organização definida como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) e ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) são negadas mesmo se você as permitiu | Você quer uma superfície de ferramenta fixa e explícita para um agente sem interface e prefere uma negação rígida sobre confiança silenciosa em `canUseTool` estar ausente |260| `"dontAsk"` | Nunca solicita. Ferramentas pré-aprovadas por [regras de permissão](/docs/pt/settings-reference#permission-settings) 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; toda chamada que de outra forma solicitaria é negada. `AskUserQuestion`, ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) e ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) são negadas mesmo que você as tenha permitido | Você quer uma superfície de ferramenta fixa e explícita para um agente sem cabeça e prefere uma negação rígida sobre confiança silenciosa em `canUseTool` estar ausente |

249| `"auto"` | Usa um classificador de modelo para aprovar ou negar avisos de permissão. Veja [Modo Auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) para disponibilidade e comportamento | Agentes autônomos que ainda querem proteções de segurança no uso de ferramentas |261| `"auto"` | Usa um classificador de modelo para aprovar ou negar solicitações de permissão. Veja [Auto mode](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) para disponibilidade e comportamento | Agentes autônomos que ainda querem proteções de segurança no uso de ferramentas |

250| `"bypassPermissions"` | Executa todas as ferramentas permitidas sem avisar, exceto ferramentas correspondidas por uma regra [`ask`](/docs/pt/settings-reference#permission-settings) explícita, ferramentas de conector [sua organização definida como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) e ferramentas que exigem interação do usuário. As [proteções de mensagens entre sessões](/docs/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) ainda se aplicam. Veja [Como as permissões são avaliadas](/docs/pt/agent-sdk/permissions#how-permissions-are-evaluated) para a ordem de precedência. No SDK TypeScript, também requer `allowDangerouslySkipPermissions: true` em `options`. Não pode ser usado ao executar como root em Unix. Use apenas em ambientes isolados onde as ações do agente não podem afetar sistemas que você se importa | CI, contêineres ou outros ambientes isolados |262| `"bypassPermissions"` | Executa todas as ferramentas permitidas sem perguntar, exceto ferramentas correspondidas por uma regra [`ask`](/docs/pt/settings-reference#permission-settings) explícita, 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. As [proteções de mensagens entre sessões](/docs/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) ainda se aplicam. Veja [How permissions are evaluated](/docs/pt/agent-sdk/permissions#how-permissions-are-evaluated) para a ordem de precedência. No SDK TypeScript, também requer `allowDangerouslySkipPermissions: true` em `options`. Não pode ser usado ao executar como root no Unix. Use apenas em ambientes isolados onde as ações do agente não podem afetar sistemas que você se importa | CI, contêineres ou outros ambientes isolados |

251 263 

252Para aplicações interativas, use `"default"` com um callback de aprovação de ferramenta para exibir avisos de aprovação. Para agentes autônomos em uma máquina de desenvolvimento, `"acceptEdits"` aprova automaticamente edições de arquivo e comandos comuns do sistema de arquivos (`mkdir`, `touch`, `mv`, `cp`, etc.) enquanto ainda controla outros comandos `Bash` atrás de regras de permissão. Reserve `"bypassPermissions"` para CI, contêineres ou outros ambientes isolados. Veja [Permissões](/docs/pt/agent-sdk/permissions) para detalhes completos.264Para aplicações interativas, use `"default"` com um callback de aprovação de ferramenta para exibir solicitações de aprovação. Para agentes autônomos em uma máquina de desenvolvimento, `"acceptEdits"` aprova automaticamente edições de arquivo e comandos comuns do sistema de arquivos (`mkdir`, `touch`, `mv`, `cp`, etc.) enquanto ainda controla outros comandos `Bash` atrás de regras de permissão. Reserve `"bypassPermissions"` para CI, contêineres ou outros ambientes isolados. Veja [Permissions](/docs/pt/agent-sdk/permissions) para detalhes completos.

253 265 

254<h3 id="model">266<h3 id="model">

255 Modelo267 Modelo

256</h3>268</h3>

257 269 

258Se você não definir `model`, o SDK usa o padrão do Claude Code, que depende do seu método de autenticação e assinatura. Defina explicitamente (por exemplo, `model="claude-sonnet-5"`) para fixar um modelo específico ou usar um modelo menor para agentes mais rápidos e baratos. Veja [modelos](https://platform.claude.com/docs/en/about-claude/models) para IDs disponíveis.270Se você não definir `model`, o SDK usa o padrão do Claude Code, que depende do seu método de autenticação e assinatura. Defina-o explicitamente (por exemplo, `model="claude-sonnet-5"`) para fixar um modelo específico ou usar um modelo menor para agentes mais rápidos e baratos. Veja [models](https://platform.claude.com/docs/en/about-claude/models) para IDs disponíveis.

259 271 

260<h2 id="the-context-window">272<h2 id="the-context-window">

261 A janela de contexto273 A janela de contexto

Details

338A opção `tools` e as listas de permitidas/não permitidas afetam duas camadas: disponibilidade, que controla se uma ferramenta aparece no contexto do Claude, e permissão, que controla se uma chamada é aprovada uma vez que Claude tenta usá-la. `tools` e entradas `disallowedTools` com nome simples alteram a disponibilidade. `allowedTools` e regras `disallowedTools` com escopo alteram a permissão. Se você nomear uma das [ferramentas de rastreamento de tarefas](/docs/pt/agent-sdk/todo-tracking#model-availability) em `allowedTools`, Claude Code também ativa a sessão.338A opção `tools` e as listas de permitidas/não permitidas afetam duas camadas: disponibilidade, que controla se uma ferramenta aparece no contexto do Claude, e permissão, que controla se uma chamada é aprovada uma vez que Claude tenta usá-la. `tools` e entradas `disallowedTools` com nome simples alteram a disponibilidade. `allowedTools` e regras `disallowedTools` com escopo alteram a permissão. Se você nomear uma das [ferramentas de rastreamento de tarefas](/docs/pt/agent-sdk/todo-tracking#model-availability) em `allowedTools`, Claude Code também ativa a sessão.

339 339 

340| Opção | Camada | Efeito |340| Opção | Camada | Efeito |

341| :------------------------- | :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |341| :------------------------- | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

342| `tools: ["Read", "Grep"]` | Disponibilidade | Apenas as ferramentas integradas listadas estão no contexto do Claude. As ferramentas integradas não listadas são removidas. As ferramentas MCP não são afetadas. |342| `tools: ["Read", "Grep"]` | Disponibilidade | Apenas as ferramentas integradas listadas estão no contexto do Claude. As ferramentas integradas não listadas são removidas. As ferramentas MCP não são afetadas. |

343| `tools: []` | Disponibilidade | Todas as ferramentas integradas são removidas. Claude pode usar apenas suas ferramentas MCP. |343| `tools: []` | Disponibilidade | Todas as ferramentas integradas são removidas. Claude pode usar apenas suas ferramentas MCP. |

344| ferramentas permitidas | Permissão | As ferramentas listadas são executadas sem um prompt de permissão. Outras ferramentas não listadas permanecem disponíveis; as chamadas passam pelo [fluxo de permissão](/docs/pt/agent-sdk/permissions). |344| ferramentas permitidas | Permissão | As ferramentas listadas são executadas sem um prompt de permissão. Outras ferramentas não listadas permanecem disponíveis; as chamadas passam pelo [fluxo de permissão](/docs/pt/agent-sdk/permissions). |

345| ferramentas não permitidas | Ambas | Um nome de ferramenta simples como `"Bash"` remove a ferramenta do contexto do Claude, o mesmo que omiti-la de `tools`. Uma regra com escopo como `"Bash(rm *)"` deixa a ferramenta no contexto e nega apenas as chamadas correspondentes. |345| ferramentas não permitidas | Ambas | Um nome de ferramenta simples como `"Bash"` remove a ferramenta do contexto do Claude, o mesmo que omiti-la de `tools`. Uma regra com escopo como `"Bash(rm *)"` deixa a ferramenta no contexto e nega apenas as chamadas correspondentes [conforme escrito](/docs/pt/permissions#bash-rule-limits). |

346 346 

347Para remover uma ferramenta integrada completamente, omita-a de `tools` ou liste seu nome simples em `disallowedTools` (Python: `disallowed_tools`); ambas mantêm a ferramenta fora do contexto para que Claude nunca tente usá-la. Uma regra `disallowedTools` com escopo bloqueia as chamadas correspondentes, mas deixa a ferramenta visível, então Claude pode desperdiçar um turno tentando usá-la. Consulte [Configurar permissões](/docs/pt/agent-sdk/permissions) para a ordem de avaliação completa.347Para remover uma ferramenta integrada completamente, omita-a de `tools` ou liste seu nome simples em `disallowedTools` (Python: `disallowed_tools`); ambas mantêm a ferramenta fora do contexto para que Claude nunca tente usá-la. Uma regra `disallowedTools` com escopo bloqueia as chamadas correspondentes, mas deixa a ferramenta visível, então Claude pode desperdiçar um turno tentando usá-la. Consulte [Configurar permissões](/docs/pt/agent-sdk/permissions) para a ordem de avaliação completa.

348 348 

agent-sdk/examples.md +33 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Exemplos

6 

7> Encontre um projeto completo e executável do Agent SDK ou uma receita guiada no Claude Cookbook que corresponda ao que você deseja construir.

8 

9Esta página o roteia para projetos completos e executáveis do Agent SDK e receitas guiadas do Claude Cookbook. As aplicações TypeScript vivem no repositório [`claude-agent-sdk-demos`](https://github.com/anthropics/claude-agent-sdk-demos), e as receitas Python vivem no [Claude Cookbook](https://platform.claude.com/cookbook).

10 

11<h2 id="run-a-minimal-agent-first">

12 Execute um agente mínimo primeiro

13</h2>

14 

15Se você ainda não construiu nada com o SDK, comece com um destes antes de uma aplicação completa:

16 

17* [Agent SDK quickstart](/docs/pt/agent-sdk/quickstart): construa seu primeiro agente funcional em TypeScript ou Python, com etapas de configuração incluídas. O agente encontra e corrige bugs em um arquivo de exemplo.

18 

19* [Hello World](https://github.com/anthropics/claude-agent-sdk-demos/tree/main/hello-world): um projeto TypeScript mínimo para clonar quando você deseja começar a partir do código do repositório

20 

21<h2 id="explore-a-typescript-application">

22 Explore uma aplicação TypeScript

23</h2>

24 

25As aplicações TypeScript em [`claude-agent-sdk-demos`](https://github.com/anthropics/claude-agent-sdk-demos) são demos para desenvolvimento local, de um cliente de email a um sistema de pesquisa multi-agente. Clone a demo cuja forma corresponde ao que você está construindo.

26 

27<h2 id="work-through-a-python-recipe">

28 Trabalhe com uma receita Python

29</h2>

30 

31A série Agent SDK do Claude Cookbook é uma sequência de receitas, cada uma um notebook Python, que progride de um agente de pesquisa simples para sistemas sofisticados multi-agente. Cada notebook se baseia no anterior, introduzindo novos conceitos e capacidades. Comece com [o agente de pesquisa one-liner](https://platform.claude.com/cookbook/claude-agent-sdk-00-the-one-liner-research-agent) e avance.

32 

33Para receitas em todos os produtos Claude, consulte o [Claude Cookbook](https://platform.claude.com/cookbook) completo.

Details

924 Tool output exceeds maximum allowed tokens924 Tool output exceeds maximum allowed tokens

925</h3>925</h3>

926 926 

927O SDK aplica o mesmo limite de saída MCP que Claude Code. Quando um resultado de ferramenta é maior que 25.000 tokens, a saída completa é salva em um arquivo e o resultado da ferramenta é substituído por uma mensagem de erro que nomeia o caminho do arquivo, para que o agente possa ler a saída novamente em porções. Aumente o limite com a variável de ambiente [`MAX_MCP_OUTPUT_TOKENS`](/docs/pt/env-vars). Consulte [Limites de saída MCP e avisos](/docs/pt/mcp#mcp-output-limits-and-warnings) para o comportamento completo, incluindo como um servidor pode declarar um limite por ferramenta mais alto com a anotação `anthropic/maxResultSizeChars`.927O SDK aplica o mesmo limite de saída MCP que Claude Code. Quando um resultado de ferramenta sem conteúdo de imagem é maior que 25.000 tokens, Claude Code salva a saída em um arquivo e substitui o resultado da ferramenta por uma mensagem de erro que nomeia o caminho do arquivo, para que o agente possa ler a saída novamente em porções.

928 

929Aumente o limite com a variável de ambiente [`MAX_MCP_OUTPUT_TOKENS`](/docs/pt/env-vars). Consulte [Limites de saída MCP e avisos](/docs/pt/mcp#mcp-output-limits-and-warnings) para o comportamento completo, incluindo como um servidor pode declarar um limite por ferramenta mais alto com a anotação `anthropic/maxResultSizeChars`.

928 930 

929<h2 id="related-resources">931<h2 id="related-resources">

930 Recursos relacionados932 Recursos relacionados

Details

44 Personalizar o comportamento do agente44 Personalizar o comportamento do agente

45</h2>45</h2>

46 46 

47Estilos de saída, `append`, e uma string de prompt personalizada cada um alteram o prompt do sistema diretamente. CLAUDE.md segue um caminho diferente: o SDK o lê e injeta seu conteúdo na conversa como contexto do projeto, não no prompt do sistema, então ele molda o comportamento junto com qualquer prompt do sistema que você escolher. [Skills](/docs/pt/agent-sdk/skills), [hooks](/docs/pt/agent-sdk/hooks), e [permissions](/docs/pt/agent-sdk/permissions) também moldam o comportamento fora do prompt do sistema e são cobertos em suas próprias páginas.47`append` e uma string de prompt personalizada cada um alteram o prompt do sistema diretamente, e um estilo de saída altera as instruções que Claude Code fornece ao Claude para cada resposta. CLAUDE.md segue um caminho diferente: o SDK o lê e injeta seu conteúdo na conversa como contexto do projeto, então ele molda o comportamento junto com qualquer prompt do sistema que você escolher. [Skills](/docs/pt/agent-sdk/skills), [hooks](/docs/pt/agent-sdk/hooks), e [permissions](/docs/pt/agent-sdk/permissions) também moldam o comportamento fora do prompt do sistema e são cobertos em suas próprias páginas.

48 48 

49<h3 id="claude-md-files-for-project-level-instructions">49<h3 id="claude-md-files-for-project-level-instructions">

50 Arquivos CLAUDE.md para instruções em nível de projeto50 Arquivos CLAUDE.md para instruções em nível de projeto


118 Estilos de saída para configurações persistentes118 Estilos de saída para configurações persistentes

119</h3>119</h3>

120 120 

121Estilos de saída são configurações salvas que modificam o prompt do sistema do Claude. Eles são armazenados como arquivos markdown e podem ser reutilizados em sessões e projetos.121Estilos de saída são configurações salvas de instruções que alteram o papel, tom e formato de saída do Claude. Eles são armazenados como arquivos markdown e podem ser reutilizados em sessões e projetos.

122 122 

123<h4 id="create-an-output-style">123<h4 id="create-an-output-style">

124 Criar um estilo de saída124 Criar um estilo de saída


387* Se você incluir o marcador mais de uma vez, o primeiro é a divisão e o SDK remove os outros.387* Se você incluir o marcador mais de uma vez, o primeiro é a divisão e o SDK remove os outros.

388* Se você deixar o marcador de fora, o SDK une todas as strings em um bloco, o mesmo que passar uma string.388* Se você deixar o marcador de fora, o SDK une todas as strings em um bloco, o mesmo que passar uma string.

389 389 

390<h3 id="change-the-prompt-of-an-existing-session">

391 Alterar o prompt de uma sessão existente

392</h3>

393 

394Por padrão, Claude Code constrói o prompt do sistema uma vez, na primeira solicitação de uma sessão, com seu texto `append` ou prompt personalizado incluído, e o registra na sessão. Até que a sessão seja compactada, cada solicitação posterior usa esse prompt registrado, inclusive depois que você retorna à sessão com `resume` ou `continue`. Se você passar um `append` ou prompt personalizado diferente nessa chamada posterior, ele entra em vigor assim que a sessão é compactada ou em uma nova sessão.

395 

396Se você iniciar Claude Code em [bare mode](/docs/pt/headless#start-faster-with-bare-mode) passando `--bare` através de `extraArgs` ou definindo `CLAUDE_CODE_SIMPLE=1`, o registro fica desativado a menos que você defina `snapshot: true` no formulário de objeto de `systemPrompt`. Registrar um `append` ou prompt personalizado por padrão requer Claude Code v2.1.265 ou posterior, que o TypeScript Agent SDK agrupa a partir de v0.3.265. Antes de Claude Code v2.1.268, sessões que não [buscam feature flags](/docs/pt/env-vars#features-that-need-feature-flag-fetching), incluindo sessões em Amazon Bedrock, Google Cloud's Agent Platform, e Microsoft Foundry, reconstruíram o prompt em cada solicitação e `snapshot` não tinha efeito.

397 

398Para reconstruir o prompt em cada solicitação em vez disso, defina `snapshot: false` no formulário de objeto de `systemPrompt` no SDK TypeScript: `{ type: "preset", preset: "claude_code", append, snapshot: false }` ou `{ type: "custom", prompt, snapshot: false }`. Use este formulário enquanto você itera na redação do prompt, ou quando sua aplicação altera `append` entre chamadas que retomam a mesma sessão. O campo `snapshot` requer `@anthropic-ai/claude-agent-sdk` v0.3.257 ou posterior.

399 

390<h2 id="compare-the-four-approaches">400<h2 id="compare-the-four-approaches">

391 Comparação das quatro abordagens401 Comparação das quatro abordagens

392</h2>402</h2>

Details

41 </Step>41 </Step>

42 42 

43 <Step title="Regras de permitir">43 <Step title="Regras de permitir">

44 Verifique as regras `allow` (de `allowed_tools` e settings.json). Se uma regra corresponder, a ferramenta é aprovada. 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 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`.

45 </Step>45 </Step>

46 46 

47 <Step title="Callback canUseTool">47 <Step title="Callback canUseTool">


73 Regras de permitir e negar73 Regras de permitir e negar

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 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 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.

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 passam para o modo de permissão e `canUseTool`. |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`. |

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 *` são negadas em todos os modos de permissão, incluindo `bypassPermissions`. Outras chamadas de `Bash` 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 de `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 negar: `"*"` 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.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.


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 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.

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(ls *)` auto-aprova apenas chamadas correspondentes e outras chamadas de `Bash` 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` 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`.

95</Warning>95</Warning>

96 96 

97Para um agente bloqueado, combine `allowedTools` com `permissionMode: "dontAsk"`. Ferramentas listadas são aprovadas, exceto as ferramentas que sempre solicitam no Aviso acima; qualquer outra coisa é negada completamente em vez de solicitar:97Para um agente bloqueado, combine `allowedTools` com `permissionMode: "dontAsk"`:

98 98 

99```typescript theme={null}99```typescript theme={null}

100const options = {100const options = {


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`.

107 

106<Warning>108<Warning>

107 **`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` 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`.

108</Warning>110</Warning>


122O SDK suporta estes modos de permissão:124O SDK suporta estes modos de permissão:

123 125 

124| Modo | Descrição | Comportamento da ferramenta |126| Modo | Descrição | Comportamento da ferramenta |

125| :------------------ | :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |127| :------------------ | :---------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

126| `default` | Comportamento de permissão padrão | Sem auto-aprovações; ferramentas não correspondidas acionam seu callback `canUseTool` |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` |

127| `dontAsk` | Negar em vez de solicitar | Qualquer coisa não pré-aprovada por `allowed_tools` ou regras é negada; 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 [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 |

128| `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` | 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 |

129| `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` | 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 |

130| `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 auto-aprovadas e solicitam através de seu callback `canUseTool` |

131| `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 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 |

132 134 

133<Warning>135<Warning>

134 **Herança de subagentos:** Subagentos herdam o modo de permissão da sessão pai. Um [`AgentDefinition`'s `permissionMode`](/docs/pt/agent-sdk/typescript#agentdefinition) pode substituí-lo, exceto quando o pai usa `bypassPermissions`, `acceptEdits` ou `auto`: esses modos se aplicam a cada subagentos e não podem ser substituídos por subagentos. Claude Code também ignora um `permissionMode: "bypassPermissions"` da definição quando o modo bypass é desabilitado por [`permissions.disableBypassPermissionsMode`](/docs/pt/permissions#managed-settings), para que o subagentos seja executado com o modo da sessão pai.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.

135 137 

136 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 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.

137</Warning>139</Warning>


271 Modo não perguntar (`dontAsk`)273 Modo não perguntar (`dontAsk`)

272</h4>274</h4>

273 275 

274Converte qualquer solicitação de permissão em uma negação. Ferramentas pré-aprovadas por `allowed_tools`, regras de permitir em `settings.json` ou um hook são executadas normalmente. 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 permitir corresponde. Um allow de hook `PreToolUse` não limpa uma remoção de caminho crítico. Tudo mais é negado sem chamar `canUseTool`.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.

275 277 

276**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ê 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.

277 279 


297 299 

298Claude 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 no modo de permissão `default`.

299 301 

300Edições de arquivo nunca são auto-aprovadas no modo plano, mesmo quando uma regra de permitir 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 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.

301 303 

302Claude 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 essas solicitações.

303 305 

Details

906| `session_id` | `str \| None` | `None` | Use um ID de sessão específico em vez de um gerado automaticamente. Deve ser um UUID válido. Não pode ser combinado com `continue_conversation` ou `resume` a menos que `fork_session` também esteja definido |906| `session_id` | `str \| None` | `None` | Use um ID de sessão específico em vez de um gerado automaticamente. Deve ser um UUID válido. Não pode ser combinado com `continue_conversation` ou `resume` a menos que `fork_session` também esteja definido |

907| `max_turns` | `int \| None` | `None` | Número máximo de turnos agênticos (rodadas de uso de ferramenta) |907| `max_turns` | `int \| None` | `None` | Número máximo de turnos agênticos (rodadas de uso de ferramenta) |

908| `max_budget_usd` | `float \| None` | `None` | Para a consulta quando a estimativa de custo do lado do cliente atinge este valor em USD. Comparado com a mesma estimativa que `total_cost_usd`; veja [Track cost and usage](/docs/pt/agent-sdk/cost-tracking) para ressalvas de precisão |908| `max_budget_usd` | `float \| None` | `None` | Para a consulta quando a estimativa de custo do lado do cliente atinge este valor em USD. Comparado com a mesma estimativa que `total_cost_usd`; veja [Track cost and usage](/docs/pt/agent-sdk/cost-tracking) para ressalvas de precisão |

909| `disallowed_tools` | `list[str]` | `[]` | Ferramentas para negar. Um nome simples como `"Bash"` remove a ferramenta do contexto do Claude. Uma regra com escopo como `"Bash(rm *)"` deixa a ferramenta disponível e nega chamadas correspondentes em todos os modos de permissão, incluindo `bypassPermissions`. Veja [Permissions](/docs/pt/agent-sdk/permissions#allow-and-deny-rules) |909| `disallowed_tools` | `list[str]` | `[]` | Ferramentas para negar. Um nome simples como `"Bash"` remove a ferramenta do contexto do Claude. Uma regra com escopo como `"Bash(rm *)"` deixa a ferramenta disponível e nega chamadas correspondentes em todos os modos de permissão, incluindo `bypassPermissions`, para o comando [conforme escrito](/docs/pt/permissions#bash-rule-limits). Veja [Permissions](/docs/pt/agent-sdk/permissions#allow-and-deny-rules) |

910| `enable_file_checkpointing` | `bool` | `False` | Ativa rastreamento de mudança de arquivo para retrocesso. Veja [File checkpointing](/docs/pt/agent-sdk/file-checkpointing) |910| `enable_file_checkpointing` | `bool` | `False` | Ativa rastreamento de mudança de arquivo para retrocesso. Veja [File checkpointing](/docs/pt/agent-sdk/file-checkpointing) |

911| `model` | `str \| None` | `None` | Alias de modelo Claude ou nome de modelo completo. Veja [valores aceitos e IDs específicos do provedor](/docs/pt/model-config#available-models) |911| `model` | `str \| None` | `None` | Alias de modelo Claude ou nome de modelo completo. Veja [valores aceitos e IDs específicos do provedor](/docs/pt/model-config#available-models) |

912| `fallback_model` | `str \| None` | `None` | Modelo de fallback a usar se o modelo primário falhar |912| `fallback_model` | `str \| None` | `None` | Modelo de fallback a usar se o modelo primário falhar |


1181| `maxTurns` | Não | Número máximo de turnos agênticos antes do agente parar |1181| `maxTurns` | Não | Número máximo de turnos agênticos antes do agente parar |

1182| `background` | Não | Execute este agente como uma tarefa de fundo não bloqueante quando invocado |1182| `background` | Não | Execute este agente como uma tarefa de fundo não bloqueante quando invocado |

1183| `effort` | Não | Nível de esforço de raciocínio para este agente. Aceita um nível nomeado ou um inteiro. Veja [`EffortLevel`](#effortlevel) |1183| `effort` | Não | Nível de esforço de raciocínio para este agente. Aceita um nível nomeado ou um inteiro. Veja [`EffortLevel`](#effortlevel) |

1184| `permissionMode` | Não | Modo de permissão para execução de ferramenta dentro deste agente. Veja [`PermissionMode`](#permissionmode) |1184| `permissionMode` | Não | Modo de permissão para execução de ferramenta dentro deste agente. As [regras de herança de subagente](/docs/pt/agent-sdk/permissions#available-modes) decidem quando se aplica. Veja [`PermissionMode`](#permissionmode) |

1185 1185 

1186<Note>1186<Note>

1187 Os nomes de campo `AgentDefinition` usam camelCase, como `disallowedTools`, `permissionMode` e `maxTurns`. Esses nomes mapeiam diretamente para o formato de fio compartilhado com o SDK TypeScript. Isso difere de `ClaudeAgentOptions`, que usa snake\_case Python para campos de nível superior equivalentes como `disallowed_tools` e `permission_mode`. Como `AgentDefinition` é uma dataclass, passar uma palavra-chave snake\_case levanta um `TypeError` no tempo de construção.1187 Os nomes de campo `AgentDefinition` usam camelCase, como `disallowedTools`, `permissionMode` e `maxTurns`. Esses nomes mapeiam diretamente para o formato de fio compartilhado com o SDK TypeScript. Isso difere de `ClaudeAgentOptions`, que usa snake\_case Python para campos de nível superior equivalentes como `disallowed_tools` e `permission_mode`. Como `AgentDefinition` é uma dataclass, passar uma palavra-chave snake\_case levanta um `TypeError` no tempo de construção.


2699 "run_in_background": bool | None, # Agentes executam em segundo plano por padrão; defina como False para executar sincronamente2699 "run_in_background": bool | None, # Agentes executam em segundo plano por padrão; defina como False para executar sincronamente

2700 "name": str | None, # Nome para o agente gerado2700 "name": str | None, # Nome para o agente gerado

2701 "team_name": str | None, # Descontinuado; ignorado2701 "team_name": str | None, # Descontinuado; ignorado

2702 "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Descontinuado; ignorado. Subagentes herdam o modo de permissão da sessão pai; o frontmatter de definição de agente pode substituí-lo2702 "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Descontinuado; ignorado. As regras de herança de subagente decidem o modo de permissão de um subagente

2703 "isolation": "worktree" | "remote" | None, # Modo de isolamento para as alterações do agente2703 "isolation": "worktree" | "remote" | None, # Modo de isolamento para as alterações do agente

2704}2704}

2705```2705```


3164**Nome da ferramenta:** `TodoWrite`3164**Nome da ferramenta:** `TodoWrite`

3165 3165 

3166<Note>3166<Note>

3167 No Python Agent SDK 0.2.139 e posterior, a seguinte restrição se aplica.

3168 

3169 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:3167 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:

3170 3168 

3171 * `TodoWrite`3169 * `TodoWrite`

agent-sdk/skills.md +372 −145

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.

4 4 

5# Agent Skills no SDK5# Estenda agentes com skills

6 6 

7> Estenda Claude com capacidades especializadas usando Agent Skills no Claude Agent SDK7> Controle quais skills Claude pode invocar em sessões do Claude Agent SDK, despache comandos por nome e crie skills que suas sessões descobrem

8 8 

9<h2 id="overview">9Agent Skills estendem Claude com capacidades especializadas que Claude invoca quando relevante. Skills são empacotadas como arquivos `SKILL.md` contendo instruções, descrições e recursos de suporte opcionais. Esta página também cobre [comandos em sessões do Agent SDK](#commands-in-agent-sdk-sessions).

10 Visão Geral

11</h2>

12 

13Agent Skills estendem Claude com capacidades especializadas que Claude invoca autonomamente quando relevante. Skills são empacotadas como arquivos `SKILL.md` contendo instruções, descrições e recursos de suporte opcionais.

14 10 

15Para informações abrangentes sobre Skills, incluindo benefícios, arquitetura e diretrizes de autoria, consulte a [visão geral de Agent Skills](https://platform.claude.com/docs/pt/agents-and-tools/agent-skills/overview).11Para informações abrangentes sobre skills, incluindo benefícios, arquitetura e diretrizes de autoria, consulte a [visão geral de Agent Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview).

16 12 

17<h2 id="how-skills-work-with-the-sdk">13<h2 id="how-skills-work-with-the-agent-sdk">

18 Como Skills Funcionam com o SDK14 Como skills funcionam com o Agent SDK

19</h2>15</h2>

20 16 

21Ao usar o Claude Agent SDK, Skills são:17Ao usar o Claude Agent SDK, skills são:

22 18 

231. **Definidas como artefatos do sistema de arquivos**: Criadas como arquivos `SKILL.md` em diretórios específicos (`.claude/skills/`)19* **Definidas como artefatos do sistema de arquivos**: você cria cada skill como um arquivo `SKILL.md` em seu próprio diretório, como `.claude/skills/<name>/SKILL.md`

242. **Carregadas do sistema de arquivos**: Skills são carregadas de locais do sistema de arquivos governados por `settingSources` (TypeScript) ou `setting_sources` (Python)20* **Carregadas do sistema de arquivos**: o SDK carrega skills dos locais do sistema de arquivos governados por `settingSources` (TypeScript) ou `setting_sources` (Python)

253. **Descobertas automaticamente**: Uma vez que as configurações do sistema de arquivos são carregadas, os metadados de Skill são descobertos na inicialização a partir de diretórios de usuário e projeto; conteúdo completo carregado quando acionado21* **Descobertas automaticamente**: uma vez que as configurações do sistema de arquivos são carregadas, o SDK descobre metadados de skill na inicialização a partir de diretórios de usuário e projeto, e carrega o conteúdo completo quando Claude invoca a skill

264. **Invocadas pelo modelo**: Claude escolhe autonomamente quando usá-las com base no contexto22* **Invocadas pelo modelo**: Claude escolhe autonomamente quando usá-las com base no contexto

275. **Filtradas via opção `skills`**: Skills descobertas são habilitadas por padrão. Passe uma lista de nomes de skills, `"all"`, ou `[]` para controlar quais estão disponíveis na sessão23* **Invocadas pelo usuário**: você despache uma skill diretamente enviando `/<name>` em um prompt. Consulte [Comandos em sessões do Agent SDK](#commands-in-agent-sdk-sessions)

24* **Escopo via opção `skills`**: skills descobertas são habilitadas por padrão. Passe uma lista de nomes de skills, `"all"` ou `[]` para controlar quais skills Claude pode invocar

28 25 

29Diferentemente de subagentes (que podem ser definidos programaticamente), Skills devem ser criadas como artefatos do sistema de arquivos. O SDK não fornece uma API programática para registrar Skills.26Diferentemente de subagentes, que você pode definir na [opção `agents`](/docs/pt/agent-sdk/subagents#programmatic-definition-recommended), você cria skills como arquivos em disco. O SDK não fornece uma API programática para registrá-las.

30 27 

31<Note>28<Note>

32 Skills são descobertas através das fontes de configuração do sistema de arquivos. Com opções padrão de `query()`, o SDK carrega fontes de usuário e projeto, portanto skills em `~/.claude/skills/`, `<cwd>/.claude/skills/` e `.claude/skills/` em qualquer diretório pai de `<cwd>` até a raiz do repositório estão disponíveis. Se você definir `settingSources` explicitamente, inclua `'user'` ou `'project'` para manter a descoberta de skills, ou use a [opção `plugins`](/pt/agent-sdk/plugins) para carregar skills de um caminho específico.29 Skills são descobertas através das fontes de configuração do sistema de arquivos. Com opções padrão de `query()`, o SDK carrega fontes de usuário e projeto, portanto skills em `~/.claude/skills/`, `<cwd>/.claude/skills/` e `.claude/skills/` em qualquer diretório pai de `<cwd>` até a raiz do repositório estão disponíveis. A fonte de projeto também cobre `<dir>/.claude/skills/` em cada diretório que você passa através de `additionalDirectories` (TypeScript) ou `add_dirs` (Python), porque o SDK passa esses diretórios para Claude Code como [`--add-dir`](/docs/pt/skills#skills-from-additional-directories). Se você definir `settingSources` explicitamente, inclua `'project'` para manter skills de projeto e diretório adicionado e `'user'` para manter suas skills pessoais, ou use a [opção `plugins`](/docs/pt/agent-sdk/plugins) para carregar skills de um caminho específico.

33</Note>30</Note>

34 31 

35<h2 id="using-skills-with-the-sdk">32<h2 id="use-skills-with-the-agent-sdk">

36 Usando Skills com o SDK33 Use skills com o Agent SDK

37</h2>34</h2>

38 35 

39Defina a opção `skills` em `query()` para controlar quais Skills estão disponíveis para a sessão. Quando omitida, Skills descobertas são habilitadas e a ferramenta Skill está disponível, correspondendo ao comportamento da CLI. Passe `"all"` para habilitar cada Skill descoberta, uma lista de nomes de Skill para habilitar apenas aquelas, ou `[]` para desabilitar todas. Quando você define `skills`, o SDK adiciona a ferramenta Skill a `allowedTools` automaticamente. Se você também passar uma lista explícita de `tools`, inclua `"Skill"` nessa lista para que Claude possa invocar skills.36Defina a opção `skills` em `query()` para controlar quais skills Claude pode invocar na sessão. Quando omitida, skills descobertas são habilitadas e a ferramenta Skill está disponível, correspondendo ao comportamento da CLI. Passe `"all"` para deixar Claude invocar cada skill descoberta, uma lista de nomes de skills para permitir apenas aquelas, ou `[]` para deixar Claude invocar nenhuma.

37 

38Por exemplo, para deixar Claude invocar apenas duas skills nomeadas:

39 

40<CodeGroup>

41 ```python Python theme={null}

42 options = ClaudeAgentOptions(skills=["pdf", "docx"])

43 ```

44 

45 ```typescript TypeScript theme={null}

46 const options = { skills: ["pdf", "docx"] };

47 ```

48</CodeGroup>

49 

50<h3 id="set-up-skills-in-a-session">

51 Configure skills em uma sessão

52</h3>

53 

54Quando você define `skills`, o SDK adiciona a ferramenta Skill a `allowedTools` automaticamente. Se você também passar uma lista explícita de `tools`, inclua `"Skill"` nessa lista para que Claude possa invocar skills.

55 

56Uma vez configurado, Claude descobre automaticamente skills do sistema de arquivos e as invoca quando relevante para a solicitação do usuário.

40 57 

41Uma vez configurado, Claude descobre automaticamente Skills do sistema de arquivos e as invoca quando relevante para a solicitação do usuário.58O exemplo a seguir habilita cada skill descoberta em uma sessão e pré-aprova as ferramentas que skills comumente precisam. O exemplo define `cwd` para o diretório de trabalho atual do processo, portanto execute-o dentro de um projeto que tenha um diretório `.claude/skills/` no diretório atual ou em qualquer pai até a raiz do repositório:

42 59 

43<CodeGroup>60<CodeGroup>

44 ```python Python theme={null}61 ```python Python theme={null}

45 import asyncio62 import asyncio

63 import os

64 

46 from claude_agent_sdk import query, ClaudeAgentOptions65 from claude_agent_sdk import query, ClaudeAgentOptions

47 66 

48 67 

49 async def main():68 async def main():

50 options = ClaudeAgentOptions(69 options = ClaudeAgentOptions(

51 cwd="/path/to/project", # Project with .claude/skills/70 cwd=os.getcwd(), # .claude/skills/ here or in a parent directory

52 setting_sources=["user", "project"], # Load Skills from filesystem71 setting_sources=["user", "project"], # Load skills from filesystem

53 skills="all", # Enable every discovered Skill72 skills="all", # Let Claude invoke every discovered skill

54 allowed_tools=["Read", "Write", "Bash"],73 allowed_tools=["Read", "Write", "Bash"],

55 )74 )

56 75 


69 for await (const message of query({88 for await (const message of query({

70 prompt: "Help me process this PDF document",89 prompt: "Help me process this PDF document",

71 options: {90 options: {

72 cwd: "/path/to/project", // Project with .claude/skills/91 cwd: process.cwd(), // .claude/skills/ here or in a parent directory

73 settingSources: ["user", "project"], // Load Skills from filesystem92 settingSources: ["user", "project"], // Load skills from filesystem

74 skills: "all", // Enable every discovered Skill93 skills: "all", // Let Claude invoke every discovered skill

75 allowedTools: ["Read", "Write", "Bash"]94 allowedTools: ["Read", "Write", "Bash"]

76 }95 }

77 })) {96 })) {


80 ```99 ```

81</CodeGroup>100</CodeGroup>

82 101 

83Para habilitar apenas Skills específicas, passe seus nomes. Os nomes correspondem ao campo `name` em `SKILL.md` ou ao nome do diretório da Skill. Use `plugin:skill` para Skills fornecidas por plugin.102<h3 id="confirm-skills-loaded">

103 Confirme skills carregadas

104</h3>

84 105 

85<CodeGroup>106Perto do início do stream, o SDK produz uma mensagem de sistema com subtipo `init`. Verifique seu array `skills` para confirmar que suas skills foram carregadas antes de Claude começar a trabalhar. O array inclui as skills invocáveis pelo usuário que você definiu, junto com [skills agrupadas incluídas com Claude Code](/docs/pt/skills#bundled-skills).

86 ```python Python theme={null}

87 options = ClaudeAgentOptions(skills=["pdf", "docx"])

88 ```

89 107 

90 ```typescript TypeScript theme={null}108O array lista apenas skills invocáveis pelo usuário. Uma skill com [`user-invocable: false`](/docs/pt/skills#control-who-invokes-a-skill) em seu frontmatter carrega e permanece disponível para Claude, mas não aparece no array. O array reflete o que a sessão descobriu e lista as mesmas skills independentemente de estarem ou não em sua lista `skills`.

91 const options = { skills: ["pdf", "docx"] };

92 ```

93</CodeGroup>

94 109 

95A opção `skills` é um filtro de contexto, não uma sandbox. Skills não listadas são ocultadas do modelo e rejeitadas pela ferramenta Skill, mas seus arquivos permanecem no disco e são acessíveis através de Read e Bash.110<h3 id="allow-only-specific-skills">

111 Permita apenas skills específicas

112</h3>

96 113 

97<h2 id="skill-locations">114Para deixar Claude invocar apenas skills específicas, passe seus nomes na lista `skills`. Os nomes correspondem ao campo `name` em `SKILL.md` ou ao nome do diretório da skill. Use `plugin:skill` para skills fornecidas por plugin.

98 Locais de Skill115 

99</h2>116A lista leva apenas nomes de skills exatos. Se uma entrada não puder funcionar como um nome exato, `query()` rejeita a lista antes da sessão começar. Consulte [Erro de nome de skill inválido](#invalid-skill-name-error) para as regras de nome e o erro que cada SDK levanta.

100 117 

101Skills são carregadas de diretórios do sistema de arquivos com base na sua configuração `settingSources`/`setting_sources`:118O modelo não vê skills não listadas e a ferramenta Skill as rejeita, enquanto seus arquivos permanecem em disco e permanecem acessíveis através de Read e Bash. Restringir a lista não restringe [despacho por nome](#dispatch-commands-by-name).

102 119 

103* **Project Skills** (`.claude/skills/`): Compartilhadas com sua equipe via git - carregadas quando `setting_sources` inclui `"project"`120Para deixar Claude invocar cada skill descoberta, passe `skills: "all"` em vez de um curinga.

104* **User Skills** (`~/.claude/skills/`): Skills pessoais em todos os projetos - carregadas quando `setting_sources` inclui `"user"`

105* **Plugin Skills**: Agrupadas com plugins Claude Code instalados

106 121 

107<h2 id="creating-skills">122<h2 id="commands-in-agent-sdk-sessions">

108 Criando Skills123 Comandos em sessões do Agent SDK

109</h2>124</h2>

110 125 

111Skills são definidas como diretórios contendo um arquivo `SKILL.md` com frontmatter YAML e conteúdo Markdown. O campo `description` determina quando Claude invoca sua Skill.126Esta seção é a documentação de comando do SDK. Um comando é qualquer coisa que você executa enviando `/<name>` em um prompt. As entradas na superfície de comando diferem no que as respalda:

112 127 

113**Exemplo de estrutura de diretório**:128* **Comandos integrados**: executam lógica codificada no processo Claude Code que o SDK executa, por exemplo `/compact`

129* **Skills agrupadas**: artefatos de prompt incluídos com Claude Code, por exemplo `/code-review`

130* **Suas skills**: artefatos de prompt que você cria, cada um um diretório contendo um arquivo `SKILL.md`. O nome de uma skill invocável pelo usuário se une à superfície automaticamente, portanto despachar seu próprio `/security-check` e executar um integrado funcionam da mesma forma

131* **Arquivos de comando personalizados**: uma forma de artefato mais antiga com o mesmo comportamento, arquivos Markdown simples em `.claude/commands/` cujos nomes de arquivo se tornam nomes de comando. Skills são seu sucessor recomendado

114 132 

115```bash theme={null}133Por padrão, tanto você quanto Claude podem invocar qualquer skill. Você pode restringir qualquer caminho através do [frontmatter](/docs/pt/skills#control-who-invokes-a-skill) da skill. Para uma definição dos dois termos, consulte as entradas [Comando](/docs/pt/glossary#command) e [Skill](/docs/pt/glossary#skill) do glossário. Consulte [Comandos em Claude Code](/docs/pt/commands) para cada integrado e [Estenda Claude com skills](/docs/pt/skills) para o guia completo de ambas as formas de artefato.

116.claude/skills/processing-pdfs/

117└── SKILL.md

118```

119 134 

120Para orientação completa sobre criação de Skills, incluindo estrutura SKILL.md, Skills multi-arquivo e exemplos, consulte:135<h3 id="discover-available-commands">

136 Descubra comandos disponíveis

137</h3>

121 138 

122* [Agent Skills no Claude Code](/pt/skills): Guia completo com exemplos139Você pode despachar comandos que funcionam sem um terminal interativo através do SDK. A mensagem `system/init` lista os disponíveis em sua sessão em seu campo `slash_commands`. Comandos que precisam de um terminal interativo, como `/theme` e `/terminal-setup`, não aparecem na lista. Acesse o campo quando sua sessão começar:

123* [Agent Skills Best Practices](https://platform.claude.com/docs/pt/agents-and-tools/agent-skills/best-practices): Diretrizes de autoria e convenções de nomenclatura

124 140 

125<h2 id="tool-restrictions">141<CodeGroup>

126 Restrições de Ferramenta142 ```typescript TypeScript theme={null}

127</h2>143 import { query } from "@anthropic-ai/claude-agent-sdk";

128 144 

129<Note>145 for await (const message of query({

130 O campo frontmatter `allowed-tools` em SKILL.md é suportado apenas ao usar Claude Code CLI diretamente. **Ele não se aplica ao usar Skills através do SDK**.146 prompt: "Hello Claude",

147 options: { maxTurns: 1 }

148 })) {

149 if (message.type === "system" && message.subtype === "init") {

150 console.log("Available commands:", message.slash_commands);

151 }

152 }

153 ```

131 154 

132 Ao usar o SDK, controle o acesso à ferramenta através da opção principal `allowedTools` na sua configuração de query.155 ```python Python theme={null}

133</Note>156 import asyncio

157 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

134 158 

135Para controlar o acesso à ferramenta para Skills em aplicações SDK, use `allowedTools` para pré-aprovar ferramentas específicas. Sem um callback `canUseTool`, qualquer coisa não na lista é negada:159 

160 async def main():

161 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):

162 if isinstance(message, SystemMessage) and message.subtype == "init":

163 print("Available commands:", message.data["slash_commands"])

164 

165 

166 asyncio.run(main())

167 ```

168</CodeGroup>

169 

170A lista impressa mistura comandos integrados, skills agrupadas, suas skills invocáveis pelo usuário e arquivos `.claude/commands/`:

171 

172```text theme={null}

173Available commands: ["clear", "compact", "context", "usage", "code-review", "verify", "security-check", ...]

174```

175 

176Suas skills invocáveis pelo usuário aparecem tanto nesta lista quanto no array `skills` de [Confirme skills carregadas](#confirm-skills-loaded). A lista `slash_commands` adiciona o resto dos comandos disponíveis em sua sessão. Uma skill com [`user-invocable: false`](/docs/pt/skills#control-who-invokes-a-skill) em seu frontmatter não aparece em nenhuma das duas. Sessões que configuram [servidores MCP](/docs/pt/agent-sdk/mcp) também podem expor [prompts MCP como comandos](/docs/pt/mcp#use-mcp-prompts-as-commands).

177 

178<h3 id="dispatch-commands-by-name">

179 Despache comandos por nome

180</h3>

181 

182Envie um comando incluindo-o em sua string de prompt, da mesma forma que você envia texto regular. O despacho não depende da opção `skills`. Enviar `/<name>` executa uma skill invocável pelo usuário mesmo quando sua lista `skills` a omite. Comandos que atuam no histórico de conversa, como `/compact`, precisam de mensagens anteriores para trabalhar.

136 183 

137<Note>184<Note>

138 As instruções de importação do primeiro exemplo são assumidas nos seguintes trechos de código.185 Um comando pode atingir o limite `maxTurns` / `max_turns` como qualquer outro prompt, terminando a query com um resultado de erro em vez de `success`. Para o contrato de resultado de erro, consulte [Manipule o resultado](/docs/pt/agent-sdk/agent-loop#handle-the-result). Se seu comando pode atingir o limite, envolva o loop em um `try`/`catch` em TypeScript ou `try`/`except` em Python, como mostrado em [Entrada de Mensagem Única](/docs/pt/agent-sdk/streaming-vs-single-mode#single-message-input), ou defina `maxTurns` alto o suficiente para o trabalho ser concluído.

139</Note>186</Note>

140 187 

141<CodeGroup>188<h3 id="compact-history-with-/compact">

142 ```python Python theme={null}189 Compacte histórico com `/compact`

143 options = ClaudeAgentOptions(190</h3>

144 setting_sources=["user", "project"], # Load Skills from filesystem

145 skills="all",

146 allowed_tools=["Read", "Grep", "Glob"],

147 )

148 191 

149 async for message in query(prompt="Analyze the codebase structure", options=options):192O comando `/compact` reduz o tamanho do seu histórico de conversa resumindo mensagens mais antigas enquanto preserva contexto importante. A compactação precisa de uma conversa existente com mensagens anteriores suficientes para resumir. Este exemplo tem uma conversa primeiro, depois a compacta e lê a mensagem de sistema `compact_boundary` que relata o resultado:

150 print(message)

151 ```

152 193 

194<CodeGroup>

153 ```typescript TypeScript theme={null}195 ```typescript TypeScript theme={null}

196 import { query } from "@anthropic-ai/claude-agent-sdk";

197 

198 // Compaction needs existing history, so have a conversation first

199 try {

154 for await (const message of query({200 for await (const message of query({

155 prompt: "Analyze the codebase structure",201 prompt: "Explain what this project does",

156 options: {202 options: { maxTurns: 2 }

157 settingSources: ["user", "project"], // Load Skills from filesystem203 })) {

158 skills: "all",204 if (message.type === "result" && message.subtype === "success") {

159 allowedTools: ["Read", "Grep", "Glob"],205 console.log(message.result);

160 permissionMode: "dontAsk" // Deny anything not in allowedTools206 }

161 }207 }

208 } catch (error) {

209 // A single-shot query() throws after yielding an error result,

210 // so the follow-up query below still runs.

211 console.error(`Session ended with an error: ${error}`);

212 }

213 

214 // Compact the same conversation

215 for await (const message of query({

216 prompt: "/compact",

217 options: { continue: true, maxTurns: 1 }

162 })) {218 })) {

163 console.log(message);219 if (message.type === "system" && message.subtype === "compact_boundary") {

220 console.log("Compaction completed");

221 console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);

222 console.log("Trigger:", message.compact_metadata.trigger);

223 // Example output:

224 // Compaction completed

225 // Pre-compaction tokens: 1842

226 // Trigger: manual

227 }

164 }228 }

165 ```229 ```

230 

231 ```python Python theme={null}

232 import asyncio

233 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage, SystemMessage

234 

235 

236 async def main():

237 # Compaction needs existing history, so have a conversation first

238 try:

239 async for message in query(

240 prompt="Explain what this project does",

241 options=ClaudeAgentOptions(max_turns=2),

242 ):

243 if isinstance(message, ResultMessage) and message.subtype == "success":

244 print(message.result)

245 except Exception as error:

246 # A single-shot query() raises after yielding an error result,

247 # so the follow-up query below still runs.

248 print(f"Session ended with an error: {error}")

249 

250 # Compact the same conversation

251 async for message in query(

252 prompt="/compact",

253 options=ClaudeAgentOptions(continue_conversation=True, max_turns=1),

254 ):

255 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":

256 print("Compaction completed")

257 print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])

258 print("Trigger:", message.data["compact_metadata"]["trigger"])

259 # Example output:

260 # Compaction completed

261 # Pre-compaction tokens: 1842

262 # Trigger: manual

263 

264 

265 asyncio.run(main())

266 ```

166</CodeGroup>267</CodeGroup>

167 268 

168<h2 id="discovering-available-skills">269<Note>

169 Descobrindo Skills Disponíveis270 Uma mensagem `compact_boundary` só chega quando a compactação foi executada. Sem nada para resumir, `/compact` relata o motivo em vez de levantar. A execução ainda termina com um resultado `success` e nenhuma mensagem `compact_boundary`, e o texto do resultado carrega o motivo, por exemplo `Not enough messages to compact.` após uma única troca curta. Uma chamada `query()` nova e única começa com contexto vazio, portanto use este padrão em uma sessão com turnos anteriores, por exemplo em [modo de entrada de streaming](/docs/pt/agent-sdk/streaming-vs-single-mode) ou ao retomar uma sessão.

271</Note>

272 

273<h3 id="reset-context-with-/clear">

274 Redefina contexto com `/clear`

275</h3>

276 

277O comando `/clear` redefine a conversa para um contexto vazio, portanto prompts subsequentes começam sem histórico de conversa anterior. A conversa anterior permanece em disco. Você pode retornar a essa conversa passando seu ID de sessão para a [opção `resume`](/docs/pt/agent-sdk/sessions#resume-by-id).

278 

279`/clear` é útil em [modo de entrada de streaming](/docs/pt/agent-sdk/streaming-vs-single-mode), onde você envia múltiplos prompts sobre uma única conexão. Para chamadas `query()` únicas, cada chamada já começa com contexto vazio, portanto enviar `/clear` não tem efeito prático. Comece uma nova `query()` em vez disso.

280 

281<h2 id="create-skills">

282 Crie skills

170</h2>283</h2>

171 284 

172Para ver quais Skills estão disponíveis em sua aplicação SDK, simplesmente pergunte a Claude:285Crie cada skill como um diretório contendo um arquivo `SKILL.md` com frontmatter YAML e conteúdo Markdown. O campo `description` determina quando Claude invoca sua skill.

173 286 

174<CodeGroup>287**Exemplo de estrutura de diretório**:

175 ```python Python theme={null}

176 options = ClaudeAgentOptions(

177 setting_sources=["user", "project"], # Load Skills from filesystem

178 skills="all",

179 )

180 288 

181 async for message in query(prompt="What Skills are available?", options=options):289```text theme={null}

182 print(message)290.claude/skills/security-check/

183 ```291└── SKILL.md

292```

293 

294<h3 id="choose-a-discovery-level">

295 Escolha um nível de descoberta

296</h3>

297 

298Salve skills em um dos dois [níveis de descoberta](/docs/pt/skills#where-skills-live) mais comuns:

299 

300* **Skills de projeto**: `.claude/skills/`, disponíveis apenas no projeto atual

301* **Skills pessoais**: `~/.claude/skills/`, disponíveis em todos os seus projetos

302 

303Se você tem arquivos de comando personalizados existentes em `.claude/commands/`, eles continuam funcionando. Um arquivo de comando em `.claude/commands/deploy.md` cria `/deploy` e funciona da mesma forma que uma skill em `.claude/skills/deploy/SKILL.md` faria. Se um arquivo de comando e uma skill compartilham um nome, consulte [Resolva skills que compartilham um nome](/docs/pt/skills#resolve-skills-that-share-a-name) para qual executa. O SDK carrega arquivos `.claude/commands/` e `~/.claude/commands/` dos mesmos dois escopos que skills. Consulte [Estenda Claude com skills](/docs/pt/skills) para o guia completo de ambas as formas de artefato.

184 304 

305<h3 id="create-and-dispatch-your-first-skill">

306 Crie e despache sua primeira skill

307</h3>

308 

309Para ver o fluxo completo, crie `.claude/skills/security-check/SKILL.md`:

310 

311```markdown theme={null}

312---

313name: security-check

314description: Run a security vulnerability scan

315---

316 

317Analyze the codebase for security vulnerabilities including:

318- SQL injection risks

319- XSS vulnerabilities

320- Exposed credentials

321- Insecure configurations

322```

323 

324Uma vez que o arquivo existe, a skill está disponível através do SDK. Claude a invoca quando uma solicitação corresponde à sua descrição, e você pode despachá-la diretamente:

325 

326<CodeGroup>

185 ```typescript TypeScript theme={null}327 ```typescript TypeScript theme={null}

328 import { query } from "@anthropic-ai/claude-agent-sdk";

329 

186 for await (const message of query({330 for await (const message of query({

187 prompt: "What Skills are available?",331 prompt: "/security-check",

188 options: {332 options: { maxTurns: 10 }

189 settingSources: ["user", "project"], // Load Skills from filesystem

190 skills: "all"

191 }

192 })) {333 })) {

193 console.log(message);334 if (message.type === "result" && message.subtype === "success") {

335 console.log(message.result);

336 }

194 }337 }

195 ```338 ```

339 

340 ```python Python theme={null}

341 import asyncio

342 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

343 

344 

345 async def main():

346 async for message in query(

347 prompt="/security-check", options=ClaudeAgentOptions(max_turns=10)

348 ):

349 if isinstance(message, ResultMessage) and message.subtype == "success":

350 print(message.result)

351 

352 

353 asyncio.run(main())

354 ```

196</CodeGroup>355</CodeGroup>

197 356 

198Claude listará as Skills disponíveis com base no seu diretório de trabalho atual e plugins instalados.357Uma execução bem-sucedida termina com um resultado `success` cujo texto carrega as descobertas da varredura. Contra um pequeno aplicativo Express com problemas semeados, o texto do resultado começa:

358 

359```text theme={null}

360**Security scan of `app.js` — 4 findings (most severe first):**

361 

3621. **SQL Injection** (line 8) — `req.query.name` is concatenated directly into the SQL string. Trivially exploitable (`' OR '1'='1`, `'; DROP TABLE users;--`). **Fix:** use parameterized queries, e.g. `db.query("SELECT * FROM users WHERE name = ?", [req.query.name], cb)`.

363...

364```

365 

366O nome da skill também aparece no array `slash_commands` da mensagem init.

367 

368<Note>

369 Claude Code inclui skills agrupadas `code-review` e `verify`. Se você nomear um arquivo `.claude/commands/` após uma delas, por exemplo `.claude/commands/code-review.md`, o arquivo de comando sombreia a skill agrupada e `slash_commands` lista o nome uma vez.

370</Note>

199 371 

200<h2 id="testing-skills">372<h2 id="pre-approve-tools-for-skills">

201 Testando Skills373 Pré-aprove ferramentas para skills

202</h2>374</h2>

203 375 

204Teste Skills fazendo perguntas que correspondam às suas descrições:376<Note>

377 Para skills de projeto e pessoais, Claude Code aplica o campo frontmatter [`allowed-tools`](/docs/pt/skills#pre-approve-tools-for-a-skill) em sessões do SDK. Você também pode pré-aprovar ferramentas para essas skills através da opção `allowedTools` (`allowed_tools` em Python) em sua configuração de query. Skills [sincronizadas de claude.ai](/docs/pt/skills#how-claude-code-handles-the-frontmatter-of-a-synced-skill) seguem suas próprias regras de frontmatter.

378</Note>

379 

380Skills executam com as ferramentas da sessão. O exemplo abaixo pré-aprova `Read`, `Grep` e `Glob` com `allowedTools` (`allowed_tools` em Python), portanto Claude pode inspecionar arquivos enquanto executa a [skill security-check](#create-and-dispatch-your-first-skill) sem parar para aprovação:

205 381 

206<CodeGroup>382<CodeGroup>

207 ```python Python theme={null}383 ```python Python theme={null}

384 import asyncio

385 

386 from claude_agent_sdk import query, ClaudeAgentOptions

387 

208 options = ClaudeAgentOptions(388 options = ClaudeAgentOptions(

209 cwd="/path/to/project",389 setting_sources=["user", "project"], # Load skills from filesystem

210 setting_sources=["user", "project"], # Load Skills from filesystem

211 skills="all",390 skills="all",

212 allowed_tools=["Read", "Bash"],391 allowed_tools=["Read", "Grep", "Glob"],

213 )392 )

214 393 

215 async for message in query(prompt="Extract text from invoice.pdf", options=options):394 

395 async def main():

396 async for message in query(prompt="Check this project for security issues", options=options):

216 print(message)397 print(message)

398 

399 

400 asyncio.run(main())

217 ```401 ```

218 402 

219 ```typescript TypeScript theme={null}403 ```typescript TypeScript theme={null}

404 import { query } from "@anthropic-ai/claude-agent-sdk";

405 

220 for await (const message of query({406 for await (const message of query({

221 prompt: "Extract text from invoice.pdf",407 prompt: "Check this project for security issues",

222 options: {408 options: {

223 cwd: "/path/to/project",409 settingSources: ["user", "project"], // Load skills from filesystem

224 settingSources: ["user", "project"], // Load Skills from filesystem

225 skills: "all",410 skills: "all",

226 allowedTools: ["Read", "Bash"]411 allowedTools: ["Read", "Grep", "Glob"]

227 }412 }

228 })) {413 })) {

229 console.log(message);414 console.log(message);


231 ```416 ```

232</CodeGroup>417</CodeGroup>

233 418 

234Claude invoca automaticamente a Skill relevante se a descrição corresponder à sua solicitação.419No stream, a invocação de skill aparece como um uso de ferramenta Skill, seguido por chamadas Read nos arquivos do projeto. A execução termina com um resultado `success` cujo texto carrega as descobertas.

420 

421A lista pré-aprova as ferramentas nomeadas em vez de restringir as outras. Para o fluxo de permissão completo, incluindo modos de permissão e o callback `canUseTool`, consulte [Permissões](/docs/pt/agent-sdk/permissions).

235 422 

236<h2 id="troubleshooting">423<h2 id="troubleshooting">

237 Solução de Problemas424 Solução de problemas

238</h2>425</h2>

239 426 

240<h3 id="skills-not-found">427<h3 id="skills-not-found">

241 Skills Não Encontradas428 Skills não encontradas

242</h3>429</h3>

243 430 

244**Verifique a configuração settingSources**: Skills são descobertas através das fontes de configuração `user` e `project`. Se você definir `settingSources`/`setting_sources` explicitamente e omitir essas fontes, skills não são carregadas:431**Verifique a configuração settingSources**: o SDK descobre skills através das fontes de configuração `user` e `project`. Se você definir `settingSources`/`setting_sources` explicitamente e omitir essas fontes, o SDK não carrega skills:

245 432 

246<CodeGroup>433<CodeGroup>

247 ```python Python theme={null}434 ```python Python theme={null}


257 444 

258 ```typescript TypeScript theme={null}445 ```typescript TypeScript theme={null}

259 // Skills not loaded: settingSources excludes user and project446 // Skills not loaded: settingSources excludes user and project

260 const options = {447 const optionsWithoutSkills = {

261 settingSources: [],448 settingSources: [],

262 skills: "all"449 skills: "all"

263 };450 };

264 451 

265 // Skills loaded: user and project sources included452 // Skills loaded: user and project sources included

266 const options = {453 const optionsWithSkills = {

267 settingSources: ["user", "project"],454 settingSources: ["user", "project"],

268 skills: "all"455 skills: "all"

269 };456 };

270 ```457 ```

271</CodeGroup>458</CodeGroup>

272 459 

273Para mais detalhes sobre `settingSources`/`setting_sources`, consulte a [referência TypeScript SDK](/pt/agent-sdk/typescript#settingsource) ou [referência Python SDK](/pt/agent-sdk/python#settingsource).460Para qual diretório de skill cada fonte carrega, consulte a [tabela de fontes do sistema de arquivos](/docs/pt/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources). Para mais detalhes sobre `settingSources`/`setting_sources`, consulte a [referência TypeScript SDK](/docs/pt/agent-sdk/typescript#settingsource) ou [referência Python SDK](/docs/pt/agent-sdk/python#settingsource).

274 461 

275**Verifique o diretório de trabalho**: O SDK carrega Skills de `.claude/skills/` na opção `cwd` e em todos os diretórios pai até a raiz do repositório. Certifique-se de que `cwd` aponta para ou abaixo do diretório contendo `.claude/skills/`, dentro do mesmo repositório:462**Verifique o diretório de trabalho**: o SDK carrega skills de `.claude/skills/` na opção `cwd` e em cada diretório pai até a raiz do repositório. Certifique-se de que `cwd` aponta para ou abaixo do diretório contendo `.claude/skills/`, dentro do mesmo repositório:

276 463 

277<CodeGroup>464<CodeGroup>

278 ```python Python theme={null}465 ```python Python theme={null}


294 ```481 ```

295</CodeGroup>482</CodeGroup>

296 483 

297Consulte a seção "Usando Skills com o SDK" acima para o padrão completo.484Consulte [Use skills com o Agent SDK](#use-skills-with-the-agent-sdk) para o padrão completo.

298 485 

299**Verifique o local do sistema de arquivos**:486**Verifique o local do sistema de arquivos**:

300 487 

301```bash theme={null}488```bash theme={null}

302# Check project Skills489# Check project skills

303ls .claude/skills/*/SKILL.md490ls .claude/skills/*/SKILL.md

304 491 

305# Check personal Skills492# Check personal skills

306ls ~/.claude/skills/*/SKILL.md493ls ~/.claude/skills/*/SKILL.md

307```494```

308 495 

309<h3 id="skill-not-being-used">496<h3 id="skill-not-being-used">

310 Skill Não Sendo Usada497 Skill não sendo usada

498</h3>

499 

500**Verifique a opção `skills`**: se você passou uma lista `skills`, confirme que o nome da skill está incluído. Quando Claude tenta invocar uma skill não listada, a ferramenta Skill retorna `Skill <name> is not in this session's skills allowlist`. Adicione o nome à sua lista, ou despache a skill diretamente enviando `/<name>` em um prompt, que funciona sem listar.

501 

502**Verifique a descrição**: certifique-se de que é específica e inclui palavras-chave relevantes. Consulte [Práticas recomendadas de Agent Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices#writing-effective-descriptions) para orientação sobre como escrever descrições eficazes.

503 

504<h3 id="invalid-skill-name-error">

505 Erro de nome de skill inválido

311</h3>506</h3>

312 507 

313**Verifique a opção `skills`**: Se você passou uma lista `skills`, confirme que o nome da skill está incluído. Passar `[]` desabilita todas as skills.508Quando um nome em sua lista `skills` não pode funcionar como um nome de skill exato, `query()` rejeita a lista antes de iniciar o processo Claude Code. Os nomes que acionam a rejeição incluem:

314 509 

315**Verifique a descrição**: Certifique-se de que é específica e inclui palavras-chave relevantes. Consulte [Agent Skills Best Practices](https://platform.claude.com/docs/pt/agents-and-tools/agent-skills/best-practices#writing-effective-descriptions) para orientação sobre como escrever descrições eficazes.510* Um nome vazio

511* Um nome contendo parênteses, vírgulas ou caracteres de controle

512* Um nome preenchido com espaço em branco

513* Uma forma curinga como um `*` simples ou um sufixo `:*`

514 

515Cada SDK superficializa a rejeição de forma diferente:

516 

517<Tabs>

518 <Tab title="TypeScript">

519 O SDK TypeScript lança um `Error` declarando a regra que a entrada quebrou. Por exemplo, `skills: ["docs:*"]` lança:

520 

521 ```text theme={null}

522 Invalid skill name "docs:*": wildcard-suffix names are not allowed; list each skill by its exact name.

523 ```

524 

525 Um nome vazio relata `Skill names must be non-empty strings.`

526 

527 Antes do TypeScript Agent SDK 0.3.221, o SDK não executava esta verificação.

528 </Tab>

529 

530 <Tab title="Python">

531 O SDK Python levanta `ValueError` declarando a regra que a entrada quebrou. Por exemplo, `skills=["docs:*"]` levanta:

532 

533 ```text theme={null}

534 ValueError: Invalid skill name 'docs:*': wildcard-suffix names are not allowed; list each skill by its exact name.

535 ```

536 

537 Um nome vazio relata `Skill names must be non-empty strings`.

538 

539 Antes do Python Agent SDK 0.2.129, o SDK não executava esta verificação.

540 </Tab>

541</Tabs>

316 542 

317<h3 id="additional-troubleshooting">543<h3 id="additional-troubleshooting">

318 Solução de Problemas Adicional544 Solução de problemas adicional

319</h3>545</h3>

320 546 

321Para solução de problemas geral de Skills (sintaxe YAML, depuração, etc.), consulte a [seção de solução de problemas de Skills do Claude Code](/pt/skills#troubleshooting).547Para solução de problemas geral de skills, como erros de sintaxe YAML e depuração, consulte a [seção de solução de problemas de skills do Claude Code](/docs/pt/skills#troubleshooting).

322 548 

323<h2 id="related-documentation">549<h2 id="next-steps">

324 Documentação Relacionada550 Próximos passos

325</h2>551</h2>

326 552 

327<h3 id="skills-guides">553O [guia de skills do Claude Code](/docs/pt/skills) cobre autoria em profundidade. Sua orientação se aplica a sessões do SDK. Comece com estas seções:

328 Guias de Skills

329</h3>

330 554 

331* [Agent Skills no Claude Code](/pt/skills): Guia completo de Skills com criação, exemplos e solução de problemas555* [Referência de frontmatter](/docs/pt/skills#frontmatter-reference): cada campo suportado

332* [Agent Skills Overview](https://platform.claude.com/docs/pt/agents-and-tools/agent-skills/overview): Visão geral conceitual, benefícios e arquitetura556* [Passe argumentos para skills](/docs/pt/skills#pass-arguments-to-skills): `$ARGUMENTS`, `$0`, `$1` e empilhamento de skills. A [tabela de substituição completa](/docs/pt/skills#available-string-substitutions) adiciona argumentos nomeados e as variáveis `${CLAUDE_*}`

333* [Agent Skills Best Practices](https://platform.claude.com/docs/pt/agents-and-tools/agent-skills/best-practices): Diretrizes de autoria para Skills eficazes557* [Injete contexto dinâmico](/docs/pt/skills#inject-dynamic-context): linhas `` !`command` `` que executam antes de Claude ver o conteúdo da skill

334* [Agent Skills Cookbook](https://platform.claude.com/cookbook/skills-notebooks-01-skills-introduction): Skills de exemplo e templates558* [Escolha onde skills carregam](/docs/pt/skills#where-skills-live): cada local de skill, namespacing de plugin e qual skill executa quando dois compartilham um nome

335 559 

336<h3 id="sdk-resources">560<h2 id="related-resources">

337 Recursos SDK561 Recursos relacionados

338</h3>562</h2>

339 563 

340* [Subagents no SDK](/pt/agent-sdk/subagents): Agentes similares baseados em sistema de arquivos com opções programáticas564* [Comandos em Claude Code](/docs/pt/commands): a superfície de comando completa, incluindo cada integrado

341* [Slash Commands no SDK](/pt/agent-sdk/slash-commands): Comandos invocados pelo usuário565* [Visão geral de Agent Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview): visão geral conceitual, benefícios e arquitetura

342* [Visão Geral do SDK](/pt/agent-sdk/overview): Conceitos gerais do SDK566* [Práticas recomendadas de Agent Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices): diretrizes de autoria para skills eficazes

343* [Referência TypeScript SDK](/pt/agent-sdk/typescript): Documentação completa da API567* [Livro de receitas de Agent Skills](https://platform.claude.com/cookbook/skills-notebooks-01-skills-introduction): skills de exemplo e templates

344* [Referência Python SDK](/pt/agent-sdk/python): Documentação completa da API568* [Subagentes no SDK](/docs/pt/agent-sdk/subagents): agentes similares baseados em sistema de arquivos com opções programáticas

569* [Visão geral do SDK](/docs/pt/agent-sdk/overview): conceitos gerais do SDK

570* [Referência TypeScript SDK](/docs/pt/agent-sdk/typescript): documentação completa da API

571* [Referência Python SDK](/docs/pt/agent-sdk/python): documentação completa da API

Details

6 6 

7> Obtenha respostas em tempo real do Agent SDK conforme o texto e as chamadas de ferramentas são transmitidas7> Obtenha respostas em tempo real do Agent SDK conforme o texto e as chamadas de ferramentas são transmitidas

8 8 

9Por padrão, o Agent SDK produz objetos `AssistantMessage` completos após Claude terminar de gerar cada resposta. Para receber atualizações incrementais conforme o texto e as chamadas de ferramentas são geradas, ative o streaming de mensagens parciais.9Por padrão, o Agent SDK produz uma `AssistantMessage` completa para cada bloco de conteúdo não vazio, como um bloco de texto ou uma chamada de ferramenta, após Claude terminar de gerar esse bloco. Para receber atualizações incrementais conforme o texto e as chamadas de ferramentas são geradas, ative o streaming de mensagens parciais.

10 10 

11<Tip>11<Tip>

12 Esta página aborda o streaming de saída (recebimento de tokens em tempo real). Para modos de entrada (como você envia mensagens), consulte [Enviar mensagens para agentes](/docs/pt/agent-sdk/streaming-vs-single-mode). Você também pode [transmitir respostas usando o Agent SDK via CLI](/docs/pt/headless).12 Esta página aborda o streaming de saída (recebimento de tokens em tempo real). Para modos de entrada (como você envia mensagens), consulte [Enviar mensagens para agentes](/docs/pt/agent-sdk/streaming-vs-single-mode). Você também pode [transmitir respostas usando o Agent SDK via CLI](/docs/pt/headless).


102 uuid: UUID;102 uuid: UUID;

103 session_id: string;103 session_id: string;

104 ttft_ms?: number; // Time to first token in ms, present only on message_start events104 ttft_ms?: number; // Time to first token in ms, present only on message_start events

105 user_message_uuid?: string;

105 };106 };

106 ```107 ```

107</CodeGroup>108</CodeGroup>

108 109 

109O campo `parent_tool_use_id` é sempre `None` em Python e `null` em TypeScript. Eventos de stream são emitidos apenas para a sessão principal; deltas no nível de token de subagentos não são encaminhados. Para atribuir saída a um subagentos, use mensagens completas, que carregam `parent_tool_use_id`. Veja [Detectar invocação de subagentos](/docs/pt/agent-sdk/subagents#detect-subagent-invocation).110O campo `parent_tool_use_id` é sempre `None` em Python e `null` em TypeScript. Eventos de stream são emitidos apenas para a sessão principal; deltas no nível de token de subagentos não são encaminhados. Para atribuir saída a um subagentos, use mensagens completas, que carregam `parent_tool_use_id`. Veja [Detectar invocação de subagentos](/docs/pt/agent-sdk/subagents#detect-subagent-invocation).

110 111 

112Claude Code define `user_message_uuid` no primeiro evento de stream não-ping da rodada, e novamente quando a mensagem que a rodada está respondendo muda, sob as condições em [`user_message_uuid`](/docs/pt/agent-sdk/typescript#user_message_uuid). O `StreamEvent` do Python não expõe este campo.

113 

111O campo `event` contém o evento de streaming bruto da [Claude API](https://platform.claude.com/docs/en/build-with-claude/streaming#event-types). Os tipos de evento comuns incluem:114O campo `event` contém o evento de streaming bruto da [Claude API](https://platform.claude.com/docs/en/build-with-claude/streaming#event-types). Os tipos de evento comuns incluem:

112 115 

113| Tipo de Evento | Descrição |116| Tipo de Evento | Descrição |


123 Fluxo de mensagens126 Fluxo de mensagens

124</h2>127</h2>

125 128 

126Com mensagens parciais ativadas, você recebe mensagens nesta ordem:129Claude Code emite uma `AssistantMessage` conforme cada bloco de conteúdo não vazio é concluído, portanto uma resposta com um bloco de texto e uma chamada de ferramenta produz dois objetos `AssistantMessage`. Cada um carrega apenas seu próprio bloco de conteúdo, e ambos compartilham o mesmo ID de mensagem, que você lê como `message.message.id` em TypeScript e `message.message_id` em Python. Com mensagens parciais ativadas, cada `AssistantMessage` chega antes do evento `content_block_stop` desse bloco, e você recebe mensagens nesta ordem:

127 130 

128```text theme={null}131```text theme={null}

129StreamEvent (message_start)132StreamEvent (message_start)

130StreamEvent (content_block_start) - text block133StreamEvent (content_block_start) - text block

131StreamEvent (content_block_delta) - text chunks...134StreamEvent (content_block_delta) - text chunks...

135AssistantMessage - complete text block

132StreamEvent (content_block_stop)136StreamEvent (content_block_stop)

133StreamEvent (content_block_start) - tool_use block137StreamEvent (content_block_start) - tool_use block

134StreamEvent (content_block_delta) - tool input chunks...138StreamEvent (content_block_delta) - tool input chunks...

139AssistantMessage - complete tool_use block

135StreamEvent (content_block_stop)140StreamEvent (content_block_stop)

136StreamEvent (message_delta)141StreamEvent (message_delta)

137StreamEvent (message_stop)142StreamEvent (message_stop)

138AssistantMessage - complete message with all content

139... tool executes ...143... tool executes ...

140... more streaming events for next turn ...144... more streaming events for next turn ...

141ResultMessage - final result145ResultMessage - final result

142```146```

143 147 

144Sem mensagens parciais ativadas, você recebe todos os tipos de mensagem, exceto `StreamEvent`. Os tipos comuns incluem `SystemMessage` (inicialização de sessão), `AssistantMessage` (respostas completas), `ResultMessage` (resultado final) e uma mensagem de limite compacta indicando quando o histórico de conversa foi compactado (`SDKCompactBoundaryMessage` em TypeScript; `SystemMessage` com subtipo `"compact_boundary"` em Python).148Sem mensagens parciais ativadas, você recebe todos os tipos de mensagem, exceto `StreamEvent`. Os tipos comuns incluem `SystemMessage` (inicialização de sessão), `AssistantMessage` (blocos de conteúdo completos), `ResultMessage` (resultado final) e uma mensagem de limite compacta indicando quando o histórico de conversa foi compactado (`SDKCompactBoundaryMessage` em TypeScript; `SystemMessage` com subtipo `"compact_boundary"` em Python).

145 149 

146<h2 id="stream-tool-calls">150<h2 id="stream-tool-calls">

147 Transmitir chamadas de ferramentas151 Transmitir chamadas de ferramentas

Details

166| `maxTurns` | `number` | Não | Número máximo de turnos agentic antes do agente parar. Quando o agente atinge o limite, Claude Code retorna sua saída marcada como parcial, e você pode [retomar o agente](#resume-subagents) para continuar. A marcação parcial requer Claude Code v2.1.246 ou posterior |166| `maxTurns` | `number` | Não | Número máximo de turnos agentic antes do agente parar. Quando o agente atinge o limite, Claude Code retorna sua saída marcada como parcial, e você pode [retomar o agente](#resume-subagents) para continuar. A marcação parcial requer Claude Code v2.1.246 ou posterior |

167| `background` | `boolean` | Não | Executar este agente como uma tarefa de background não-bloqueante quando invocado |167| `background` | `boolean` | Não | Executar este agente como uma tarefa de background não-bloqueante quando invocado |

168| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | Não | Nível de esforço de raciocínio para este agente |168| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | Não | Nível de esforço de raciocínio para este agente |

169| `permissionMode` | `PermissionMode` | Não | Modo de permissão para execução de ferramentas dentro deste agente |169| `permissionMode` | `PermissionMode` | Não | Modo de permissão para execução de ferramentas dentro deste agente. As [regras de herança de subagente](/docs/pt/agent-sdk/permissions#available-modes) decidem quando se aplica |

170 170 

171No SDK Python, nomes de campos com múltiplas palavras como `disallowedTools` e `mcpServers` mantêm sua ortografia camelCase para corresponder ao formato de transmissão em vez de seguir a convenção snake\_case do Python. Consulte a referência [`AgentDefinition`](/docs/pt/agent-sdk/python#agentdefinition) para detalhes.171No SDK Python, nomes de campos com múltiplas palavras como `disallowedTools` e `mcpServers` mantêm sua ortografia camelCase para corresponder ao formato de transmissão em vez de seguir a convenção snake\_case do Python. Consulte a referência [`AgentDefinition`](/docs/pt/agent-sdk/python#agentdefinition) para detalhes.

172 172 

Details

6 6 

7> Rastreie tarefas em sessões do Agent SDK e renderize o progresso do Claude em sua aplicação a partir de chamadas de ferramentas estruturadas7> Rastreie tarefas em sessões do Agent SDK e renderize o progresso do Claude em sua aplicação a partir de chamadas de ferramentas estruturadas

8 8 

9Nos modelos listados em [Disponibilidade de modelos](#model-availability), Claude rastreia trabalho com múltiplas etapas sem uma lista de tarefas escrita, e Claude Code deixa as [ferramentas de rastreamento de tarefas](/docs/pt/tools-reference#task-tool-availability) fora das sessões por padrão. Você não precisa de nada nesta página para Claude trabalhar através de tarefas com múltiplas etapas nesses modelos.9Claude Code fornece as [ferramentas de rastreamento de tarefas](/docs/pt/tools-reference#task-tool-availability) por padrão apenas nos modelos listados em [Disponibilidade de modelos](#model-availability). Modelos mais novos rastreiam trabalho com múltiplas etapas sem uma lista de tarefas escrita, portanto nesses você não precisa de nada nesta página para Claude trabalhar através de tarefas com múltiplas etapas.

10 10 

11Em uma sessão que possui as ferramentas de rastreamento de tarefas, Claude mantém uma lista de tarefas escrita, atualizando o status de cada item conforme trabalha. Você vê cada mudança no fluxo de mensagens como uma chamada de ferramenta estruturada. Opte por uma sessão apenas quando sua aplicação lê essas chamadas de ferramentas, seja para registrar atividade de tarefas ou para renderizar sua própria exibição de progresso.11Em uma sessão que possui as ferramentas de rastreamento de tarefas, Claude mantém uma lista de tarefas escrita, atualizando o status de cada item conforme trabalha. Você vê cada mudança no fluxo de mensagens como uma chamada de ferramenta estruturada. Opte por uma sessão apenas quando sua aplicação lê essas chamadas de ferramentas, seja para registrar atividade de tarefas ou para renderizar sua própria exibição de progresso.

12 12 


15</h2>15</h2>

16 16 

17<Note>17<Note>

18 No TypeScript Agent SDK 0.3.233 e posterior, ou Python Agent SDK 0.2.139 e posterior, a seguinte restrição se aplica.

19 

20 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:18 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:

21 19 

22 * `TodoWrite`20 * `TodoWrite`


30 This default set applies in Claude Code v2.1.268 and later, which the TypeScript Agent SDK bundles from v0.3.268.28 This default set applies in Claude Code v2.1.268 and later, which the TypeScript Agent SDK bundles from v0.3.268.

31</Note>29</Note>

32 30 

33Nos modelos listados, a menos que você opte por uma sessão, você não vê blocos `tool_use` para as ferramentas no fluxo de mensagens. O Agent SDK aplica esses padrões através do binário Claude Code que ele agrupa. Se você apontar `pathToClaudeCodeExecutable` (TypeScript) ou `cli_path` (Python) para sua própria instalação do Claude Code, você obtém quaisquer ferramentas que essa instalação fornece, sob seus próprios padrões. Para ver o conjunto exato em uma sessão em execução, [verifique quais ferramentas estão disponíveis](/docs/pt/tools-reference#check-which-tools-are-available). Para optar por uma sessão, faça um dos seguintes:31Em um modelo que não possui as ferramentas por padrão, a menos que você opte por uma sessão, você não vê blocos `tool_use` para elas no fluxo de mensagens. O Agent SDK aplica esses padrões através do binário Claude Code que ele agrupa. Se você apontar `pathToClaudeCodeExecutable` (TypeScript) ou `cli_path` (Python) para sua própria instalação do Claude Code, você obtém quaisquer ferramentas que essa instalação fornece, sob seus próprios padrões. Para ver o conjunto exato em uma sessão em execução, [verifique quais ferramentas estão disponíveis](/docs/pt/tools-reference#check-which-tools-are-available). Para optar por uma sessão, faça um dos seguintes:

34 32 

35* Nomeie uma das ferramentas na opção [`allowedTools`](/docs/pt/agent-sdk/permissions#allow-and-deny-rules) (TypeScript) ou `allowed_tools` (Python)33* Nomeie uma das ferramentas na opção [`allowedTools`](/docs/pt/agent-sdk/permissions#allow-and-deny-rules) (TypeScript) ou `allowed_tools` (Python)

36* Liste as ferramentas na opção `tools`, que restringe as ferramentas integradas da sessão àquelas que ela nomeia. Inclua as ferramentas que você deseja junto com as outras ferramentas integradas que você usa34* Liste as ferramentas na opção `tools`, que restringe as ferramentas integradas da sessão àquelas que ela nomeia. Inclua as ferramentas que você deseja junto com as outras ferramentas integradas que você usa

agent-sdk/troubleshooting.md +161 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Solucionar problemas do Agent SDK

6 

7> Corrija erros do Agent SDK pela mensagem exata que você vê, com a causa e correção para cada erro nos SDKs TypeScript e Python.

8 

9As entradas nesta página são organizadas de acordo com o erro que você vê. Cada uma nomeia a causa e o que fazer.

10 

11<h2 id="cli-startup">

12 Inicialização do CLI

13</h2>

14 

15<h3 id="clinotfounderror-claude-code-not-found">

16 CLINotFoundError: Claude Code not found

17</h3>

18 

19O SDK Python inicia o CLI Claude Code como um subprocesso. Quando não consegue encontrar um executável `claude`, a conexão falha com um `CLINotFoundError`:

20 

21```

22Claude Code not found at: /your/configured/path

23```

24 

25A mensagem inclui o caminho configurado quando você define `ClaudeAgentOptions(cli_path=...)` e ele aponta para um arquivo ausente. Sem `cli_path`, o SDK pesquisa seu `PATH` e locais de instalação comuns, e a mensagem inclui instruções de instalação para sua plataforma.

26 

27Para corrigir:

28 

29* Instale Claude Code se não estiver instalado. Consulte [Install Claude Code](/docs/pt/setup#install-claude-code) para o comando em sua plataforma.

30* Se você definir `cli_path`, confirme que o arquivo existe e é o executável `claude`.

31* Se você depender da resolução de `PATH`, confirme que `claude --version` funciona no mesmo ambiente em que seu aplicativo é executado. Processos que você inicia fora do seu shell, como de um IDE ou gerenciador de serviços, geralmente são executados com um `PATH` diferente.

32 

33O SDK TypeScript procura o CLI em seu pacote de plataforma agrupado e no caminho que você define em `pathToClaudeCodeExecutable`. Corresponda à mensagem que você vê:

34 

35* `Native CLI binary for <platform>-<arch> not found`: o pacote de plataforma agrupado está ausente, na maioria das vezes porque a instalação pulou dependências opcionais. Reinstale `@anthropic-ai/claude-agent-sdk` sem pular dependências opcionais, ou aponte `pathToClaudeCodeExecutable` para uma [instalação nativa](/docs/pt/setup#install-claude-code). Em um executável de arquivo único construído com `bun build --compile`, a mesma mensagem tem uma causa e correção diferentes. Consulte [Compile to a single executable](/docs/pt/agent-sdk/typescript#compile-to-a-single-executable).

36* `Claude Code native binary not found at <path>` ou `Claude Code executable not found at <path>. Is options.pathToClaudeCodeExecutable set?`: o arquivo no caminho resolvido está ausente, ou o processo não consegue acessá-lo. Confirme que o arquivo existe nesse caminho e que o processo pode acessá-lo.

37 

38<h3 id="cliconnectionerror-refusing-to-execute-batch-script">

39 CLIConnectionError: Refusing to execute batch script

40</h3>

41 

42No Windows, a conexão falha com um `CLIConnectionError` quando o caminho do CLI que o SDK Python usa é um script em lote `.bat` ou `.cmd`, incluindo o shim `claude.cmd` que uma instalação npm cria:

43 

44```

45Refusing to execute batch script 'C:\\Users\\you\\AppData\\Roaming\\npm\\claude.cmd': Windows runs .bat/.cmd files via cmd.exe, which can execute commands injected through CLI arguments, and no reliable escaping for cmd.exe exists. Use a native claude executable instead: install Claude Code natively (irm https://claude.ai/install.ps1 | iex), point ClaudeAgentOptions(cli_path=...) at a claude.exe, or install the claude-agent-sdk wheel for a platform that bundles claude.exe (e.g. Windows x64).

46```

47 

48A recusa é um endurecimento de segurança deliberado, não uma instalação quebrada. O Windows executa scripts em lote reescrevendo o spawn em uma invocação `cmd.exe /c`, e `cmd.exe` reanálisa toda a linha de comando no tempo de execução, portanto um valor de argumento pode executar comandos injetados.

49 

50A maioria das instalações do Windows nunca atinge esse erro. A wheel x64 do Windows de `claude-agent-sdk` agrupa um `claude.exe`, e o SDK prefere o CLI agrupado, depois qualquer `claude.exe` nativo que possa descobrir, antes de recorrer a um shim em lote. Você vê a recusa em dois casos:

51 

52* Você define `ClaudeAgentOptions(cli_path=...)` para um arquivo `.bat` ou `.cmd`, como o shim `claude.cmd` do npm.

53* Sua instalação não tem um `claude.exe` agrupado ou nativo, por exemplo uma instalação de origem no ARM64 Windows onde o único `claude` em seu `PATH` é o shim npm.

54 

55Para corrigir, dê ao SDK um executável nativo em vez de um script em lote:

56 

57* Se você definir `ClaudeAgentOptions(cli_path=...)`, aponte-o para um `claude.exe` ou remova a opção. O SDK pula a descoberta enquanto `cli_path` está definido, portanto uma instalação nativa sozinha não pode ter efeito.

58* Instale Claude Code nativamente no PowerShell: `irm https://claude.ai/install.ps1 | iex`

59* No Windows x64, instale a wheel `claude-agent-sdk`, que agrupa `claude.exe`.

60 

61Antes de `claude-agent-sdk` 0.2.124, o SDK Python gerava scripts em lote através de `cmd.exe` sem essa verificação.

62 

63<h3 id="cliconnectionerror-failed-to-start-claude-code">

64 CLIConnectionError: Failed to start Claude Code

65</h3>

66 

67O SDK encontrou um arquivo no caminho resolvido, mas não conseguiu iniciá-lo. Python gera essas falhas como um `CLIConnectionError`. TypeScript rejeita a iteração de mensagem com um erro sem classe SDK. A tabela abaixo mapeia cada mensagem para o que ela diz a você. Corresponda à mensagem que você vê:

68 

69| Mensagem | SDK | O que ela diz a você |

70| ----------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------- |

71| `Failed to start Claude Code: <detail>` | Python | O resto da mensagem é o próprio erro do sistema operacional |

72| `Claude Code executable at <path> exists but failed to launch` | TypeScript | O script no caminho configurado não pode ser executado |

73| `Claude Code native binary at <path> exists but failed to launch` | TypeScript | O binário não pode ser executado, com uma sugestão de libc anexada à mensagem |

74| `Failed to spawn Claude Code process: <detail>` | TypeScript | Qualquer outra falha de inicialização |

75 

76Em ambos os SDKs, a causa usual é um caminho resolvido que aponta para algo que não pode ser executado, como um arquivo de texto, um diretório ou um arquivo sem permissão de execução. Leia a sugestão de libc da mensagem de binário nativo como uma possível causa.

77 

78Para corrigir em qualquer SDK:

79 

80* Confirme que o caminho configurado aponta para o próprio executável `claude` e que o arquivo tem permissão de execução.

81* Se você não precisar de um caminho personalizado, remova `cli_path` em Python ou `pathToClaudeCodeExecutable` em TypeScript para que o SDK encontre um CLI por conta própria, preferindo sua cópia agrupada.

82* Quando o binário que falha é a cópia agrupada do SDK em uma imagem de contêiner, reinstale o SDK durante a construção da imagem para que o binário agrupado corresponda à plataforma do contêiner, ou reconstrua a imagem para a arquitetura em que é executada. A causa usual é um binário que não corresponde à arquitetura ou libc do contêiner, ou um que perdeu sua permissão de execução na construção da imagem.

83 

84<h3 id="cliconnectionerror-not-connected">

85 CLIConnectionError: Not connected

86</h3>

87 

88Chamar um método `ClaudeSDKClient` em Python antes do cliente ter se conectado, ou depois de ter se desconectado, gera um `CLIConnectionError` com esta mensagem:

89 

90```

91Not connected. Call connect() first.

92```

93 

94Faça o que a mensagem diz. Chame `await client.connect()` antes de qualquer outro método do cliente, ou abra o cliente com `async with ClaudeSDKClient() as client:`, que se conecta na entrada.

95 

96<h2 id="cli-process-exit">

97 Saída do processo CLI

98</h2>

99 

100As entradas nesta seção significam que o processo Claude Code terminou enquanto seu aplicativo o estava usando. Qual erro você vê depende da linguagem do SDK e se o CLI relatou um resultado de erro antes de sair.

101 

102<h3 id="processerror-command-failed-with-exit-code">

103 ProcessError: Command failed with exit code

104</h3>

105 

106O SDK Python gera um `ProcessError` quando o processo Claude Code sai com um código diferente de zero:

107 

108```

109Command failed with exit code 1 (exit code: 1)

110Error output: Check stderr output for details

111```

112 

113A mensagem declara o código de saída duas vezes, e a linha `Error output` é texto fixo em vez da saída de erro do seu processo. O mesmo texto fixo preenche o atributo `stderr` da exceção. O atributo `exit_code` da exceção carrega o código. Para capturar o que o CLI realmente escreveu em stderr, passe um callback `stderr` em `ClaudeAgentOptions` e registre o que ele recebe.

114 

115Um `ProcessError` simples significa que o CLI saiu sem relatar um resultado de erro. Quando o CLI relatou um, o SDK gera [`ResultError`](/docs/pt/agent-sdk/python#resulterror) em vez disso, coberto em [Claude Code returned an error result](#claude-code-returned-an-error-result). `ResultError` é uma subclasse de `ProcessError`, portanto `except ProcessError` captura ambos. Para tratá-los de forma diferente, coloque a cláusula `except ResultError` primeiro.

116 

117Antes de `claude-agent-sdk` 0.2.140, o SDK Python gerava saídas de resultado de erro como uma `Exception` simples em vez de um `ResultError`.

118 

119<h3 id="claude-code-process-exited-with-code-n">

120 Claude Code process exited with code N

121</h3>

122 

123Wrappers IDE também imprimem esta mensagem, e a [referência de erro](/docs/pt/errors#claude-code-process-exited-with-code-n) a cobre para VS Code e outros inicializadores. Esta entrada cobre o que seu código SDK TypeScript recebe. O SDK apresenta uma saída CLI com código diferente de zero como um `Error` simples que rejeita o loop `for await` sobre as mensagens de `query()`. Não há classe de erro SDK para capturar, portanto envolva o loop em `try`/`catch` e corresponda à mensagem:

124 

125```

126Claude Code process exited with code 1. stderr: <tail of the CLI's stderr>

127```

128 

129Quando o CLI escreveu em stderr, a mensagem termina com a cauda dele. Para capturar o fluxo completo, passe um callback `stderr` nas opções de consulta. Um processo morto por um sinal relata `Claude Code process terminated by signal <name>` na mesma forma.

130 

131<h3 id="claude-code-returned-an-error-result">

132 Claude Code returned an error result

133</h3>

134 

135Ambos os SDKs substituem o erro de saída do processo por esta mensagem quando o CLI relatou um resultado de erro antes de sair:

136 

137```

138Claude Code returned an error result: <the CLI's own error report>

139```

140 

141O texto após os dois pontos é o relatório do CLI sobre o que deu errado, portanto comece por lá em vez de com a saída em si. Python gera isso como um [`ResultError`](/docs/pt/agent-sdk/python#resulterror), cujo atributo `data` carrega o resultado de erro completo. TypeScript rejeita o loop de mensagem com um `Error` simples carregando a mesma forma de mensagem.

142 

143<h2 id="structured-outputs">

144 Saídas estruturadas

145</h2>

146 

147<h3 id="structured_output-is-none-but-the-result-says-success">

148 structured\_output is None but the result says success

149</h3>

150 

151Uma mensagem de resultado pode terminar com `subtype: "success"` enquanto `structured_output` é `None` em Python ou `undefined` em TypeScript. A execução é concluída, mas nenhuma saída validada existe. Uma maneira de atingir isso é um esquema que nenhuma saída pode satisfazer, por exemplo restrições de comprimento conflitantes. A execução termina sem um erro de validação, e o único sinal é o `structured_output` ausente.

152 

153Trate este resultado como uma falha no código da aplicação. Verifique se `subtype` é `success` e se `structured_output` está presente antes de usá-lo. A seção [Error handling](/docs/pt/agent-sdk/structured-outputs#error-handling) mostra este padrão para ambos os SDKs.

154 

155Se isso acontecer repetidamente com um esquema que você acredita estar correto, verifique se o esquema é satisfazível, simplifique-o até que as saídas sejam validadas e reintroduza as restrições uma de cada vez.

156 

157<h2 id="report-a-new-issue">

158 Relatar um novo problema

159</h2>

160 

161Se seu erro não for coberto aqui, verifique os problemas abertos ou abra um novo nos repositórios do SDK: [claude-agent-sdk-typescript](https://github.com/anthropics/claude-agent-sdk-typescript/issues) ou [claude-agent-sdk-python](https://github.com/anthropics/claude-agent-sdk-python/issues). Inclua o texto de erro completo e sua versão do SDK.

Details

481Objeto de configuração para a função `query()`.481Objeto de configuração para a função `query()`.

482 482 

483| Propriedade | Tipo | Padrão | Descrição |483| Propriedade | Tipo | Padrão | Descrição |

484| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |484| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

485| `abortController` | `AbortController` | `new AbortController()` | Controlador para cancelar operações |485| `abortController` | `AbortController` | `new AbortController()` | Controlador para cancelar operações |

486| `additionalDirectories` | `string[]` | `[]` | Diretórios adicionais que Claude pode acessar. O SDK passa cada entrada para Claude Code como `--add-dir`, então com a configuração `project` o Claude Code também [carrega as skills, comandos e subagentes do diretório](/docs/pt/permissions#additional-directories-grant-file-access-not-configuration) |486| `additionalDirectories` | `string[]` | `[]` | Diretórios adicionais que Claude pode acessar. O SDK passa cada entrada para Claude Code como `--add-dir`, então com a configuração `project` o Claude Code também [carrega as skills, comandos e subagentes do diretório](/docs/pt/permissions#additional-directories-grant-file-access-not-configuration) |

487| `agent` | `string` | `undefined` | Nome do agente para a thread principal. O agente deve ser definido na opção `agents` ou em configurações |487| `agent` | `string` | `undefined` | Nome do agente para a thread principal. O agente deve ser definido na opção `agents` ou em configurações |


495| `cwd` | `string` | `process.cwd()` | Diretório de trabalho atual |495| `cwd` | `string` | `process.cwd()` | Diretório de trabalho atual |

496| `debug` | `boolean` | `false` | Ativar modo de depuração para o processo Claude Code |496| `debug` | `boolean` | `false` | Ativar modo de depuração para o processo Claude Code |

497| `debugFile` | `string` | `undefined` | Escrever logs de depuração em um caminho de arquivo específico. Ativa implicitamente o modo de depuração |497| `debugFile` | `string` | `undefined` | Escrever logs de depuração em um caminho de arquivo específico. Ativa implicitamente o modo de depuração |

498| `disallowedTools` | `string[]` | `[]` | Ferramentas para negar. Um nome simples como `"Bash"` remove a ferramenta do contexto do Claude. Uma regra com escopo como `"Bash(rm *)"` deixa a ferramenta disponível e nega chamadas correspondentes em todos os modos de permissão, incluindo `bypassPermissions`. Veja [Permissões](/docs/pt/agent-sdk/permissions#allow-and-deny-rules) |498| `disallowedTools` | `string[]` | `[]` | Ferramentas para negar. Um nome simples como `"Bash"` remove a ferramenta do contexto do Claude. Uma regra com escopo como `"Bash(rm *)"` deixa a ferramenta disponível e nega chamadas correspondentes em todos os modos de permissão, incluindo `bypassPermissions`, para o comando [conforme escrito](/docs/pt/permissions#bash-rule-limits). Veja [Permissões](/docs/pt/agent-sdk/permissions#allow-and-deny-rules) |

499| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | Padrão do modelo | Controla quanto esforço Claude coloca em sua resposta. Funciona com pensamento adaptativo para guiar a profundidade do pensamento. Veja [ajustar o nível de esforço](/docs/pt/model-config#adjust-effort-level) |499| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | Padrão do modelo | Controla quanto esforço Claude coloca em sua resposta. Funciona com pensamento adaptativo para guiar a profundidade do pensamento. Veja [ajustar o nível de esforço](/docs/pt/model-config#adjust-effort-level) |

500| `enableFileCheckpointing` | `boolean` | `false` | Ativar rastreamento de mudanças de arquivo para retrocesso. Veja [File checkpointing](/docs/pt/agent-sdk/file-checkpointing) |500| `enableFileCheckpointing` | `boolean` | `false` | Ativar rastreamento de mudanças de arquivo para retrocesso. Veja [File checkpointing](/docs/pt/agent-sdk/file-checkpointing) |

501| `env` | `Record<string, string \| undefined>` | `process.env` | Variáveis de ambiente. Quando definido, isso substitui o ambiente do subprocesso em vez de mesclar com `process.env`, então passe `{ ...process.env, YOUR_VAR: 'value' }` para manter variáveis herdadas como `PATH`. Veja [Lidar com respostas de API lentas ou travadas](#handle-slow-or-stalled-api-responses) para um exemplo deste padrão, e [Variáveis de ambiente](/docs/pt/env-vars) para variáveis que a CLI subjacente lê. Defina `CLAUDE_AGENT_SDK_CLIENT_APP` para identificar sua aplicação no cabeçalho User-Agent |501| `env` | `Record<string, string \| undefined>` | `process.env` | Variáveis de ambiente. Quando definido, isso substitui o ambiente do subprocesso em vez de mesclar com `process.env`, então passe `{ ...process.env, YOUR_VAR: 'value' }` para manter variáveis herdadas como `PATH`. Veja [Lidar com respostas de API lentas ou travadas](#handle-slow-or-stalled-api-responses) para um exemplo deste padrão, e [Variáveis de ambiente](/docs/pt/env-vars) para variáveis que a CLI subjacente lê. Defina `CLAUDE_AGENT_SDK_CLIENT_APP` para identificar sua aplicação no cabeçalho User-Agent |


539| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Função personalizada para gerar o processo Claude Code. Use para executar Claude Code em VMs, contêineres ou ambientes remotos |539| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Função personalizada para gerar o processo Claude Code. Use para executar Claude Code em VMs, contêineres ou ambientes remotos |

540| `stderr` | `(data: string) => void` | `undefined` | Callback para saída stderr |540| `stderr` | `(data: string) => void` | `undefined` | Callback para saída stderr |

541| `strictMcpConfig` | `boolean` | `false` | Use apenas os servidores passados em `mcpServers` e ignore o projeto `.mcp.json`, configurações do usuário, servidores MCP fornecidos por plugin, e [conectores claude.ai](/docs/pt/mcp#use-mcp-servers-from-claude-ai) |541| `strictMcpConfig` | `boolean` | `false` | Use apenas os servidores passados em `mcpServers` e ignore o projeto `.mcp.json`, configurações do usuário, servidores MCP fornecidos por plugin, e [conectores claude.ai](/docs/pt/mcp#use-mcp-servers-from-claude-ai) |

542| `systemPrompt` | `string \| string[] \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }` | `undefined` (prompt mínimo) | Configuração de prompt do sistema. Passe uma string para prompt personalizado, ou `{ type: 'preset', preset: 'claude_code' }` para usar o prompt do sistema do Claude Code. Passe um array de strings com a constante exportada `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` entre as partes estática e por solicitação para [cachear a parte estática de um prompt personalizado](/docs/pt/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). Ao usar a forma de objeto preset, adicione `append` para estendê-lo com instruções adicionais, e defina `excludeDynamicSections: true` para mover contexto por sessão para a primeira mensagem do usuário para [melhor reutilização de cache de prompt entre máquinas](/docs/pt/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |542| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (prompt mínimo) | Configuração de prompt do sistema. Passe uma string para prompt personalizado, ou `{ type: 'preset', preset: 'claude_code' }` para usar o prompt do sistema do Claude Code. Passe um array de strings com a constante exportada `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` entre as partes estática e por solicitação para [cachear a parte estática de um prompt personalizado](/docs/pt/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). Ao usar a forma de objeto preset, adicione `append` para estendê-lo com instruções adicionais, e defina `excludeDynamicSections: true` para mover contexto por sessão para a primeira mensagem do usuário para [melhor reutilização de cache de prompt entre máquinas](/docs/pt/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines). Defina `snapshot: false` para reconstruir o prompt em cada solicitação em vez de [reutilizar o prompt que a sessão registrou em sua primeira solicitação](/docs/pt/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Para definir `snapshot` em um prompt personalizado, passe a forma `{ type: 'custom', prompt }`. A forma `{ type: 'custom' }` e o campo `snapshot` requerem TypeScript Agent SDK v0.3.257 ou posterior |

543| `taskBudget` | `{ total: number }` | `undefined` | *Alfa.* Orçamento de tarefa do lado da API em tokens. Quando definido, o modelo é informado sobre seu orçamento de token restante para que possa controlar o uso de ferramentas e encerrar antes do limite |543| `taskBudget` | `{ total: number }` | `undefined` | *Alfa.* Orçamento de tarefa do lado da API em tokens. Quando definido, o modelo é informado sobre seu orçamento de token restante para que possa controlar o uso de ferramentas e encerrar antes do limite |

544| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` para modelos suportados | Controla o comportamento de pensamento/raciocínio do Claude. Veja [`ThinkingConfig`](#thinkingconfig) para opções |544| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` para modelos suportados | Controla o comportamento de pensamento/raciocínio do Claude. Veja [`ThinkingConfig`](#thinkingconfig) para opções |

545| `title` | `string` | `undefined` | Título de exibição para a sessão. Ao retomar via `resume` ou `continue`, o título persistido da sessão retomada tem precedência; use [`renameSession()`](#renamesession) para renomear uma sessão existente |545| `title` | `string` | `undefined` | Título de exibição para a sessão. Ao retomar via `resume` ou `continue`, o título persistido da sessão retomada tem precedência; use [`renameSession()`](#renamesession) para renomear uma sessão existente |


632</h4>632</h4>

633 633 

634| Método | Descrição |634| Método | Descrição |

635| :------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |635| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

636| `interrupt()` | Interrompe a consulta. Apenas disponível em modo de entrada de transmissão. Quando a CLI anuncia a capacidade `interrupt_receipt_v1` em [`SDKSystemMessage.capabilities`](#sdksystemmessage), resolve com um [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) listando as mensagens que estavam pendentes quando a interrupção chegou. Resolve `undefined` em CLIs anteriores a v2.1.205 |636| `interrupt()` | Interrompe a consulta. Apenas disponível em modo de entrada de transmissão. Quando a CLI anuncia a capacidade `interrupt_receipt_v1` em [`SDKSystemMessage.capabilities`](#sdksystemmessage), resolve com um [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) listando as mensagens que estavam pendentes quando a interrupção chegou. Resolve `undefined` em CLIs anteriores a v2.1.205 |

637| `rewindFiles(userMessageId, options?)` | Restaura arquivos para seu estado na mensagem de usuário especificada. Passe `{ dryRun: true }` para visualizar mudanças. Requer `enableFileCheckpointing: true`. Veja [File checkpointing](/docs/pt/agent-sdk/file-checkpointing) |637| `rewindFiles(userMessageId, options?)` | Restaura arquivos para seu estado na mensagem de usuário especificada. Passe `{ dryRun: true }` para visualizar mudanças. Requer `enableFileCheckpointing: true`. Veja [File checkpointing](/docs/pt/agent-sdk/file-checkpointing) |

638| `setPermissionMode()` | Altera o modo de permissão (apenas disponível em modo de entrada de transmissão) |638| `setPermissionMode()` | Altera o modo de permissão (apenas disponível em modo de entrada de transmissão) |


647| `supportedAgents()` | Retorna subagentes disponíveis como [`AgentInfo`](#agentinfo)`[]` |647| `supportedAgents()` | Retorna subagentes disponíveis como [`AgentInfo`](#agentinfo)`[]` |

648| `mcpServerStatus()` | Retorna status de servidores MCP conectados |648| `mcpServerStatus()` | Retorna status de servidores MCP conectados |

649| `getContextUsage(opts?)` | Retorna um [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) dividindo o uso da janela de contexto da sessão por categoria, skill e ferramenta. Com o `detail` padrão, é o mesmo dado que `/context` mostra em uma sessão interativa. A [opção `detail`](#sdkcontrolgetcontextusageresponse) requer Agent SDK v0.3.257 ou posterior |649| `getContextUsage(opts?)` | Retorna um [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) dividindo o uso da janela de contexto da sessão por categoria, skill e ferramenta. Com o `detail` padrão, é o mesmo dado que `/context` mostra em uma sessão interativa. A [opção `detail`](#sdkcontrolgetcontextusageresponse) requer Agent SDK v0.3.257 ou posterior |

650| `readFile(path, options?)` | Lê um arquivo do sistema de arquivos da sessão. Claude Code resolve o caminho contra `cwd` e aplica as mesmas regras de permissão de leitura que a ferramenta Read. Passe `{ maxBytes }` para alterar o limite de leitura (padrão 1 MB, teto 10 MB) e `{ encoding: 'base64' }` para arquivos binários como imagens. Resolve com um [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), ou `null` em negação de permissão, arquivo ausente, ou erro de transporte. Requer TypeScript SDK v0.2.121 ou posterior |650| `readFile(path, options?)` | Lê um arquivo do sistema de arquivos da sessão. Claude Code resolve o caminho contra `cwd`; [O que `readFile()` pode ler](#what-readfile-can-read) lista os arquivos que ele serve. Passe `{ maxBytes }` para alterar o limite de leitura (padrão 1 MB, teto 10 MB) e `{ encoding: 'base64' }` para arquivos binários como imagens. Resolve com um [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), ou `null` em negação de permissão, arquivo ausente, ou erro de transporte. Requer TypeScript SDK v0.2.121 ou posterior |

651| `reloadSkills()` | Recarrega skills do disco, para que skills que você adiciona ou edita no meio da sessão fiquem disponíveis para a sessão em execução. Resolve com um [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) listando as skills disponíveis após o recarregamento. Requer Agent SDK v0.3.163 ou posterior |651| `reloadSkills()` | Recarrega skills do disco, para que skills que você adiciona ou edita no meio da sessão fiquem disponíveis para a sessão em execução. Resolve com um [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) listando as skills disponíveis após o recarregamento. Requer Agent SDK v0.3.163 ou posterior |

652| `accountInfo()` | Retorna informações de conta |652| `accountInfo()` | Retorna informações de conta |

653| `reconnectMcpServer(serverName)` | Reconectar um servidor MCP por nome. Se o nome também corresponder a uma entrada em um arquivo de configurações como `.mcp.json` ou `~/.claude.json`, Claude Code reconecta o servidor que você configurou através de [`mcpServers`](#options) ou `setMcpServers()`, não a entrada do arquivo de configurações. Essa ordem de resolução requer Claude Code v2.1.257 ou posterior |653| `reconnectMcpServer(serverName)` | Reconectar um servidor MCP por nome. Se o nome também corresponder a uma entrada em um arquivo de configurações como `.mcp.json` ou `~/.claude.json`, Claude Code reconecta o servidor que você configurou através de [`mcpServers`](#options) ou `setMcpServers()`, não a entrada do arquivo de configurações. Essa ordem de resolução requer Claude Code v2.1.257 ou posterior |


665 665 

666Apenas algumas chaves têm efeito no meio da sessão:666Apenas algumas chaves têm efeito no meio da sessão:

667 667 

668* **Aplicadas no próximo turno**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Mudar `agent` também aplica a substituição de modelo, hooks e prompt do sistema desse agente no próximo turno.668* **Aplicadas no próximo turno**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Mudar `agent` também aplica a substituição de modelo e hooks desse agente no próximo turno. Seu prompt do sistema se aplica no próximo turno, ou, em uma sessão que [reutiliza um prompt do sistema registrado](/docs/pt/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session), uma vez que a sessão é compactada.

669* **Aplicadas durante o turno atual**: `model`. Se você mudar `model` enquanto Claude está trabalhando em um turno, a resposta que Claude já está gerando termina no modelo antigo, e o resto do turno, começando com a próxima chamada que Claude Code faz para o modelo, usa o novo. Subagentes mantêm seu próprio modelo. Antes de v2.1.212, uma mudança no meio do turno aguardava o próximo turno.669* **Aplicadas durante o turno atual**: `model`. Se você mudar `model` enquanto Claude está trabalhando em um turno, a resposta que Claude já está gerando termina no modelo antigo, e o resto do turno, começando com a próxima chamada que Claude Code faz para o modelo, usa o novo. Subagentes mantêm seu próprio modelo. Antes de v2.1.212, uma mudança no meio do turno aguardava o próximo turno.

670* **Sem efeito no meio da sessão**: as opções de prompt do sistema. Estas são resolvidas uma vez na inicialização, então a sessão em execução mantém o valor original mesmo que a chamada tenha sucesso. Para alterá-los, inicie uma nova sessão.670* **Sem efeito no meio da sessão**: as opções de prompt do sistema. Estas são resolvidas uma vez na inicialização, então a sessão em execução mantém o valor original mesmo que a chamada tenha sucesso. Para alterá-los, inicie uma nova sessão.

671 671 


750 750 

751A resposta sempre relata `fast_mode_state`, e quando algo bloqueia [fast mode](/docs/pt/fast-mode), `fast_mode_disabled_reason` carrega o código de razão junto com ele, para que você possa explicar o estado bloqueado em vez de re-derivar a disponibilidade. Ambos os comportamentos requerem Claude Code v2.1.219 ou posterior. Antes de v2.1.219, a resposta omitia `fast_mode_state` quando fast mode não estava disponível e nunca carregava uma razão. Para os códigos de razão e seus significados, veja [`fast_mode_disabled_reason`](#sdkresultmessage) na mensagem de resultado.751A resposta sempre relata `fast_mode_state`, e quando algo bloqueia [fast mode](/docs/pt/fast-mode), `fast_mode_disabled_reason` carrega o código de razão junto com ele, para que você possa explicar o estado bloqueado em vez de re-derivar a disponibilidade. Ambos os comportamentos requerem Claude Code v2.1.219 ou posterior. Antes de v2.1.219, a resposta omitia `fast_mode_state` quando fast mode não estava disponível e nunca carregava uma razão. Para os códigos de razão e seus significados, veja [`fast_mode_disabled_reason`](#sdkresultmessage) na mensagem de resultado.

752 752 

753Quando um cliente envia `initialize` para uma sessão que já está em execução, o wrapper de resposta de controle também carrega um array `pending_permission_requests` opcional. O campo está no wrapper de resposta em si, não na carga `SDKControlInitializeResponse` acima. Cada entrada é uma mensagem `control_request` completa com a mesma forma `{ type: "control_request", request_id, request }` que a sessão transmite para solicitações de permissão durante a execução.753O wrapper de resposta de controle para um `initialize` bem-sucedido também carrega um array `pending_permission_requests`. O campo está no wrapper de resposta em si, não na carga `SDKControlInitializeResponse` acima. Cada entrada é uma mensagem `control_request` completa com a mesma forma `{ type: "control_request", request_id, request }` que a sessão transmite para solicitações de permissão durante a execução.

754 754 

755Estas são solicitações que foram emitidas antes do cliente se conectar e ainda estão aguardando uma resposta. O SDK lê o array para você e despacha cada entrada para seu callback [`canUseTool`](#canusetool), o mesmo reenvio que [`reinitialize()`](#query-object) dispara após uma lacuna de transporte. Trate IDs de solicitação repetidos idempotentemente, porque uma entrada pode repetir uma solicitação que o callback já recebeu antes da conexão cair.755O array lista as solicitações de permissão que este processo Claude Code emitiu e ainda não resolveu. O SDK lê o array para você e despacha cada entrada para seu callback [`canUseTool`](#canusetool), o mesmo reenvio que [`reinitialize()`](#query-object) dispara após uma lacuna de transporte. Trate IDs de solicitação repetidos idempotentemente, porque uma entrada pode repetir uma solicitação que o callback já recebeu antes da conexão cair.

756 

757O array está sempre presente em uma resposta `initialize` bem-sucedida e está vazio quando este processo não tem nenhuma solicitação de permissão não resolvida. Requer Claude Code v2.1.268 ou posterior. Versões anteriores poderiam omitir o campo, então se você analisar o protocolo de fio você mesmo, trate um campo ausente como uma CLI mais antiga em vez de como prova de que nada está pendente.

756 758 

757<h3 id="sdkcontrolinterruptresponse">759<h3 id="sdkcontrolinterruptresponse">

758 `SDKControlInterruptResponse`760 `SDKControlInterruptResponse`


915 917 

916`contents` contém o texto do arquivo, ou dados base64 quando você solicitou `encoding: 'base64'`; o campo `encoding` da resposta é definido como `'base64'` nesse caso. `absPath` é o caminho absoluto resolvido. `truncated` é definido quando o arquivo era mais longo que o limite `maxBytes` e o conteúdo foi cortado nesse limite.918`contents` contém o texto do arquivo, ou dados base64 quando você solicitou `encoding: 'base64'`; o campo `encoding` da resposta é definido como `'base64'` nesse caso. `absPath` é o caminho absoluto resolvido. `truncated` é definido quando o arquivo era mais longo que o limite `maxBytes` e o conteúdo foi cortado nesse limite.

917 919 

920<h4 id="what-readfile-can-read">

921 O que `readFile()` pode ler

922</h4>

923 

924`readFile()` serve um conjunto mais estreito de arquivos do que a ferramenta Read:

925 

926* Um arquivo regular dentro de um dos diretórios de trabalho da sessão, como `cwd` e `additionalDirectories`

927* Alguns dos próprios arquivos do Claude Code para a sessão, como resultados de ferramentas

928 

929As regras de negação e solicitação de Read ainda bloqueiam um caminho correspondente, e uma regra de permissão ampla de Read não abre o resto do sistema de arquivos para `readFile()`. Para qualquer outra coisa a chamada resolve com `null`.

930 

918<h3 id="sdkcontrolreloadskillsresponse">931<h3 id="sdkcontrolreloadskillsresponse">

919 `SDKControlReloadSkillsResponse`932 `SDKControlReloadSkillsResponse`

920</h3>933</h3>


968| `background` | Não | Executar este agente como uma tarefa de fundo não-bloqueante quando invocado |981| `background` | Não | Executar este agente como uma tarefa de fundo não-bloqueante quando invocado |

969| `memory` | Não | Fonte de memória para este agente: `'user'`, `'project'`, ou `'local'` |982| `memory` | Não | Fonte de memória para este agente: `'user'`, `'project'`, ou `'local'` |

970| `effort` | Não | Nível de esforço de raciocínio para este agente. Aceita um nível nomeado ou um inteiro |983| `effort` | Não | Nível de esforço de raciocínio para este agente. Aceita um nível nomeado ou um inteiro |

971| `permissionMode` | Não | Modo de permissão para execução de ferramenta dentro deste agente. Veja [`PermissionMode`](#permissionmode) |984| `permissionMode` | Não | Modo de permissão para execução de ferramenta dentro deste agente. As [regras de herança de subagente](/docs/pt/agent-sdk/permissions#available-modes) decidem quando se aplica. Veja [`PermissionMode`](#permissionmode) |

972| `criticalSystemReminder_EXPERIMENTAL` | Não | Experimental: Lembrete crítico adicionado ao prompt do sistema |985| `criticalSystemReminder_EXPERIMENTAL` | Não | Experimental: Lembrete crítico adicionado ao prompt do sistema |

973 986 

974<h3 id="agentmcpserverspec">987<h3 id="agentmcpserverspec">


1324 1337 

1325O campo `message` é uma [`BetaMessage`](https://platform.claude.com/docs/pt/api/messages/create) do SDK Anthropic. Inclui campos como `id`, `content`, `model`, `stop_reason` e `usage`.1338O campo `message` é uma [`BetaMessage`](https://platform.claude.com/docs/pt/api/messages/create) do SDK Anthropic. Inclui campos como `id`, `content`, `model`, `stop_reason` e `usage`.

1326 1339 

1327`SDKAssistantMessageError` é um de: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, ou `'unknown'`. `'model_not_found'` significa que o modelo selecionado não existe ou não está disponível para sua conta ou implantação. `'overloaded'` significa que a API retornou um 529 porque o servidor está em capacidade máxima, em contraste com `'rate_limit'`, que é um 429 contra sua cota. `'account_on_hold'` significa [sua conta está em espera](/docs/pt/errors#your-account-is-on-hold).1340`SDKAssistantMessageError` é um de: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'`, ou `'unknown'`. Quatro desses valores significam mais do que seus nomes dizem:

1341 

1342* `'model_not_found'`: o modelo selecionado não existe ou não está disponível para sua conta ou implantação

1343* `'overloaded'`: a API retornou um 529 porque o servidor está em capacidade máxima, em contraste com `'rate_limit'`, que é um 429 contra sua cota

1344* `'account_on_hold'`: [sua conta está em espera](/docs/pt/errors#your-account-is-on-hold)

1345* `'cloud_credential_error'`: Claude Code não conseguiu obter credenciais AWS ou Google Cloud utilizáveis na máquina em que é executado, portanto nenhuma solicitação chegou ao provedor de nuvem. A causa usual é um login na nuvem que expirou ou nunca foi concluído nessa máquina, embora um serviço de credenciais brevemente inacessível relate o mesmo valor. Veja [Não foi possível carregar credenciais AWS ou Google Cloud](/docs/pt/errors#could-not-load-aws-or-google-cloud-credentials). Requer TypeScript Agent SDK v0.3.267 ou posterior, que agrupa Claude Code v2.1.267

1328 1346 

1329`aborted` é `true` quando uma interrupção ou cancelamento truncou a mensagem do assistente antes do fluxo ser concluído: a mensagem não tem `stop_reason` e o conteúdo pode terminar no meio de uma palavra. O campo está ausente em mensagens normalmente concluídas. Requer Agent SDK v0.3.214 ou posterior.1347`aborted` é `true` quando uma interrupção ou cancelamento truncou a mensagem do assistente antes do fluxo ser concluído: a mensagem não tem `stop_reason` e o conteúdo pode terminar no meio de uma palavra. O campo está ausente em mensagens normalmente concluídas. Requer Agent SDK v0.3.214 ou posterior.

1330 1348 


2795**Nome da ferramenta:** `Agent`. O nome anterior `Task` ainda é aceito como um alias, e o array `tools` na mensagem de inicialização [`SDKSystemMessage`](#sdksystemmessage) atualmente lista essa ferramenta como `Task` para compatibilidade com versões anteriores.2813**Nome da ferramenta:** `Agent`. O nome anterior `Task` ainda é aceito como um alias, e o array `tools` na mensagem de inicialização [`SDKSystemMessage`](#sdksystemmessage) atualmente lista essa ferramenta como `Task` para compatibilidade com versões anteriores.

2796 2814 

2797<Note>2815<Note>

2798 O campo `mode` está descontinuado e ignorado no Claude Code v2.1.212 ou posterior: subagentes [herdam o modo de permissão da sessão pai](/docs/pt/agent-sdk/permissions#available-modes), e a [`permissionMode`](#agentdefinition) de uma definição de subagente pode substituí-lo, exceto quando o pai usa `bypassPermissions`, `acceptEdits` ou `auto`. No v2.1.223 ou posterior, Claude Code ignora a `permissionMode: "bypassPermissions"` de uma definição quando o modo de bypass está desabilitado por [`permissions.disableBypassPermissionsMode`](/docs/pt/permissions#managed-settings).2816 O campo `mode` está descontinuado e ignorado no Claude Code v2.1.212 ou posterior. Um subagente é executado no modo de permissão da sessão pai ou na [`permissionMode`](#agentdefinition) de sua definição, e as [regras de herança de subagente](/docs/pt/agent-sdk/permissions#available-modes) decidem qual.

2799</Note>2817</Note>

2800 2818 

2801```typescript theme={null}2819```typescript theme={null}


2807 run_in_background?: boolean;2825 run_in_background?: boolean;

2808 name?: string;2826 name?: string;

2809 team_name?: string; // Descontinuado; ignorado2827 team_name?: string; // Descontinuado; ignorado

2810 mode?: "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan"; // Descontinuado; ignorado. Subagentes herdam o modo de permissão da sessão pai; o frontmatter de definição de agente pode substituí-lo2828 mode?: "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan"; // Descontinuado; ignorado. As regras de herança de subagente decidem o modo de permissão de um subagente

2811 isolation?: "worktree" | "remote";2829 isolation?: "worktree" | "remote";

2812};2830};

2813```2831```


3102Cria e gerencia uma lista de tarefas estruturada para rastrear progresso.3120Cria e gerencia uma lista de tarefas estruturada para rastrear progresso.

3103 3121 

3104<Note>3122<Note>

3105 No TypeScript Agent SDK 0.3.233 e posterior, a seguinte restrição se aplica.

3106 

3107 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:3123 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:

3108 3124 

3109 * `TodoWrite`3125 * `TodoWrite`


3460};3476};

3461```3477```

3462 3478 

3463Publica um arquivo `.html` ou `.md` local como uma página de artefato hospedada, ou lista os artefatos publicados do usuário. Omita `action` ou passe `"publish"` para publicar `file_path`, que é obrigatório para a ação de publicação junto com `favicon`, um ou dois emoji para a aba do navegador. `title` nomeia a página publicada na aba do navegador e galeria quando o arquivo HTML não tem uma tag `<title>`. `url` visa um artefato existente para atualizar no local em vez de criar um novo.3479Publica um arquivo `.html` ou `.md` local como uma página de artefato hospedada, ou lista os artefatos publicados do usuário. Omita `action` ou passe `"publish"` para publicar `file_path`, que é obrigatório para a ação de publicação junto com `favicon`, um ou dois emoji que marcam o artefato na galeria do usuário. `title` nomeia a página publicada na aba do navegador e galeria quando o arquivo HTML não tem uma tag `<title>`. `url` visa um artefato existente para atualizar no local em vez de criar um novo.

3464 3480 

3465`force` é uma sobrescrita de último recurso que descarta uma versão mais nova que outra sessão publicou. Em um conflito, a publicação falhada retorna o conteúdo mais novo; Claude mescla suas alterações nesse conteúdo, ou relê o artefato, e publica novamente. Passe `force` apenas quando o usuário explicitamente pedir para descartar essa versão.3481`force` é uma sobrescrita de último recurso que descarta uma versão mais nova que outra sessão publicou. Em um conflito, a publicação falhada retorna o conteúdo mais novo; Claude mescla suas alterações nesse conteúdo, ou relê o artefato, e publica novamente. Passe `force` apenas quando o usuário explicitamente pedir para descartar essa versão.

3466 3482 


4053 4069 

4054Retorna o conteúdo buscado com status HTTP e metadados.4070Retorna o conteúdo buscado com status HTTP e metadados.

4055 4071 

4056`artifactRead` está presente apenas quando Claude buscou um artefato que a sessão pode publicar, e sempre carrega o `slug` desse artefato.4072`artifactRead` é o próprio registro do Claude Code de uma leitura de artefato, presente apenas quando Claude buscou um artefato que a sessão pode publicar. O Claude Code o lê novamente quando uma sessão é retomada para que uma publicação posterior seja construída na versão correta; seu código não precisa agir sobre isso. `slug` nomeia o artefato, `ver` é a versão que a leitura registrou e está ausente quando não registrou nenhuma, e `seeded: false` marca uma leitura cuja fonte completa não chegou ao Claude. O campo `seeded` requer Agent SDK v0.3.239 ou posterior.

4057 

4058`seeded` é `false` em uma leitura que não entregou a fonte completa da página, e essa entrada não carrega `ver`. O campo requer Agent SDK v0.3.239 ou posterior.

4059 4073 

4060<h3 id="websearch-2">4074<h3 id="websearch-2">

4061 WebSearch4075 WebSearch


4142Retorna as listas de tarefas anteriores e atualizadas.4156Retorna as listas de tarefas anteriores e atualizadas.

4143 4157 

4144<Note>4158<Note>

4145 No TypeScript Agent SDK 0.3.233 e posterior, a seguinte restrição se aplica.

4146 

4147 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:4159 The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn't recognize, they aren't available unless you opt in:

4148 4160 

4149 * `TodoWrite`4161 * `TodoWrite`


5346 5358 

5347* Rastreie o indicador por `parent_tool_use_id`, que é único por subagente. `tool_use_id` é compartilhado por subagentes paralelos de uma volta de assistente, então rastrear por ele deixaria a atualização de um subagente limpar o indicador de outro.5359* Rastreie o indicador por `parent_tool_use_id`, que é único por subagente. `tool_use_id` é compartilhado por subagentes paralelos de uma volta de assistente, então rastrear por ele deixaria a atualização de um subagente limpar o indicador de outro.

5348* Limpe o indicador quando um `tool_progress` posterior para o mesmo `parent_tool_use_id` chegar sem `subagent_retry` nem `heartbeat: true`, ou quando a mensagem de resultado da ferramenta chegar. Frames com `heartbeat: true` relatam apenas vivacidade, então mantenha o indicador quando um chegar. `attempt` pode exceder `max_retries` sob retry persistente, então não derive limpeza dos contadores.5360* Limpe o indicador quando um `tool_progress` posterior para o mesmo `parent_tool_use_id` chegar sem `subagent_retry` nem `heartbeat: true`, ou quando a mensagem de resultado da ferramenta chegar. Frames com `heartbeat: true` relatam apenas vivacidade, então mantenha o indicador quando um chegar. `attempt` pode exceder `max_retries` sob retry persistente, então não derive limpeza dos contadores.

5349* Trate `error_category` como um conjunto fechado de tokens para escolher seu próprio texto de mensagem, não como texto de exibição: `rate_limit`, `overloaded`, `authentication_failed`, `server_error` ou `unknown`.5361* Trate `error_category` como um token para escolher seu próprio texto de mensagem, não como texto de exibição. Os valores são `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error` e `unknown`. Manipule um valor que você não reconheça da forma que manipula `unknown`, porque versões posteriores podem adicionar valores.

5350 5362 

5351<h3 id="sdkauthstatusmessage">5363<h3 id="sdkauthstatusmessage">

5352 `SDKAuthStatusMessage`5364 `SDKAuthStatusMessage`

agent-teams.md +7 −7

Details

1633. [`CLAUDE_CODE_SUBAGENT_MODEL`](/docs/pt/model-config#environment-variables), quando está definido para qualquer coisa diferente de `inherit`.1633. [`CLAUDE_CODE_SUBAGENT_MODEL`](/docs/pt/model-config#environment-variables), quando está definido para qualquer coisa diferente de `inherit`.

1644. O modelo atual do líder.1644. O modelo atual do líder.

165 165 

166[`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/pt/sub-agents#run-every-subagent-on-one-model) se aplica a companheiros de equipe bem como a subagentes.166Se você definir [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1`](/docs/pt/sub-agents#run-every-subagent-on-one-model), as duas primeiras fontes não se aplicam. Claude Code escolhe o modelo de cada companheiro de equipe a partir de `CLAUDE_CODE_SUBAGENT_MODEL` quando está definido para qualquer coisa diferente de `inherit`, e a partir do modelo atual do líder caso contrário. Requer Claude Code v2.1.257 ou posterior.

167 167 

168Antes da v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` vinha primeiro nesta ordem.168Antes da v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` vinha primeiro nesta ordem.

169 169 


173 173 

174Claude Code verifica o modelo que seleciona para um companheiro de equipe contra a lista de permissões [`availableModels`](/docs/pt/model-config#restrict-model-selection) da sua organização. Quando a lista de permissões bloqueia um valor, Claude Code substitui outro modelo:174Claude Code verifica o modelo que seleciona para um companheiro de equipe contra a lista de permissões [`availableModels`](/docs/pt/model-config#restrict-model-selection) da sua organização. Quando a lista de permissões bloqueia um valor, Claude Code substitui outro modelo:

175 175 

176* **Alias de família como `opus`**: Na API Anthropic e Claude Platform na AWS, Claude Code executa o companheiro de equipe na versão mais recente dessa família que a lista de permissões permite. Em provedores com IDs de modelo específicos do provedor, onde a [substituição não opera](/docs/pt/model-config#restrict-model-selection), um alias bloqueado volta como qualquer outro valor bloqueado de acordo com a próxima bala176* **Alias de família como `opus`**: Na API Anthropic e Claude Platform na AWS, Claude Code executa o companheiro de equipe na versão mais recente dessa família que a lista de permissões permite. Em provedores com IDs de modelo específicos do provedor, onde a [substituição não opera](/docs/pt/model-config#restrict-model-selection), um alias bloqueado volta como qualquer outro valor bloqueado de acordo com o próximo ponto

177* **Qualquer outro valor bloqueado, incluindo um alias de família em provedores onde a substituição não opera, ou um cuja família não tem versão permitida**: Claude Code executa o companheiro de equipe no modelo do líder em vez disso. Se você definir `CLAUDE_CODE_SUBAGENT_MODEL`, Claude Code tenta esse modelo primeiro, sob essas mesmas regras177* **Qualquer outro valor bloqueado, incluindo um alias de família em provedores onde a substituição não opera, ou um cuja família não tem versão permitida**: Claude Code executa o companheiro de equipe no modelo do líder em vez disso. Se você definir `CLAUDE_CODE_SUBAGENT_MODEL`, Claude Code tenta esse modelo primeiro, sob essas mesmas regras

178 178 

179Os companheiros de equipe herdam o [nível de esforço](/docs/pt/model-config#adjust-effort-level) do líder. No modo split-pane isso se aplica a partir da v2.1.186; versões anteriores não passavam o esforço da sessão do líder para companheiros de equipe em split-pane.179Os companheiros de equipe herdam o [nível de esforço](/docs/pt/model-config#adjust-effort-level) do líder. No modo split-pane isso se aplica a partir da v2.1.186; versões anteriores não passavam o esforço da sessão do líder para companheiros de equipe em split-pane.


252 Como Claude inicia equipes de agentes252 Como Claude inicia equipes de agentes

253</h3>253</h3>

254 254 

255Para iniciar uma equipe, peça ao Claude por companheiros de equipe. Claude lança um companheiro de equipe quando chama a [ferramenta Agent](/docs/pt/tools-reference) com um [`name`](/docs/pt/sub-agents#subagent-names) enquanto as equipes de agentes estão habilitadas, e Claude Code não pede que você confirme. Claude também nomeia subagentes ordinários por conta própria para que possa enviá-los mensagens depois, e enquanto as equipes de agentes estão habilitadas, um subagente nomeado é lançado como um companheiro de equipe, portanto as equipes podem se formar mesmo quando você não pediu por uma.255Para iniciar uma equipe, peça ao Claude por companheiros de equipe. Claude lança um companheiro de equipe quando chama a [ferramenta Agent](/docs/pt/tools-reference) com um [`name`](/docs/pt/sub-agents#subagent-names) enquanto as equipes de agentes estão habilitadas, a menos que a chamada seja um [fork](/docs/pt/sub-agents#fork-the-current-conversation) ou passe `isolation` na própria chamada. Claude Code não pede que você confirme o lançamento.

256 256 

257Se você quiser subagentes em vez disso, [desative as equipes de agentes](#claude-spawns-teammates-instead-of-subagents).257Claude também nomeia subagentes ordinários por conta própria para que possa enviá-los mensagens depois. Essas chamadas seguem a mesma regra, portanto as equipes podem se formar mesmo quando você não pediu por uma. Se você quiser subagentes em vez disso, [desative as equipes de agentes](#claude-spawns-teammates-instead-of-subagents).

258 258 

259<h3 id="architecture">259<h3 id="architecture">

260 Arquitetura260 Arquitetura


294 Use subagent definitions for teammates294 Use subagent definitions for teammates

295</h3>295</h3>

296 296 

297Ao gerar um companheiro de equipe, você pode referenciar um tipo de [subagent](/docs/pt/sub-agents) de qualquer [escopo de subagent](/docs/pt/sub-agents#choose-the-subagent-scope): projeto, usuário, plugin ou definido por CLI. Isso permite que você defina um papel uma vez, como um revisor de segurança ou executor de testes, e o reutilize tanto como um subagent delegado quanto como um companheiro de equipe de equipe de agentes.297Ao gerar um companheiro de equipe em qualquer modo de exibição, você pode referenciar um tipo de [subagent](/docs/pt/sub-agents) do projeto, usuário ou escopo de subagent gerenciado [subagent scope](/docs/pt/sub-agents#choose-the-subagent-scope). Isso permite que você defina um papel uma vez, como um revisor de segurança ou executor de testes, e o reutilize tanto como um subagent delegado quanto como um companheiro de equipe de equipe de agentes.

298 298 

299Para usar uma definição de subagent, mencione-a pelo nome ao pedir ao Claude para gerar o companheiro de equipe:299Para usar uma definição de subagent, mencione-a pelo nome ao pedir ao Claude para gerar o companheiro de equipe:

300 300 


314 Permissões314 Permissões

315</h3>315</h3>

316 316 

317Os companheiros de equipe começam com as configurações de permissão do líder. Se o líder for executado com `--dangerously-skip-permissions`, todos os companheiros de equipe também. Após gerar, você pode alterar modos de companheiros de equipe individuais, mas não pode definir modos por companheiro de equipe no tempo de geração.317Os companheiros de equipe começam com o modo de permissão do líder, exceto o modo [`dontAsk`](/docs/pt/permission-modes#allow-only-pre-approved-tools-with-dontask-mode), que eles não herdam. Se o líder for executado com `--dangerously-skip-permissions`, todos os companheiros de equipe também. Após gerar, você pode alterar o modo de permissão de um companheiro de equipe individual, mas não pode definir modos de permissão por companheiro de equipe no tempo de geração.

318 318 

319Os prompts de permissão de companheiros de equipe aparecem na sessão líder, portanto aprove-os lá você mesmo. [Aprovação de plano](#have-teammates-plan-before-implementing) é a exceção projetada: a sessão líder concede aprovações de plano de companheiros de equipe sem um prompt separado para você.319Os prompts de permissão de companheiros de equipe aparecem na sessão líder, portanto aprove-os lá você mesmo. [Aprovação de plano](#have-teammates-plan-before-implementing) é a exceção projetada: a sessão líder concede aprovações de plano de companheiros de equipe sem um prompt separado para você.

320 320 


547* **Sem equipes aninhadas**: os companheiros de equipe não podem gerar seus próprios companheiros de equipe. Apenas o líder pode gerenciar a equipe.547* **Sem equipes aninhadas**: os companheiros de equipe não podem gerar seus próprios companheiros de equipe. Apenas o líder pode gerenciar a equipe.

548* **Sem subagentes em segundo plano de companheiros de equipe in-process**: os próprios subagentes de um companheiro de equipe in-process são executados em primeiro plano, porque o trabalho em segundo plano de um companheiro de equipe não pode sobreviver ao processo do líder. Claude Code retorna um erro quando um companheiro de equipe gera um subagente cuja definição define `background: true`. Uma solicitação `run_in_background: true` de um companheiro de equipe também falha, seja com um erro ou executando silenciosamente em primeiro plano, conforme descrito em [como Claude Code escolhe primeiro plano ou segundo plano](/docs/pt/sub-agents#run-subagents-in-foreground-or-background). Subagentes lançados da conversa principal seguem o [padrão de segundo plano](/docs/pt/sub-agents#run-subagents-in-foreground-or-background).548* **Sem subagentes em segundo plano de companheiros de equipe in-process**: os próprios subagentes de um companheiro de equipe in-process são executados em primeiro plano, porque o trabalho em segundo plano de um companheiro de equipe não pode sobreviver ao processo do líder. Claude Code retorna um erro quando um companheiro de equipe gera um subagente cuja definição define `background: true`. Uma solicitação `run_in_background: true` de um companheiro de equipe também falha, seja com um erro ou executando silenciosamente em primeiro plano, conforme descrito em [como Claude Code escolhe primeiro plano ou segundo plano](/docs/pt/sub-agents#run-subagents-in-foreground-or-background). Subagentes lançados da conversa principal seguem o [padrão de segundo plano](/docs/pt/sub-agents#run-subagents-in-foreground-or-background).

549* **Líder é fixo**: a sessão principal é o líder por sua vida útil. Você não pode promover um companheiro de equipe a líder ou transferir liderança.549* **Líder é fixo**: a sessão principal é o líder por sua vida útil. Você não pode promover um companheiro de equipe a líder ou transferir liderança.

550* **Permissões definidas no tempo de geração**: todos os companheiros de equipe começam com o modo de permissão do líder. Você pode alterar modos de companheiros de equipe individuais após gerar, mas não pode definir modos por companheiro de equipe no tempo de geração.550* **Permissões definidas no tempo de geração**: os companheiros de equipe começam com o modo de permissão descrito em [Permissões](#permissions). Você pode alterar o modo de permissão de um companheiro de equipe individual após gerar, mas não pode definir modos de permissão por companheiro de equipe no tempo de geração.

551* **Split panes requerem tmux ou iTerm2**: o modo in-process padrão funciona em qualquer terminal. O modo split-pane não é suportado no terminal integrado do VS Code, Windows Terminal ou Ghostty.551* **Split panes requerem tmux ou iTerm2**: o modo in-process padrão funciona em qualquer terminal. O modo split-pane não é suportado no terminal integrado do VS Code, Windows Terminal ou Ghostty.

552 552 

553<h2 id="next-steps">553<h2 id="next-steps">

agents.md +1 −1

Details

19 19 

20Três ferramentas adicionais suportam este trabalho sem serem uma forma de executar agentes em si:20Três ferramentas adicionais suportam este trabalho sem serem uma forma de executar agentes em si:

21 21 

22* [Worktrees](/docs/pt/worktrees) dão a cada sessão um checkout git separado, para que sessões paralelas nunca editem os mesmos arquivos. Use-as para sessões que você executa você mesmo. A visualização de agentes move automaticamente cada sessão despachada para seu próprio worktree, e subagentes que você gera podem cada um receber um também.22* [Worktrees](/docs/pt/worktrees) dão a cada sessão um checkout git separado, para que sessões paralelas nunca editem os mesmos arquivos. Use-as para sessões que você executa você mesmo. Uma sessão que você despacha da visualização de agentes [move para seu próprio worktree antes de editar arquivos](/docs/pt/agent-view#how-file-edits-are-isolated), e subagentes que você gera podem cada um receber um também.

23* [Mensagens entre sessões](/docs/pt/cross-session-messaging) permite que Claude liste e envie mensagens para suas outras sessões Claude Code nesta máquina, em outra máquina ou em [Claude Code na web](/docs/pt/claude-code-on-the-web), para que sessões que você executa você mesmo possam passar descobertas e status entre si.23* [Mensagens entre sessões](/docs/pt/cross-session-messaging) permite que Claude liste e envie mensagens para suas outras sessões Claude Code nesta máquina, em outra máquina ou em [Claude Code na web](/docs/pt/claude-code-on-the-web), para que sessões que você executa você mesmo possam passar descobertas e status entre si.

24* [`/batch`](/docs/pt/commands) é uma [skill](/docs/pt/skills) que tem Claude dividir uma grande mudança em 5 a 30 subagentes isolados em worktree que cada um abre um pull request. É um uso empacotado de subagentes e worktrees, não um estilo de coordenação separado.24* [`/batch`](/docs/pt/commands) é uma [skill](/docs/pt/skills) que tem Claude dividir uma grande mudança em 5 a 30 subagentes isolados em worktree que cada um abre um pull request. É um uso empacotado de subagentes e worktrees, não um estilo de coordenação separado.

25 25 

Details

190 190 

191Cada resolução da cadeia expira após 60 segundos. Se uma etapa na cadeia travar, por exemplo um auxiliar `credential_process` que aguarda entrada que não pode receber, a solicitação falha com [`AWS default-chain credential resolve timed out`](/docs/pt/errors#aws-default-chain-credential-resolve-timed-out). Se sua cadeia executa um login interativo que legitimamente precisa de mais tempo, como SSO baseado em navegador com MFA através de um wrapper como `aws-vault`, aumente o limite em milissegundos com [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/pt/env-vars). Antes da v2.1.207, uma resolução de credencial travada deixava a solicitação aguardando indefinidamente.191Cada resolução da cadeia expira após 60 segundos. Se uma etapa na cadeia travar, por exemplo um auxiliar `credential_process` que aguarda entrada que não pode receber, a solicitação falha com [`AWS default-chain credential resolve timed out`](/docs/pt/errors#aws-default-chain-credential-resolve-timed-out). Se sua cadeia executa um login interativo que legitimamente precisa de mais tempo, como SSO baseado em navegador com MFA através de um wrapper como `aws-vault`, aumente o limite em milissegundos com [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/pt/env-vars). Antes da v2.1.207, uma resolução de credencial travada deixava a solicitação aguardando indefinidamente.

192 192 

193Exceto quando você autentica com uma chave de API do Amazon Bedrock, o [assistente de configuração](#sign-in-with-bedrock) aplica o mesmo limite a cada chamada AWS que faz ao verificar suas credenciais, e à busca de credenciais antes de cada verificação de modelo. Durante a verificação de credenciais, uma verificação que excede o limite falha com [`Timed out after 60s waiting for AWS`](/docs/pt/errors#bedrock-setup-verification-timed-out-waiting-for-aws).

194 

193<h4 id="advanced-credential-configuration">195<h4 id="advanced-credential-configuration">

194 Configuração avançada de credenciais196 Configuração avançada de credenciais

195</h4>197</h4>


263 265 

264Ao habilitar o Amazon Bedrock para Claude Code, tenha em mente o seguinte:266Ao habilitar o Amazon Bedrock para Claude Code, tenha em mente o seguinte:

265 267 

266* A partir da v2.1.172, você só precisa definir `AWS_REGION` para substituir a região do seu perfil AWS ou quando seu perfil não tem região. Claude Code resolve a região nesta ordem:268* Você só precisa definir `AWS_REGION` para substituir a região do seu perfil AWS ou quando seu perfil não tem região. Claude Code resolve a região nesta ordem:

267 269 

268 * `AWS_REGION`270 * `AWS_REGION`

269 * `AWS_DEFAULT_REGION`271 * `AWS_DEFAULT_REGION`


274 276 

275 O perfil ativo é `AWS_PROFILE` se definido, caso contrário `default`. Defina `AWS_SHARED_CREDENTIALS_FILE` ou `AWS_CONFIG_FILE` para apontar para caminhos de arquivo não padrão.277 O perfil ativo é `AWS_PROFILE` se definido, caso contrário `default`. Defina `AWS_SHARED_CREDENTIALS_FILE` ou `AWS_CONFIG_FILE` para apontar para caminhos de arquivo não padrão.

276 278 

277 Execute `/status` para ver a região resolvida. Quando a região veio de seus arquivos de configuração AWS ou do fallback padrão, Claude Code também anota a fonte na saída `/status`. Na v2.1.171 e anterior, Claude Code não lê os arquivos de configuração AWS, portanto defina `AWS_REGION` explicitamente.279 Execute `/status` para ver a região resolvida. Quando a região veio de seus arquivos de configuração AWS ou do fallback padrão, Claude Code também anota a fonte na saída `/status`.

278* Ao usar o Amazon Bedrock, o comando `/logout` não está disponível, pois a autenticação é tratada através de credenciais AWS.280* Ao usar o Amazon Bedrock, o comando `/logout` não está disponível, pois a autenticação é tratada através de credenciais AWS.

279* A ferramenta WebSearch não está disponível no Amazon Bedrock. Veja [Comportamento da ferramenta WebSearch](/docs/pt/tools-reference#websearch-tool-behavior).281* A ferramenta WebSearch não está disponível no Amazon Bedrock. Veja [Comportamento da ferramenta WebSearch](/docs/pt/tools-reference#websearch-tool-behavior).

280* Você pode usar arquivos de configurações para variáveis de ambiente como `AWS_PROFILE` que você não quer vazar para outros processos. Veja [Settings](/docs/pt/settings) para mais informações.282* Você pode usar arquivos de configurações para variáveis de ambiente como `AWS_PROFILE` que você não quer vazar para outros processos. Veja [Settings](/docs/pt/settings) para mais informações.


529export AWS_REGION=us-east-1531export AWS_REGION=us-east-1

530```532```

531 533 

532Claude Code constrói a URL do endpoint a partir da região AWS. A partir da v2.1.172, a região é resolvida com a mesma precedência que [Amazon Bedrock acima](#3-configure-claude-code); versões anteriores usam apenas `AWS_REGION`. Para substituir a URL por um endpoint personalizado ou gateway, defina `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.534Claude Code constrói a URL do endpoint a partir da região AWS, resolvida com a mesma precedência que [Amazon Bedrock acima](#3-configure-claude-code). Para substituir a URL por um endpoint personalizado ou gateway, defina `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.

533 535 

534Execute `/status` dentro do Claude Code para confirmar. A linha do provedor mostra `Amazon Bedrock (Mantle)` quando Mantle está ativo.536Execute `/status` dentro do Claude Code para confirmar. A linha do provedor mostra `Amazon Bedrock (Mantle)` quando Mantle está ativo.

535 537 


605 607 

606Se seu ambiente de rede interfere com fluxos SSO automáticos baseados em navegador, use `aws sso login` manualmente antes de iniciar Claude Code em vez de depender de `awsAuthRefresh`.608Se seu ambiente de rede interfere com fluxos SSO automáticos baseados em navegador, use `aws sso login` manualmente antes de iniciar Claude Code em vez de depender de `awsAuthRefresh`.

607 609 

610<h3 id="certificate-errors-behind-a-tls-inspecting-proxy">

611 Erros de certificado atrás de um proxy de inspeção TLS

612</h3>

613 

614Claude Code aplica sua configuração de [armazenamento de certificado CA](/docs/pt/network-config#ca-certificate-store) às suas solicitações para AWS, incluindo:

615 

616* Descoberta de modelo

617* Contagem de tokens

618* As chamadas de credencial de função STS e SSO que resolvem suas credenciais AWS

619* Verificação de credencial e verificações de modelo do [assistente de configuração](#sign-in-with-bedrock)

620 

621Para essas solicitações, um certificado raiz corporativo em seu armazenamento de confiança do SO ou pacote `NODE_EXTRA_CA_CERTS` não precisa de configuração específica do Amazon Bedrock.

622 

623Antes da v2.1.260, Claude Code aplicava sua configuração de CA a essas solicitações apenas quando elas passavam por um proxy configurado, e em uma conexão direta confiavam apenas no armazenamento de certificado padrão do runtime.

624 

625Antes da v2.1.261, a busca de credencial atrás das verificações de modelo do assistente de configuração com a opção **Use credentials already in my environment** ainda confiava apenas no armazenamento de certificado padrão do runtime. Atrás de um proxy de inspeção TLS cujo certificado raiz está apenas no armazenamento do SO, as solicitações afetadas falharam com `unable to get local issuer certificate`, ou o assistente mostrou modelos como `unreachable`, enquanto solicitações de inferência tiveram sucesso. Atualize para v2.1.261 ou posterior.

626 

608<h3 id="region-issues">627<h3 id="region-issues">

609 Problemas de região628 Problemas de região

610</h3>629</h3>

analytics.md +5 −11

Details

26* **Leaderboard**: principais contribuidores classificados por uso do Claude Code26* **Leaderboard**: principais contribuidores classificados por uso do Claude Code

27* **Exportação de dados**: baixe dados de contribuição como CSV para relatórios personalizados27* **Exportação de dados**: baixe dados de contribuição como CSV para relatórios personalizados

28 28 

29Para contagens de tokens por usuário e estimativas de custo, configure [exportação OpenTelemetry](/pt/monitoring-usage), ou exporte o [relatório de gastos](https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans) das configurações de análise de sua organização, que lista o uso de tokens e o gasto estimado em créditos de uso por usuário e por modelo.29Para contagens de tokens por usuário e estimativas de custo, configure [exportação OpenTelemetry](/docs/pt/monitoring-usage), ou exporte o [relatório de gastos](https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans) das configurações de análise de sua organização, que lista o uso de tokens e o gasto estimado em créditos de uso por usuário e por modelo.

30 30 

31<h3 id="enable-contribution-metrics">31<h3 id="enable-contribution-metrics">

32 Ativar métricas de contribuição32 Ativar métricas de contribuição


41Você precisa da função Proprietário para configurar as definições de análise. Um administrador GitHub deve instalar o aplicativo GitHub.41Você precisa da função Proprietário para configurar as definições de análise. Um administrador GitHub deve instalar o aplicativo GitHub.

42 42 

43<Warning>43<Warning>

44 As métricas de contribuição não estão disponíveis para organizações com [Zero Data Retention](/pt/zero-data-retention) ativado. O painel de análise mostrará apenas métricas de uso.44 As métricas de contribuição não estão disponíveis para organizações com [Zero Data Retention](/docs/pt/zero-data-retention) ativado. O painel de análise mostrará apenas métricas de uso.

45</Warning>45</Warning>

46 46 

47<Steps>47<Steps>


139 139 

140Quando as métricas de contribuição estão ativadas, Claude Code analisa pull requests mesclados para determinar qual código foi escrito com assistência do Claude Code. Isso é feito combinando a atividade da sessão do Claude Code com o código em cada PR.140Quando as métricas de contribuição estão ativadas, Claude Code analisa pull requests mesclados para determinar qual código foi escrito com assistência do Claude Code. Isso é feito combinando a atividade da sessão do Claude Code com o código em cada PR.

141 141 

142<h4 id="tagging-criteria">

143 Critérios de marcação

144</h4>

145 

146PRs são marcados como "with Claude Code" se contiverem pelo menos uma linha de código escrita durante uma sessão do Claude Code. O sistema usa correspondência conservadora: apenas código onde há alta confiança no envolvimento do Claude Code é contado como assistido.

147 

148<h4 id="attribution-process">142<h4 id="attribution-process">

149 Processo de atribuição143 Processo de atribuição

150</h4>144</h4>


267 Recursos relacionados261 Recursos relacionados

268</h2>262</h2>

269 263 

270* [Monitoramento com OpenTelemetry](/pt/monitoring-usage): exporte métricas e eventos em tempo real para sua pilha de observabilidade264* [Monitoramento com OpenTelemetry](/docs/pt/monitoring-usage): exporte métricas e eventos em tempo real para sua pilha de observabilidade

271* [Gerenciar custos efetivamente](/pt/costs): defina limites de gastos e otimize o uso de tokens265* [Gerenciar custos efetivamente](/docs/pt/costs): defina limites de gastos e otimize o uso de tokens

272* [Permissões](/pt/permissions): configure papéis e permissões266* [Permissões](/docs/pt/permissions): configure papéis e permissões

artifacts.md +44 −14

Details

35 O que um artifact não é35 O que um artifact não é

36</h3>36</h3>

37 37 

38Um artifact é uma captura de trabalho: uma página única e autossuficiente sem backend, portanto não pode armazenar entrada de formulário ou servir múltiplas rotas, e seu único caminho para dados externos quando alguém a visualiza é [chamar conectores MCP](#pull-live-data-with-mcp-connectors). Para uma ferramenta interna hospedada com um backend, implante-a em sua própria infraestrutura. Veja [Restrições de página](#page-constraints) para o conjunto completo de limites.38Um artifact é uma captura de trabalho: uma página única e autossuficiente sem backend, portanto não pode servir múltiplas rotas. Para uma ferramenta interna hospedada com um backend, implante-a em sua própria infraestrutura. Veja [Restrições de página](#page-constraints) para o conjunto completo de limites.

39 39 

40<h2 id="create-an-artifact">40<h2 id="create-an-artifact">

41 Criar um artefato41 Criar um artefato


51Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.51Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.

52```52```

53 53 

54A menos que você nomeie um local, Claude escreve a página em um arquivo HTML ou Markdown em um diretório temporário fora do seu projeto e a publica. Publicar um novo artefato passa pelo [modo de permissão](/docs/pt/permission-modes) da sua sessão:54A menos que você nomeie um local, Claude escreve a página em um arquivo HTML ou Markdown em um diretório temporário fora do seu projeto, então a publica. Publicar um novo artefato passa pelo [modo de permissão](/docs/pt/permission-modes) da sua sessão:

55 55 

56* **Modo Auto**: o classificador revisa a publicação em vez de solicitar a você, para que Claude possa publicar uma página sem você ver um prompt. Qual modo suas sessões começam depende do seu plano; consulte [o modo de permissão inicial](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode).56* **Modo Auto**: o classificador revisa a publicação em vez de solicitar a você, para que Claude possa publicar uma página sem você ver um prompt. Qual modo suas sessões começam depende do seu plano; consulte [o modo de permissão inicial](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode).

57* **Modos Manual e Aceitar edições**: Claude Code solicita permissão; pode dizer algo como `Claude wants to publish deploy-failures.html, uploading it to claude.ai (Anthropic's servers) to host as the page "Deploy failures by service", private to you until you share it`. Selecione **Sim** para publicar.57* **Modos Manual e Aceitar edições**: Claude Code solicita permissão; pode dizer algo como `Claude wants to publish deploy-failures.html, uploading it to claude.ai (Anthropic's servers) to host as the page "Deploy failures by service", private to you until you share it`. Selecione **Sim** para publicar.

58 58 

59Depois que você aprova um artefato uma vez, Claude Code o republica sem perguntar, e pergunta novamente em alguns casos, incluindo quando:59Depois que você aprova um artefato uma vez, Claude Code o republica sem perguntar, e pergunta novamente em alguns casos, incluindo quando:

60 60 

61* Claude declara uma capacidade de tempo de execução para a página, como [chamadas de conector](#pull-live-data-with-mcp-connectors)61* Claude declara uma capacidade de tempo de execução para a página, como [chamadas de conector](#pull-live-data-with-mcp-connectors) ou [downloads de arquivo](#offer-a-file-download)

62* Você [compartilhou publicamente](#share-an-artifact)62* Você [compartilhou publicamente](#share-an-artifact)

63* Você compartilhou com pessoas específicas ou sua organização com a versão mais recente escolhida como a versão que os visualizadores veem63* Você compartilhou com pessoas específicas ou sua organização com a versão mais recente escolhida como a versão que os visualizadores veem

64 64 

65Após a primeira publicação, Claude imprime a URL e seu navegador abre para a nova página. Se você enviou o prompt através de [Remote Control](/docs/pt/remote-control) do claude.ai, Claude Desktop ou do aplicativo móvel Claude, nenhuma aba abre na máquina que executa a sessão. O navegador abre lá na próxima vez que Claude publicar o artefato a partir de um prompt que você digita no terminal. Pressione `Ctrl+]` a qualquer momento para reabrir o artefato mais recente da sessão.65Após a primeira publicação, Claude imprime a URL e seu navegador abre para a nova página. Se você enviou o prompt através de [Remote Control](/docs/pt/remote-control) do claude.ai, Claude Desktop ou do aplicativo móvel Claude, nenhuma aba abre na máquina que executa a sessão. O navegador abre lá na próxima vez que Claude publicar o artefato a partir de um prompt que você digita no terminal. Pressione `Ctrl+]` a qualquer momento para reabrir o artefato mais recente da sessão.

66 66 

67Claude escolhe o título do artefato e um emoji para seu ícone de aba do navegador. Ambos aparecem em sua [galeria de artefatos](#share-an-artifact) no claude.ai e em links compartilhados, então peça a Claude para usar um título ou ícone específico se desejar um.67Claude escolhe o título do artefato e um emoji, e ambos aparecem em sua [galeria de artefatos](#share-an-artifact) no claude.ai e em links compartilhados. Claude também pode escolher um ícone de aba do navegador que corresponda ao que a página é, como um gráfico ou um calendário. Peça a Claude por um título, emoji ou ícone de aba específico se desejar um.

68 68 

69Para impedir que o navegador abra automaticamente quando um novo artefato é publicado, defina `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` em seu ambiente.69Para impedir que o navegador abra automaticamente quando um novo artefato é publicado, defina `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` em seu ambiente.

70 70 


115 115 

116Um editor publica novas versões da mesma forma que você [atualiza o artefato de outra sessão](#update-an-artifact): ele fornece ao Claude a URL do artefato, ou o anexa de [`/artifacts`](#find-an-artifact-again), e Claude extrai o conteúdo atual e republica com suas alterações. Todos com a página aberta veem cada atualização ao vivo.116Um editor publica novas versões da mesma forma que você [atualiza o artefato de outra sessão](#update-an-artifact): ele fornece ao Claude a URL do artefato, ou o anexa de [`/artifacts`](#find-an-artifact-again), e Claude extrai o conteúdo atual e republica com suas alterações. Todos com a página aberta veem cada atualização ao vivo.

117 117 

118<h2 id="read-an-artifact-shared-with-you">

119 Ler um artefato compartilhado com você

120</h2>

121 

122Quando alguém compartilha um artefato com você, você pode fazer com que Claude o leia: forneça a Claude sua URL ou anexe-o de [`/artifacts`](#find-an-artifact-again).

123 

124Claude lê uma página que outra pessoa escreveu da mesma forma que lê uma página da web com [WebFetch](/docs/pt/tools-reference#webfetch-tool-behavior): ele obtém um resumo do que foi solicitado em vez da página bruta, e o resumo relata instruções escritas na página em vez de transmiti-las. Claude Code também salva o código-fonte completo da página em um arquivo local, que Claude pode abrir quando precisa do conteúdo exato, como para republicar o artefato como um [editor](#let-someone-edit-with-you).

125 

118<h2 id="collect-comments-on-an-artifact">126<h2 id="collect-comments-on-an-artifact">

119 Coletar comentários em um artefato127 Coletar comentários em um artefato

120</h2>128</h2>


176Build a dashboard artifact of our open pull requests that pulls the live list through my GitHub connector when the page loads.184Build a dashboard artifact of our open pull requests that pulls the live list through my GitHub connector when the page loads.

177```185```

178 186 

179Claude declara quais conectores a página pode chamar como parte da publicação, e a página não pode chamar conectores fora dessa declaração. Apenas conectores de sua conta claude.ai se qualificam: Claude os nomeia na declaração, e quando alguém visualiza a página, cada chamada [é executada através da conexão da conta de visualização com esse conector](#how-connector-calls-work-for-viewers). Servidores MCP locais que você configura no Claude Code, como servidores de `.mcp.json`, podem fornecer dados enquanto Claude constrói a página, mas a página publicada não pode chamá-los.187Claude declara quais conectores a página pode chamar como parte da publicação, e a página não pode chamar conectores fora dessa declaração. Apenas conectores de sua conta claude.ai se qualificam: Claude os nomeia na declaração, e quando alguém visualiza a página, cada chamada [é executada através da própria conexão da conta de visualização](#how-connector-calls-work-for-viewers) para esse conector. Servidores MCP locais que você configura no Claude Code, como servidores de `.mcp.json`, podem fornecer dados enquanto Claude constrói a página, mas a página publicada não pode chamá-los.

180 188 

181A página busca dados quando carrega e pode atualizar em um intervalo ou quando um visualizador usa um controle de atualização na página. As respostas são armazenadas em cache no navegador do visualizador, para que uma página reabierta seja renderizada a partir das respostas em cache imediatamente e depois seja atualizada com resultados frescos.189A página busca dados quando carrega e pode atualizar em um intervalo ou quando um visualizador usa um controle de atualização na página. As respostas são armazenadas em cache no navegador do visualizador, para que uma página reabierta seja renderizada a partir das respostas em cache imediatamente e depois seja atualizada com resultados frescos.

182 190 


186 194 

187Quando uma página publicada chama um conector, a chamada usa a conta da pessoa que está visualizando a página, não a conta da pessoa que a publicou:195Quando uma página publicada chama um conector, a chamada usa a conta da pessoa que está visualizando a página, não a conta da pessoa que a publicou:

188 196 

189* **Cada visualizador usa seus próprios conectores**: as chamadas passam pelas ferramentas conectadas da conta de visualização, para que duas pessoas abrindo o mesmo painel possam ver dados diferentes dependendo do que suas contas podem acessar. A página nunca vê as credenciais de ninguém; claude.ai faz as chamadas em nome da página.197* **Cada visualizador usa seus próprios conectores**: as chamadas passam pelas ferramentas conectadas da conta de visualização, para que duas pessoas que abram o mesmo painel possam ver dados diferentes dependendo do que suas contas podem acessar. A página nunca vê as credenciais de ninguém; claude.ai faz as chamadas em nome da página.

190* **Visualizadores aprovam o acesso primeiro**: claude.ai pede permissão a cada visualizador antes da primeira chamada de conector da página. Um visualizador que recusa, ou que não conectou um conector que a página usa, ainda vê a página sem suas seções ao vivo.198* **Os visualizadores aprovam o acesso primeiro**: claude.ai pede permissão a cada visualizador antes da primeira chamada de conector da página. Um visualizador que recusa, ou que não conectou um conector que a página usa, ainda vê a página sem suas seções ao vivo.

191* **Ações também usam a conta do visualizador**: uma página pode oferecer controles que invocam ferramentas de conectores com efeitos colaterais, como postar uma mensagem ou atualizar um problema. A ação passa pela conta de quem seleciona o controle.199* **As ações também usam a conta do visualizador**: uma página pode oferecer controles que invocam ferramentas de conectores com efeitos colaterais, como postar uma mensagem ou atualizar um problema. A ação passa pela conta de quem seleciona o controle.

192 200 

193Quando você planeja compartilhar uma página com suporte de conectores, peça ao Claude para incluir uma mensagem de fallback em cada seção ao vivo que nomeie o conector que ela precisa. Um visualizador que não tem a conexão então vê o que conectar em vez de uma seção vazia.201Quando você planeja compartilhar uma página com suporte de conectores, peça a Claude para incluir uma mensagem de fallback em cada seção ao vivo que nomeie o conector que ela precisa. Um visualizador que não tem a conexão vê o que conectar em vez de uma seção vazia.

194 202 

195Um artefato que chama conectores não pode ser compartilhado para um link público em nenhum plano. Nos planos Team e Enterprise, você pode mantê-lo privado ou [compartilhá-lo dentro de sua organização](#share-an-artifact). Nos planos Pro e Max, onde um link público é a única maneira de compartilhar, um artefato com suporte de conectores permanece privado para você.203Um artefato que chama conectores não pode ser compartilhado para um link público em nenhum plano. Nos planos Team e Enterprise, você pode mantê-lo privado ou [compartilhá-lo dentro de sua organização](#share-an-artifact). Nos planos Pro e Max, onde um link público é a única maneira de compartilhar, um artefato com suporte de conectores permanece privado para você.

196 204 


200 208 

201Quando uma página com suporte de conectores é renderizada mas suas seções ao vivo permanecem vazias para alguém com quem você a compartilhou, trabalhe através dessas causas:209Quando uma página com suporte de conectores é renderizada mas suas seções ao vivo permanecem vazias para alguém com quem você a compartilhou, trabalhe através dessas causas:

202 210 

203* **O visualizador não conectou o conector**: conectores são por conta, então cada visualizador precisa de sua própria conexão com cada conector que a página chama. Eles podem adicionar um em **Settings > Connectors** em claude.ai e depois recarregar a página.211* **O visualizador não conectou o conector**: conectores são por conta, então cada visualizador precisa de sua própria conexão para cada conector que a página chama. Ele pode adicionar um em **Settings > Connectors** em claude.ai e depois recarregar a página.

204* **O visualizador recusou a solicitação de permissão**: uma recusa dura pelo resto desse carregamento de página. Recarregar a página traz a solicitação de permissão de volta.212* **O visualizador recusou a solicitação de permissão**: uma recusa dura pelo resto desse carregamento de página. Recarregar a página traz a solicitação de permissão de volta.

205* **As chamadas de conectores estão desativadas para a organização**: um Proprietário controla o [alternador **Enable artifact connectors**](#control-connector-calls-from-artifacts) nas configurações de administrador.213* **As chamadas de conectores estão desativadas para a organização**: um Proprietário controla o [toggle **Enable artifact connectors**](#control-connector-calls-from-artifacts) nas configurações de administrador.

214* **A página chama nomes de ferramentas que o conector não expõe**: as seções afetadas permanecem vazias para todos, incluindo você. Isso pode acontecer quando uma página nomeia as ferramentas individuais atrás de um conector estilo gateway que expõe apenas algumas de suas próprias ferramentas. Peça a Claude para corrigir os nomes das ferramentas que a página chama e publicá-la novamente.

215 

216 Quando Claude publica a página e as ferramentas desse conector estão disponíveis em sua sessão, Claude Code verifica os nomes das ferramentas que a página declara contra elas, avisa Claude sobre nomes que não correspondem e recusa a publicação quando nenhum corresponde. Antes da v2.1.265, ela publicava a página sem verificá-los.

217 

218<h2 id="offer-a-file-download">

219 Ofereça um download de arquivo

220</h2>

221 

222Um artefato pode oferecer aos visualizadores um arquivo que a página gera, como uma exportação CSV de uma tabela ou um PNG de um gráfico. O visualizador o salva através de um controle de download na página, como um botão. Downloads de arquivo são uma capacidade de tempo de execução que claude.ai ativa por conta, portanto Claude verifica se sua conta possui essa capacidade antes de construir o controle.

223 

224Os visualizadores não podem salvar um arquivo de um link de download comum ou de um script na página, porque o visualizador de artefatos em claude.ai bloqueia qualquer download que a página inicia por si mesma, incluindo links para URLs `data:` ou `blob:`. Se uma página tiver botões de download construídos dessa forma, peça a Claude para reconstruí-los com a capacidade de downloads.

225 

226Para oferecer um arquivo, solicite o controle e o formato do arquivo em seu prompt:

227 

228```text wrap theme={null}

229Add a button that downloads this table as a CSV file.

230```

231 

232Claude declara a capacidade de downloads como parte da publicação, da mesma forma que [declara conectores](#pull-live-data-with-mcp-connectors).

206 233 

207<h2 id="what-you-can-build">234<h2 id="what-you-can-build">

208 O que você pode construir235 O que você pode construir


301| Restrição | Efeito |328| Restrição | Efeito |

302| :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |329| :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

303| Solicitações externas | A página pode carregar fontes tipográficas do Google Fonts e scripts de [quatro hosts CDN públicos](#allowlist-the-viewer-domain): cdnjs, os CDNs do Tailwind e jQuery, e caminhos selecionados no jsDelivr, como `/npm/`. A CSP bloqueia todas as imagens externas e todos os outros scripts, folhas de estilo e fontes externas, e permite que chamadas `fetch`, XHR e WebSocket alcancem apenas a origem da própria página e os hosts do Google Fonts. Claude, portanto, carrega qualquer biblioteca que a página necessite de um desses CDNs, incorpora todos os outros CSS e JavaScript, e incorpora imagens como data URIs. [Chamadas do Connector](#pull-live-data-with-mcp-connectors) passam por claude.ai, que faz a chamada de rede em si. |330| Solicitações externas | A página pode carregar fontes tipográficas do Google Fonts e scripts de [quatro hosts CDN públicos](#allowlist-the-viewer-domain): cdnjs, os CDNs do Tailwind e jQuery, e caminhos selecionados no jsDelivr, como `/npm/`. A CSP bloqueia todas as imagens externas e todos os outros scripts, folhas de estilo e fontes externas, e permite que chamadas `fetch`, XHR e WebSocket alcancem apenas a origem da própria página e os hosts do Google Fonts. Claude, portanto, carrega qualquer biblioteca que a página necessite de um desses CDNs, incorpora todos os outros CSS e JavaScript, e incorpora imagens como data URIs. [Chamadas do Connector](#pull-live-data-with-mcp-connectors) passam por claude.ai, que faz a chamada de rede em si. |

304| Sem backend | Um artefato é uma página estática. Ele não pode armazenar dados enviados através de um formulário ou autenticar visualizadores por si só. Sua única maneira de buscar dados quando alguém o visualiza é [chamando conectores MCP](#pull-live-data-with-mcp-connectors), não uma API própria. |331| Sem backend | Um artefato é uma página estática. Ele não pode autenticar visualizadores por si só. |

332| Downloads | A página não pode iniciar um download por si só. Para permitir que visualizadores salvem um arquivo que a página gera, Claude declara a capacidade de downloads. Consulte [Oferecer um download de arquivo](#offer-a-file-download). |

305| Página única | Links relativos não são resolvidos, porque nada é implantado junto com a página. Para conteúdo com múltiplas seções, Claude usa âncoras na página em vez de arquivos separados. |333| Página única | Links relativos não são resolvidos, porque nada é implantado junto com a página. Para conteúdo com múltiplas seções, Claude usa âncoras na página em vez de arquivos separados. |

306| Tipos de arquivo de origem | O arquivo publicado deve ser `.html`, `.htm` ou `.md`. Arquivos Markdown são renderizados como HTML estilizado. |334| Tipos de arquivo de origem | O arquivo publicado deve ser `.html`, `.htm` ou `.md`, e deve ser decodificado como UTF-8, ou como UTF-16 little-endian pela sua marca de ordem de bytes. Arquivos Markdown são renderizados como HTML estilizado. Um arquivo que não é decodificado, ou que contém o caractere de substituição `U+FFFD`, é [recusado com a linha e coluna a corrigir](/docs/pt/errors#the-source-file-is-not-valid-utf-8-text). |

307| Tamanho renderizado | A página renderizada deve ter 16 MiB ou menos. Imagens incorporadas grandes são a causa usual quando uma publicação falha por tamanho. |335| Tamanho renderizado | A página renderizada deve ter 16 MiB ou menos. Imagens incorporadas grandes são a causa usual quando uma publicação falha por tamanho. |

308 336 

309Gerar um artefato usa tokens de saída como qualquer outra resposta, e uma página estilizada é mais intensiva em tokens do que o mesmo conteúdo como texto de terminal. CSS incorporado, JavaScript para controles interativos e especialmente imagens incorporadas como data URIs são os principais contribuintes. Para reduzir o custo de tokens de um artefato:337Gerar um artefato usa tokens de saída como qualquer outra resposta, e uma página estilizada é mais intensiva em tokens do que o mesmo conteúdo como texto de terminal. CSS incorporado, JavaScript para controles interativos e especialmente imagens incorporadas como data URIs são os principais contribuintes. Para reduzir o custo de tokens de um artefato:

310 338 

311* Prefira SVG ou HTML e CSS para diagramas em vez de imagens raster incorporadas339* Prefira SVG, ou HTML e CSS, para diagramas em vez de imagens raster incorporadas

312* Omita interatividade que você não necessite340* Omita interatividade que você não necessite

313* Faça a página resumir grandes conjuntos de dados em vez de incorporá-los completamente341* Faça a página resumir grandes conjuntos de dados em vez de incorporá-los completamente

314 342 


343 371 

344Você também pode definir `"enableArtifact": false` no `.claude/settings.json` ou `.claude/settings.local.json` de um projeto para desativar artefatos para sessões nesse projeto. Um `"enableArtifact": true` em qualquer um dos arquivos não os ativa novamente. Honrar a chave em configurações de projeto e local requer Claude Code v2.1.242 ou posterior.372Você também pode definir `"enableArtifact": false` no `.claude/settings.json` ou `.claude/settings.local.json` de um projeto para desativar artefatos para sessões nesse projeto. Um `"enableArtifact": true` em qualquer um dos arquivos não os ativa novamente. Honrar a chave em configurações de projeto e local requer Claude Code v2.1.242 ou posterior.

345 373 

374Se você adicionar uma regra de negação ou solicitação de `WebFetch` sem uma parte `domain:`, ela não desativa artefatos nem bloqueia leituras de artefatos. Uma [regra `WebFetch(domain:claude.ai)` em `deny` ou `ask` se aplica a leituras de artefatos](/docs/pt/permissions#allow-or-deny-every-fetch).

375 

346<h2 id="manage-artifacts-for-your-organization">376<h2 id="manage-artifacts-for-your-organization">

347 Gerenciar artefatos para sua organização377 Gerenciar artefatos para sua organização

348</h2>378</h2>

Details

235 235 

236Uma sessão do [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway) assinada fica fora desta lista: é uma seleção de provedor como Amazon Bedrock ou Google Cloud's Agent Platform, e a supera. Quando uma sessão de gateway existe, a CLI se autentica com o token do gateway mesmo se `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` ou `CLAUDE_CODE_USE_FOUNDRY` está definido, e fontes de credenciais acima como o token bearer, chave de API, `apiKeyHelper` e perfis não são usados.236Uma sessão do [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway) assinada fica fora desta lista: é uma seleção de provedor como Amazon Bedrock ou Google Cloud's Agent Platform, e a supera. Quando uma sessão de gateway existe, a CLI se autentica com o token do gateway mesmo se `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` ou `CLAUDE_CODE_USE_FOUNDRY` está definido, e fontes de credenciais acima como o token bearer, chave de API, `apiKeyHelper` e perfis não são usados.

237 237 

238Se você tem uma assinatura Claude ativa mas também tem `ANTHROPIC_API_KEY` definido em seu ambiente, a chave de API tem precedência uma vez aprovada. Isso pode causar falhas de autenticação se a chave pertencer a uma organização desabilitada ou expirada. Execute `unset ANTHROPIC_API_KEY` para voltar à sua assinatura e verifique `/status` para confirmar qual método está ativo. A linha `Login method` mostra sua conta de assinatura, e uma linha `API key` aparece quando uma chave de API está em uso.238Se as [configurações gerenciadas](/docs/pt/managed-settings) da sua máquina definirem [`forceLoginMethod`](/docs/pt/settings-reference#forceloginmethod) como `"gateway"` ou definirem [`forceLoginGatewayUrl`](/docs/pt/settings-reference#forcelogingatewayurl), e você não selecionar um provedor de nuvem através de uma variável como `CLAUDE_CODE_USE_BEDROCK` ou `CLAUDE_CODE_USE_VERTEX`, sua sessão usa apenas o sign-in do gateway. Claude Code pula as outras fontes de credenciais e pede que você se conecte com `/login`. Consulte [Administrator policy requires a Cloud gateway sign-in](/docs/pt/errors#administrator-policy-requires-a-cloud-gateway-sign-in) para ver o que você vê com cada credencial restante. Antes da v2.1.261, ou antes da v2.1.265 em uma máquina que define apenas `forceLoginGatewayUrl`, Claude Code usava um login salvo restante nessas máquinas até que você se conectasse ao gateway.

239 

240Se você tem uma assinatura Claude ativa mas também tem `ANTHROPIC_API_KEY` definido em seu ambiente, Claude Code usa a chave de API uma vez que você a aprova. Isso pode causar falhas de autenticação se a chave pertencer a uma organização desabilitada ou expirada.

241 

242Execute `unset ANTHROPIC_API_KEY` para voltar à sua assinatura e verifique `/status` para confirmar qual método está ativo. Quando um login e uma chave de API estão ambos configurados, `/status` marca a credencial que não está em uso.

239 243 

240[Claude Code na Web](/docs/pt/claude-code-on-the-web) sempre usa suas credenciais de assinatura. Se você definir `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN` no ambiente sandbox, isso não substitui suas credenciais de assinatura.244[Claude Code na Web](/docs/pt/claude-code-on-the-web) sempre usa suas credenciais de assinatura. Se você definir `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN` no ambiente sandbox, isso não substitui suas credenciais de assinatura.

241 245 


257 261 

258A regra `user_oauth` impede que um perfil `ant auth login` deixado para trás mova suas solicitações para fora da conta em que você se conectou com `/login`. Para as variáveis de federação, Claude Code também lê as outras variáveis na [referência WIF](https://platform.claude.com/docs/en/manage-claude/wif-reference#environment-variables), como `ANTHROPIC_IDENTITY_TOKEN_FILE`, quando troca seu token de identidade. Para o formato do arquivo de perfil, consulte a [referência WIF](https://platform.claude.com/docs/en/manage-claude/wif-reference#profile-configuration-file).262A regra `user_oauth` impede que um perfil `ant auth login` deixado para trás mova suas solicitações para fora da conta em que você se conectou com `/login`. Para as variáveis de federação, Claude Code também lê as outras variáveis na [referência WIF](https://platform.claude.com/docs/en/manage-claude/wif-reference#environment-variables), como `ANTHROPIC_IDENTITY_TOKEN_FILE`, quando troca seu token de identidade. Para o formato do arquivo de perfil, consulte a [referência WIF](https://platform.claude.com/docs/en/manage-claude/wif-reference#profile-configuration-file).

259 263 

260Para confirmar qual fonte Claude Code escolheu, execute `/status`. Uma linha `Profile` nomeia a fonte no lugar da linha `Login method`, e quando o perfil é a credencial em uso, as linhas `Organization` e `Email` mostram sua conta.264Para confirmar qual fonte Claude Code escolheu, execute `/status`. Uma linha `Profile` nomeia a fonte no lugar da linha `Login method`. Quando o perfil é a credencial em uso, `Organization` e `Email` mostram sua conta.

261 265 

262Se você iniciar Claude Code com `--debug`, ele também escreve uma linha `Using Anthropic profile auth` com o nome da fonte no log de depuração em `~/.claude/debug/<session-id>.txt`. Quando Claude Code passa por um perfil ativo `user_oauth` porque você tem uma credencial `/login` funcionando, ele escreve um aviso no log de depuração dizendo que está usando o login claude.ai em vez disso.266Se você iniciar Claude Code com `--debug`, ele também escreve uma linha `Using Anthropic profile auth` com o nome da fonte no log de depuração em `~/.claude/debug/<session-id>.txt`. Quando Claude Code passa por um perfil ativo `user_oauth` porque você tem uma credencial `/login` funcionando, ele escreve um aviso no log de depuração dizendo que está usando o login claude.ai em vez disso.

263 267 

Details

36 36 

37<Info>Antes da v2.1.211, o classificador permitia pushes apenas para sua branch de trabalho, branches que Claude criou e pushes rotineiros para a branch padrão.</Info>37<Info>Antes da v2.1.211, o classificador permitia pushes apenas para sua branch de trabalho, branches que Claude criou e pushes rotineiros para a branch padrão.</Info>

38 38 

39Se você quiser um checkpoint humano antes de cada push ou pull request, adicione regras de permissão: as [receitas abaixo](#add-a-human-checkpoint) mantêm o modo automático ativado para tudo mais.39Se você quiser um checkpoint humano antes dos comandos push e pull request do Claude, adicione regras de permissão: as [receitas abaixo](#add-a-human-checkpoint) mantêm o modo automático ativado para tudo mais.

40 40 

41<h3 id="add-a-human-checkpoint">41<h3 id="add-a-human-checkpoint">

42 Adicionar um checkpoint humano42 Adicionar um checkpoint humano


55}55}

56```56```

57 57 

58Essas regras correspondem a comandos que começam com `git push` ou `gh pr create`. Um push que Claude escreve de outra forma, como `git -C <dir> push` ou `git -c <key>=<value> push`, [não corresponde à regra](/docs/pt/permissions#bash-rule-limits), portanto não é checkpointed. Para um checkpoint que inspeciona o texto completo do comando, adicione um [hook PreToolUse](/docs/pt/hooks#pretooluse).

59 

58Escolha o mecanismo que corresponde ao quão firme o limite precisa ser:60Escolha o mecanismo que corresponde ao quão firme o limite precisa ser:

59 61 

60| Limite | Mecanismo | Comportamento em modo automático |62| Limite | Mecanismo | Comportamento em modo automático |

61| :---------------------------- | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |63| :---------------------------- | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

62| Solicitar antes da ação | `permissions.ask` | Sempre solicita para regras com escopo de conteúdo como a receita acima. O classificador não pode aprovar automaticamente uma ação correspondente. |64| Solicitar antes da ação | `permissions.ask` | Sempre solicita para um comando que corresponde a uma regra com escopo de conteúdo como a receita acima. O classificador não pode aprovar automaticamente uma ação correspondente. |

63| Nunca executar a ação | `permissions.deny` | Bloqueia antes do classificador ser consultado. Nem o classificador nem a intenção do usuário podem substituí-lo. |65| Nunca executar a ação | `permissions.deny` | Bloqueia antes do classificador ser consultado. Nem o classificador nem a intenção do usuário podem substituí-lo. |

64| Limite único para esta sessão | Declare na conversa, como "não faça push até eu revisar" | O classificador bloqueia ações correspondentes, mas o limite pode ser perdido se a [compactação de contexto](/docs/pt/costs#reduce-token-usage) remover a mensagem que o declarou. Use uma regra ask ou deny para uma garantia durável. |66| Limite único para esta sessão | Declare na conversa, como "não faça push até eu revisar" | O classificador bloqueia ações correspondentes, mas o limite pode ser perdido se a [compactação de contexto](/docs/pt/costs#reduce-token-usage) remover a mensagem que o declarou. Use uma regra ask ou deny para uma garantia durável. |

65 67 


395 397 

396Para ver o que o classificador bloqueou, encontre a chamada de ferramenta na conversa. Se a chamada aparecer encurtada ou dobrada em uma linha de resumo como `Ran 3 shell commands`, pressione `Ctrl+O` para abrir o [visualizador de transcrição](/docs/pt/interactive-mode#transcript-viewer), que a expande.398Para ver o que o classificador bloqueou, encontre a chamada de ferramenta na conversa. Se a chamada aparecer encurtada ou dobrada em uma linha de resumo como `Ran 3 shell commands`, pressione `Ctrl+O` para abrir o [visualizador de transcrição](/docs/pt/interactive-mode#transcript-viewer), que a expande.

397 399 

398Dois outros lugares na tela que relatam negações omitem o comando ou URL: o aviso perto da caixa de entrada, como `bash denied by auto mode · Blocked by classifier · /permissions`, fornece a ferramenta e o motivo, e a aba **Recently denied** lista um comando shell pela descrição que Claude escreveu para ele. Para capturar a entrada exata dessas negações programaticamente, adicione um [hook `PermissionDenied`](/docs/pt/hooks#permissiondenied), que a recebe como `tool_input`.400Dois outros lugares na tela que relatam negações omitem o comando ou URL: o aviso perto da caixa de entrada, como `bash denied by auto mode · [Data Exfiltration] · /permissions`, fornece a ferramenta e o motivo, e a aba **Recently denied** lista um comando shell pela descrição que Claude escreveu para ele. Para capturar a entrada exata dessas negações programaticamente, adicione um [hook `PermissionDenied`](/docs/pt/hooks#permissiondenied), que a recebe como `tool_input`.

399 401 

400O texto sob a chamada informa se há algo a corrigir. Texto que relata um problema com o próprio classificador, como um modelo que `is temporarily unavailable` ou um erro do classificador, significa que Claude Code bloqueou a chamada sem um veredicto final do classificador; veja [Auto mode cannot determine the safety of an action](/docs/pt/errors#auto-mode-cannot-determine-the-safety-of-an-action) para saber o que fazer. Caso contrário, uma linha lendo `Denied by auto mode classifier` com um motivo como `Blocked by classifier` significa que o classificador julgou a chamada insegura, então escolha a correção do que a chamada estava tentando alcançar ou fazer:402O texto sob a chamada informa se há algo a corrigir. Texto que relata um problema com o próprio classificador, como um modelo que `is temporarily unavailable` ou um erro do classificador, significa que Claude Code bloqueou a chamada sem um veredicto final do classificador; veja [Auto mode cannot determine the safety of an action](/docs/pt/errors#auto-mode-cannot-determine-the-safety-of-an-action) para saber o que fazer. Caso contrário, uma linha lendo `Denied by auto mode classifier` com um motivo como `[Production Deploy]` ou `Blocked by classifier` significa que o classificador julgou a chamada insegura, então escolha a correção do que a chamada estava tentando alcançar ou fazer:

401 403 

402* Um destino que Claude precisa durante toda a tarefa, como um registro de pacotes, um domínio interno ou um host de repositório: adicione-o a `autoMode.environment`.404* Um destino que Claude precisa durante toda a tarefa, como um registro de pacotes, um domínio interno ou um host de repositório: adicione-o a `autoMode.environment`.

403* Um comando que você deseja executar sem revisão a partir de agora: adicione uma regra `allow`.405* Um comando que você deseja executar sem revisão a partir de agora: adicione uma regra `allow`.


405 407 

406Você pode adicionar a entrada de ambiente ou regra `allow` a partir da aba [**Auto mode**](#edit-rules-from-permissions) do diálogo `/permissions`.408Você pode adicionar a entrada de ambiente ou regra `allow` a partir da aba [**Auto mode**](#edit-rules-from-permissions) do diálogo `/permissions`.

407 409 

408O motivo mostrado com a chamada é o texto fixo `Blocked by classifier` na maioria das sessões, no Claude Code v2.1.208 e posterior: o classificador pontua cada ação em uma escala de severidade interna em vez de escrever uma explicação. Algumas sessões executam um modelo classificador que escreve uma breve explicação, no v2.1.193 e posterior; quando uma aparece, trate-a como uma dica sobre qual destino ou intenção o classificador estava perdendo. Claude Code seleciona o modelo classificador, então qual motivo você vê não é algo que você configura.410Na maioria das sessões o nome do motivo nomeia a regra que o classificador correspondeu, entre colchetes, como `[Data Exfiltration]` ou `[Production Deploy]`, e algumas sessões executam um modelo classificador que adiciona uma breve explicação. Claude Code seleciona o modelo classificador, então qual forma você vê não é algo que você configura.

409 411 

410<h3 id="fix-repeated-denials">412<h3 id="fix-repeated-denials">

411 Corrigir negações repetidas413 Corrigir negações repetidas

Details

452</h3>452</h3>

453 453 

454<Tip>454<Tip>

455 Cada prompt que você envia cria um checkpoint. Você pode restaurar conversa, código ou ambos para qualquer checkpoint anterior.455 Cada prompt que você envia que inicia um turno cria um checkpoint. Você pode restaurar conversa, código ou ambos para qualquer checkpoint anterior.

456</Tip>456</Tip>

457 457 

458Claude automaticamente faz snapshots de arquivos antes de cada mudança para que um checkpoint possa restaurá-los. Pressione Escape duas vezes ou execute `/rewind` para abrir o menu de rewind. Você pode restaurar apenas conversa, restaurar apenas código, restaurar ambos ou resumir a partir de uma mensagem selecionada. Veja [Checkpointing](/docs/pt/checkpointing) para detalhes.458Claude automaticamente faz snapshots de arquivos antes de cada mudança para que um checkpoint possa restaurá-los. Pressione Escape duas vezes ou execute `/rewind` para abrir o menu de rewind. Você pode restaurar apenas conversa, restaurar apenas código, restaurar ambos ou resumir a partir de uma mensagem selecionada. Veja [Checkpointing](/docs/pt/checkpointing) para detalhes.

channels.md +2 −2

Details

47 * `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.47 * `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.

48 * O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.48 * O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.

49 49 

50 Quando a instalação solicitar um escopo de instalação, escolha a opção de escopo do usuário para que o plugin esteja disponível em todos os seus projetos. Verifique o resumo da instalação: se relatar `Run /reload-plugins to activate.`, execute esse comando para ativar o comando de configuração do plugin.50 Quando a instalação solicitar um escopo de instalação, escolha a opção de escopo do usuário para que o plugin esteja disponível em todos os seus projetos. Verifique o resumo da instalação: se relatar `Run /reload-plugins to activate.`, consulte [Aplicar alterações de plugin sem reiniciar](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) para disponibilizar o comando de configuração do plugin.

51 </Step>51 </Step>

52 52 

53 <Step title="Configurar seu token">53 <Step title="Configurar seu token">


125 * `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.125 * `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.

126 * O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.126 * O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.

127 127 

128 Quando a instalação solicitar um escopo de instalação, escolha a opção de escopo do usuário para que o plugin esteja disponível em todos os seus projetos. Verifique o resumo da instalação: se relatar `Run /reload-plugins to activate.`, execute esse comando para ativar o comando de configuração do plugin.128 Quando a instalação solicitar um escopo de instalação, escolha a opção de escopo do usuário para que o plugin esteja disponível em todos os seus projetos. Verifique o resumo da instalação: se relatar `Run /reload-plugins to activate.`, consulte [Aplicar alterações de plugin sem reiniciar](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) para disponibilizar o comando de configuração do plugin.

129 </Step>129 </Step>

130 130 

131 <Step title="Configurar seu token">131 <Step title="Configurar seu token">

Details

170 170 

171 Se o evento não chegar, o diagnóstico depende do que `curl` retornou:171 Se o evento não chegar, o diagnóstico depende do que `curl` retornou:

172 172 

173 * **`curl` sucede mas nada chega a Claude**: execute `/mcp` em sua sessão para verificar o status do servidor. Um status `failed` geralmente significa um erro de dependência ou importação em seu arquivo de servidor; verifique o log de debug em `~/.claude/debug/<session-id>.txt` para o rastreamento stderr.173 * **`curl` sucede mas nada chega a Claude**: execute `/mcp` em sua sessão para verificar o status do servidor. Um status `failed` geralmente significa um erro de dependência ou importação em seu arquivo de servidor. Para ver o rastreamento stderr, reinicie com `claude --debug --dangerously-load-development-channels server:webhook` e verifique o log de debug em `~/.claude/debug/<session-id>.txt`.

174 * **`curl` falha com "connection refused"**: a porta não está vinculada ainda ou um processo obsoleto de uma execução anterior a está mantendo. `lsof -i :<port>` mostra o que está escutando; `kill` o processo obsoleto antes de reiniciar sua sessão.174 * **`curl` falha com "connection refused"**: a porta não está vinculada ainda ou um processo obsoleto de uma execução anterior a está mantendo. `lsof -i :<port>` mostra o que está escutando; `kill` o processo obsoleto antes de reiniciar sua sessão.

175 </Step>175 </Step>

176</Steps>176</Steps>

checkpointing.md +11 −3

Details

12 Como o checkpointing funciona12 Como o checkpointing funciona

13</h2>13</h2>

14 14 

15Conforme você trabalha com Claude, o checkpointing captura automaticamente o estado do seu código antes de cada prompt do usuário.15Conforme você trabalha com Claude, o checkpointing captura automaticamente o estado do seu código antes de cada prompt que você envia e que inicia um turno.

16 16 

17<h3 id="automatic-tracking">17<h3 id="automatic-tracking">

18 Rastreamento automático18 Rastreamento automático


20 20 

21Claude Code rastreia todas as alterações feitas por suas ferramentas de edição de arquivo:21Claude Code rastreia todas as alterações feitas por suas ferramentas de edição de arquivo:

22 22 

23* Cada prompt do usuário cria um novo checkpoint23* Cada prompt que você envia e que inicia um turno cria um novo checkpoint

24* Claude Code mantém snapshots de arquivo para os 100 checkpoints mais recentes em uma sessão. Descartar um checkpoint mais antigo deleta os arquivos de snapshot que nenhum checkpoint restante referencia, exceto o primeiro snapshot de cada arquivo, que a extensão VS Code usa como baseline para seus diffs de sessão.24* Claude Code mantém snapshots de arquivo para os 100 checkpoints mais recentes em uma sessão. Descartar um checkpoint mais antigo deleta os arquivos de snapshot que nenhum checkpoint restante referencia, exceto o primeiro snapshot de cada arquivo, que a extensão VS Code usa como baseline para seus diffs de sessão.

25* Claude Code salva checkpoints com a conversa, para que você ainda possa executar `/rewind` após retomar uma sessão25* Claude Code salva checkpoints com a conversa, para que você ainda possa executar `/rewind` após retomar uma sessão

26* Claude Code deleta os snapshots de arquivo de uma sessão na [varredura de retenção](/docs/pt/claude-directory#cleaned-up-automatically), por padrão cerca de 30 dias após a sessão salvar um pela última vez. Fazer rewind para um checkpoint cujos snapshots desapareceram pode falhar com [`Nenhum arquivo foi restaurado`](/docs/pt/errors#no-files-were-restored). Para manter snapshots por mais tempo, defina [`cleanupPeriodDays`](/docs/pt/settings-reference#cleanupperioddays).26* Claude Code deleta os snapshots de arquivo de uma sessão na [varredura de retenção](/docs/pt/claude-directory#cleaned-up-automatically), por padrão cerca de 30 dias após a sessão salvar um pela última vez. Fazer rewind para um checkpoint cujos snapshots desapareceram pode falhar com [`Nenhum arquivo foi restaurado`](/docs/pt/errors#no-files-were-restored). Para manter snapshots por mais tempo, defina [`cleanupPeriodDays`](/docs/pt/settings-reference#cleanupperioddays).


35 Se o campo de entrada de prompt contiver texto, duplo `Esc` o limpa em vez de abrir o menu. O texto limpo é salvo no seu histórico de entrada, então pressione `Up` para recuperá-lo após terminar no menu de rewind.35 Se o campo de entrada de prompt contiver texto, duplo `Esc` o limpa em vez de abrir o menu. O texto limpo é salvo no seu histórico de entrada, então pressione `Up` para recuperá-lo após terminar no menu de rewind.

36</Note>36</Note>

37 37 

38O menu de rewind lista cada prompt que você enviou durante a sessão. Selecione o ponto em que deseja agir e escolha uma ação:38O menu de rewind lista cada prompt que você enviou durante a sessão, exceto [mensagens que se juntaram a um turno em andamento](#messages-sent-mid-turn-not-checkpointed). Selecione o ponto em que deseja agir e escolha uma ação:

39 39 

40* **Restaurar código e conversa**: reverte tanto o código quanto a conversa para esse ponto40* **Restaurar código e conversa**: reverte tanto o código quanto a conversa para esse ponto

41* **Restaurar conversa**: reverte para essa mensagem mantendo o código atual41* **Restaurar conversa**: reverte para essa mensagem mantendo o código atual


110 110 

111O checkpointing rastreia apenas arquivos que foram editados na sessão atual. Alterações manuais que você faz em arquivos fora do Claude Code e edições de outras sessões simultâneas normalmente não são capturadas, a menos que aconteçam de modificar os mesmos arquivos da sessão atual.111O checkpointing rastreia apenas arquivos que foram editados na sessão atual. Alterações manuais que você faz em arquivos fora do Claude Code e edições de outras sessões simultâneas normalmente não são capturadas, a menos que aconteçam de modificar os mesmos arquivos da sessão atual.

112 112 

113<h3 id="messages-sent-mid-turn-not-checkpointed">

114 Mensagens enviadas no meio do turno não checkpointed

115</h3>

116 

117Quando uma mensagem que você [enfileira enquanto Claude trabalha](/docs/pt/interactive-mode#queue-messages-while-claude-works) chega ao Claude dentro do turno em execução, ela se junta a esse turno em vez de iniciar um novo. A mensagem aparece na conversa, mas Claude Code não cria um checkpoint para ela, e o menu de rewind não a lista. Uma mensagem enfileirada que Claude Code envia como seu próprio turno recebe um checkpoint como de costume.

118 

119Para remover tal mensagem, ou desfazer as edições que Claude fez depois dela, faça rewind para o prompt que iniciou o turno. Isso faz rewind de todo o turno, incluindo o trabalho que Claude fez antes de sua mensagem chegar.

120 

113<h3 id="symlinked-and-hard-linked-paths-not-restored">121<h3 id="symlinked-and-hard-linked-paths-not-restored">

114 Caminhos symlinked e hard-linked não restaurados122 Caminhos symlinked e hard-linked não restaurados

115</h3>123</h3>

Details

135 Esta configuração é suficiente para um loop de sign-in funcionando com o catálogo de modelos Bedrock padrão. Uma vez em execução, adicione RBAC por grupo e configurações gerenciadas via [`managed.policies`](/docs/pt/claude-apps-gateway-config#managed), fan-out de telemetria via [`telemetry`](/docs/pt/claude-apps-gateway-config#telemetry), e failover multi-upstream, ARNs de throughput provisionado ou regiões não-US via [`models`](/docs/pt/claude-apps-gateway-config#models).135 Esta configuração é suficiente para um loop de sign-in funcionando com o catálogo de modelos Bedrock padrão. Uma vez em execução, adicione RBAC por grupo e configurações gerenciadas via [`managed.policies`](/docs/pt/claude-apps-gateway-config#managed), fan-out de telemetria via [`telemetry`](/docs/pt/claude-apps-gateway-config#telemetry), e failover multi-upstream, ARNs de throughput provisionado ou regiões não-US via [`models`](/docs/pt/claude-apps-gateway-config#models).

136 136 

137 <Note>137 <Note>

138 O upstream Amazon Bedrock precisa de um principal AWS com `bedrock:InvokeModel` e `bedrock:InvokeModelWithResponseStream` nos ARNs `inference-profile/us.anthropic.*` e nos ARNs `foundation-model/anthropic.*` subjacentes, e formulário de caso de uso único da Anthropic enviado para a conta a partir do catálogo de modelos do console Bedrock. Forneça a credencial com IRSA no EKS, uma função de tarefa ECS ou um perfil de instância EC2 em vez de chaves estáticas. A [referência `upstreams`](/docs/pt/claude-apps-gateway-config#upstreams) tem os detalhes completos do IAM, a matriz de credencial entre nuvens e os blocos `auth` para os outros provedores.138 O upstream Amazon Bedrock precisa de um principal AWS com `bedrock:InvokeModel` e `bedrock:InvokeModelWithResponseStream` nos ARNs `inference-profile/us.anthropic.*` e nos ARNs `foundation-model/anthropic.*` subjacentes. Ele também precisa do formulário de caso de uso único da Anthropic enviado para a conta a partir do catálogo de modelos do console Bedrock. Forneça a credencial com IRSA no EKS, uma função de tarefa ECS ou um perfil de instância EC2 em vez de chaves estáticas. A [referência `upstreams`](/docs/pt/claude-apps-gateway-config#upstreams) tem os detalhes completos do IAM, a matriz de credencial entre nuvens e os blocos `auth` para os outros provedores.

139 </Note>139 </Note>

140 </Step>140 </Step>

141 141 


287}287}

288```288```

289 289 

290O desenvolvedor pressiona Enter para se conectar. O [prompt de impressão digital TLS de primeira conexão](#connect-developers) ainda aparece.290O desenvolvedor pressiona Enter para se conectar. O [prompt de impressão digital TLS de primeira conexão](#connect-developers) ainda aparece. Uma vez que o arquivo está em uma máquina, um desenvolvedor que não completou o sign-in do gateway vê uma das mensagens descritas em [A política do administrador requer um sign-in Cloud gateway](/docs/pt/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Desenvolvedores que selecionam um provedor de nuvem através de uma variável de ambiente como `CLAUDE_CODE_USE_BEDROCK` não precisam do sign-in do gateway.

291 291 

292Um desenvolvedor não pode configurar isso manualmente. O seletor de login não tem opção de gateway, e `forceLoginGatewayUrl` é ignorado nos arquivos de configurações próprias de um desenvolvedor. `forceLoginMethod` sozinho, sem uma URL, deixa o desenvolvedor em uma mensagem "Entre em contato com seu administrador de TI". As chaves de login pertencem ao arquivo que você envia para máquinas, não ao bloco `managed.policies[].cli` do gateway, que só alcança clientes que já estão conectados.292Um desenvolvedor não pode configurar isso manualmente. O seletor de login não tem opção de gateway, e `forceLoginGatewayUrl` é ignorado nos arquivos de configurações próprias de um desenvolvedor. `forceLoginMethod` sozinho, sem uma URL, deixa o desenvolvedor em uma mensagem "Entre em contato com seu administrador de TI". As chaves de login pertencem ao arquivo que você envia para máquinas, não ao bloco `managed.policies[].cli` do gateway, que só alcança clientes que já estão conectados.

293 293 


423Estas garantias se aplicam a cada sessão conectada através de `/login`. As sessões incorporadas que Claude Desktop inicia obtêm sua política conforme descrito em [Entregar política para sessões Claude Desktop](#deliver-policy-to-claude-desktop-sessions), e o ponto de telemetria diz para onde suas exportações vão.423Estas garantias se aplicam a cada sessão conectada através de `/login`. As sessões incorporadas que Claude Desktop inicia obtêm sua política conforme descrito em [Entregar política para sessões Claude Desktop](#deliver-policy-to-claude-desktop-sessions), e o ponto de telemetria diz para onde suas exportações vão.

424 424 

425* **Acesso a modelos**: solicitações para modelos que a política não concede retornam 400, e o seletor `/model` é filtrado para a lista de permissões `availableModels` da política. Defina [`enforceAvailableModels: true`](/docs/pt/model-config#default-model-behavior) na política para que a opção Padrão resolva para um modelo dentro de `availableModels` em vez de para o padrão integrado do Claude Code; sem isso, Padrão permanece selecionável e é rejeitado no tempo de solicitação se esse modelo não for concedido.425* **Acesso a modelos**: solicitações para modelos que a política não concede retornam 400, e o seletor `/model` é filtrado para a lista de permissões `availableModels` da política. Defina [`enforceAvailableModels: true`](/docs/pt/model-config#default-model-behavior) na política para que a opção Padrão resolva para um modelo dentro de `availableModels` em vez de para o padrão integrado do Claude Code; sem isso, Padrão permanece selecionável e é rejeitado no tempo de solicitação se esse modelo não for concedido.

426* **Destino de telemetria**: em sessões conectadas através de `/login`, a CLI envia suas exportações OTLP/HTTP para o gateway independentemente de qualquer `OTEL_EXPORTER_OTLP_ENDPOINT` definido localmente, e o gateway as retransmite para os destinos em [`telemetry.forward_to`](/docs/pt/claude-apps-gateway-config#telemetry). Nas sessões incorporadas que [Claude Desktop inicia](#connect-claude-desktop), a CLI envia suas exportações para o `OTEL_EXPORTER_OTLP_ENDPOINT` configurado. A CLI anexa o token de sessão do gateway àquelas exportações apenas quando esse endpoint aponta para o próprio gateway. Sem destino configurado para um sinal, o gateway o aceita e descarta, então se você já coleta telemetria Claude Code diretamente, adicione seu coletor como um destino `forward_to`.426* **Destino de telemetria**: em sessões conectadas através de `/login`, a CLI envia suas exportações OTLP/HTTP para o gateway em vez de para um `OTEL_EXPORTER_OTLP_ENDPOINT` definido localmente, a menos que uma política [nomeie seu coletor como o endpoint](/docs/pt/claude-apps-gateway-config#export-directly-to-your-collector). O gateway retransmite as exportações que recebe para os destinos em [`telemetry.forward_to`](/docs/pt/claude-apps-gateway-config#telemetry).

427* **Credenciais**: o token do gateway é a única credencial da sessão. `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_API_KEY`, `apiKeyHelper`, [perfis Anthropic](/docs/pt/authentication#anthropic-profiles-and-federation-credentials) e qualquer login anterior de claude.ai são ignorados enquanto conectado, então os desenvolvedores não precisam fazer logout de claude.ai primeiro.427 * Nas sessões incorporadas que [Claude Desktop inicia](#connect-claude-desktop), a CLI envia suas exportações para o `OTEL_EXPORTER_OTLP_ENDPOINT` configurado. A CLI anexa o token de sessão do gateway àquelas exportações apenas quando esse endpoint aponta para o próprio gateway.

428 * Sem destino configurado para um sinal, o gateway o aceita e descarta.

429 * Se você já coleta telemetria Claude Code diretamente, adicione seu coletor como um destino `forward_to`, ou nomeie-o em uma política para pular a retransmissão.

430* **Credenciais**: o token do gateway é a única credencial da sessão. [Perfis Anthropic](/docs/pt/authentication#anthropic-profiles-and-federation-credentials) e qualquer login anterior de claude.ai são ignorados enquanto conectado, então os desenvolvedores não precisam fazer logout de claude.ai primeiro. Para uma credencial `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` ou `apiKeyHelper` configurada, veja [A política do administrador requer um sign-in Cloud gateway](/docs/pt/errors#administrator-policy-requires-a-cloud-gateway-sign-in).

428* **Configurações gerenciadas**: chaves bloqueadas não podem ser substituídas localmente. A CLI aplica a política na inicialização e aplica mudanças em cada sondagem horária, além das [mudanças que se aplicam apenas no próximo lançamento](/docs/pt/server-managed-settings#fetch-and-caching-behavior).431* **Configurações gerenciadas**: chaves bloqueadas não podem ser substituídas localmente. A CLI aplica a política na inicialização e aplica mudanças em cada sondagem horária, além das [mudanças que se aplicam apenas no próximo lançamento](/docs/pt/server-managed-settings#fetch-and-caching-behavior).

429* **Inicialização com o gateway inacessível**: sessões conectadas saem na inicialização com um erro após cerca de 10 segundos em vez de iniciar sem suas configurações.432* **Inicialização com o gateway inacessível**: sessões conectadas saem na inicialização com um erro após cerca de 10 segundos em vez de iniciar sem suas configurações.

430* **Inicialização após o gateway encerrar a sessão**: veja [Aplicar falha fechada na inicialização](/docs/pt/server-managed-settings#enforce-fail-closed-startup) para quais lançamentos abrem desconectados do gateway e quais saem quando o gateway responde com um `401`.433* **Inicialização após o gateway encerrar a sessão**: veja [Aplicar falha fechada na inicialização](/docs/pt/server-managed-settings#enforce-fail-closed-startup) para quais lançamentos abrem desconectados do gateway e quais saem quando o gateway responde com um `401`.


454| Limites de gastos por usuário e por grupo | Disponível | Consulte [Limites de gastos](/docs/pt/claude-apps-gateway-spend-limits) |457| Limites de gastos por usuário e por grupo | Disponível | Consulte [Limites de gastos](/docs/pt/claude-apps-gateway-spend-limits) |

455| Busca na web no lado do servidor | Não disponível | A CLI não pode ver qual provedor upstream o gateway roteia, então não pode verificar o suporte de busca na web e desabilita WebSearch em sessões de gateway |458| Busca na web no lado do servidor | Não disponível | A CLI não pode ver qual provedor upstream o gateway roteia, então não pode verificar o suporte de busca na web e desabilita WebSearch em sessões de gateway |

456| [Remote Control](/docs/pt/remote-control) | Não disponível | A CLI mostra [um erro nomeando o gateway](/docs/pt/errors#remote-control-requires-the-anthropic-api) |459| [Remote Control](/docs/pt/remote-control) | Não disponível | A CLI mostra [um erro nomeando o gateway](/docs/pt/errors#remote-control-requires-the-anthropic-api) |

457| Cache de prompt padrão | Disponível | O gateway encaminha pontos de interrupção `cache_control` para cada upstream, e a CLI marca o [contexto do sistema que ela anexa no meio da conversa](/docs/pt/prompt-caching#where-the-cache-lives) para cache em sessões de gateway, como faz em todos os outros provedores e conexões. |460| [`/design-sync`](/docs/pt/commands#all-commands) e `/design-login` | Não disponível | Ambos precisam de claude.ai, que a CLI não contatará em sessões de gateway, então nenhum comando aparece lá |

461| Recursos que precisam de busca de sinalizador de recurso, como `/import` e `claude import` | Não disponível | A CLI pula a busca de sinalizador em sessões de gateway. [Recursos que precisam de busca de sinalizador de recurso](/docs/pt/env-vars#features-that-need-feature-flag-fetching) lista o que isso desativa |

462| Cache de prompt padrão | Disponível | O gateway encaminha pontos de interrupção `cache_control` para cada upstream. [Onde o cache reside](/docs/pt/prompt-caching#where-the-cache-lives) cobre quais blocos a CLI marca, incluindo o contexto do sistema que ela anexa no meio da conversa |

458| TTL de cache de 1 hora | Não disponível | A CLI omite a beta de ttl de cache estendido em sessões de gateway, porque nem todo upstream que o gateway pode rotear suporta o TTL de 1 hora, então o cache de prompt através do gateway usa o TTL de 5 minutos; consulte a nota de cabeçalho beta acima |463| TTL de cache de 1 hora | Não disponível | A CLI omite a beta de ttl de cache estendido em sessões de gateway, porque nem todo upstream que o gateway pode rotear suporta o TTL de 1 hora, então o cache de prompt através do gateway usa o TTL de 5 minutos; consulte a nota de cabeçalho beta acima |

459| Modo automático | Disponível | Segue as [regras do provedor de terceiros](/docs/pt/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry): apenas os modelos elegíveis em provedores de terceiros podem usá-lo. Antes da v2.1.207, o modo automático em sessões de gateway exigia a definição de `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, entregável através do bloco `env` da política gerenciada |464| Modo automático | Disponível | Segue as [regras do provedor de terceiros](/docs/pt/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry): apenas os modelos elegíveis em provedores de terceiros podem usá-lo. Antes da v2.1.207, o modo automático em sessões de gateway exigia a definição de `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, entregável através do bloco `env` da política gerenciada |

460| Otimizações apenas de primeira parte, como escopo de cache global e ferramentas eficientes em tokens | Não disponível | A CLI não as habilita em sessões de gateway; consulte a nota de cabeçalho beta acima |465| Otimizações apenas de primeira parte, como escopo de cache global e ferramentas eficientes em tokens | Não disponível | A CLI não as habilita em sessões de gateway; consulte a nota de cabeçalho beta acima |

Details

32 32 

33* [`admin`](#admin): autenticação da API de administração e retenção para limites de gastos33* [`admin`](#admin): autenticação da API de administração e retenção para limites de gastos

34* [`enforcement`](#enforcement): comportamento de falha aberta ou fechada do limite de gastos34* [`enforcement`](#enforcement): comportamento de falha aberta ou fechada do limite de gastos

35* [`pricing`](#pricing): taxas contratadas e um multiplicador de desconto para o medidor de gastos35* [`pricing`](#pricing): taxas contratadas e um multiplicador de desconto para o medidor de gastos e para os valores de custo que os desenvolvedores veem

36* [`models`](#models) e `auto_include_builtin_models`: lista de modelos curada pelo administrador e IDs por upstream36* [`models`](#models) e `auto_include_builtin_models`: lista de modelos curada pelo administrador e IDs por upstream

37* [`managed`](#managed): políticas de configurações gerenciadas por grupo IdP37* [`managed`](#managed): políticas de configurações gerenciadas por grupo IdP

38* [`telemetry`](#telemetry): encaminhamento OTLP para sua pilha de observabilidade38* [`telemetry`](#telemetry): encaminhamento OTLP para sua pilha de observabilidade


136 `upstreams`136 `upstreams`

137</h3>137</h3>

138 138 

139`upstreams` é uma lista ordenada. O gateway encaminha inferência para o primeiro upstream que resolve o modelo solicitado. Em `5xx`, `429`, `401`, `403`, `404` ou timeout, ele falha para o próximo; outro `4xx` não, porque esses erros são atribuíveis à solicitação em vez do upstream. Um `401` ou `403` significa que a credencial do próprio gateway falhou contra esse upstream, e um `404` significa que esse upstream não serve o modelo solicitado, portanto um upstream posterior na lista ainda pode.139`upstreams` é uma lista ordenada. O gateway encaminha inferência para o primeiro upstream que resolve o modelo solicitado.

140 

141Em `5xx`, `429`, `401`, `403`, `404` ou timeout, o gateway falha para o próximo upstream; outro `4xx` não, porque esses erros são atribuíveis à solicitação em vez do upstream. Um `401` ou `403` significa que a credencial do próprio gateway falhou contra esse upstream. Um `404` significa que esse upstream não serve o modelo solicitado, portanto um upstream posterior na lista ainda pode.

142 

143Se você definir `forward_user_identity: true` em um upstream, um `429` que ele retorna para uma solicitação que carregava o email do desenvolvedor não falha. Consulte [como uma negação de limite por usuário chega ao desenvolvedor](#per-user-identity-headers-for-a-proxy-you-run).

140 144 

141Failover em `404` requer gateway v2.1.198 ou posterior. Versões anteriores retornavam o primeiro `404` ao cliente mesmo quando um upstream posterior na lista servia o modelo.145Failover em `404` requer gateway v2.1.198 ou posterior. Versões anteriores retornavam o primeiro `404` ao cliente mesmo quando um upstream posterior na lista servia o modelo.

142 146 


228 232 

229Quando o token do IdP não carrega email, o gateway envia apenas `x-claude-gateway-user-id` e omite os dois cabeçalhos de email. Se seu IdP coloca o email em uma declaração diferente, defina [`oidc.email_claim`](#oidc) para essa declaração.233Quando o token do IdP não carrega email, o gateway envia apenas `x-claude-gateway-user-id` e omite os dois cabeçalhos de email. Se seu IdP coloca o email em uma declaração diferente, defina [`oidc.email_claim`](#oidc) para essa declaração.

230 234 

235Quando seu proxy responde `429` para uma solicitação que carregava o email do desenvolvedor, o gateway retorna essa resposta ao desenvolvedor como está em vez de falhar para o próximo upstream, portanto seu orçamento por usuário ou limite de taxa do proxy se mantém. As outras respostas do proxy seguem as [regras de failover](#upstreams) ordinárias. Se o token do IdP de um desenvolvedor não carrega email, o gateway encaminha suas solicitações sem os cabeçalhos de email, portanto um `429` para uma dessas solicitações conta como capacidade de upstream e falha. Antes da v2.1.267 no servidor gateway, cada `429` falhava.

236 

231Defina `forward_user_identity` apenas em um upstream cujo `base_url` é um proxy que você opera. O gateway envia emails de desenvolvedor para qualquer servidor que esse `base_url` nomeia. Se o `base_url` for a API Anthropic, que é o padrão, o gateway se recusa a iniciar.237Defina `forward_user_identity` apenas em um upstream cujo `base_url` é um proxy que você opera. O gateway envia emails de desenvolvedor para qualquer servidor que esse `base_url` nomeia. Se o `base_url` for a API Anthropic, que é o padrão, o gateway se recusa a iniciar.

232 238 

233<h4 id="amazon-bedrock">239<h4 id="amazon-bedrock">


367 373 

368O gateway tenta upstreams em ordem. `5xx`, `429`, `401`, `403`, `404`, timeouts e endpoint ausente (`501`) falham; outro `4xx` não.374O gateway tenta upstreams em ordem. `5xx`, `429`, `401`, `403`, `404`, timeouts e endpoint ausente (`501`) falham; outro `4xx` não.

369 375 

370`429` é capacidade por upstream, portanto esgotamento de throughput provisionado (PT) falha para sob demanda. `404` é disponibilidade de modelo por upstream, portanto um upstream que não habilitou um modelo não bloqueia um upstream posterior que o serve. Um upstream que não pode resolver o modelo solicitado é pulado sem uma viagem de rede.376`429` é capacidade por upstream, portanto esgotamento de throughput provisionado (PT) falha para sob demanda. Se você definir [`forward_user_identity: true`](#per-user-identity-headers-for-a-proxy-you-run) em um upstream, um `429` para uma solicitação que carregava o email do desenvolvedor é uma negação por usuário em vez disso e não falha.

377 

378`404` é disponibilidade de modelo por upstream, portanto um upstream que não habilitou um modelo não bloqueia um upstream posterior que o serve. Um upstream que não pode resolver o modelo solicitado é pulado sem uma viagem de rede.

371 379 

372Este exemplo roteia uma alocação de throughput provisionado Bedrock primeiro, transborda para sob demanda e uma segunda conta, e volta para a API Anthropic por último:380Este exemplo roteia uma alocação de throughput provisionado Bedrock primeiro, transborda para sob demanda e uma segunda conta, e volta para a API Anthropic por último:

373 381 


473O bloco `pricing` diz ao medidor de gastos o que cobrar em vez do preço de lista em USD, portanto os limites e [`/effective`](/docs/pt/claude-apps-gateway-spend-limits#%2Feffective) refletem suas taxas contratadas. Os valores permanecem em USD e permanecem uma estimativa, não uma fatura. Dois pré-requisitos:481O bloco `pricing` diz ao medidor de gastos o que cobrar em vez do preço de lista em USD, portanto os limites e [`/effective`](/docs/pt/claude-apps-gateway-spend-limits#%2Feffective) refletem suas taxas contratadas. Os valores permanecem em USD e permanecem uma estimativa, não uma fatura. Dois pré-requisitos:

474 482 

475* Claude Code v2.1.227 ou posterior no servidor do gateway. Versões anteriores rejeitam a chave desconhecida na inicialização.483* Claude Code v2.1.227 ou posterior no servidor do gateway. Versões anteriores rejeitam a chave desconhecida na inicialização.

476* Um bloco [`admin:`](#admin), porque apenas o medidor de gastos lê `pricing`. O gateway recusa iniciar com `pricing` definido e sem `admin`.484* Um bloco [`admin:`](#admin) ou, em v2.1.268 ou posterior, um bloco [`managed:`](#managed) com pelo menos uma política. O gateway recusa iniciar com `pricing` definido e nenhum bloco, porque nada o leria.

477 485 

478```yaml theme={null}486```yaml theme={null}

479pricing:487pricing:


488```496```

489 497 

490| Campo | Obrigatório | Descrição |498| Campo | Obrigatório | Descrição |

491| ------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |499| ------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

492| `multiplier` | Não | Padrão `1`. O medidor multiplica cada valor medido por isso, seja com preço de lista ou substituído, portanto `0.85` cobra 85% do preço. Deve ser maior que 0 e no máximo 1. |500| `multiplier` | Não | Padrão `1`. O medidor multiplica cada valor medido por isso, seja com preço de lista ou substituído, portanto `0.85` cobra 85% do preço. Deve ser maior que 0 e no máximo 1. |

493| `overrides` | Não | Linhas de `{upstream, model, input, output, cache_read, cache_write}` em USD por milhão de tokens. Todas as quatro taxas são obrigatórias e devem ser positivas. |501| `overrides` | Não | Linhas de `{upstream, model, input, output, cache_read, cache_write}` em USD por milhão de tokens. Todas as quatro taxas são obrigatórias. Cada uma deve ser maior que 0 e no máximo 10000. |

494 502 

495Como o medidor corresponde a uma linha de substituição:503Como o medidor corresponde a uma linha de substituição:

496 504 


502 510 

503Para taxas por região, dê a cada região seu próprio upstream nomeado e uma linha por upstream.511Para taxas por região, dê a cada região seu próprio upstream nomeado e uma linha por upstream.

504 512 

513<h4 id="send-the-rates-to-signed-in-clients">

514 Enviar as taxas para clientes conectados

515</h4>

516 

517Com v2.1.268 ou posterior no servidor do gateway, o gateway também coloca as taxas de `pricing` nas políticas [`managed`](#managed) que serve, como a configuração gerenciada [`modelPricing`](/docs/pt/settings-reference#modelpricing). Desenvolvedores correspondidos por uma política então veem as taxas de `pricing` para o primeiro upstream que serve cada ID de modelo em `/usage`, a linha de status e OpenTelemetry. Um desenvolvedor que não corresponde a nenhuma política recebe nenhuma configuração gerenciada, portanto suas figuras permanecem no preço de lista. Clientes aplicam a configuração em Claude Code v2.1.242 ou posterior.

518 

519* O que o gateway adiciona: a menos que o bloco `cli` de uma política já defina `modelPricing`, o gateway adiciona o `multiplier` e, para cada ID de modelo que um cliente pode solicitar, a linha de substituição do primeiro upstream que serve esse ID. Uma taxa que apenas um upstream de failover cobra permanece no gateway.

520* Optar uma política para fora: defina `modelPricing` para `{}` no bloco `cli` dessa política, e seus desenvolvedores permanecem no preço de lista.

521* Manter as próprias taxas de uma política: uma política cujo bloco `cli` define `modelPricing` com seu próprio `multiplier` ou `overrides` mantém esse `modelPricing` inteiro, e o gateway não adiciona nenhuma taxa de sua própria a ele.

522 

505<h3 id="models">523<h3 id="models">

506 `models`524 `models`

507</h3>525</h3>


696* A lista de modelos, de `availableModels`714* A lista de modelos, de `availableModels`

697* Ferramentas desabilitadas, de entradas `permissions.deny` de nome de ferramenta simples. Se você definir `disabledBuiltinTools` no bloco `desktop` da política, o gateway serve a união de seu valor e a lista derivada, portanto você pode desabilitar mais ferramentas dessa forma mas não pode reabilitar uma que você desabilitou através de `permissions.deny`715* Ferramentas desabilitadas, de entradas `permissions.deny` de nome de ferramenta simples. Se você definir `disabledBuiltinTools` no bloco `desktop` da política, o gateway serve a união de seu valor e a lista derivada, portanto você pode desabilitar mais ferramentas dessa forma mas não pode reabilitar uma que você desabilitou através de `permissions.deny`

698* A lista de permissão de saída, de `sandbox.network.allowedDomains`. Se você definir `coworkEgressAllowedHosts` no bloco `desktop` da política, o gateway usa esse valor em vez da lista derivada716* A lista de permissão de saída, de `sandbox.network.allowedDomains`. Se você definir `coworkEgressAllowedHosts` no bloco `desktop` da política, o gateway usa esse valor em vez da lista derivada

699* Um endpoint OTLP que aponta para o gateway em si, que distribui para seus destinos, incluído quando a retransmissão de [`telemetry`](#telemetry) é configurada.717* Um endpoint OTLP que aponta para o gateway em si, e os atributos de identidade do usuário conectado. O gateway retransmite as exportações que recebe nesse endpoint para seus destinos `forward_to`. Ele inclui o endpoint e os atributos quando você define tanto [`telemetry.forward_to`](#telemetry) quanto `listen.public_url`.

700 718 

701 Claude Desktop exporta cada sinal com uma codificação: `http/protobuf`, ou `http/json` quando você define `OTEL_EXPORTER_OTLP_PROTOCOL` ou uma de suas variantes por sinal para `http/json` no `env` da política. Antes de Claude Code v2.1.261 no servidor do gateway, a resposta definiu `http/json` independentemente, portanto um coletor que aceita apenas protobuf rejeitou as exportações do Claude Desktop719 Claude Desktop exporta cada sinal com uma codificação: `http/protobuf`, ou `http/json` quando você define `OTEL_EXPORTER_OTLP_PROTOCOL` ou uma de suas variantes por sinal para `http/json` no `env` da política. Antes de Claude Code v2.1.261 no servidor do gateway, a resposta definiu `http/json` independentemente, portanto um coletor que aceita apenas protobuf rejeitou as exportações do Claude Desktop

702 720 


754 `telemetry`772 `telemetry`

755</h3>773</h3>

756 774 

757O CLI envia métricas, logs e, quando habilitado, rastreamentos do OpenTelemetry Protocol (OTLP) sobre HTTP para o gateway, que os retransmite literalmente para cada destino configurado. Consulte [Monitoramento de uso](/docs/pt/monitoring-usage) para as métricas e eventos que o CLI emite.775O CLI envia métricas, logs e, quando habilitado, rastreamentos para o gateway, que os retransmite literalmente para cada destino configurado. As exportações usam OpenTelemetry Protocol (OTLP) sobre HTTP. Para pular a retransmissão e ter sessões exportarem diretamente para seu coletor, [nomeie o coletor em uma política](#export-directly-to-your-collector). Consulte [Monitoramento de uso](/docs/pt/monitoring-usage) para as métricas e eventos que o CLI emite.

758 776 

759O CLI carimba cada exportação com a identidade do usuário autenticado, lida do JWT emitido pelo gateway: os atributos `user.id`, `user.email` e `user.groups`. A atribuição de custo e uso por desenvolvedor portanto funciona sem nenhuma configuração do lado do desenvolvedor.777O CLI carimba cada exportação com a identidade do usuário autenticado, lida do JWT emitido pelo gateway: os atributos `user.id`, `user.email` e `user.groups`. A atribuição de custo e uso por desenvolvedor portanto funciona sem nenhuma configuração do lado do desenvolvedor.

760 778 

779[Claude Desktop](#claude-desktop-overlay) e sessões Cowork conectadas através do gateway carimbam sua telemetria com `user.email` e `user.groups` ao lado de `enduser.id`, portanto você pode cobrir uso de terminal, Desktop e Cowork com uma consulta em `user.email` ou `user.groups`. `user.groups` é a lista de grupos IdP separada por vírgula.

780 

781Como todos os dados OpenTelemetry do Claude Code, esses atributos vão apenas para destinos que sua organização configura, nunca para Anthropic.

782 

783Se a lista de grupos de um usuário for maior que 255 caracteres uma vez codificada em percentual, ou um nome de grupo contiver uma vírgula ou sinal de igual, o gateway deixa `user.groups` fora da telemetria Desktop e Cowork desse usuário em vez de truncá-la. As sessões de terminal desse usuário ainda carregam a lista completa.

784 

785Você precisa de Claude Code v2.1.265 ou posterior no servidor do gateway para `user.email` e `user.groups` na telemetria Desktop e Cowork, e Claude Desktop 1.24012 ou posterior em cada máquina do desenvolvedor para `user.groups`.

786 

761```yaml theme={null}787```yaml theme={null}

762telemetry:788telemetry:

763 forward_to:789 forward_to:


789 815 

790Para um coletor em cluster, exponha-o sobre HTTPS em seu próprio endereço interno, ou execute-o como um sidecar com a variável definida.816Para um coletor em cluster, exponha-o sobre HTTPS em seu próprio endereço interno, ou execute-o como um sidecar com a variável definida.

791 817 

792A telemetria está desativada no CLI por padrão. Configurar `telemetry.forward_to` junto com `listen.public_url` a ativa. O gateway empurra seis variáveis env para cada cliente conectado através de `/managed/settings`:818A telemetria está desativada no CLI por padrão. Quando você define tanto `telemetry.forward_to` quanto `listen.public_url`, o gateway a ativa para clientes conectados empurrando seis variáveis de ambiente através de `/managed/settings`:

793 819 

794* `CLAUDE_CODE_ENABLE_TELEMETRY=1`820* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

795* `OTEL_METRICS_EXPORTER=otlp`821* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER` e `OTEL_TRACES_EXPORTER`, cada um definido para `otlp` se pelo menos um destino `forward_to` habilita esse sinal e para `none` caso contrário

796* `OTEL_LOGS_EXPORTER=otlp`

797* `OTEL_TRACES_EXPORTER=otlp`

798* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`822* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`

799* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`823* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`

800 824 

801O endpoint empurrado é construído a partir da URL pública, portanto métricas e logs não precisam de nenhuma configuração OTEL de desenvolvedores ou políticas. A configuração empurrada é aplicada na camada gerenciada, substituindo variáveis `OTEL_*` que um desenvolvedor define localmente. Independentemente de o gateway empurrar essas variáveis, um CLI assinado através de `/login` que tem exportação OTLP/HTTP habilitada envia suas exportações para o gateway em vez de para um endpoint configurado localmente, e sem um destino `forward_to` para um sinal o gateway aceita e descarta; se você já coleta telemetria do Claude Code diretamente, adicione seu coletor como um destino `forward_to`.825Antes de Claude Code v2.1.265 no servidor do gateway, o gateway empurrava todos os três seletores de exportador como `otlp`, incluindo para sinais que nenhum destino optou.

826 

827O endpoint empurrado é construído a partir da URL pública, portanto métricas e logs não precisam de nenhuma configuração OTEL de desenvolvedores ou políticas.

828 

829Desenvolvedores conectados através de `/login` não podem redirecionar exportações com sua própria configuração OTEL:

830 

831* **Variáveis definidas localmente**: Claude Code aplica as variáveis empurradas na camada gerenciada, portanto cada uma substitui o valor que um desenvolvedor define para ela localmente.

832* **Endpoints configurados localmente**: com exportação OTLP/HTTP habilitada, o CLI ignora qualquer endpoint configurado localmente, independentemente de o gateway ter empurrado as variáveis de telemetria. Suas exportações vão para o gateway a menos que uma política [nomeie seu coletor como o endpoint](#export-directly-to-your-collector).

833 

834Sem um destino `forward_to` para um sinal, o gateway aceita e descarta. Se desenvolvedores já exportam telemetria do Claude Code para um de seus coletores, adicione-o como um destino `forward_to`, com logs ou rastreamentos habilitados se exportarem aqueles, portanto continua recebendo seus dados depois que eles se conectam. Para pular a retransmissão em vez disso, [nomeie o coletor em uma política](#export-directly-to-your-collector).

835 

836[Rastreamentos](/docs/pt/monitoring-usage#traces-beta) também requerem `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` em cada cliente. Defina-o no bloco `env` de uma política gerenciada, já que o gateway não o empurra. Desenvolvedores o aprovam no mesmo [diálogo de aprovação de segurança](#managed) que o endpoint empurrado já dispara.

802 837 

803[Rastreamentos](/docs/pt/monitoring-usage#traces-beta) adicionalmente requerem `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` em cada cliente. O gateway não empurra essa variável, portanto defina-a através do bloco `env` de uma política gerenciada. Não está entre as variáveis que Claude Code aplica sem aprovação do desenvolvedor, portanto entregá-la através de uma política é coberta pelo mesmo [diálogo de aprovação de segurança](#managed) que o endpoint OTLP empurrado já dispara.838Defina-o para `1` apenas nas políticas cujos grupos você quer rastreados. Uma política que não o define herda o valor de sua política `match: {}` catch-all se essa política define um, por [regras de mesclagem](#managed). Para manter os clientes de um grupo de enviar rastreamentos mesmo quando um desenvolvedor define a variável localmente, defina-a para `0` na política desse grupo.

804 839 

805Ambas as codificações OTLP protobuf e JSON são retransmitidas, e qualquer backend compatível com OpenTelemetry funciona como destino.840Ambas as codificações OTLP protobuf e JSON são retransmitidas, e qualquer backend compatível com OpenTelemetry funciona como destino.

806 841 

842<h4 id="export-directly-to-your-collector">

843 Exportar diretamente para seu coletor

844</h4>

845 

846Para ter sessões conectadas através de `/login` enviar telemetria diretamente para seu coletor em vez de através da retransmissão, defina `OTEL_EXPORTER_OTLP_ENDPOINT` para a URL base `https://` do coletor no bloco `env` de uma [política gerenciada](#managed). Claude Code anexa `/v1/metrics`, `/v1/logs` ou `/v1/traces` à URL que você define, como `https://otel-collector.example.com:4318`, e exporta cada sinal lá sobre OTLP/HTTP. Requer Claude Code v2.1.265 ou posterior em cada máquina do desenvolvedor. Clientes anteriores exportam através da retransmissão.

847 

848Para autenticar para o coletor, defina `OTEL_EXPORTER_OTLP_HEADERS` no mesmo bloco `env`. Sessões nunca enviam o token de sessão do gateway do desenvolvedor para um coletor nomeado dessa forma.

849 

850Quando você adiciona ou muda esse endpoint em uma política, Claude Code pede a cada desenvolvedor para aprová-lo no [diálogo de aprovação de segurança](#managed) antes de aplicá-lo em uma sessão interativa.

851 

852Claude Code verifica o endpoint antes de exportar um sinal diretamente, e mantém esse sinal na retransmissão quando uma verificação falha. As verificações incluem:

853 

854* O endpoint vem do próprio gateway. Se você definir a mesma variável em um perfil MDM ou um `managed-settings.json` local, exportações permanecem na retransmissão.

855* A URL usa `https://`, ou `http://` para um endereço de loopback

856* A URL resolve para um caminho terminando em `/v1/<signal>`, sem consulta ou fragmento. Claude Code constrói esse caminho em si a partir da variável genérica. Ele usa uma variável por sinal como `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` conforme escrito, portanto inclua o caminho completo lá.

857* A URL não é o próprio host do gateway. Um endpoint endereçado ao gateway mantém o caminho de retransmissão e seu token de sessão.

858* Nem você nem o desenvolvedor configurou [`otelHeadersHelper`](/docs/pt/settings-reference#otelheadershelper) em nenhuma fonte de configurações. Com um helper configurado, cada sinal permanece na retransmissão.

859 

860O endpoint que você nomeia muda apenas para onde as exportações vão. Você ainda escolhe quais sinais exportam em tudo com os seletores `OTEL_*_EXPORTER`.

861 

862O endpoint sozinho não ativa exportação, portanto também defina as variáveis que fazem, a menos que o gateway já as empurre:

863 

864* Se o gateway já [empurra as variáveis de telemetria](#telemetry), elas cobrem habilitação, seletores e protocolo, e seu endpoint explícito substitui o valor `<public_url>` empurrado. Defina um seletor `OTEL_*_EXPORTER` para `otlp` você mesmo apenas para um sinal que nenhum destino `forward_to` habilita.

865* Se não, também defina `CLAUDE_CODE_ENABLE_TELEMETRY=1`, os seletores `OTEL_*_EXPORTER` e `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.

866 

867Quando o desenvolvedor se desconecta, ou se conecta a um gateway diferente, exportações para o coletor param e Claude Code descarta cada lote restante em vez de enviá-lo.

868 

869<h4 id="when-a-destination-fails">

870 Quando um destino falha

871</h4>

872 

873O gateway não armazena em buffer, tenta novamente ou armazena telemetria, portanto descarta uma exportação que não atinge um destino em vez de entregá-la tarde. Cada destino sucede ou falha por conta própria, e o cliente exportador recebe uma resposta de sucesso de qualquer forma, portanto uma entrega falhada aparece apenas no log do gateway.

874 

875Após cinco falhas consecutivas de entrega para um destino, o gateway pausa o encaminhamento para ele em trechos de 30 segundos, registrando cada pausa, até que uma entrega suceda. Qualquer resposta de erro, timeout ou erro de conexão conta como uma entrega falhada, exceto `400`, `413`, `415`, `422` e `431`, que significam que o coletor recusou a carga dessa exportação como malformada ou muito grande.

876 

877Uma carga recusada nem avança nem reseta a contagem de falhas: o gateway continua encaminhando para o destino e registra um aviso nomeando-o e o status, na primeira recusa do destino e a cada centésima depois.

878 

807<h3 id="http-tuning">879<h3 id="http-tuning">

808 Ajuste HTTP880 Ajuste HTTP

809</h3>881</h3>


891# fail_closed_on_error: false963# fail_closed_on_error: false

892 964 

893# Medir em taxas contratadas em vez de preço de lista USD. Requer admin:.965# Medir em taxas contratadas em vez de preço de lista USD. Requer admin:.

966# Com managed:, as mesmas taxas também vão para clientes conectados.

894# As taxas abaixo são espaços reservados, não preços de contrato reais.967# As taxas abaixo são espaços reservados, não preços de contrato reais.

895# pricing:968# pricing:

896# multiplier: 0.85969# multiplier: 0.85


984 1057 

985`parentSettingsBehavior: "merge"` mantém a entrega da lista de permissões de saída do Claude Desktop para suas sessões incorporadas do Claude Code funcionando; [Entregar política para sessões do Claude Desktop](/docs/pt/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) explica o mecanismo e onde a aceitação deve estar.1058`parentSettingsBehavior: "merge"` mantém a entrega da lista de permissões de saída do Claude Desktop para suas sessões incorporadas do Claude Code funcionando; [Entregar política para sessões do Claude Desktop](/docs/pt/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) explica o mecanismo e onde a aceitação deve estar.

986 1059 

987Implante o arquivo `managed-settings.json` em cada dispositivo, tipicamente via sua plataforma MDM. O caminho do arquivo difere por plataforma:1060Implante o arquivo `managed-settings.json` em cada dispositivo, tipicamente via sua plataforma MDM. O caminho do arquivo difere por plataforma. Veja [onde cada mecanismo armazena a política](/docs/pt/managed-settings#where-each-mechanism-stores-the-policy).

988 

989| Plataforma | Caminho |

990| ----------- | ------------------------------------------------------------------------------------------------------------------------------------ |

991| macOS | `/Library/Application Support/ClaudeCode/managed-settings.json`, ou o domínio de preferências gerenciadas `com.anthropic.claudecode` |

992| Linux e WSL | `/etc/claude-code/managed-settings.json` |

993| Windows | `C:\Program Files\ClaudeCode\managed-settings.json`, ou Group Policy via registro HKLM |

994 1061 

995Por padrão, uma política de registro no Windows ou um plist de preferências gerenciadas no macOS substitui o arquivo `managed-settings.json` em vez de mesclar com ele, exceto pelas [chaves de exceção e verificações entre fontes acima](#precedence-with-other-managed-sources). Todas as três chaves neste trecho seguem a regra de fonte de prioridade mais alta, portanto frotas que entregam política através de Group Policy ou perfis de configuração devem colocar todas as três nesse mecanismo em vez disso.1062Por padrão, uma política de registro no Windows ou um plist de preferências gerenciadas no macOS substitui o arquivo `managed-settings.json` em vez de mesclar com ele, exceto pelas [chaves de exceção e verificações entre fontes acima](#precedence-with-other-managed-sources). Todas as três chaves neste trecho seguem a regra de fonte de prioridade mais alta, portanto frotas que entregam política através de Group Policy ou perfis de configuração devem colocar todas as três nesse mecanismo em vez disso.

996 1063 

Details

62 62 

63Cada topologia de produção aqui coloca um proxy L7, como um Ingress, o front-end do Cloud Run ou um ALB, na frente de réplicas HTTP simples. Defina [`listen.trusted_proxies`](/docs/pt/claude-apps-gateway-config#listen) para os intervalos de origem do proxy para que o gateway leia IPs de cliente de `X-Forwarded-For`. O gateway honra o cabeçalho apenas quando o par TCP é confiável. Os exemplos trabalhados do [Google Cloud](/docs/pt/claude-apps-gateway-on-gcp) e [AWS](/docs/pt/claude-apps-gateway-on-aws) têm valores concretos por topologia. Sem proxies confiáveis, cada solicitação parece vir do IP do proxy, o que colapsa limites de taxa por IP em um balde compartilhado e registra o IP do proxy em eventos de auditoria.63Cada topologia de produção aqui coloca um proxy L7, como um Ingress, o front-end do Cloud Run ou um ALB, na frente de réplicas HTTP simples. Defina [`listen.trusted_proxies`](/docs/pt/claude-apps-gateway-config#listen) para os intervalos de origem do proxy para que o gateway leia IPs de cliente de `X-Forwarded-For`. O gateway honra o cabeçalho apenas quando o par TCP é confiável. Os exemplos trabalhados do [Google Cloud](/docs/pt/claude-apps-gateway-on-gcp) e [AWS](/docs/pt/claude-apps-gateway-on-aws) têm valores concretos por topologia. Sem proxies confiáveis, cada solicitação parece vir do IP do proxy, o que colapsa limites de taxa por IP em um balde compartilhado e registra o IP do proxy em eventos de auditoria.

64 64 

65Não redirecione solicitações para os endpoints de autorização de dispositivo e token do gateway. Claude Code não segue redirecionamentos nessas solicitações, então uma regra de ingress que os redireciona, como uma reescrita HTTP-para-HTTPS ou canonicalização de host, quebra o sign-in e a atualização de token.65Não redirecione solicitações para os endpoints de autorização de dispositivo e token do gateway, por exemplo com uma reescrita HTTP-para-HTTPS ou canonicalização de host no ingress. Claude Code não segue redirecionamentos nessas solicitações, então uma regra de ingress que os redireciona quebra o sign-in e a atualização de token.

66 66 

67Dê ao proxy qualquer tempo limite de inatividade mais longo que o intervalo de keepalive do gateway, que depende do upstream:67Dê ao proxy qualquer tempo limite de inatividade mais longo que o intervalo de keepalive do gateway, que depende do upstream:

68 68 


120 Envie a URL do gateway para máquinas de desenvolvedores120 Envie a URL do gateway para máquinas de desenvolvedores

121</h3>121</h3>

122 122 

123Assim que o gateway estiver servindo, envie `forceLoginMethod`, `forceLoginGatewayUrl` e `parentSettingsBehavior: "merge"` para a máquina de cada desenvolvedor através de configurações gerenciadas, via MDM ou escrevendo o `managed-settings.json` por SO diretamente. Sem isso, `/login` mostra o seletor de conta padrão sem opção de gateway. Consulte [Configurações gerenciadas do lado do cliente](/docs/pt/claude-apps-gateway-config#client-side-managed-settings) para os caminhos de arquivo e o equivalente `bootstrapUrl` do Claude Desktop.123Assim que o gateway estiver servindo, envie `forceLoginMethod`, `forceLoginGatewayUrl` e `parentSettingsBehavior: "merge"` para a máquina de cada desenvolvedor através de configurações gerenciadas, via MDM ou escrevendo o `managed-settings.json` por SO diretamente. Sem isso, `/login` mostra o seletor de conta padrão sem opção de gateway. Uma vez que você implanta as chaves, Claude Code para de usar uma chave de API restante ou login claude.ai na máquina, então planeje o envio junto com suas instruções de sign-in. [A política do administrador requer um sign-in de gateway Cloud](/docs/pt/errors#administrator-policy-requires-a-cloud-gateway-sign-in) descreve as mensagens que os desenvolvedores veem.

124 

125Consulte [onde cada mecanismo armazena a política](/docs/pt/managed-settings#where-each-mechanism-stores-the-policy) para os caminhos de arquivo, e [Configurações gerenciadas do lado do cliente](/docs/pt/claude-apps-gateway-config#client-side-managed-settings) para o equivalente `bootstrapUrl` do Claude Desktop.

124 126 

125<h2 id="operations">127<h2 id="operations">

126 Operações128 Operações


136 138 

137* **Eventos de auditoria**: JSON de linha única por evento relevante para segurança. Canalize stderr para seu agregador de logs. Os eventos emitidos incluem `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert` e `admin.limit.delete`. Os campos variam por evento:139* **Eventos de auditoria**: JSON de linha única por evento relevante para segurança. Canalize stderr para seu agregador de logs. Os eventos emitidos incluem `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert` e `admin.limit.delete`. Os campos variam por evento:

138 * Eventos de mint e refresh bem-sucedidos carregam `sub`, `email`, `client_ip` e o resultado140 * Eventos de mint e refresh bem-sucedidos carregam `sub`, `email`, `client_ip` e o resultado

139 * `auth.denied` e `access.denied` carregam o motivo e IP do cliente, mais o caminho da solicitação para `auth.denied`, já que nenhuma identidade de usuário existe nessas negações141 * `auth.denied` e `access.denied` carregam o motivo e IP do cliente, mais o caminho da solicitação para `auth.denied`, já que nenhuma identidade de usuário existe nessas negações. Dois motivos de `access.denied` mudam o que o evento carrega:

142 * `xff_unparseable`: o evento também carrega a entrada `X-Forwarded-For` que não pôde ser lida

143 * `client_ip_unknown`: o evento não carrega IP do cliente, porque a conexão não tinha endereço de peer enquanto uma lista de `access_control` estava definida

140 * `inference` registra qual upstream serviu a solicitação e o status da resposta144 * `inference` registra qual upstream serviu a solicitação e o status da resposta

141 * `desktop_bootstrap.denied` registra uma busca de bootstrap do Claude Desktop rejeitada com o motivo (`not_configured`, `policy_not_opted_in` ou `no_policy_matched`) e a identidade do usuário145 * `desktop_bootstrap.denied` registra uma busca de bootstrap do Claude Desktop rejeitada com o motivo (`not_configured`, `policy_not_opted_in` ou `no_policy_matched`) e a identidade do usuário

142 * `admin.denied` registra uma tentativa de autenticação de API de administrador rejeitada com o IP do cliente, método, caminho e um motivo, sem o material de chave apresentado: `invalid_key` quando um `x-api-key` foi apresentado mas não correspondeu a nenhuma chave configurada, `bearer_rejected` quando apenas um cabeçalho `Authorization` foi apresentado e não verificou como uma sessão de gateway em `admin.admin_groups`, ou `no_credentials` quando nenhum cabeçalho foi apresentado146 * `admin.denied` registra uma tentativa de autenticação de API de administrador rejeitada com o IP do cliente, método, caminho e um motivo, sem o material de chave apresentado: `invalid_key` quando um `x-api-key` foi apresentado mas não correspondeu a nenhuma chave configurada, `bearer_rejected` quando apenas um cabeçalho `Authorization` foi apresentado e não verificou como uma sessão de gateway em `admin.admin_groups`, ou `no_credentials` quando nenhum cabeçalho foi apresentado


274O stderr do gateway inclui o fluxo de eventos de auditoria, o log de auditoria registra identidades de desenvolvedores, e o arquivo de debug registra saída de hook e servidor MCP da máquina do desenvolvedor. Revise e remova essas informações antes de postar em uma issue pública.278O stderr do gateway inclui o fluxo de eventos de auditoria, o log de auditoria registra identidades de desenvolvedores, e o arquivo de debug registra saída de hook e servidor MCP da máquina do desenvolvedor. Revise e remova essas informações antes de postar em uma issue pública.

275 279 

276| Sintoma | Causa | Correção |280| Sintoma | Causa | Correção |

277| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |281| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

278| A `/login` de um desenvolvedor mostra o seletor de conta padrão em vez da tela **Cloud gateway** | `forceLoginMethod` ou `forceLoginGatewayUrl` não está definido em configurações gerenciadas nessa máquina | Implante o [arquivo de configurações gerenciadas](/docs/pt/claude-apps-gateway#set-the-gateway-url) no dispositivo; `/login` lê a URL do gateway de lá |282| A `/login` de um desenvolvedor mostra o seletor de conta padrão em vez da tela **Cloud gateway** | `forceLoginMethod` ou `forceLoginGatewayUrl` não está definido em configurações gerenciadas nessa máquina | Implante o [arquivo de configurações gerenciadas](/docs/pt/claude-apps-gateway#set-the-gateway-url) no dispositivo; `/login` lê a URL do gateway de lá |

283| As solicitações de um desenvolvedor falham com `Not signed in to the Cloud gateway — run /login.` | As configurações gerenciadas da máquina definem `forceLoginMethod: "gateway"` ou `forceLoginGatewayUrl`, e a sessão não tem entrada do gateway. Um login claude.ai restante não satisfaz o requisito. | Peça ao desenvolvedor para executar `/login` e completar a entrada do gateway. Consulte também [Política do administrador requer uma entrada do Cloud gateway](/docs/pt/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

279| Claude Desktop relata que sua configuração de bootstrap não pôde ser obtida | `/user/bootstrap` retornou 404: a política que corresponde ao usuário não carrega uma chave `desktop`, ou nenhuma política correspondeu. O log de auditoria do gateway registra cada rejeição como `desktop_bootstrap.denied` com o motivo. | Adicione um bloco `desktop` à política que corresponde ao usuário, ou à camada base `match: {}`; um `desktop: {}` vazio é suficiente. Consulte [Sobreposição do Claude Desktop](/docs/pt/claude-apps-gateway-config#claude-desktop-overlay). |284| Claude Desktop relata que sua configuração de bootstrap não pôde ser obtida | `/user/bootstrap` retornou 404: a política que corresponde ao usuário não carrega uma chave `desktop`, ou nenhuma política correspondeu. O log de auditoria do gateway registra cada rejeição como `desktop_bootstrap.denied` com o motivo. | Adicione um bloco `desktop` à política que corresponde ao usuário, ou à camada base `match: {}`; um `desktop: {}` vazio é suficiente. Consulte [Sobreposição do Claude Desktop](/docs/pt/claude-apps-gateway-config#claude-desktop-overlay). |

280| A inicialização mostra `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | A compilação do Claude Code instalada é anterior ao suporte do gateway | Peça ao desenvolvedor para atualizar o Claude Code para uma versão que inclua suporte do Cloud gateway |285| A inicialização mostra `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | A compilação do Claude Code instalada é anterior ao suporte do gateway | Peça ao desenvolvedor para atualizar o Claude Code para uma versão que inclua suporte do Cloud gateway |

286| A inicialização ou `/login` relata `Claude Code may not be enabled for your organization` após um 403 no carregamento de configurações gerenciadas | O gateway, ou algo na frente dele, respondeu à solicitação `/managed/settings` com 403. A rota de configurações próprias do gateway nunca responde 403. O status vem das verificações de IP do [`access_control`](/docs/pt/claude-apps-gateway-config#http-tuning) ou de um proxy ou WAF na frente do gateway. O log de auditoria registra uma negação de verificação de IP como `access.denied` com o motivo. O desenvolvedor permanece conectado. | Verifique o log de auditoria para `access.denied` no momento da falha e corrija as listas `access_control` ou o front end, então peça ao desenvolvedor para iniciar `claude` novamente |

281| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | O nome de host do gateway se resolve para pelo menos um endereço IP público. Claude Code verifica cada endereço resolvido e requer que cada um seja privado. Uma causa comum é um nome de pilha dupla onde uma família se resolve para um endereço público, incluindo balanceadores de carga de pilha dupla internos da AWS, que retornam endereços AAAA de intervalo público. | Faça o nome do gateway se resolver apenas para endereços privados em máquinas de desenvolvedores. Para um nome de pilha dupla, solte o registro de intervalo público ou sirva um nome DNS apenas interno separado. Consulte o [pré-requisito de rede privada](/docs/pt/claude-apps-gateway#prerequisites). |287| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | O nome de host do gateway se resolve para pelo menos um endereço IP público. Claude Code verifica cada endereço resolvido e requer que cada um seja privado. Uma causa comum é um nome de pilha dupla onde uma família se resolve para um endereço público, incluindo balanceadores de carga de pilha dupla internos da AWS, que retornam endereços AAAA de intervalo público. | Faça o nome do gateway se resolver apenas para endereços privados em máquinas de desenvolvedores. Para um nome de pilha dupla, solte o registro de intervalo público ou sirva um nome DNS apenas interno separado. Consulte o [pré-requisito de rede privada](/docs/pt/claude-apps-gateway#prerequisites). |

282| CLI `/login`: `Gateway login would go through proxy <proxy>, which is not on a private network` | Um `HTTPS_PROXY` ou `HTTP_PROXY` se aplica ao host do gateway e o nome de host do proxy se resolve para um endereço público. Um proxy cujo host se resolve apenas para endereços privados é permitido e não dispara esse erro | Adicione o host do gateway a `NO_PROXY` na máquina do desenvolvedor para que a conexão seja direta, ou use um proxy cujo nome de host se resolve para endereços privados. A mensagem nomeia a entrada exata de `NO_PROXY` a adicionar |288| CLI `/login`: `Gateway login would go through proxy <proxy>, which is not on a private network` | Um `HTTPS_PROXY` ou `HTTP_PROXY` se aplica ao host do gateway e o nome de host do proxy se resolve para um endereço público. Um proxy cujo host se resolve apenas para endereços privados é permitido e não dispara esse erro | Adicione o host do gateway a `NO_PROXY` na máquina do desenvolvedor para que a conexão seja direta, ou use um proxy cujo nome de host se resolve para endereços privados. A mensagem nomeia a entrada exata de `NO_PROXY` a adicionar |

283| CLI `/login`: `Could not resolve the configured HTTP proxy` | O nome de host em `HTTPS_PROXY` ou `HTTP_PROXY` não se resolve da máquina do desenvolvedor, normalmente porque não está conectado à rede corporativa | Peça ao desenvolvedor para se conectar à sua rede ou VPN e tente novamente, ou corrija a URL do proxy |289| CLI `/login`: `Could not resolve the configured HTTP proxy` | O nome de host em `HTTPS_PROXY` ou `HTTP_PROXY` não se resolve da máquina do desenvolvedor, normalmente porque não está conectado à rede corporativa | Peça ao desenvolvedor para se conectar à sua rede ou VPN e tente novamente, ou corrija a URL do proxy |


288| A inicialização sai com um erro de permissão do Postgres | A função de banco de dados carece de direitos DDL em seu esquema | Conceda à função `CREATE` no esquema do gateway para que ela possa criar e alterar suas tabelas na inicialização |294| A inicialização sai com um erro de permissão do Postgres | A função de banco de dados carece de direitos DDL em seu esquema | Conceda à função `CREATE` no esquema do gateway para que ela possa criar e alterar suas tabelas na inicialização |

289| `/oauth/callback` mostra "Sign-in could not be completed" | Domínio de email rejeitado, validação de id\_token falhou, ou `email_verified` é explicitamente `false`, que o gateway sempre rejeita sem substituição | Verifique `allowed_email_domains` e que o IdP retorna uma reivindicação `email` verificada. Para `email_verified: false`, corrija a verificação do lado do IdP. Se seu IdP emite email sob um nome de reivindicação diferente, defina `oidc.email_claim`. |295| `/oauth/callback` mostra "Sign-in could not be completed" | Domínio de email rejeitado, validação de id\_token falhou, ou `email_verified` é explicitamente `false`, que o gateway sempre rejeita sem substituição | Verifique `allowed_email_domains` e que o IdP retorna uma reivindicação `email` verificada. Para `email_verified: false`, corrija a verificação do lado do IdP. Se seu IdP emite email sob um nome de reivindicação diferente, defina `oidc.email_claim`. |

290| Log: `token exchange failed request_id=<id>: id_token missing email claim` | O IdP não está incluindo `email` no id\_token por padrão. Esta rejeição dispara apenas quando `allowed_email_domains` está definido; sem ele, um email ausente cunha uma sessão sem email | Configure o IdP para emitir `email` no id\_token. Okta: adicione `email` às reivindicações de token de ID de um servidor de autorização personalizado. Entra: adicione `email` como uma reivindicação opcional no registro do aplicativo. PingFederate: ative uma Política OpenID Connect que emite `email`. Se o IdP serve `email` do endpoint userinfo mas não o incluirá no id\_token, como o servidor de autorização da organização Okta, defina `oidc.userinfo_fallback: true`. |296| Log: `token exchange failed request_id=<id>: id_token missing email claim` | O IdP não está incluindo `email` no id\_token por padrão. Esta rejeição dispara apenas quando `allowed_email_domains` está definido; sem ele, um email ausente cunha uma sessão sem email | Configure o IdP para emitir `email` no id\_token. Okta: adicione `email` às reivindicações de token de ID de um servidor de autorização personalizado. Entra: adicione `email` como uma reivindicação opcional no registro do aplicativo. PingFederate: ative uma Política OpenID Connect que emite `email`. Se o IdP serve `email` do endpoint userinfo mas não o incluirá no id\_token, como o servidor de autorização da organização Okta, defina `oidc.userinfo_fallback: true`. |

297| Log: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, e os desenvolvedores veem `Cloud gateway session expired` a cada `session.ttl_hours` | O IdP aceitou o token de atualização, mas não retornou nenhum id\_token com ele, então o gateway perguntou ao endpoint userinfo do IdP pelas reivindicações do usuário. O IdP rejeitou o token de acesso atualizado lá. O gateway responde `temporarily_unavailable`, então Claude Code mantém o token de atualização, mas não consegue renovar a sessão. Versões do gateway anteriores à v2.1.260 registram a mesma linha sem o detalhe `(at …)`. | Defina [`oidc.scope_on_refresh: true`](/docs/pt/claude-apps-gateway-config#oidc), disponível no gateway v2.1.260 ou posterior, para que a solicitação de atualização peça por `openid` novamente. Alguns IdPs, como Okta, retornam um id\_token na atualização apenas quando solicitado. No PingFederate, ative **Return ID Token On Refresh Grant** em **Applications > OAuth > OpenID Connect Policy Management**. A chave não altera o comportamento do PingFederate. Para outros IdPs que ainda o omitem, verifique se o endpoint userinfo aceita tokens de acesso emitidos por uma atualização. Como medida temporária, aumente [`session.ttl_hours`](/docs/pt/claude-apps-gateway-config#session). Consulte [Configuração do provedor de identidade](#identity-provider-setup) para a compensação de desprovisionamento. |

291| Cada solicitação do Amazon Bedrock retorna 502; o log mostra `Could not load credentials from any providers` | No EC2, o hop limit padrão do IMDSv2 de 1 bloqueia a solicitação de metadados de instância de dentro do contêiner. A inicialização e `/readyz` passam mesmo assim porque o AWS SDK resolve credenciais de instância na primeira solicitação, não na construção do cliente | Aumente o hop limit com `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, ou defina-o no modelo de lançamento. A mudança se aplica a cada contêiner na instância. Prefira funções de tarefa ECS onde disponível, que leem credenciais do endpoint de credenciais do contêiner ECS e evitam a mudança completamente, ou aplique a mudança em uma instância de gateway dedicada para limitar a exposição. |298| Cada solicitação do Amazon Bedrock retorna 502; o log mostra `Could not load credentials from any providers` | No EC2, o hop limit padrão do IMDSv2 de 1 bloqueia a solicitação de metadados de instância de dentro do contêiner. A inicialização e `/readyz` passam mesmo assim porque o AWS SDK resolve credenciais de instância na primeira solicitação, não na construção do cliente | Aumente o hop limit com `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, ou defina-o no modelo de lançamento. A mudança se aplica a cada contêiner na instância. Prefira funções de tarefa ECS onde disponível, que leem credenciais do endpoint de credenciais do contêiner ECS e evitam a mudança completamente, ou aplique a mudança em uma instância de gateway dedicada para limitar a exposição. |

292| Erro do IdP: escopo desconhecido ou não suportado | O IdP rejeita escopos que não reconhece | Defina `oidc.scopes` para exatamente a lista que seu IdP aceita; deve incluir `openid`. O padrão é `openid profile email offline_access`. |299| Erro do IdP: escopo desconhecido ou não suportado | O IdP rejeita escopos que não reconhece | Defina `oidc.scopes` para exatamente a lista que seu IdP aceita; deve incluir `openid`. O padrão é `openid profile email offline_access`. |

293| As sessões não se renovam silenciosamente após definir `oidc.scopes` | `offline_access` foi removido da substituição | Adicione `offline_access` de volta se seu IdP o suportar. Sem um token de atualização, os desenvolvedores executam novamente o login do navegador a cada `session.ttl_hours`. |300| As sessões não se renovam silenciosamente após definir `oidc.scopes` | `offline_access` foi removido da substituição | Adicione `offline_access` de volta se seu IdP o suportar. Sem um token de atualização, os desenvolvedores executam novamente o login do navegador a cada `session.ttl_hours`. |


300| CLI `/login` completa a entrada do navegador, então a sessão termina com `Cloud gateway sign-in was not completed` e uma incompatibilidade de certificado TLS | Na primeira solicitação após a entrada, o gateway apresentou um certificado que não corresponde à impressão digital que Claude Code fixou, então Claude Code não manteve nenhuma credencial de gateway. As causas usuais são réplicas atrás de um endereço que servem certificados diferentes, ou algo no caminho da rede que intercepta TLS. | Sirva um certificado para o nome de host, por exemplo, terminando TLS uma vez no ingress, então peça ao desenvolvedor para executar `/login` novamente. Se esse certificado diferir do fixado, Claude Code mostra o [prompt de confiança](/docs/pt/claude-apps-gateway#connect-developers) novamente com um aviso de que o certificado mudou. |307| CLI `/login` completa a entrada do navegador, então a sessão termina com `Cloud gateway sign-in was not completed` e uma incompatibilidade de certificado TLS | Na primeira solicitação após a entrada, o gateway apresentou um certificado que não corresponde à impressão digital que Claude Code fixou, então Claude Code não manteve nenhuma credencial de gateway. As causas usuais são réplicas atrás de um endereço que servem certificados diferentes, ou algo no caminho da rede que intercepta TLS. | Sirva um certificado para o nome de host, por exemplo, terminando TLS uma vez no ingress, então peça ao desenvolvedor para executar `/login` novamente. Se esse certificado diferir do fixado, Claude Code mostra o [prompt de confiança](/docs/pt/claude-apps-gateway#connect-developers) novamente com um aviso de que o certificado mudou. |

301| CLI `/login` para com `The gateway's TLS certificate changed during sign-in: it no longer matches the one you trusted` | Uma solicitação de entrada alcançou um servidor cujo certificado não corresponde ao que o desenvolvedor aceitou quando `/login` começou: réplicas atrás de um endereço servindo certificados diferentes, interceptação TLS no caminho, ou uma rotação de certificado enquanto a entrada estava em andamento. | Sirva um certificado para o nome de host, então peça ao desenvolvedor para iniciar a entrada novamente e revisar o novo certificado no [prompt de confiança](/docs/pt/claude-apps-gateway#connect-developers). |308| CLI `/login` para com `The gateway's TLS certificate changed during sign-in: it no longer matches the one you trusted` | Uma solicitação de entrada alcançou um servidor cujo certificado não corresponde ao que o desenvolvedor aceitou quando `/login` começou: réplicas atrás de um endereço servindo certificados diferentes, interceptação TLS no caminho, ou uma rotação de certificado enquanto a entrada estava em andamento. | Sirva um certificado para o nome de host, então peça ao desenvolvedor para iniciar a entrada novamente e revisar o novo certificado no [prompt de confiança](/docs/pt/claude-apps-gateway#connect-developers). |

302 309 

303A mensagem `Cloud gateway sign-in was not completed` nomeia o nome de host do gateway e, quando Claude Code tem ambas as impressões digitais, os primeiros 16 caracteres da fixada e da apresentada.310A mensagem `Cloud gateway sign-in was not completed` nomeia o nome de host do gateway. Quando Claude Code tem ambas as impressões digitais fixada e apresentada, a mensagem também mostra os primeiros 16 caracteres de cada uma.

304 311 

305Se Claude Code relatar `couldn't load your organization's managed settings` após uma entrada do gateway, Claude Code nomeia o motivo, reinicia no local e retoma a conversa. Se Claude Code não conseguir reiniciar, por exemplo em uma sessão em segundo plano, Claude Code encerra a sessão e mantém a entrada.312Se Claude Code relatar `couldn't load your organization's managed settings` após uma entrada do gateway, Claude Code nomeia o motivo, reinicia no local e retoma a conversa. Se Claude Code não conseguir reiniciar, por exemplo em uma sessão em segundo plano, Claude Code encerra a sessão e mantém a entrada.

306 313 

claude-apps-gateway-on-aws.md +554 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Implantar gateway de aplicativos Claude na AWS

6 

7> Um exemplo prático de execução do gateway de aplicativos Claude na AWS: ECS Fargate ou EKS, Amazon RDS para PostgreSQL, AWS Secrets Manager e autenticação de função IAM para Amazon Bedrock.

8 

9<Note>

10 Esta página apresenta uma forma de executar o gateway de aplicativos Claude na AWS. A configuração é um exemplo funcional para infraestrutura gerenciada pelo cliente em vez de uma implantação de produção suportada; use-a para ver como as peças se encaixam antes de adaptá-la ao seu próprio ambiente. Para os requisitos independentes de plataforma, consulte o [guia de implantação](/docs/pt/claude-apps-gateway-deploy).

11</Note>

12 

13Este exemplo provisiona o gateway de aplicativos Claude na AWS com Amazon Bedrock como upstream de modelo, usando [Amazon ECS](https://aws.amazon.com/ecs/) em [AWS Fargate](https://aws.amazon.com/fargate/) ou [Amazon EKS](https://aws.amazon.com/eks/) para computação. [Okta](https://www.okta.com/) é o provedor de identidade (IdP) de exemplo, mas qualquer IdP compatível com OpenID Connect (OIDC) funciona; consulte [Configuração do provedor de identidade](/docs/pt/claude-apps-gateway-deploy#identity-provider-setup) para detalhes específicos de cada IdP.

14 

15<Note>

16 Bedrock não é o único upstream Claude na AWS. O gateway também suporta Claude Platform on AWS, a API Claude operada pela Anthropic com autenticação AWS e faturamento do AWS Marketplace, no lugar de Bedrock ou junto com ele. Sua entrada upstream, credenciais e permissões IAM diferem das específicas de Bedrock desta página; a [referência de upstream Claude Platform on AWS](/docs/pt/claude-apps-gateway-config#claude-platform-on-aws) cobre o que muda, e o resto desta página se aplica sem alterações.

17</Note>

18 

19<h2 id="architecture">

20 Arquitetura

21</h2>

22 

23<Frame caption="A arquitetura de exemplo, com Amazon Bedrock como upstream de modelo. Um upstream Claude Platform on AWS ocupa a mesma posição.">

24 <img src="https://mintcdn.com/claude-code/PHweeRmDUYEKff49/images/claude-gateway-aws-architecture.svg?fit=max&auto=format&n=PHweeRmDUYEKff49&q=85&s=8599cc34aa28522cde208ee831439bb4" alt="Diagrama do gateway de aplicativos Claude na AWS: clientes Claude Code se conectam via HTTPS a um Application Load Balancer interno que fica na frente do gateway (ECS Fargate ou EKS), que é executado em subnets privadas junto com uma instância Amazon RDS para PostgreSQL para estado de sessão. O gateway faz login dos usuários via OIDC contra o IdP corporativo, lê segredos do AWS Secrets Manager, encaminha solicitações de modelo para Amazon Bedrock usando sua função IAM e extrai sua imagem do Amazon ECR na implantação." width="820" height="430" data-path="images/claude-gateway-aws-architecture.svg" />

25</Frame>

26 

27O gateway é executado como um endpoint HTTPS privado em sua rede ao qual os desenvolvedores fazem login através de seu IdP. Suas sessões Claude Code alcançam modelos Claude no Amazon Bedrock através da função IAM do gateway, portanto nenhuma credencial de modelo chega às máquinas dos desenvolvedores. A configuração de referência provisiona:

28 

29* Serviço **Amazon ECS em AWS Fargate** ou **Amazon EKS** Deployment executando o contêiner do gateway

30* Repositório **Amazon ECR** para a imagem do gateway

31* Instância **Amazon RDS para PostgreSQL** em subnets privadas, não acessível publicamente, para o [store](/docs/pt/claude-apps-gateway-config#store) do gateway

32* Segredos **AWS Secrets Manager** para a chave de assinatura JWT, o segredo do cliente OIDC e a URL do Postgres

33* **Função IAM** com `bedrock:InvokeModel`, `bedrock:InvokeModelWithResponseStream` e `bedrock:CountTokens`, anexada como função de tarefa ECS ou vinculada via IAM Roles for Service Accounts (IRSA) no EKS

34* **Application Load Balancer interno** para HTTPS

35 

36<h2 id="prerequisites">

37 Pré-requisitos

38</h2>

39 

40O passo a passo cria os próprios recursos do gateway, mas se baseia em infraestrutura de rede e identidade que você já possui. Antes de começar, você precisa:

41 

42* Uma conta AWS com permissão para criar os [recursos acima](#architecture)

43* [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) instalada e [autenticada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html), e [Docker](https://docs.docker.com/get-started/get-docker/) instalado localmente

44* Uma [VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) com pelo menos duas [subnets privadas](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html) em diferentes Zonas de Disponibilidade, com acesso à internet de saída através de um [gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html); o balanceador de carga interno precisa de subnets em duas AZs, e o gateway precisa de saída para Bedrock e seu IdP

45* Uma aplicação web OIDC Okta com URI de redirecionamento `https://<gateway-host>/oauth/callback`; consulte [Configuração do provedor de identidade](/docs/pt/claude-apps-gateway-deploy#identity-provider-setup)

46* Um nome de host TLS para o gateway, normalmente um nome DNS interno em uma [zona hospedada privada Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) apontando para o balanceador de carga, com um [certificado ACM](https://docs.aws.amazon.com/acm/latest/userguide/gs.html) para esse nome, importado ou emitido por [AWS Private CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)

47 

48<h3 id="set-your-environment-variables">

49 Defina suas variáveis de ambiente

50</h3>

51 

52Cada comando nesta página lê quatro valores do seu shell: `AWS_REGION`, `ACCOUNT_ID`, `VPC_ID` e `PRIVATE_SUBNETS`.

53 

54Escolha uma região dos EUA onde Bedrock serve os modelos Claude que você precisa. O passo a passo depende do catálogo de modelos integrado do gateway, que resolve para perfis de inferência `us.anthropic.*`, e a política IAM concede esses ARNs. Em uma região fora dos EUA, adicione um [bloco `models:`](/docs/pt/claude-apps-gateway-config#models) com os IDs de perfil de inferência dessa região geográfica e altere o prefixo ARN da política IAM para corresponder.

55 

56Se você não tiver o ID da VPC à mão, liste suas VPCs com `aws ec2 describe-vpcs`, depois liste as subnets dessa VPC para encontrar duas privadas em diferentes Zonas de Disponibilidade:

57 

58```bash theme={null}

59aws ec2 describe-subnets --filters "Name=vpc-id,Values=<your-vpc-id>" \

60 --query 'Subnets[].{ID:SubnetId,AZ:AvailabilityZone,CIDR:CidrBlock}' --output table

61```

62 

63Exporte todos os quatro antes de continuar:

64 

65```bash theme={null}

66export AWS_REGION=us-east-1 # uma região dos EUA onde Bedrock serve os modelos Claude que você precisa

67export ACCOUNT_ID="$(aws sts get-caller-identity --query Account --output text)"

68export VPC_ID=<your-vpc-id>

69export PRIVATE_SUBNETS="<subnet-id-a> <subnet-id-b>"

70```

71 

72<h2 id="deploy-the-gateway">

73 Implante o gateway

74</h2>

75 

76As etapas abaixo provisionam a implantação completa com comandos `aws`.

77 

78<Steps>

79 <Step title="Crie os grupos de segurança">

80 Três grupos de segurança encadeiam o caminho do tráfego: sua rede corporativa alcança o balanceador de carga na porta 443, o balanceador de carga alcança o gateway na porta 8080 e o gateway alcança o Postgres na porta 5432. Nada mais é acessível. Como você os anexa depende da trilha de computação:

81 

82 * No ECS Fargate, a etapa de implantação anexa `$ALB_SG` ao balanceador de carga e `$GW_SG` ao serviço.

83 * No EKS, o AWS Load Balancer Controller cria seu próprio grupo de segurança frontend para o ALB, portanto `$ALB_SG` e `$GW_SG` não são usados: a anotação `inbound-cidrs` da etapa de implantação restringe o listener à sua rede corporativa, e o grupo de segurança do banco de dados admite o grupo de segurança do cluster em vez de `$GW_SG`.

84 

85 ```bash theme={null}

86 ALB_SG="$(aws ec2 create-security-group --group-name claude-gateway-alb \

87 --description "Claude gateway ALB" --vpc-id "$VPC_ID" \

88 --query GroupId --output text)"

89 GW_SG="$(aws ec2 create-security-group --group-name claude-gateway-svc \

90 --description "Claude gateway service" --vpc-id "$VPC_ID" \

91 --query GroupId --output text)"

92 DB_SG="$(aws ec2 create-security-group --group-name claude-gateway-db \

93 --description "Claude gateway Postgres" --vpc-id "$VPC_ID" \

94 --query GroupId --output text)"

95 

96 aws ec2 authorize-security-group-ingress --group-id "$ALB_SG" \

97 --protocol tcp --port 443 --cidr <your-corporate-cidr>

98 aws ec2 authorize-security-group-ingress --group-id "$GW_SG" \

99 --protocol tcp --port 8080 --source-group "$ALB_SG"

100 aws ec2 authorize-security-group-ingress --group-id "$DB_SG" \

101 --protocol tcp --port 5432 --source-group "$GW_SG"

102 ```

103 </Step>

104 

105 <Step title="Crie as funções IAM e envie o formulário de caso de uso">

106 O gateway é executado com uma função de tarefa dedicada cuja única permissão é invocar modelos Claude no Bedrock. De acordo com a [referência de upstream Bedrock](/docs/pt/claude-apps-gateway-config#amazon-bedrock), a política deve cobrir tanto os ARNs de perfil de inferência entre regiões quanto os ARNs de modelo de fundação subjacentes:

107 

108 ```bash theme={null}

109 cat > bedrock-invoke.json <<EOF

110 {

111 "Version": "2012-10-17",

112 "Statement": [{

113 "Effect": "Allow",

114 "Action": ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream", "bedrock:CountTokens"],

115 "Resource": [

116 "arn:aws:bedrock:${AWS_REGION}:${ACCOUNT_ID}:inference-profile/us.anthropic.*",

117 "arn:aws:bedrock:*::foundation-model/anthropic.*"

118 ]

119 }]

120 }

121 EOF

122 cat > ecs-trust.json <<'EOF'

123 {

124 "Version": "2012-10-17",

125 "Statement": [{

126 "Effect": "Allow",

127 "Principal": { "Service": "ecs-tasks.amazonaws.com" },

128 "Action": "sts:AssumeRole"

129 }]

130 }

131 EOF

132 

133 aws iam create-role --role-name claude-gateway-task \

134 --assume-role-policy-document file://ecs-trust.json

135 aws iam put-role-policy --role-name claude-gateway-task \

136 --policy-name bedrock-invoke --policy-document file://bedrock-invoke.json

137 ```

138 

139 ECS também precisa de uma função de execução, que o próprio agente ECS usa para extrair a imagem do ECR e injetar os valores do Secrets Manager criados posteriormente. É separada da função de tarefa que o AWS SDK do gateway usa em tempo de execução:

140 

141 ```bash theme={null}

142 aws iam create-role --role-name claude-gateway-execution \

143 --assume-role-policy-document file://ecs-trust.json

144 aws iam attach-role-policy --role-name claude-gateway-execution \

145 --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

146 cat > secrets-read.json <<EOF

147 {

148 "Version": "2012-10-17",

149 "Statement": [{

150 "Effect": "Allow",

151 "Action": ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"],

152 "Resource": [

153 "arn:aws:secretsmanager:${AWS_REGION}:${ACCOUNT_ID}:secret:gateway-jwt-secret-??????",

154 "arn:aws:secretsmanager:${AWS_REGION}:${ACCOUNT_ID}:secret:gateway-oidc-client-secret-??????",

155 "arn:aws:secretsmanager:${AWS_REGION}:${ACCOUNT_ID}:secret:gateway-postgres-url-??????"

156 ]

157 }]

158 }

159 EOF

160 aws iam put-role-policy --role-name claude-gateway-execution \

161 --policy-name read-gateway-secrets --policy-document file://secrets-read.json

162 ```

163 

164 A política nomeia um ARN por segredo em vez de um curinga simples `gateway-*`, que em uma conta compartilhada também corresponderia a segredos não relacionados; o sufixo `-??????` à direita corresponde exatamente aos seis caracteres aleatórios que o Secrets Manager anexa ao ARN de cada segredo. Um `-*` à direita seria um glob de prefixo simples e também corresponderia a nomes mais longos como `gateway-postgres-url-prod`.

165 

166 A política IAM concede ao gateway permissão para chamar Bedrock, e Bedrock habilita acesso ao modelo por padrão em regiões comerciais. O portão de nível de conta restante é o formulário de caso de uso único da Anthropic: se ninguém em sua conta o enviou, abra o [console Amazon Bedrock](https://console.aws.amazon.com/bedrock/), selecione um modelo Anthropic no catálogo de modelos e preencha o formulário. O acesso é concedido imediatamente após o envio; consulte [Claude Code no Amazon Bedrock](/docs/pt/amazon-bedrock#1-submit-use-case-details) para o formulário AWS Organizations e as permissões IAM que o remetente precisa.

167 

168 A trilha EKS reutiliza ambos os documentos de política em uma função IRSA em vez das duas funções ECS; consulte a etapa de implantação.

169 </Step>

170 

171 <Step title="Provisione Amazon RDS para PostgreSQL">

172 A instância é executada nas subnets privadas sem endereço público e com criptografia de armazenamento ativada. A versão do mecanismo é fixada em Postgres 16, que satisfaz o piso suportado do gateway de PostgreSQL 14 e garante que a família do grupo de parâmetros abaixo corresponda à instância.

173 

174 Primeiro, crie o grupo de subnets que coloca o banco de dados nas subnets privadas e um grupo de parâmetros com `rds.force_ssl=1` para que o servidor rejeite conexões em texto simples. A versão do mecanismo é fixada uma vez porque a família do grupo de parâmetros deve corresponder à versão principal do mecanismo que a instância executa:

175 

176 ```bash theme={null}

177 aws rds create-db-subnet-group --db-subnet-group-name claude-gateway-db \

178 --db-subnet-group-description "Claude gateway" --subnet-ids $PRIVATE_SUBNETS

179 

180 PG_VERSION=16

181 PG_FAMILY="postgres${PG_VERSION}"

182 aws rds create-db-parameter-group --db-parameter-group-name claude-gateway-db \

183 --db-parameter-group-family "$PG_FAMILY" \

184 --description "Claude gateway - require TLS on every connection"

185 aws rds modify-db-parameter-group --db-parameter-group-name claude-gateway-db \

186 --parameters "ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate"

187 ```

188 

189 Depois crie a instância com uma senha mestre gerada:

190 

191 ```bash theme={null}

192 PGPASS="$(openssl rand -hex 24)"

193 aws rds create-db-instance --db-instance-identifier claude-gateway-db \

194 --engine postgres --engine-version "$PG_VERSION" \

195 --db-instance-class db.t4g.micro \

196 --allocated-storage 20 --db-name claude_gateway \

197 --master-username gateway --master-user-password "$PGPASS" \

198 --db-subnet-group-name claude-gateway-db \

199 --db-parameter-group-name claude-gateway-db \

200 --vpc-security-group-ids "$DB_SG" \

201 --no-publicly-accessible --storage-encrypted

202 ```

203 

204 O argumento literal `--master-user-password` é visível na tabela de processos e nos logs de auditoria/EDR enquanto o comando é executado, a mesma exposição que a nota da etapa de segredos cobre. Em um host compartilhado ou monitorado, passe a senha via `--cli-input-json` de um arquivo `0600` em vez disso, da forma que o `setup.sh` do pacote faz.

205 

206 Aguarde a instância ficar ativa, o que pode levar vários minutos, depois leia seu endpoint privado e monte a string de conexão que o gateway usará:

207 

208 ```bash theme={null}

209 aws rds wait db-instance-available --db-instance-identifier claude-gateway-db

210 DB_HOST="$(aws rds describe-db-instances --db-instance-identifier claude-gateway-db \

211 --query 'DBInstances[0].Endpoint.Address' --output text)"

212 GATEWAY_POSTGRES_URL="postgres://gateway:${PGPASS}@${DB_HOST}:5432/claude_gateway?sslmode=verify-full"

213 ```

214 

215 `sslmode=verify-full` faz o gateway verificar a cadeia do certificado do servidor RDS e o nome do host, não apenas criptografar. A âncora de confiança é o [pacote de certificados AWS RDS](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem), que a etapa de construção de imagem abaixo copia para `/etc/claude/rds-global-bundle.pem` e confia via `NODE_EXTRA_CA_CERTS`. Não anexe um parâmetro `sslrootcert=` no estilo libpq à URL: o driver do gateway lê apenas `sslmode` da string de consulta e encaminharia `sslrootcert` para o Postgres como um parâmetro de inicialização, que o servidor rejeita.

216 

217 O serviço ECS ou os pods EKS devem ser executados nesta VPC para que possam alcançar o endpoint privado da instância, e o grupo de segurança `claude-gateway-db` apenas admite o grupo de segurança do gateway.

218 </Step>

219 

220 <Step title="Escreva gateway.yaml">

221 O bloco `upstreams` aponta para Bedrock com `auth: {}`, portanto o gateway se autentica via a cadeia de credenciais padrão AWS da função de tarefa no ECS ou da função IRSA no EKS. Consulte a [referência de configuração](/docs/pt/claude-apps-gateway-config) para cada campo.

222 

223 Dois campos `listen` descrevem o que está na frente do gateway:

224 

225 * `public_url`: a origem `https://` externa, obrigatória para qualquer bind não-loopback; consulte a [referência `listen`](/docs/pt/claude-apps-gateway-config#listen). O gateway constrói o `redirect_uri` do IdP e seu documento de descoberta apenas a partir deste valor, nunca a partir de cabeçalhos `X-Forwarded-*`.

226 * `trusted_proxies`: os intervalos de origem do front-end. O gateway honra `X-Forwarded-For` apenas quando o par TCP está nesta lista, depois percorre a cadeia passando hops confiáveis, portanto os limites de taxa de login por IP e os eventos de auditoria registram IPs de desenvolvedores em vez do balanceador de carga.

227 

228 Em ambas as trilhas o front-end é um ALB interno, seja criado diretamente ou pelo AWS Load Balancer Controller, e os nós de um ALB recebem endereços das subnets às quais está anexado, portanto defina `trusted_proxies` para os CIDRs dessas subnets. Isso confia em cada host nessas subnets como um proxy. Evite que a origem de ingresso do ALB, seu CIDR corporativo, se sobreponha a eles, e não compartilhe as subnets com cargas de trabalho não confiáveis que possam falsificar IPs de cliente via `X-Forwarded-For`.

229 

230 O atributo de preservação de porta de cliente do ALB, `routing.http.xff_client_port.enabled`, pode permanecer em qualquer configuração: com ele ativado, o ALB escreve o cliente como `203.0.113.7:54321` ou `[2001:db8::1]:54321`, e o gateway lê ambos com a porta descartada.

231 

232 ```yaml gateway.yaml theme={null}

233 listen:

234 host: 0.0.0.0

235 port: 8080

236 public_url: https://claude-gateway.internal.example.com

237 trusted_proxies: [<your-alb-subnet-cidrs>]

238 

239 oidc:

240 issuer: https://example.okta.com

241 client_id: 0oa1example2

242 client_secret: ${OIDC_CLIENT_SECRET} # EKS: ${file:/secrets/oidc-client-secret}

243 allowed_email_domains: [example.com]

244 # O servidor de autorização da organização Okta retorna um id_token fino que omite

245 # email e grupos; o gateway os preenche de /userinfo.

246 userinfo_fallback: true

247 # Okta emite grupos apenas quando o escopo `groups` é solicitado e o

248 # filtro de reivindicação de grupos do aplicativo os permite.

249 scopes: [openid, profile, email, offline_access, groups]

250 

251 session:

252 jwt_secret: ${GATEWAY_JWT_SECRET} # EKS: ${file:/secrets/jwt-secret}

253 ttl_hours: 8 # limita latência de desprovisionamento; diminua

254 # para 1 para revogação mais apertada

255 

256 store:

257 postgres_url: ${GATEWAY_POSTGRES_URL} # EKS: ${file:/secrets/postgres-url}

258 

259 upstreams:

260 - provider: bedrock

261 region: <your-region> # corresponda a $AWS_REGION para que os ARNs da política IAM

262 # a cubram

263 auth: {} # cadeia de credenciais padrão AWS:

264 # função de tarefa ECS, ou IRSA no EKS

265 ```

266 

267 <Note>

268 Apenas o bloco `oidc` é específico do Okta. Para usar Microsoft Entra ID em vez disso, defina `issuer` para `https://login.microsoftonline.com/<tenant-id>/v2.0`, remova `userinfo_fallback` e o escopo `groups`, e observe que Entra emite IDs de Objeto de grupo em vez de nomes, portanto [`managed.policies`](/docs/pt/claude-apps-gateway-config#managed) deve corresponder aos GUIDs, ou em App Roles com `oidc.groups_claim: roles`. Consulte [Configuração do provedor de identidade](/docs/pt/claude-apps-gateway-deploy#identity-provider-setup).

269 </Note>

270 </Step>

271 

272 <Step title="Armazene segredos no AWS Secrets Manager">

273 Crie três segredos; a função de execução da etapa IAM já pode lê-los:

274 

275 ```bash theme={null}

276 aws secretsmanager create-secret --name gateway-jwt-secret \

277 --secret-string "$(openssl rand -base64 32)"

278 aws secretsmanager create-secret --name gateway-oidc-client-secret \

279 --secret-string '<your-okta-client-secret>'

280 aws secretsmanager create-secret --name gateway-postgres-url \

281 --secret-string "$GATEWAY_POSTGRES_URL"

282 ```

283 

284 Observe o ARN que cada chamada imprime; a definição de tarefa ECS referencia segredos por ARN.

285 

286 <Note>

287 Argumentos literais `--secret-string` são visíveis na tabela de processos e nos logs de auditoria/EDR enquanto cada comando é executado. Em um host compartilhado ou monitorado, coloque o valor em um arquivo `0600` e passe `--secret-string file://<path>` em vez disso. O `setup.sh` do pacote mantém valores de segredo fora do argv do processo da mesma forma, passando arquivos temporários `0600` para `--cli-input-json`.

288 </Note>

289 

290 Ao contrário dos segredos, o próprio `gateway.yaml` não contém valores de segredo, porque cada credencial é resolvida na inicialização através da [expansão `${VAR}` ou `${file:...}`](/docs/pt/claude-apps-gateway-config#secret-expansion). Como tudo chega ao contêiner difere por trilha:

291 

292 * No ECS, a etapa seguinte copia `gateway.yaml` na imagem em `/etc/claude/gateway.yaml`, e a definição de tarefa injeta os três segredos como variáveis de ambiente via seu campo `secrets`, portanto o YAML referencia `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` e `${GATEWAY_POSTGRES_URL}`.

293 * No EKS, monte `gateway.yaml` de um ConfigMap e os segredos como arquivos em `/secrets`, referenciados como `${file:/secrets/...}`. Obtenha os Kubernetes Secrets do Secrets Manager com External Secrets Operator ou o provedor AWS do driver CSI Secrets Store, ou crie-os diretamente com `kubectl`.

294 </Step>

295 

296 <Step title="Construa e envie a imagem para Amazon ECR">

297 Construa a imagem de acordo com os [requisitos de imagem de contêiner](/docs/pt/claude-apps-gateway-deploy#container-image), colocando o binário glibc `linux-x64` em `./claude` no contexto de construção. Escreva seu próprio Dockerfile de acordo com esses requisitos ou comece com o [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/examples/gateway/aws/Dockerfile) do pacote, que copia o `gateway.yaml` preenchido das etapas anteriores na imagem em `/etc/claude/gateway.yaml`. No ECS essa cópia incorporada é como a configuração chega ao contêiner, razão pela qual a construção vem após o arquivo ser escrito. A trilha EKS em vez disso monta `gateway.yaml` de um ConfigMap na implantação, portanto a cópia incorporada não é usada lá.

298 

299 A imagem também carrega o pacote de certificados AWS RDS como a âncora de confiança para a string de conexão `sslmode=verify-full`, portanto baixe-o no contexto de construção primeiro. AWS rotaciona o pacote (novas CAs regionais são anexadas), portanto baixe-o por construção em vez de fixar um checksum ou confirmá-lo:

300 

301 ```bash theme={null}

302 curl -fL --proto '=https' -o rds-global-bundle.pem \

303 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

304 ```

305 

306 Os requisitos de imagem de contêiner não cobrem o pacote, portanto se você escrever seu próprio Dockerfile, adicione as duas linhas que copiam e confiam nele; o `Dockerfile` do pacote já inclui ambas:

307 

308 ```dockerfile theme={null}

309 COPY rds-global-bundle.pem /etc/claude/rds-global-bundle.pem

310 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem

311 ```

312 

313 Crie o repositório ECR e faça login do Docker nele. Tags imutáveis significam que a tag `<version>` que a etapa de implantação fixa não pode ser posteriormente apontada silenciosamente para uma imagem diferente:

314 

315 ```bash theme={null}

316 aws ecr create-repository --repository-name claude-gateway \

317 --image-tag-mutability IMMUTABLE \

318 --image-scanning-configuration scanOnPush=true

319 aws ecr get-login-password --region "$AWS_REGION" \

320 | docker login --username AWS --password-stdin \

321 "${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com"

322 ```

323 

324 Construa e envie a imagem. A definição de tarefa abaixo executa `linux/amd64`, portanto a plataforma deve corresponder aqui; para Fargate em ARM64 (Graviton), construa `linux/arm64` com o binário `linux-arm64` e defina `cpuArchitecture` para `ARM64` em vez disso:

325 

326 ```bash theme={null}

327 docker build --platform=linux/amd64 \

328 -t "${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/claude-gateway:<version>" .

329 docker push "${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/claude-gateway:<version>"

330 ```

331 </Step>

332 

333 <Step title="Implante">

334 <Tabs>

335 <Tab title="ECS Fargate">

336 Crie o cluster e um grupo de logs para stderr do gateway, que carrega seus eventos de auditoria e logs operacionais. A retenção é uma chamada separada, e sem uma CloudWatch mantém os logs para sempre; alinhe os 90 dias com sua política de retenção de auditoria:

337 

338 ```bash theme={null}

339 aws ecs create-cluster --cluster-name claude-gateway

340 aws logs create-log-group --log-group-name /ecs/claude-gateway

341 aws logs put-retention-policy --log-group-name /ecs/claude-gateway \

342 --retention-in-days 90

343 ```

344 

345 Escreva a definição de tarefa. A função de tarefa carrega a permissão Bedrock e a função de execução injeta os segredos; use os ARNs de segredo da etapa Secrets Manager:

346 

347 ```json claude-gateway-task.json theme={null}

348 {

349 "family": "claude-gateway",

350 "networkMode": "awsvpc",

351 "requiresCompatibilities": ["FARGATE"],

352 "cpu": "1024",

353 "memory": "2048",

354 "runtimePlatform": { "cpuArchitecture": "X86_64", "operatingSystemFamily": "LINUX" },

355 "executionRoleArn": "arn:aws:iam::<account-id>:role/claude-gateway-execution",

356 "taskRoleArn": "arn:aws:iam::<account-id>:role/claude-gateway-task",

357 "containerDefinitions": [

358 {

359 "name": "gateway",

360 "image": "<account-id>.dkr.ecr.<region>.amazonaws.com/claude-gateway:<version>",

361 "portMappings": [{ "containerPort": 8080 }],

362 "secrets": [

363 { "name": "GATEWAY_JWT_SECRET", "valueFrom": "<gateway-jwt-secret ARN>" },

364 { "name": "OIDC_CLIENT_SECRET", "valueFrom": "<gateway-oidc-client-secret ARN>" },

365 { "name": "GATEWAY_POSTGRES_URL", "valueFrom": "<gateway-postgres-url ARN>" }

366 ],

367 "logConfiguration": {

368 "logDriver": "awslogs",

369 "options": {

370 "awslogs-group": "/ecs/claude-gateway",

371 "awslogs-region": "<region>",

372 "awslogs-stream-prefix": "gateway"

373 }

374 }

375 }

376 ]

377 }

378 ```

379 

380 Registre-a:

381 

382 ```bash theme={null}

383 aws ecs register-task-definition --cli-input-json file://claude-gateway-task.json

384 ```

385 

386 Coloque um ALB interno na frente com um grupo de destino que verifica a saúde do gateway. `--ip-address-type ipv4` importa: um ALB dual-stack interno publica registros AAAA de intervalo público, que a verificação de rede privada `/login` rejeita:

387 

388 ```bash theme={null}

389 ALB_ARN="$(aws elbv2 create-load-balancer --name claude-gateway \

390 --scheme internal --type application --ip-address-type ipv4 \

391 --subnets $PRIVATE_SUBNETS --security-groups "$ALB_SG" \

392 --query 'LoadBalancers[0].LoadBalancerArn' --output text)"

393 

394 TG_ARN="$(aws elbv2 create-target-group --name claude-gateway \

395 --protocol HTTP --port 8080 --vpc-id "$VPC_ID" --target-type ip \

396 --health-check-path /readyz \

397 --query 'TargetGroups[0].TargetGroupArn' --output text)"

398 ```

399 

400 Adicione o listener HTTPS. `--ssl-policy` fixa um piso TLS moderno, pois omiti-lo volta para o padrão legado `ELBSecurityPolicy-2016-08`, que ainda aceita TLS 1.0/1.1.

401 

402 O ALB fecha uma conexão após 60 segundos sem dados por padrão. Os pings de keepalive do gateway mantêm streams dentro desse padrão, portanto aumentar o tempo limite adiciona margem acima da cadência de ping; a linha [Troubleshooting](#troubleshooting) em streams descartados cobre o mecanismo e gateways mais antigos. Os comandos abaixo adicionam o listener e aumentam o tempo limite:

403 

404 ```bash theme={null}

405 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \

406 --protocol HTTPS --port 443 \

407 --ssl-policy ELBSecurityPolicy-TLS13-1-2-2021-06 \

408 --certificates CertificateArn=<your-acm-certificate-arn> \

409 --default-actions Type=forward,TargetGroupArn="$TG_ARN"

410 

411 aws elbv2 modify-load-balancer-attributes --load-balancer-arn "$ALB_ARN" \

412 --attributes Key=idle_timeout.timeout_seconds,Value=3600

413 ```

414 

415 Crie o serviço. O disjuntor de implantação reverte uma implantação cujas tarefas continuam falhando, de uma imagem ruim ou uma configuração não inicializável, para o último estado estável em vez de relançar tarefas falhando para sempre:

416 

417 ```bash theme={null}

418 aws ecs create-service --cluster claude-gateway --service-name claude-gateway \

419 --task-definition claude-gateway --desired-count 1 --launch-type FARGATE \

420 --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \

421 --health-check-grace-period-seconds 60 \

422 --network-configuration "awsvpcConfiguration={subnets=[$(echo $PRIVATE_SUBNETS | tr ' ' ',')],securityGroups=[$GW_SG],assignPublicIp=DISABLED}" \

423 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"

424 ```

425 

426 O período de graça de 60 segundos dá a uma tarefa fria tempo para extrair a imagem, conectar ao store e responder sua primeira verificação de saúde antes de ECS começar a contar falhas contra a implantação. A verificação de saúde do grupo de destino em `GET /readyz` verifica se o store é acessível, portanto uma tarefa que não consegue alcançar Postgres nunca entra em rotação; consulte [Comportamento de interrupção](/docs/pt/claude-apps-gateway-deploy#outage-behavior) para o tradeoff e a alternativa `/healthz`.

427 

428 As tarefas são executadas em subnets privadas sem IP público, portanto toda saída (para Bedrock, seu IdP, Secrets Manager, ECR e CloudWatch Logs) passa pelo gateway NAT. Para manter o tráfego Bedrock fora do caminho público, crie um endpoint VPC de interface `bedrock-runtime` e aponte o `base_url` do upstream para ele, conforme mostrado na [referência de upstream Bedrock](/docs/pt/claude-apps-gateway-config#amazon-bedrock); o IdP ainda precisa de saída de internet.

429 

430 Termine dando aos desenvolvedores um nome de host privadamente resolvível: em uma zona hospedada privada Route 53, alias o nome DNS interno do gateway para o ALB e defina `listen.public_url` para esse nome de host. O próprio nome `*.elb.amazonaws.com` do ALB resolve para endereços privados em um ALB interno, mas não pode carregar seu certificado ACM, portanto use seu próprio nome.

431 

432 Atualize o URI de redirecionamento autorizado do cliente OAuth para `<public_url>/oauth/callback` antes do primeiro login. Após alterar `public_url`, reconstrua e envie a imagem sob uma nova tag, registre uma nova revisão de definição de tarefa e reimplante. No ECS a configuração vive no `gateway.yaml` incorporado da imagem, e o gateway constrói sua origem pública apenas a partir dessa configuração, ignorando `X-Forwarded-Host` e `X-Forwarded-Proto`. `X-Forwarded-For` é honrado para IPs de cliente apenas quando `listen.trusted_proxies` é definido.

433 </Tab>

434 

435 <Tab title="EKS">

436 Esta trilha precisa de `kubectl` e `eksctl` instalados localmente, e um cluster EKS existente com um provedor OIDC IAM e o AWS Load Balancer Controller instalado. O cluster deve estar em `$VPC_ID` para que os pods possam alcançar o endpoint privado RDS, e o grupo de segurança `claude-gateway-db` deve admitir o grupo de segurança do pod ou nó do cluster no lugar de `$GW_SG`.

437 

438 No EKS o gateway obtém suas credenciais Bedrock através de IRSA em vez das funções ECS. A política de confiança `ecs-tasks.amazonaws.com` da etapa IAM não se aplica aqui; IRSA precisa de uma função cuja política de confiança federe no provedor OIDC do cluster, escopo para `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` cria essa função, anexa as políticas e anota a conta de serviço Kubernetes com o ARN da função em uma etapa. Transforme os dois documentos de política da etapa IAM em políticas gerenciadas que ele pode anexar:

439 

440 ```bash theme={null}

441 BEDROCK_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-bedrock-invoke \

442 --policy-document file://bedrock-invoke.json --query Policy.Arn --output text)"

443 SECRETS_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-secrets-read \

444 --policy-document file://secrets-read.json --query Policy.Arn --output text)"

445 

446 kubectl create namespace claude-gateway

447 eksctl create iamserviceaccount --cluster <your-cluster> --region "$AWS_REGION" \

448 --namespace claude-gateway --name gateway --role-name claude-gateway \

449 --attach-policy-arn "$BEDROCK_POLICY_ARN" \

450 --attach-policy-arn "$SECRETS_POLICY_ARN" \

451 --approve

452 ```

453 

454 A política de segredos é necessária apenas quando os pods leem o Secrets Manager eles mesmos, como o provedor AWS do driver CSI Secrets Store faz usando a conta de serviço do pod de montagem; remova-a se você criar os Kubernetes Secrets de outra forma. O provedor precisa de ambas as ações da política: ele chama `DescribeSecret` quando reconcilia segredos rotacionados, portanto uma concessão somente `GetSecretValue` monta na primeira implantação mas para de pegar rotações.

455 

456 Implante o gateway como um Deployment padrão mais um Service e um Ingress, conforme descrito em [Implantação Kubernetes](/docs/pt/claude-apps-gateway-deploy#kubernetes), com:

457 

458 * `serviceAccountName: gateway`

459 * `gateway.yaml` montado de um ConfigMap e os segredos montados em `/secrets`

460 * a sonda de prontidão apontada para `GET /readyz`

461 

462 Para o front-end, um Ingress gerenciado pelo AWS Load Balancer Controller provisiona o ALB interno. Anote-o com:

463 

464 * `alb.ingress.kubernetes.io/scheme: internal` e `alb.ingress.kubernetes.io/target-type: ip`

465 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, para que nenhum registro AAAA de intervalo público seja publicado para a verificação de rede privada `/login` [rejeitar](/docs/pt/claude-apps-gateway#prerequisites)

466 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, para que o grupo de segurança frontend gerenciado pelo controlador admita apenas sua rede corporativa no lugar de seu padrão `0.0.0.0/0`

467 * `alb.ingress.kubernetes.io/certificate-arn` com o certificado ACM

468 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, para que o listener não volte para a política padrão legada que aceita TLS 1.0 e 1.1

469 * `alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=3600`, uma margem acima do keepalive de streaming do gateway; consulte [Troubleshooting](#troubleshooting)

470 

471 Com IRSA, o AWS SDK lê um token de conta de serviço projetado e o troca com AWS STS, portanto o pod nunca precisa do serviço de metadados da instância EC2; uma NetworkPolicy de saída pode bloquear `169.254.169.254` para pods do gateway. O problema de limite de hop do nó em [Troubleshooting](#troubleshooting) abaixo se aplica apenas a clusters que pulam IRSA e dependem de funções de instância de nó.

472 </Tab>

473 </Tabs>

474 </Step>

475 

476 <Step title="Envie a URL do gateway para máquinas de desenvolvedores">

477 O gateway agora está em execução, mas os desenvolvedores não conseguem alcançá-lo de `/login` até que a URL do gateway esteja em suas máquinas. Defina `forceLoginMethod` e `forceLoginGatewayUrl` no [arquivo de configurações gerenciadas](/docs/pt/claude-apps-gateway#set-the-gateway-url) que você implanta em cada dispositivo via MDM. Não há opção de gateway no seletor de login para um desenvolvedor selecionar manualmente.

478 </Step>

479</Steps>

480 

481<h2 id="terraform-reference">

482 Referência Terraform

483</h2>

484 

485O pacote complementar em [`examples/gateway/aws`](https://github.com/anthropics/claude-code/tree/main/examples/gateway/aws) empacota esta página como código:

486 

487* **`setup.sh`** roteiriza o passo a passo de provisionamento acima com os mesmos comandos `aws`, na trilha ECS Fargate. É idempotente: recursos existentes são detectados e pulados, portanto re-executá-lo é seguro, e qualquer padrão pode ser substituído via variável de ambiente. Você ainda cria o segredo do cliente OIDC Okta e o certificado ACM você mesmo: uma execução sem eles pula a implantação ECS/ALB, nomeia as entradas ausentes e imprime o comando `create-secret`; crie ambos e re-execute. O formulário de caso de uso Bedrock e o alias Route 53 imprimem como próximas etapas em vez de executar automaticamente, e o push MDM do cliente permanece uma etapa manual desta página.

488* **`gateway.yaml.example`** é o modelo de configuração da etapa gateway.yaml, com as chaves opcionais incluídas comentadas. Copie-o para `gateway.yaml` e substitua cada `REPLACE_ME` antes de construir.

489* **`Dockerfile`** constrói a imagem de tempo de execução a partir do binário pré-construído `linux-x64` e copia seu `gateway.yaml` preenchido em `/etc/claude/gateway.yaml`, mais o pacote de certificados AWS RDS que ancora o `sslmode=verify-full` do store. `setup.sh` baixa o pacote apenas quando ele não está já no contexto de construção; delete o arquivo e reconstrua sob uma nova tag para pegar uma rotação de CA AWS. O arquivo de configuração não contém valores de segredo, pois cada credencial é resolvida na inicialização através da expansão `${VAR}`. Uma edição de configuração portanto significa uma reconstrução sob uma nova tag; `setup.sh` automatiza isso marcando imagens com um hash do arquivo.

490* **`terraform/`** provisiona o mesmo escopo ECS Fargate declarativamente: os grupos de segurança, funções IAM, repositório ECR, instância RDS, segredos Secrets Manager e o serviço ECS atrás do ALB interno. A VPC e subnets privadas permanecem pré-requisitos, passados como variáveis. Terraform cria o repositório ECR mas não constrói a imagem, e a definição de serviço referencia a imagem, portanto o apply é dois passes: um apply direcionado para o repositório, depois a construção e envio, depois o apply completo. O `terraform/README.md` do pacote cobre as variáveis, estado remoto e desmontagem.

491 

492Como esta página, o pacote é um exemplo funcional para infraestrutura gerenciada pelo cliente em vez de uma implantação de produção suportada; revise e adapte-o ao seu próprio ambiente antes de confiar nele.

493 

494<h2 id="troubleshooting">

495 Troubleshooting

496</h2>

497 

498Para erros de boot e login do gateway, consulte a tabela de [troubleshooting](/docs/pt/claude-apps-gateway-deploy#troubleshooting) independente de plataforma. As entradas abaixo são específicas da AWS.

499 

500| Sintoma | Causa | Correção |

501| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

502| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | O nome do gateway resolve para pelo menos um endereço público. Um ALB dual-stack interno publica registros AAAA de intervalo público, e a [verificação de rede privada](/docs/pt/claude-apps-gateway#prerequisites) requer que cada endereço resolvido seja privado | Crie o ALB com `--ip-address-type ipv4`, ou sirva um nome DNS separado apenas interno sem registro AAAA público |

503| Cada solicitação Bedrock retorna 502; log mostra `Could not load credentials from any providers` | A tarefa é executada no tipo de lançamento ECS EC2 sem uma função de tarefa, ou o pod é executado em um nó EKS sem IRSA, portanto as credenciais vêm de metadados de instância, que o limite de hop padrão IMDSv2 de 1 para dentro de um contêiner. Nenhuma trilha nesta página é afetada: funções de tarefa Fargate e IRSA não usam metadados de instância | Prefira funções de tarefa e IRSA. Onde credenciais de instância são inevitáveis, aumente o limite de hop com `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`; a [tabela independente de plataforma](/docs/pt/claude-apps-gateway-deploy#troubleshooting) cobre os tradeoffs |

504| Solicitações Bedrock retornam `403 AccessDeniedException` | A conta não enviou o formulário de caso de uso único da Anthropic, a assinatura automática do AWS Marketplace que começa na primeira invocação da conta não terminou ainda, ou a política da função de tarefa está faltando os ARNs de perfil de inferência ou modelo de fundação | Envie o formulário de caso de uso do catálogo de modelos do console Bedrock; se foi apenas enviado ou esta é a primeira invocação da conta, tente novamente após alguns minutos. Conceda `bedrock:InvokeModel` e `bedrock:InvokeModelWithResponseStream` em ambas as famílias de ARN. |

505| Bedrock retorna uma `ValidationException` dizendo que throughput sob demanda não é suportado | Uma entrada `models:` personalizada mapeia para um ID de modelo de fundação simples que a região serve apenas através de perfis de inferência | Mapeie o modelo para seu ID de perfil de inferência entre regiões (`us.anthropic.*`) em vez disso; o catálogo integrado já faz isso |

506| Tarefa ECS para com `ResourceInitializationError` antes do gateway registrar qualquer coisa | A função de execução não consegue ler os segredos do Secrets Manager, ou as subnets privadas não têm caminho para Secrets Manager ou ECR | Conceda `secretsmanager:GetSecretValue` nos ARNs dos três segredos `gateway-` para a função de execução, e forneça saída via gateway NAT, ou, sem um, endpoints de interface para Secrets Manager, ECR e CloudWatch Logs, que o driver `awslogs` precisa no mesmo estágio, mais um endpoint de gateway S3 |

507| Boot do gateway sai com erro de tempo limite de conexão Postgres | O grupo de segurança do banco de dados não admite o grupo de segurança do gateway na porta 5432, ou o serviço é executado fora da VPC do banco de dados; o store para de esperar após 5 segundos | Permita 5432 do grupo de segurança do gateway no do banco de dados, e execute o serviço na mesma VPC que o grupo de subnets do DB |

508| Boot do gateway sai com erro de verificação de certificado TLS Postgres | A string de conexão define `sslmode=verify-full` mas a imagem não confia no pacote de CA RDS: o pacote não foi copiado na imagem, ou `NODE_EXTRA_CA_CERTS` não aponta para ele | Adicione as duas linhas do Dockerfile da etapa de construção que copiam o pacote e definem `NODE_EXTRA_CA_CERTS`, depois reconstrua, envie sob uma nova tag e reimplante |

509| Respostas de streaming caem no meio do stream após um período silencioso | Um gateway mais antigo que v2.1.229 em um Bedrock ou Claude Platform na upstream AWS envia nada enquanto a upstream está silenciosa, por exemplo durante pensamento estendido sem saída transmitida. O ALB fecha uma conexão após 60 segundos sem dados por padrão, então corta o stream nessa lacuna. Gateways v2.1.229 e posteriores mantêm um stream silencioso sob esse tempo limite: nessas upstreams o gateway emite um evento SSE `ping` uma vez após cerca de 15 segundos passarem sem dados de stream, e em uma upstream de API Anthropic ele retransmite os próprios pings da API | Atualize o gateway para v2.1.229 ou posterior, ou defina o atributo `idle_timeout.timeout_seconds` para `3600`, via `modify-load-balancer-attributes` ou a anotação `load-balancer-attributes` do Ingress no EKS |

510 

511<h2 id="telemetry">

512 Telemetria

513</h2>

514 

515O gateway oferece métricas de uso por desenvolvedor sem qualquer configuração OTEL por máquina. Claude Code emite métricas, logs e traces OpenTelemetry (OTLP) opcionais; [Monitorar uso](/docs/pt/monitoring-usage) cobre tudo que o CLI relata. Em sessões de gateway o CLI carimba cada exportação com os atributos de identidade IdP autenticados `user.id`, `user.email` e `user.groups`, portanto o uso se acumula por desenvolvedor sem encanamento `OTEL_RESOURCE_ATTRIBUTES`.

516 

517O gateway em si é um relé OTLP autenticado. Defina [`telemetry.forward_to`](/docs/pt/claude-apps-gateway-config#telemetry) junto com `listen.public_url`, e ele empurra as configurações do exportador OTEL para cada cliente conectado e encaminha seu tráfego OTLP verbatim para cada destino que você lista. Cada destino opta por métricas, logs e traces independentemente, e o padrão é apenas métricas; consulte a [referência `telemetry`](/docs/pt/claude-apps-gateway-config#telemetry) para os campos por sinal e seus tradeoffs de sensibilidade. O gateway não armazena em buffer, agrega ou armazena telemetria, portanto onde os dados chegam é inteiramente a configuração do exportador do coletor.

518 

519A telemetria do cliente está desativada por padrão; configurar `telemetry.forward_to` é o que a ativa para desenvolvedores conectados, e cada cliente interativo mostra um diálogo de aprovação de segurança para as configurações empurradas, conforme descrito na [referência de configuração](/docs/pt/claude-apps-gateway-config#telemetry). Na AWS, cada sinal mapeia para um destino da seguinte forma.

520 

521<h3 id="client-metrics-logs-and-traces">

522 Métricas, logs e traces do cliente

523</h3>

524 

525Aponte `telemetry.forward_to` para um coletor OpenTelemetry, como o [coletor AWS Distro for OpenTelemetry (ADOT)](https://aws-otel.github.io/), e exporte de lá para Amazon CloudWatch, Amazon Managed Service for Prometheus ou qualquer backend OTLP.

526 

527Execute o coletor como seu próprio serviço interno acessível via `https://`; a [referência `telemetry`](/docs/pt/claude-apps-gateway-config#telemetry) cobre a exceção de loopback e `CLAUDE_GATEWAY_ALLOW_LOOPBACK`.

528 

529<h3 id="gateway-logs">

530 Logs do gateway

531</h3>

532 

533No ECS Fargate, sem configuração extra: o driver `awslogs` entrega stderr do gateway, que carrega seus eventos de auditoria e logs operacionais, para o grupo de logs `/ecs/claude-gateway` criado acima. No EKS, logs de pod não chegam ao CloudWatch por padrão, portanto a trilha de auditoria é perdida até você instalar coleta de logs: o complemento Amazon CloudWatch Observability com captura de log de contêiner ativada, ou um DaemonSet Fluent Bit. Em qualquer trilha, consulte os logs com CloudWatch Logs Insights e dirija alarmes de filtros de métrica.

534 

535<h3 id="container-metrics">

536 Métricas de contêiner

537</h3>

538 

539Ative Container Insights no cluster com `aws ecs update-cluster-settings --cluster claude-gateway --settings name=containerInsights,value=enabled` para CPU, memória e rede por tarefa. No EKS, instale o complemento Amazon CloudWatch Observability.

540 

541<h3 id="spend">

542 Gasto

543</h3>

544 

545A telemetria mostra uso após o fato; [limites de gasto](/docs/pt/claude-apps-gateway-spend-limits) são a visão ao vivo do gateway por desenvolvedor e aplicação sobre a credencial upstream compartilhada.

546 

547<h2 id="next-steps">

548 Próximas etapas

549</h2>

550 

551* [Referência de configuração](/docs/pt/claude-apps-gateway-config): cada opção `gateway.yaml`, incluindo `managed.policies` e `telemetry`

552* [Implantação e operações](/docs/pt/claude-apps-gateway-deploy): configuração de IdP, verificações de saúde, rotação de segredo JWT, upgrades e o modelo de segurança

553* [Visão geral do gateway de aplicativos Claude](/docs/pt/claude-apps-gateway): quickstart e conexão de desenvolvedores

554* [Amostras AWS para gateway de aplicativos Claude](https://github.com/aws-samples/anthropic-on-aws/tree/main/claude-apps-gateway): amostras de implantação mantidas pela AWS cobrindo uma variedade de ambientes de clientes

Details

42 42 

43As sessões em nuvem precisam de acesso aos seus repositórios GitHub para clonar código e enviar branches. Você pode conceder acesso de duas maneiras:43As sessões em nuvem precisam de acesso aos seus repositórios GitHub para clonar código e enviar branches. Você pode conceder acesso de duas maneiras:

44 44 

45| Método | Como funciona | Melhor para |45| Método | Como você se conecta | Repositórios que as sessões podem alcançar | Melhor para |

46| :--------------- | :--------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------- |46| :--------------- | :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------- |

47| **GitHub App** | Autorize o Claude GitHub App durante [onboarding na web](/docs/pt/web-quickstart). | Onboarding no navegador; equipes que desejam [Auto-fix](#auto-fix-pull-requests) |47| **GitHub App** | Autorize o Claude GitHub App durante [onboarding na web](/docs/pt/web-quickstart) | Qualquer repositório público e repositórios privados nos quais o Claude GitHub App está instalado | Onboarding no navegador; equipes que desejam [Auto-fix](#auto-fix-pull-requests) |

48| **`/web-setup`** | Execute `/web-setup` em seu terminal para sincronizar seu token CLI `gh` local com sua conta Claude. | Desenvolvedores individuais que já usam `gh` |48| **`/web-setup`** | Execute `/web-setup` em seu terminal para enviar seu token CLI `gh` local para sua conta Claude | Qualquer repositório que seu token `gh` possa acessar, independentemente de o App estar instalado ou não | Desenvolvedores individuais que já usam `gh` |

49 49 

50<Note>50A instalação do Claude GitHub App em um repositório também habilita [Auto-fix](#auto-fix-pull-requests) para pull requests nele.

51 Com qualquer método, uma sessão em nuvem pode acessar qualquer repositório que a conta GitHub conectada possa ver, não apenas os repositórios nos quais o Claude GitHub App está instalado. A instalação do App habilita webhooks de PR para [Auto-fix](#auto-fix-pull-requests); não é um controle de acesso no nível da sessão. Para restringir quais repositórios sua equipe pode alcançar a partir de sessões em nuvem, restrinja o acesso no próprio GitHub, por exemplo, limitando a associação de equipe ou repositório para as contas GitHub conectadas.

52</Note>

53 51 

54Qualquer método funciona. Para como `/schedule` verifica esse acesso antes de criar uma routine, veja [Repositórios e permissões de branch](/docs/pt/routines#repositories-and-branch-permissions). Veja [Conectar a partir do seu terminal](/docs/pt/web-quickstart#connect-from-your-terminal) para o passo a passo de `/web-setup`.52Para saber como `/schedule` verifica o acesso ao repositório antes de criar uma routine, consulte [Repositórios e permissões de branch](/docs/pt/routines#repositories-and-branch-permissions). Consulte [Conectar a partir do seu terminal](/docs/pt/web-quickstart#connect-from-your-terminal) para o passo a passo de `/web-setup`, incluindo o que `/web-setup` armazena e como removê-lo.

55 53 

56Quick web setup é uma configuração de organização que permite que membros conectem o GitHub com `/web-setup`, pula o prompt de instalação do Claude GitHub App durante o onboarding do navegador e faz com que o onboarding do navegador crie o [ambiente **Default**](/docs/pt/cloud-environments#the-default-environment) para eles em vez de mostrar o formulário de ambiente. Nos planos Team e Enterprise está desabilitado por padrão, o que oculta `/web-setup`. Um [Owner](/docs/pt/server-managed-settings#access-control) o ativa com o toggle **Quick web setup** em [**Admin settings > Claude Code**](https://claude.ai/admin-settings/claude-code).54Quick web setup é uma configuração de organização que permite que membros conectem o GitHub com `/web-setup`, pula o prompt de instalação do Claude GitHub App durante o onboarding do navegador e faz com que o onboarding do navegador crie o [ambiente **Default**](/docs/pt/cloud-environments#the-default-environment) para eles em vez de mostrar o formulário de ambiente. Nos planos Team e Enterprise está desabilitado por padrão, o que oculta `/web-setup`. Um [Owner](/docs/pt/server-managed-settings#access-control) o ativa com o toggle **Quick web setup** em [**Admin settings > Claude Code**](https://claude.ai/admin-settings/claude-code).

57 55 


79claude --cloud "Fix the authentication bug in src/auth/login.ts"77claude --cloud "Fix the authentication bug in src/auth/login.ts"

80```78```

81 79 

82Isso cria uma nova sessão em nuvem em claude.ai. A VM em nuvem clona o remoto GitHub do seu diretório atual na sua branch atual, não seu checkout local, então envie primeiro se você tiver commits locais. `--cloud` funciona com um repositório por vez. A tarefa é executada na nuvem enquanto você continua trabalhando localmente. A ortografia mais antiga `--remote` ainda funciona como um alias descontinuado para `--cloud`.80Isso cria uma nova sessão em nuvem em claude.ai. A VM em nuvem clona o remoto GitHub do seu diretório atual na sua branch atual, não seu checkout local, então envie primeiro se você tiver commits locais. Veja [Envie repositórios locais sem GitHub](#send-local-repositories-without-github) para os casos em que Claude Code carrega seu repositório local em vez de clonar.

81 

82`--cloud` funciona com um repositório por vez. A tarefa é executada na nuvem enquanto você continua trabalhando localmente. A ortografia mais antiga `--remote` ainda funciona como um alias descontinuado para `--cloud`.

83 83 

84Enquanto o contêiner em nuvem inicia, o CLI mostra uma lista de verificação ao vivo das etapas de configuração, como clonar o repositório e executar seu [script de configuração](/docs/pt/cloud-environments#setup-scripts). Ele enfileira mensagens que você digita durante o provisionamento e as envia assim que a sessão estiver pronta.84Enquanto o contêiner em nuvem inicia, o CLI mostra uma lista de verificação ao vivo das etapas de configuração, como clonar o repositório e executar seu [script de configuração](/docs/pt/cloud-environments#setup-scripts). Ele enfileira mensagens que você digita durante o provisionamento e as envia assim que a sessão estiver pronta.

85 85 


121 Envie repositórios locais sem GitHub121 Envie repositórios locais sem GitHub

122</h4>122</h4>

123 123 

124Quando você executa `claude --cloud` a partir de um repositório que não está conectado ao GitHub, Claude Code agrupa seu repositório local e o carrega diretamente para a sessão em nuvem. O pacote inclui seu histórico completo de repositório em todas as branches, mais quaisquer alterações não confirmadas em arquivos rastreados.124Quando você executa `claude --cloud` a partir de um repositório que não tem um remoto git, ou a partir de um repositório github.com no qual o Claude GitHub App não está instalado, Claude Code agrupa seu repositório local e o carrega diretamente para a sessão em nuvem. Isso se aplica mesmo se você conectou GitHub com `/web-setup`. O pacote inclui seu histórico completo de repositório em todas as branches, mais quaisquer alterações não confirmadas em arquivos rastreados.

125 125 

126Em macOS, Linux e WSL, Claude Code deixa alterações não confirmadas em arquivos nomeados como credenciais ou chaves fora do upload e nomeia os arquivos que deixou de fora. Isso cobre arquivos `.env`, arquivos Terraform `*.tfvars` e arquivos de chave como `id_rsa` e `*.pem`. A sessão inicia com a versão confirmada de cada um, ou sem o arquivo se nenhum estiver confirmado. Em um worktree vinculado, submódulo ou layout similar, Claude Code carrega essas alterações com o resto e nomeia os arquivos que carrega.126Em macOS, Linux e WSL, Claude Code deixa alterações não confirmadas em arquivos nomeados como credenciais ou chaves fora do upload e nomeia os arquivos que deixou de fora. Isso cobre arquivos `.env`, arquivos Terraform `*.tfvars` e arquivos de chave como `id_rsa` e `*.pem`. A sessão inicia com a versão confirmada de cada um, ou sem o arquivo se nenhum estiver confirmado. Em um worktree vinculado, submódulo ou layout similar, Claude Code carrega essas alterações com o resto e nomeia os arquivos que carrega.

127 127 

128Este fallback é ativado automaticamente quando o acesso ao GitHub não está disponível. Para forçá-lo mesmo quando o GitHub está conectado, defina `CCR_FORCE_BUNDLE=1`:128Para carregar um pacote mesmo quando Claude Code clonaría do remoto, defina `CCR_FORCE_BUNDLE=1`:

129 129 

130```bash theme={null}130```bash theme={null}

131CCR_FORCE_BUNDLE=1 claude --cloud "Run the test suite and fix any failures"131CCR_FORCE_BUNDLE=1 claude --cloud "Run the test suite and fix any failures"


136* O diretório deve ser um repositório git com pelo menos um commit136* O diretório deve ser um repositório git com pelo menos um commit

137* O repositório agrupado deve estar abaixo de 100 MB. Repositórios maiores voltam a agrupar apenas a branch atual, depois a um snapshot único e compactado da árvore de trabalho, e falham apenas se o snapshot ainda for muito grande137* O repositório agrupado deve estar abaixo de 100 MB. Repositórios maiores voltam a agrupar apenas a branch atual, depois a um snapshot único e compactado da árvore de trabalho, e falham apenas se o snapshot ainda for muito grande

138* Arquivos não rastreados não estão incluídos; execute `git add` em arquivos que você deseja que a sessão em nuvem veja138* Arquivos não rastreados não estão incluídos; execute `git add` em arquivos que você deseja que a sessão em nuvem veja

139* As sessões criadas a partir de um pacote não podem enviar de volta para um remoto a menos que você também tenha [autenticação do GitHub](#github-authentication-options) configurada139* As sessões criadas a partir de um pacote podem enviar de volta para um remoto GitHub apenas quando sua [conexão GitHub](#github-authentication-options) tem acesso de push para esse repositório

140 140 

141<h3 id="send-follow-ups-from-the-cli">141<h3 id="send-follow-ups-from-the-cli">

142 Envie follow-ups a partir do CLI142 Envie follow-ups a partir do CLI


261 261 

262Cada sessão mostra um indicador de diff com linhas adicionadas e removidas, como `+42 -18`. Selecione-o para abrir a visualização de diff, deixe comentários inline em linhas específicas e envie-os para Claude com sua próxima mensagem.262Cada sessão mostra um indicador de diff com linhas adicionadas e removidas, como `+42 -18`. Selecione-o para abrir a visualização de diff, deixe comentários inline em linhas específicas e envie-os para Claude com sua próxima mensagem.

263 263 

264Claude Code calcula esses diffs, incluindo os diffs por arquivo mostrados conforme Claude edita, a partir do conteúdo bruto do blob git, portanto os drivers de diff e filtros `textconv` configurados no repositório não se aplicam.264Claude Code calcula esses diffs, incluindo os diffs por arquivo mostrados conforme Claude edita, a partir do conteúdo bruto do blob git, portanto os drivers de diff e filtros `textconv` configurados no repositório não se aplicam. Para um arquivo em um repositório que não é um dos checkouts da própria sessão, como um clonado dentro do workspace durante a sessão, o diff por arquivo mostra a edição de Claude em si em vez de uma comparação git.

265 265 

266Consulte [Revisar e iterar](/docs/pt/web-quickstart#review-and-iterate) para o passo a passo completo, incluindo criação de PR. Para fazer Claude monitorar o PR para falhas de CI e comentários de revisão automaticamente, consulte [Corrigir automaticamente pull requests](#auto-fix-pull-requests).266Consulte [Revisar e iterar](/docs/pt/web-quickstart#review-and-iterate) para o passo a passo completo, incluindo criação de PR. Para fazer Claude monitorar o PR para falhas de CI e comentários de revisão automaticamente, consulte [Corrigir automaticamente pull requests](#auto-fix-pull-requests).

267 267 


352Cada sessão em nuvem é separada de sua máquina e de outras sessões através de várias camadas:352Cada sessão em nuvem é separada de sua máquina e de outras sessões através de várias camadas:

353 353 

354* **Máquinas virtuais isoladas**: cada sessão é executada em uma VM isolada gerenciada pela Anthropic. As sessões que sua organização roteia para um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) são executadas em sua própria infraestrutura em vez disso, onde o isolamento é responsabilidade de sua implantação354* **Máquinas virtuais isoladas**: cada sessão é executada em uma VM isolada gerenciada pela Anthropic. As sessões que sua organização roteia para um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) são executadas em sua própria infraestrutura em vez disso, onde o isolamento é responsabilidade de sua implantação

355* **Controles de acesso à rede**: em ambientes hospedados pela Anthropic, o acesso à rede é limitado por padrão e pode ser desabilitado. Em um ambiente auto-hospedado, você restringe a saída da sessão em seu próprio limite de rede. Ao executar com acesso à rede desabilitado, Claude Code ainda pode se comunicar com a API Anthropic, o que pode permitir que dados saiam da VM.355* <span id="default-allowed-domains" />**Controles de acesso à rede**: em ambientes hospedados pela Anthropic, o acesso à rede é limitado por padrão e pode ser desabilitado. Veja [Acesso à rede](/docs/pt/cloud-environments#network-access) para os níveis de acesso, os [domínios padrão permitidos](/docs/pt/cloud-environments#default-allowed-domains) e o tráfego que não passa pela lista de permissões. Em um ambiente auto-hospedado, você restringe a saída da sessão em seu próprio limite de rede. Ao executar com acesso à rede desabilitado, Claude Code ainda pode se comunicar com a API Anthropic, o que pode permitir que dados saiam da VM.

356* **Proteção de credenciais**: em ambientes hospedados pela Anthropic, credenciais git e chaves de assinatura ficam fora da sandbox, e um proxy autentica em nome da sessão com credenciais com escopo. Em um ambiente auto-hospedado, sua implantação fornece credenciais git; veja [Configure git](/docs/pt/self-hosted-environments-deploy#configure-git)356* **Proteção de credenciais**: em ambientes hospedados pela Anthropic, credenciais git e chaves de assinatura ficam fora da sandbox, e um proxy autentica em nome da sessão com credenciais com escopo. Em um ambiente auto-hospedado, sua implantação fornece credenciais git; veja [Configure git](/docs/pt/self-hosted-environments-deploy#configure-git)

357* **Credenciais de API**: em ambientes hospedados pela Anthropic nos planos Pro e Max, chaves que você [adiciona a um ambiente em nuvem](/docs/pt/cloud-environments#add-api-credentials) ficam fora da sandbox da mesma forma, anexadas a solicitações correspondentes depois que saem da sessão. Um ambiente auto-hospedado não tem credenciais de API, e os planos Team e Enterprise ainda não têm357* **Credenciais de API**: em ambientes hospedados pela Anthropic nos planos Pro e Max, chaves que você [adiciona a um ambiente em nuvem](/docs/pt/cloud-environments#add-api-credentials) ficam fora da sandbox da mesma forma, anexadas a solicitações correspondentes depois que saem da sessão. Um ambiente auto-hospedado não tem credenciais de API, e os planos Team e Enterprise ainda não têm

358* **Análise segura**: o código é analisado e modificado dentro do ambiente isolado da sessão antes de criar PRs358* **Análise segura**: o código é analisado e modificado dentro do ambiente isolado da sessão antes de criar PRs


371 371 

372* Verifique [status.claude.com](https://status.claude.com) para incidentes de sessão em nuvem372* Verifique [status.claude.com](https://status.claude.com) para incidentes de sessão em nuvem

373* Tente novamente após um minuto, já que a capacidade é provisionada sob demanda373* Tente novamente após um minuto, já que a capacidade é provisionada sob demanda

374* Confirme que seu repositório é acessível. A conta GitHub conectada deve ter acesso ao repositório no GitHub, seja através da autorização do Claude GitHub App ou um token `gh` sincronizado via `/web-setup`. Instalar o App no repositório não é necessário. Veja [Opções de autenticação do GitHub](#github-authentication-options).374* Confirme que sua conexão GitHub pode acessar o repositório seguindo [No repositories appear after connecting GitHub](/docs/pt/web-quickstart#no-repositories-appear-after-connecting-github)

375 375 

376<h3 id="unable-to-get-organization-uuid">376<h3 id="unable-to-get-organization-uuid">

377 Unable to get organization UUID377 Unable to get organization UUID


395 Environment expired395 Environment expired

396</h3>396</h3>

397 397 

398As sessões em nuvem param após um período de inatividade e a VM da sessão é recuperada. Na web, a sessão é marcada como expirada na lista de sessões.398As sessões em nuvem param após um período de inatividade e a VM da sessão é recuperada. Uma sessão é considerada inativa enquanto aguarda você aprovar uma chamada de ferramenta [MCP connector](/docs/pt/cloud-environments#network-access) ou entrar em um servidor MCP, e pode expirar durante essa espera. Na web, a sessão é marcada como expirada na lista de sessões.

399 399 

400Reabra a sessão de [claude.ai/code](https://claude.ai/code) para provisionar uma VM fresca com seu histórico de conversa restaurado. O trabalho em segundo plano que ainda estava em execução quando a VM foi recuperada, como subagentes e comandos shell, não é restaurado.400Reabra a sessão de [claude.ai/code](https://claude.ai/code) para provisionar uma VM fresca com seu histórico de conversa restaurado. O trabalho em segundo plano que ainda estava em execução quando a VM foi recuperada, como subagentes e comandos shell, não é restaurado.

401 401 


407 407 

408* **Limites de taxa**: Claude Code na web compartilha limites de taxa com todo o outro uso de Claude e Claude Code dentro de sua conta. Executar múltiplas tarefas em paralelo consome mais limites de taxa proporcionalmente. Não há cobrança de computação separada para a VM em nuvem.408* **Limites de taxa**: Claude Code na web compartilha limites de taxa com todo o outro uso de Claude e Claude Code dentro de sua conta. Executar múltiplas tarefas em paralelo consome mais limites de taxa proporcionalmente. Não há cobrança de computação separada para a VM em nuvem.

409* **Autenticação de repositório**: você pode apenas mover sessões de web para local quando está autenticado na mesma conta409* **Autenticação de repositório**: você pode apenas mover sessões de web para local quando está autenticado na mesma conta

410* **Restrições de plataforma**: clonagem de repositório e criação de pull request requerem GitHub. Instâncias [GitHub Enterprise Server](/docs/pt/github-enterprise-server) auto-hospedadas são suportadas para planos Team e Enterprise. GitLab, Bitbucket e outros repositórios não-GitHub podem ser enviados para sessões em nuvem como um [pacote local](#send-local-repositories-without-github), mas a sessão não pode enviar resultados de volta para o remoto410* **Restrições de plataforma**: clonagem de repositório e criação de pull request requerem GitHub. Instâncias [GitHub Enterprise Server](/docs/pt/github-enterprise-server) auto-hospedadas são suportadas para planos Team e Enterprise. Você pode enviar um repositório GitLab, Bitbucket ou outro repositório não-GitHub para uma sessão em nuvem como um [pacote local](#send-local-repositories-without-github) definindo `CCR_FORCE_BUNDLE=1`, mas a sessão não pode enviar resultados de volta para esse remoto

411* **IP allowlist da organização**: as sessões em nuvem chamam a API Anthropic a partir de infraestrutura gerenciada pela Anthropic, não de sua rede, enquanto as sessões em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) a chamam a partir de sua própria rede. Se sua organização tem [IP allowlisting](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) habilitado, cada sessão em nuvem hospedada pela Anthropic falha com um erro de autenticação. O mesmo se aplica a [Code Review](/docs/pt/code-review) e a [routines](/docs/pt/routines) que são executadas em ambientes hospedados pela Anthropic; uma routine roteada para um ambiente auto-hospedado chama a API a partir de sua própria rede. Entre em contato com [suporte Anthropic](https://support.claude.com/) para isentar serviços hospedados pela Anthropic do allowlist de IP de sua organização.411* **IP allowlist da organização**: as sessões em nuvem chamam a API Anthropic a partir de infraestrutura gerenciada pela Anthropic, não de sua rede, enquanto as sessões em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) a chamam a partir de sua própria rede. Se sua organização tem [IP allowlisting](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) habilitado, cada sessão em nuvem hospedada pela Anthropic falha com um erro de autenticação. O mesmo se aplica a [Code Review](/docs/pt/code-review) e a [routines](/docs/pt/routines) que são executadas em ambientes hospedados pela Anthropic; uma routine roteada para um ambiente auto-hospedado chama a API a partir de sua própria rede. Entre em contato com [suporte Anthropic](https://support.claude.com/) para isentar serviços hospedados pela Anthropic do allowlist de IP de sua organização.

412 412 

413<h2 id="related-resources">413<h2 id="related-resources">

claude-security.md +171 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Digitalize seu código em busca de vulnerabilidades

6 

7> Instale o plugin Claude Security para digitalizar seu código em busca de vulnerabilidades em uma sessão Claude Code e transforme as descobertas em patches que você revisa e aplica.

8 

9O plugin Claude Security executa uma digitalização de vulnerabilidades multi-agente de seu código em uma sessão Claude Code. Uma equipe de agentes Claude mapeia sua arquitetura, constrói um modelo de ameaça, procura por vulnerabilidades e revisa independentemente cada descoberta antes de escrever o relatório. Use o plugin para digitalizar um repositório inteiro ou [apenas um conjunto de alterações](#scan-only-your-changes), como o diff de uma branch, o diff de uma solicitação de pull ou um único commit, depois transforme as descobertas que você escolher em patches que você revisa e aplica você mesmo.

10 

11O plugin é executado localmente em sua sessão, usa quaisquer modelos aos quais você tenha acesso no Claude Code, e cada digitalização conta contra os limites de uso do seu plano. Se você deseja um serviço gerenciado que monitore seus repositórios, ou deseja executar digitalizações no [Claude Mythos 5](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), consulte o produto [Claude Security](https://claude.com/product/claude-security), disponível no plano Enterprise. O plugin alcança código que o produto gerenciado não consegue alcançar, como repositórios hospedados no GitLab ou Bitbucket, ou em redes que não permitem conexões de entrada.

12 

13O plugin também é distinto das ferramentas de revisão já presentes no Claude Code: o [plugin de orientação de segurança](/docs/pt/security-guidance) revisa o código conforme Claude o escreve, [`/security-review`](/docs/pt/commands#all-commands) executa uma única passagem em sua branch, e [Code Review](/docs/pt/code-review) revisa solicitações de pull. Para saber como as camadas se empilham, consulte [Como o plugin se encaixa com outras ferramentas de segurança](#how-the-plugin-fits-with-other-security-tools).

14 

15<h2 id="prerequisites">

16 Pré-requisitos

17</h2>

18 

19Para executar o plugin, você precisa de:

20 

21* Um plano pago, para os [fluxos de trabalho dinâmicos](/docs/pt/workflows) que a digitalização usa para orquestrar seus agentes. No Pro, ative-os a partir da linha Dynamic workflows em `/config`.

22* Python 3.9 ou posterior disponível em seu `PATH` como `python3`. Verifique com `python3 --version`. A ferramenta do plugin usa apenas a biblioteca padrão do Python, portanto nada é instalado.

23* Linux, macOS ou Windows.

24* Git, para digitalizações de alterações e para transformar descobertas em patches; esses trabalhos não suportam outros sistemas de controle de versão. Uma digitalização completa funciona em qualquer diretório, com ou sem controle de versão.

25 

26<h2 id="install-the-plugin">

27 Instale o plugin

28</h2>

29 

30Em uma sessão Claude Code, instale a partir do [marketplace oficial da Anthropic](/docs/pt/discover-plugins#official-anthropic-marketplace):

31 

32```text theme={null}

33/plugin install claude-security@claude-plugins-official

34```

35 

36O comando abre os detalhes do plugin, onde você escolhe um [escopo de instalação](/docs/pt/discover-plugins#install-plugins) para iniciar a instalação.

37 

38Se a instalação falhar, a correção depende de qual mensagem Claude Code relata:

39 

40* Se relatar `Marketplace "claude-plugins-official" not found`, adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.

41* Se relatar que não consegue [encontrar o plugin no marketplace](/docs/pt/discover-plugins#install-plugins), verifique o nome do plugin para um erro de digitação.

42 

43Verifique o resumo da instalação. Se relatar `Run /reload-plugins to activate.`, consulte [Aplicar alterações de plugin sem reiniciar](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) para ativar o plugin em sua sessão atual.

44 

45Assim que o plugin estiver ativo, você está pronto para [digitalizar e corrigir seu repositório de código](#scan-and-fix-your-codebase).

46 

47<h3 id="uninstall-the-plugin">

48 Desinstale o plugin

49</h3>

50 

51Para remover o plugin, desinstale-o do menu `/plugin`, ou execute `claude plugin uninstall claude-security` em seu terminal.

52 

53<h2 id="scan-and-fix-your-codebase">

54 Digitalize e corrija seu repositório de código

55</h2>

56 

57O plugin adiciona um comando, `/claude-security`, que abre um menu de seus três trabalhos: digitalizar o repositório de código, digitalizar um conjunto de alterações e sugerir patches. O caminho feliz executa uma digitalização completa e depois transforma suas descobertas em patches:

58 

59<Steps>

60 <Step title="Abra o menu Claude Security">

61 Execute `/claude-security` e escolha **Scan codebase**.

62 </Step>

63 

64 <Step title="Escolha o que digitalizar">

65 O plugin lê seu repositório primeiro, depois oferece o repositório inteiro ou uma área focada, com a contagem de arquivos e custo relativo de cada opção indicados. Escolha o repositório inteiro, ou responda "I don't know" e o plugin escolhe um padrão sensato para o tamanho do seu repositório.

66 </Step>

67 

68 <Step title="Confirme a execução">

69 Uma digitalização pode levar um tempo, pode usar um número significativo de tokens e precisa que Claude Code permaneça aberto enquanto é concluída. Nada é executado até você confirmar.

70 </Step>

71 

72 <Step title="Leia o relatório">

73 Enquanto a digitalização é executada, ela relata cada estágio conforme começa, com o detalhe disponível em [`/workflows`](/docs/pt/workflows). Os resultados chegam em um diretório com timestamp em seu repositório, descrito em [Leia os resultados da digitalização](#read-the-scan-results).

74 </Step>

75 

76 <Step title="Transforme descobertas em patches">

77 Execute `/claude-security` novamente e escolha **Suggest patches**, depois escolha quais descobertas abordar. Os patches revisados chegam na pasta `patches/` do relatório; [Corrija descobertas](#fix-findings) cobre como cada patch é construído e revisado.

78 </Step>

79 

80 <Step title="Aplique os patches que você aceita">

81 Aplique cada patch do seu shell com `git apply`, em seu próprio pull request. Os patches nunca são aplicados automaticamente.

82 </Step>

83</Steps>

84 

85Você não precisa começar pelo menu: peça um trabalho diretamente, como argumentos para o comando, como `/claude-security scan my branch`, ou em linguagem simples, como "scan commit abc1234". O plugin funciona melhor em [modo automático](/docs/pt/permission-modes), que permite que os agentes da digitalização prossigam sem um prompt de permissão em cada etapa.

86 

87<h3 id="scan-only-your-changes">

88 Digitalize apenas suas alterações

89</h3>

90 

91Quando sua branch tem commits que sua base não tem, o menu `/claude-security` oferece digitalizar apenas esse diff, para que você possa verificar uma branch antes de fazer merge. Você também pode digitalizar um de seus pull requests abertos, ou um único commit pedindo por ele, como "scan commit abc1234". Apenas alterações confirmadas são digitalizadas: confirme ou faça stash de edições em andamento primeiro, ou execute uma digitalização completa, que lê a árvore de trabalho.

92 

93Digitalizações de alterações precisam de um repositório git; digitalizações completas de um diretório sem versão ainda funcionam. Encontrar seus pull requests abertos é o único passo que alcança a rede, e é oferecido apenas quando sua sessão já tem permissão para executar a CLI do GitHub e `gh` está conectado.

94 

95<h3 id="scope-large-repositories">

96 Escopo de repositórios grandes

97</h3>

98 

99Em um repositório grande, digitalize uma área por vez em vez de toda a árvore. Escolha um dos escopos focados que o plugin oferece, como sua camada de API ou seu código de autenticação, e a execução se dimensiona para o que você escolher. A seção de cobertura do relatório indica o que foi e o que não foi examinado. Execute outra digitalização em uma área diferente a qualquer momento.

100 

101<h3 id="read-the-scan-results">

102 Leia os resultados da digitalização

103</h3>

104 

105Cada digitalização escreve seus resultados em um diretório `CLAUDE-SECURITY-<timestamp>/` com timestamp em seu repositório:

106 

107* **`CLAUDE-SECURITY-RESULTS.md`**: o relatório, com o ID de cada descoberta, como `F1`, além de seu impacto, cenário de exploração, severidade, confiança e recomendação

108* **`CLAUDE-SECURITY-RESULTS.jsonl`**: as mesmas descobertas em forma legível por máquina, um objeto JSON por linha

109* **`CLAUDE-SECURITY-RESULTS.sarif`**: as mesmas descobertas como um log [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) para varredura de código do GitHub e qualquer outra ferramenta que leia o padrão. A digitalização classifica descobertas sob suas categorias de fraqueza [CWE](https://cwe.mitre.org/)

110* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: o carimbo de revisão, registrando qual commit foi digitalizado, com qual esforço, se alterações não confirmadas faziam parte da árvore digitalizada e quão completamente a execução foi verificada, para que um relatório sempre esteja vinculado ao código que descreve. Uma digitalização fora do controle de versão carimba `UNVERSIONED` no lugar do commit

111 

112Esse diretório é a única alteração que uma digitalização faz em seu checkout, e ele carrega seu próprio `.gitignore`, para que um `git add` perdido nunca varre um relatório para um commit. Para manter um relatório no histórico para uma trilha de auditoria, delete esse único arquivo `.gitignore` e confirme o diretório como qualquer outro.

113 

114As descobertas aparecem no relatório apenas após agentes verificadores independentes as analisarem, o que mantém os relatórios curtos e vale a pena ler. Digitalizações são não determinísticas: duas digitalizações do mesmo código podem descobrir diferentes descobertas. Execute digitalizações regularmente e use os carimbos de revisão para atribuir cada relatório ao código exato e às configurações que cobriu.

115 

116<h2 id="fix-findings">

117 Corrija descobertas

118</h2>

119 

120Inicie o fluxo de correção escolhendo **Suggest patches** no menu `/claude-security`, ou peça em linguagem simples, como "fix finding F3", depois escolha quais descobertas do relatório abordar. Os patches são construídos contra código confirmado, e o relatório tem que ainda descrever o código que você tem: descobertas cujo código mudou desde então são puladas com uma nota, e o plugin oferece uma digitalização fresca em vez de fazer patch de um relatório obsoleto. Cada patch é rascunhado em uma cópia de rascunho do seu repositório, para que seus arquivos de origem permaneçam intocados até você aplicar um patch você mesmo.

121 

122Antes da entrega, cada patch é revisado por um agente independente do que o escreveu, que executa os testes do seu projeto contra a alteração quando o código os tem e lê o diff por seus próprios termos para qualquer coisa nova que possa introduzir. Um patch é escrito apenas quando essa revisão pode garantir que a alteração aborda a descoberta, não introduz nenhuma nova vulnerabilidade e deixa o comportamento inalterado. Quando não consegue garantir todos os três, você recebe uma nota curta explicando por que em vez de um patch.

123 

124<h3 id="patches-are-never-applied-automatically">

125 Os patches nunca são aplicados automaticamente

126</h3>

127 

128Aplicar um patch é sempre sua decisão. Os patches chegam na pasta `patches/` do relatório, um `F<n>.patch` por descoberta com uma nota ao lado explicando a alteração. Aplique um do seu shell, ou peça a Claude para aplicá-lo e abrir um pull request:

129 

130```bash theme={null}

131git apply CLAUDE-SECURITY-<timestamp>/patches/F1.patch

132```

133 

134Quando o código com patch não tem testes, a nota do patch diz isso, para que você saiba que sua revisão foi executada sem uma passagem de teste. Aplique cada patch em seu próprio pull request para que possa ser revisado e testado por conta própria.

135 

136<h2 id="how-the-plugin-fits-with-other-security-tools">

137 Como o plugin se encaixa com outras ferramentas de segurança

138</h2>

139 

140O plugin Claude Security é a camada de digitalização profunda sob demanda em uma pilha de defesa em profundidade, ao lado do [plugin de orientação de segurança](/docs/pt/security-guidance), [`/security-review`](/docs/pt/commands#all-commands), [Code Review](/docs/pt/code-review), o produto [Claude Security](https://claude.com/product/claude-security) gerenciado e seus scanners existentes:

141 

142| Estágio | Ferramenta | O que cobre |

143| :---------------------------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------- |

144| Na sessão | [Plugin de orientação de segurança](/docs/pt/security-guidance) | Vulnerabilidades comuns no código que Claude escreve, corrigidas na mesma sessão |

145| Sob demanda, passagem única | [`/security-review`](/docs/pt/commands#all-commands) | Uma passagem de segurança única na branch atual |

146| Sob demanda, digitalização profunda | Plugin Claude Security | Digitalização com múltiplos agentes de um repositório ou diff, com descobertas e patches revisados independentemente |

147| No pull request | [Code Review](/docs/pt/code-review), planos Team e Enterprise | Revisão de correção e segurança com múltiplos agentes com contexto completo do repositório |

148| Gerenciado | [Claude Security](https://claude.com/product/claude-security), plano Enterprise | Digitalização hospedada que monitora repositórios conectados |

149| Em CI | Seus scanners de análise estática e dependência existentes | Regras específicas de linguagem, verificações de cadeia de suprimentos e aplicação de política |

150 

151O plugin não substitui suas ferramentas de segurança de código-fonte existentes. Execute-o ao lado de análise estática, digitalização de dependência e revisão de código: ele raciocina sobre seu código da forma como um pesquisador de segurança humano faria, o que complementa as verificações determinísticas que essas ferramentas fornecem.

152 

153<h2 id="troubleshooting">

154 Solução de problemas

155</h2>

156 

157**O menu `/claude-security` abre com um aviso do Python.** O plugin precisa de `python3` 3.9 ou posterior em seu `PATH`. Quando não consegue encontrar `python3` em tudo, o menu avisa que Claude Security não funcionará até que um seja instalado; quando o primeiro `python3` em seu `PATH` é mais antigo, o aviso nomeia a versão que encontrou. Instale Python 3, ou coloque um `python3` mais novo primeiro em seu `PATH`, depois inicie uma nova sessão.

158 

159**Você pode ver um aviso "safeguards flagged this message" ao digitalizar em um modelo Fable.** A mensagem nomeia o modelo, por exemplo "Fable 5.1's safeguards flagged this message". Os classificadores de segurança cibernética do Fable sinalizam certas solicitações, e Claude Code re-executa uma solicitação sinalizada em um modelo Opus através do [fallback automático de modelo](/docs/pt/model-config#automatic-model-fallback). Isso é esperado, e a digitalização ainda deve ser concluída com sucesso.

160 

161<h2 id="related-resources">

162 Recursos relacionados

163</h2>

164 

165Para aprofundar nos tópicos que esta página toca:

166 

167* [Plugin de orientação de segurança](/docs/pt/security-guidance): capture problemas no código conforme Claude o escreve, na mesma sessão

168* [Code Review](/docs/pt/code-review): configure a revisão com múltiplos agentes no tempo de PR

169* [Claude Security](https://claude.com/product/claude-security): o serviço gerenciado que monitora repositórios conectados

170* [Segurança do Claude Code](/docs/pt/security): como Claude Code aborda confiança, permissões e salvaguardas

171* [Descubra e instale plugins](/docs/pt/discover-plugins#official-anthropic-marketplace): navegue por outros plugins oficiais

claude-tag.md +11 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Tag

6 

7> Traga Claude para os canais Slack da sua equipe com Claude Tag e encontre a documentação de configuração e uso em claude.com.

8 

9[Claude Tag](https://claude.com/product/tag) é uma integração do Slack que executa `@Claude` nos canais da sua equipe como identidade compartilhada da sua organização com acesso configurado pelo administrador. Qualquer pessoa em um canal pode marcar `@Claude` em uma thread e atribuir uma tarefa a ele. Leia a [documentação do Claude Tag](https://claude.com/docs/claude-tag/overview) em claude.com para configurá-lo e começar a usá-lo.

10 

11Claude Tag está disponível nos planos Team e Enterprise, e é distinto do anterior [Claude Code in Slack](/docs/pt/slack), que executa cada sessão sob a conta de um usuário individual. Nos planos Pro e Max, onde Claude Tag não está disponível, Claude Code in Slack permanece como o caminho de configuração.

cli-reference.md +22 −10

Details

13Você pode iniciar sessões, canalizar conteúdo, retomar conversas e gerenciar atualizações com estes comandos:13Você pode iniciar sessões, canalizar conteúdo, retomar conversas e gerenciar atualizações com estes comandos:

14 14 

15| Comando | Descrição | Exemplo |15| Comando | Descrição | Exemplo |

16| :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |16| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------- |

17| `claude` | Iniciar sessão interativa | `claude` |17| `claude` | Iniciar sessão interativa | `claude` |

18| `claude "query"` | Iniciar sessão interativa com prompt inicial | `claude "explain this project"` |18| `claude "query"` | Iniciar sessão interativa com prompt inicial | `claude "explain this project"` |

19| `claude -p "query"` | Consultar via SDK e sair | `claude -p "explain this function"` |19| `claude -p "query"` | Consultar via SDK e sair | `claude -p "explain this function"` |


34| `claude daemon status` | Imprimir o estado do [supervisor](/docs/pt/agent-view#the-supervisor-process) de sessão de fundo, versão, diretório de socket e contagem de workers para diagnósticos. Sai com 1 se o supervisor não estiver em execução | `claude daemon status` |34| `claude daemon status` | Imprimir o estado do [supervisor](/docs/pt/agent-view#the-supervisor-process) de sessão de fundo, versão, diretório de socket e contagem de workers para diagnósticos. Sai com 1 se o supervisor não estiver em execução | `claude daemon status` |

35| `claude daemon stop --any` | Parar o [supervisor](/docs/pt/agent-view#the-supervisor-process) de sessão de fundo e as sessões que ele hospeda. Passe `--keep-workers` para deixar as sessões de fundo em execução para que o próximo supervisor se reconecte a elas. `--any` confirma a parada de um supervisor sob demanda, que é o padrão. Use isto para recuperar de um [supervisor não responsivo](/docs/pt/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |35| `claude daemon stop --any` | Parar o [supervisor](/docs/pt/agent-view#the-supervisor-process) de sessão de fundo e as sessões que ele hospeda. Passe `--keep-workers` para deixar as sessões de fundo em execução para que o próximo supervisor se reconecte a elas. `--any` confirma a parada de um supervisor sob demanda, que é o padrão. Use isto para recuperar de um [supervisor não responsivo](/docs/pt/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Imprimir diagnósticos de instalação e configurações somente leitura do terminal sem iniciar uma sessão, incluindo saúde da instalação, erros de validação de arquivo de configurações e elegibilidade de Controle Remoto. Para a verificação de configuração em sessão que também pode aplicar correções, execute [`/doctor`](/docs/pt/commands#all-commands) | `claude doctor` |36| `claude doctor` | Imprimir diagnósticos de instalação e configurações somente leitura do terminal sem iniciar uma sessão, incluindo saúde da instalação, erros de validação de arquivo de configurações e elegibilidade de Controle Remoto. Para a verificação de configuração em sessão que também pode aplicar correções, execute [`/doctor`](/docs/pt/commands#all-commands) | `claude doctor` |

37| `claude import [codex\|gemini]` | Iniciar uma sessão interativa que executa [`/import`](/docs/pt/commands#all-commands) para trazer configuração de outros agentes de codificação para Claude Code. Aceita as mesmas opções `--dry-run` e `--yes` do comando. Não disponível no Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou Claude Platform na AWS. Também indisponível quando você desativa [busca de feature-flag](/docs/pt/env-vars#features-that-need-feature-flag-fetching). Requer Claude Code v2.1.213 ou posterior | `claude import codex --dry-run` |37| `claude import [source]` | Iniciar uma sessão interativa que executa [`/import`](/docs/pt/commands#all-commands) para trazer configuração de outros agentes de codificação para Claude Code. Aceita as mesmas opções `--dry-run` e `--yes` do comando. Não disponível no Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou Claude Platform na AWS. Também indisponível quando você desativa [busca de feature-flag](/docs/pt/env-vars#features-that-need-feature-flag-fetching). Requer Claude Code v2.1.213 ou posterior | `claude import codex --dry-run` |

38| `claude logs <id>` | Imprimir saída recente de uma [sessão de fundo](/docs/pt/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |38| `claude logs <id>` | Imprimir saída recente de uma [sessão de fundo](/docs/pt/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |

39| `claude mcp` | Configurar servidores Model Context Protocol (MCP) | Veja a [documentação Claude Code MCP](/docs/pt/mcp). |39| `claude mcp` | Configurar servidores Model Context Protocol (MCP) | Veja a [documentação Claude Code MCP](/docs/pt/mcp). |

40| `claude mcp login <name>` | Executar o fluxo OAuth de um servidor MCP configurado sem abrir o painel interativo `/mcp`. Funciona para servidores HTTP, SSE e conectores claude.ai. Adicione `--no-browser` via SSH para imprimir a URL de autorização em vez de abrir um navegador, depois cole a URL de redirecionamento de volta no prompt. Requer Claude Code v2.1.186 ou posterior. Veja [Autenticar a partir da linha de comando](/docs/pt/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |40| `claude mcp login <name>` | Executar o fluxo OAuth de um servidor MCP configurado sem abrir o painel interativo `/mcp`. Funciona para servidores HTTP, SSE e conectores claude.ai. Adicione `--no-browser` via SSH para imprimir a URL de autorização em vez de abrir um navegador, depois cole a URL de redirecionamento de volta no prompt. Requer Claude Code v2.1.186 ou posterior. Veja [Autenticar a partir da linha de comando](/docs/pt/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |


43| `claude project purge [path]` | Excluir todo o estado local do Claude Code para um projeto: transcrições, listas de tarefas, logs de depuração, histórico de edição de arquivo, linhas de histórico de prompt e a entrada do projeto em `~/.claude.json`. Omita `[path]` para escolher em uma lista interativa. Sinalizadores: `--dry-run` para visualizar, `-y`/`--yes` para pular confirmação, `-i`/`--interactive` para confirmar cada item, `--all` para cada projeto. Veja [Limpar dados locais](/docs/pt/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |43| `claude project purge [path]` | Excluir todo o estado local do Claude Code para um projeto: transcrições, listas de tarefas, logs de depuração, histórico de edição de arquivo, linhas de histórico de prompt e a entrada do projeto em `~/.claude.json`. Omita `[path]` para escolher em uma lista interativa. Sinalizadores: `--dry-run` para visualizar, `-y`/`--yes` para pular confirmação, `-i`/`--interactive` para confirmar cada item, `--all` para cada projeto. Veja [Limpar dados locais](/docs/pt/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

44| `claude remote-control` | Iniciar um servidor [Remote Control](/docs/pt/remote-control) para controlar Claude Code a partir de Claude.ai ou do aplicativo Claude. Executa em modo servidor (sem sessão interativa local). Veja [Sinalizadores de modo servidor](/docs/pt/remote-control#start-a-remote-control-session). Depois de parar o servidor, você pode trazer de volta as sessões que ele estava servindo. Veja [Retomar sessões após parar o servidor](/docs/pt/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |44| `claude remote-control` | Iniciar um servidor [Remote Control](/docs/pt/remote-control) para controlar Claude Code a partir de Claude.ai ou do aplicativo Claude. Executa em modo servidor (sem sessão interativa local). Veja [Sinalizadores de modo servidor](/docs/pt/remote-control#start-a-remote-control-session). Depois de parar o servidor, você pode trazer de volta as sessões que ele estava servindo. Veja [Retomar sessões após parar o servidor](/docs/pt/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |

45| `claude respawn <id>` | Reiniciar uma [sessão de fundo](/docs/pt/agent-view#manage-sessions-from-the-shell), em execução ou parada, com sua conversa intacta. Use `--all` para reiniciar cada sessão em execução, por exemplo, para pegar um binário Claude Code atualizado | `claude respawn 7c5dcf5d` |45| `claude respawn <id>` | Reiniciar uma [sessão de fundo](/docs/pt/agent-view#manage-sessions-from-the-shell), em execução ou parada, com sua conversa intacta. Use `--all` para reiniciar cada sessão em execução, por exemplo, para pegar um binário Claude Code atualizado | `claude respawn 7c5dcf5d` |

46| `claude rm <id>` | Remover uma [sessão de fundo](/docs/pt/agent-view#manage-sessions-from-the-shell) da lista. A transcrição da conversa permanece em sua máquina local, disponível através de `claude --resume` | `claude rm 7c5dcf5d` |46| `claude rm <id>` | Remover uma [sessão de fundo](/docs/pt/agent-view#manage-sessions-from-the-shell) da lista. Quando a remoção é [recusada sobre a worktree da sessão](/docs/pt/agent-view#what-deleting-a-session-removes) e um segundo `claude rm` pode resolvê-la, a recusa imprime a flag exata e o valor a passar: `--discard-unpushed <commit>@<worktree-id>` descarta uma worktree que tem commits não enviados junto com esses commits, e `--force-remove-worktree <worktree-id>` exclui um diretório worktree que git ou o hook `WorktreeRemove` não conseguiu remover. `--discard-unpushed` requer Claude Code v2.1.260 ou posterior, e `--force-remove-worktree` requer v2.1.268 ou posterior. A transcrição da conversa permanece em sua máquina local, disponível através de `claude --resume` | `claude rm 7c5dcf5d` |

47| `claude self-hosted-runner` | Iniciar um processo de runner que registra esta máquina ou contêiner com um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) e hospeda sessões de nuvem do Claude Code em sua infraestrutura. Execute `claude self-hosted-runner setup` para um passo a passo do operador guiado, `claude self-hosted-runner doctor` para [diagnosticar um runner implantado](/docs/pt/self-hosted-environments-deploy#troubleshooting) e `claude self-hosted-runner orchestrator` para gerar [runners sob demanda](/docs/pt/self-hosted-environments-configuration#on-demand-runners). Requer Claude Code v2.1.224 ou posterior | `claude self-hosted-runner setup` |47| `claude self-hosted-runner` | Iniciar um processo de runner que registra esta máquina ou contêiner com um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) e hospeda sessões de nuvem do Claude Code em sua infraestrutura. Execute `claude self-hosted-runner setup` para um passo a passo do operador guiado, `claude self-hosted-runner doctor` para [diagnosticar um runner implantado](/docs/pt/self-hosted-environments-deploy#troubleshooting) e `claude self-hosted-runner orchestrator` para gerar [runners sob demanda](/docs/pt/self-hosted-environments-configuration#on-demand-runners). Requer Claude Code v2.1.224 ou posterior | `claude self-hosted-runner setup` |

48| `claude setup-token` | Gerar um token OAuth de longa duração para CI e scripts. Imprime o token no terminal sem salvá-lo. Requer uma assinatura Claude. Veja [Gerar um token de longa duração](/docs/pt/authentication#generate-a-long-lived-token) | `claude setup-token` |48| `claude setup-token` | Gerar um token OAuth de longa duração para CI e scripts. Imprime o token no terminal sem salvá-lo. Requer uma assinatura Claude. Veja [Gerar um token de longa duração](/docs/pt/authentication#generate-a-long-lived-token) | `claude setup-token` |

49| `claude stop <id>` | Parar uma [sessão de fundo](/docs/pt/agent-view#manage-sessions-from-the-shell). Também aceita `claude kill` | `claude stop 7c5dcf5d` |49| `claude stop <id>` | Parar uma [sessão de fundo](/docs/pt/agent-view#manage-sessions-from-the-shell). Também aceita `claude kill` | `claude stop 7c5dcf5d` |


85| `--debug` | Ativar modo de depuração com filtragem de categoria opcional, como `--debug='mcp,startup'` ou `--debug='!1p'`. O filtro se vincula apenas na forma `=`; um filtro separado por espaço ativa o modo de depuração sem filtragem | `claude --debug='mcp,startup'` |85| `--debug` | Ativar modo de depuração com filtragem de categoria opcional, como `--debug='mcp,startup'` ou `--debug='!1p'`. O filtro se vincula apenas na forma `=`; um filtro separado por espaço ativa o modo de depuração sem filtragem | `claude --debug='mcp,startup'` |

86| `--debug-file <path>` | Escrever logs de depuração em um caminho de arquivo específico. Ativa implicitamente o modo de depuração. Tem precedência sobre `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |86| `--debug-file <path>` | Escrever logs de depuração em um caminho de arquivo específico. Ativa implicitamente o modo de depuração. Tem precedência sobre `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

87| `--disable-slash-commands` | Desativar todas as skills e comandos para esta sessão | `claude --disable-slash-commands` |87| `--disable-slash-commands` | Desativar todas as skills e comandos para esta sessão | `claude --disable-slash-commands` |

88| `--disallowedTools`, `--disallowed-tools` | Regras de negação. Um nome de ferramenta simples remove as ferramentas correspondentes do contexto do Claude: `"Edit"` remove Edit, `"*"` remove todas as ferramentas e `"mcp__*"` remove todas as ferramentas MCP. Uma regra com escopo como `Bash(rm *)` deixa a ferramenta disponível e nega apenas chamadas correspondentes. Uma regra nomeando [`EndConversation`](/docs/pt/tools-reference#endconversation-tool-behavior) não pode removê-la enquanto qualquer outra ferramenta permanecer | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |88| `--disallowedTools`, `--disallowed-tools` | Regras de negação. Um nome de ferramenta simples remove as ferramentas correspondentes do contexto do Claude: `"Edit"` remove Edit, `"*"` remove todas as ferramentas e `"mcp__*"` remove todas as ferramentas MCP. Uma regra com escopo como `Bash(rm *)` deixa a ferramenta disponível e nega apenas chamadas correspondentes [conforme escrito](/docs/pt/permissions#bash-rule-limits). Uma regra nomeando [`EndConversation`](/docs/pt/tools-reference#endconversation-tool-behavior) não pode removê-la enquanto qualquer outra ferramenta permanecer | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

89| `--effort` | Definir o [nível de esforço](/docs/pt/model-config#adjust-effort-level) para a sessão atual. Opções: `low`, `medium`, `high`, `xhigh`, `max` ou `ultracode`. Os níveis disponíveis dependem do modelo. `ultracode` inicia a sessão em esforço `xhigh` com [ultracode](/docs/pt/workflows#let-claude-decide-with-ultracode) ativado e requer Claude Code v2.1.203 ou posterior. Substitui as configurações [`modelSettings`](/docs/pt/settings-reference#modelsettings) e [`effortLevel`](/docs/pt/settings-reference#effortlevel) para esta sessão e não persiste | `claude --effort high` |89| `--effort` | Definir o [nível de esforço](/docs/pt/model-config#adjust-effort-level) para a sessão atual. Opções: `low`, `medium`, `high`, `xhigh`, `max` ou `ultracode`. Os níveis disponíveis dependem do modelo. `ultracode` inicia a sessão em esforço `xhigh` com [ultracode](/docs/pt/workflows#let-claude-decide-with-ultracode) ativado e requer Claude Code v2.1.203 ou posterior. Substitui as configurações [`modelSettings`](/docs/pt/settings-reference#modelsettings) e [`effortLevel`](/docs/pt/settings-reference#effortlevel) para esta sessão e não persiste | `claude --effort high` |

90| `--enable-auto-mode` | Removido em v2.1.111. Auto mode agora está no ciclo `Shift+Tab` por padrão; use `--permission-mode auto` para iniciar nele | `claude --permission-mode auto` |90| `--enable-auto-mode` | Removido em v2.1.111. Auto mode agora está no ciclo `Shift+Tab` por padrão; use `--permission-mode auto` para iniciar nele | `claude --permission-mode auto` |

91| `--environment <environment-id>` | Criar uma nova sessão em nuvem que é executada no [ambiente auto-hospedado](/docs/pt/self-hosted-environments) com o ID fornecido. IDs de ambiente começam com `ccpool_`. Veja [comportamento de dispatch de `--environment`](/docs/pt/self-hosted-environments-testing#environment-dispatch-behavior) para comportamento de dispatch e as combinações de sinalizadores que ele rejeita. Requer Claude Code v2.1.224 ou posterior | `claude -p "Fix the login bug" --environment ccpool_abc123` |91| `--environment <environment-id>` | Criar uma nova sessão em nuvem que é executada no [ambiente auto-hospedado](/docs/pt/self-hosted-environments) com o ID fornecido. IDs de ambiente começam com `ccpool_`. Veja [comportamento de dispatch de `--environment`](/docs/pt/self-hosted-environments-testing#environment-dispatch-behavior) para comportamento de dispatch e as combinações de sinalizadores que ele rejeita. Requer Claude Code v2.1.224 ou posterior | `claude -p "Fix the login bug" --environment ccpool_abc123` |


93| `--exec` | Executar um comando shell como um trabalho de fundo com suporte PTY em vez de iniciar uma sessão Claude. Use com `--bg` para iniciar a partir do shell | `claude --bg --exec 'pytest -x'` |93| `--exec` | Executar um comando shell como um trabalho de fundo com suporte PTY em vez de iniciar uma sessão Claude. Use com `--bg` para iniciar a partir do shell | `claude --bg --exec 'pytest -x'` |

94| `--fallback-model` | Ativar fallback automático para o(s) modelo(s) especificado(s) quando o modelo primário está sobrecarregado ou não está disponível, por exemplo um modelo descontinuado. Aceita uma lista separada por vírgula tentada em ordem. Veja [Cadeias de modelo fallback](/docs/pt/model-config#fallback-model-chains). Para persistir uma cadeia entre sessões, use a configuração [`fallbackModel`](/docs/pt/settings-reference#fallbackmodel), que este sinalizador substitui | `claude --fallback-model sonnet,haiku` |94| `--fallback-model` | Ativar fallback automático para o(s) modelo(s) especificado(s) quando o modelo primário está sobrecarregado ou não está disponível, por exemplo um modelo descontinuado. Aceita uma lista separada por vírgula tentada em ordem. Veja [Cadeias de modelo fallback](/docs/pt/model-config#fallback-model-chains). Para persistir uma cadeia entre sessões, use a configuração [`fallbackModel`](/docs/pt/settings-reference#fallbackmodel), que este sinalizador substitui | `claude --fallback-model sonnet,haiku` |

95| `--fork-session` | Ao retomar, criar um novo ID de sessão em vez de reutilizar o original (use com `--resume` ou `--continue`) | `claude --resume abc123 --fork-session` |95| `--fork-session` | Ao retomar, criar um novo ID de sessão em vez de reutilizar o original (use com `--resume` ou `--continue`) | `claude --resume abc123 --fork-session` |

96| `--forward-subagent-text` | Emitir blocos de texto e pensamento de [subagent](/docs/pt/sub-agents) no fluxo de saída como mensagens `assistant` e `user` com `parent_tool_use_id` definido, para que você possa reconstruir a transcrição de cada subagent. Sem este sinalizador, Claude Code emite apenas blocos `tool_use` e `tool_result` de subagent. Requer `--print` e `--output-format stream-json`. Claude Code também encaminha mensagens de [subagents aninhados](/docs/pt/sub-agents#let-subagents-spawn-their-own-subagents), definindo `parent_tool_use_id` para o ID da chamada da ferramenta Agent que gerou cada um; isso requer Claude Code v2.1.219 ou posterior. A variável de ambiente [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/pt/env-vars) ativa o mesmo comportamento. Requer Claude Code v2.1.211 ou posterior | `claude -p --output-format stream-json --verbose --forward-subagent-text "query"` |96| `--forward-subagent-text` | Emitir blocos de texto e pensamento de [subagent](/docs/pt/sub-agents) no fluxo de saída como mensagens `assistant` e `user` com `parent_tool_use_id` definido, para que você possa reconstruir a transcrição de cada subagent. Sem este sinalizador, Claude Code omite os blocos de texto e pensamento de um subagent que é executado em [primeiro plano](/docs/pt/sub-agents#run-subagents-in-foreground-or-background). Requer `--print` e `--output-format stream-json`. Claude Code também encaminha mensagens de [subagents aninhados](/docs/pt/sub-agents#let-subagents-spawn-their-own-subagents), definindo `parent_tool_use_id` para o ID da chamada da ferramenta Agent que gerou cada um; isso requer Claude Code v2.1.219 ou posterior. A variável de ambiente [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/pt/env-vars) ativa o mesmo comportamento. Requer Claude Code v2.1.211 ou posterior | `claude -p --output-format stream-json --verbose --forward-subagent-text "query"` |

97| `--from-pr` | Abrir o seletor de sessão filtrado para sessões vinculadas a um pull request específico. Aceita um número de PR, uma URL de PR do GitHub ou GitHub Enterprise, uma URL de merge request do GitLab ou uma URL de pull request do Bitbucket. As sessões são vinculadas automaticamente quando Claude cria o pull request | `claude --from-pr 123` |97| `--from-pr` | Abrir o seletor de sessão filtrado para sessões vinculadas a um pull request específico. Aceita um número de PR, uma URL de PR do GitHub ou GitHub Enterprise, uma URL de merge request do GitLab ou uma URL de pull request do Bitbucket. As sessões são vinculadas automaticamente quando Claude cria o pull request | `claude --from-pr 123` |

98| `--ide` | Conectar automaticamente ao IDE na inicialização se exatamente um IDE válido estiver disponível | `claude --ide` |98| `--ide` | Conectar automaticamente ao IDE na inicialização se exatamente um IDE válido estiver disponível | `claude --ide` |

99| `--init` | Executar hooks de [Setup](/docs/pt/hooks#setup) com o matcher `init` antes da sessão (apenas modo print) | `claude -p --init "query"` |99| `--init` | Executar hooks de [Setup](/docs/pt/hooks#setup) com o matcher `init` antes da sessão (apenas modo print) | `claude -p --init "query"` |


114| `--permission-mode` | Começar em um [modo de permissão](/docs/pt/permission-modes) especificado. Aceita `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions` ou `manual` como um alias para `default`. O alias `manual` seleciona o modo de permissão que a UI rotula como Manual e requer Claude Code v2.1.200 ou posterior; `claude --help` o lista no lugar de `default` e ambos os valores funcionam. Substitui `defaultMode` dos arquivos de configuração. Sem este sinalizador ou `--dangerously-skip-permissions`, uma nova sessão inicia no modo de permissão descrito em [qual modo de permissão uma sessão inicia](/docs/pt/permission-modes#which-mode-a-session-starts-in). Para `-p`, isso é `default` quando nada está configurado | `claude --permission-mode plan` |114| `--permission-mode` | Começar em um [modo de permissão](/docs/pt/permission-modes) especificado. Aceita `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions` ou `manual` como um alias para `default`. O alias `manual` seleciona o modo de permissão que a UI rotula como Manual e requer Claude Code v2.1.200 ou posterior; `claude --help` o lista no lugar de `default` e ambos os valores funcionam. Substitui `defaultMode` dos arquivos de configuração. Sem este sinalizador ou `--dangerously-skip-permissions`, uma nova sessão inicia no modo de permissão descrito em [qual modo de permissão uma sessão inicia](/docs/pt/permission-modes#which-mode-a-session-starts-in). Para `-p`, isso é `default` quando nada está configurado | `claude --permission-mode plan` |

115| `--permission-prompt-tool` | Especificar uma ferramenta MCP para lidar com prompts de permissão em modo não interativo. Claude Code aguarda a conexão do servidor MCP dessa ferramenta antes de executar o primeiro turno, até o tempo limite de inicialização [`MCP_TIMEOUT`](/docs/pt/env-vars), 30 segundos por padrão. <br /><br />A ferramenta de prompt não pode aprovar uma ferramenta MCP marcada como [exigindo interação do usuário](/docs/pt/mcp#require-approval-for-a-specific-tool): Claude Code converte um resultado `allow` para uma em uma negação. Esta restrição requer Claude Code v2.1.199 ou posterior | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |115| `--permission-prompt-tool` | Especificar uma ferramenta MCP para lidar com prompts de permissão em modo não interativo. Claude Code aguarda a conexão do servidor MCP dessa ferramenta antes de executar o primeiro turno, até o tempo limite de inicialização [`MCP_TIMEOUT`](/docs/pt/env-vars), 30 segundos por padrão. <br /><br />A ferramenta de prompt não pode aprovar uma ferramenta MCP marcada como [exigindo interação do usuário](/docs/pt/mcp#require-approval-for-a-specific-tool): Claude Code converte um resultado `allow` para uma em uma negação. Esta restrição requer Claude Code v2.1.199 ou posterior | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

116| `--permission-prompts` | Definir quem responde prompts de permissão em modo print. Com o padrão `host`, Claude Code os envia para o host do Agent SDK ou a ferramenta `--permission-prompt-tool`. Passe `none` quando ninguém puder responder, e Claude Code os nega em vez disso. Veja [Desativar prompts de permissão em execuções sem supervisão](/docs/pt/headless#turn-off-permission-prompts-in-unattended-runs). Requer Claude Code v2.1.259 ou posterior | `claude -p --permission-prompts none "query"` |116| `--permission-prompts` | Definir quem responde prompts de permissão em modo print. Com o padrão `host`, Claude Code os envia para o host do Agent SDK ou a ferramenta `--permission-prompt-tool`. Passe `none` quando ninguém puder responder, e Claude Code os nega em vez disso. Veja [Desativar prompts de permissão em execuções sem supervisão](/docs/pt/headless#turn-off-permission-prompts-in-unattended-runs). Requer Claude Code v2.1.259 ou posterior | `claude -p --permission-prompts none "query"` |

117| `--plugin-dir` | Carregar um plugin de um diretório ou arquivo `.zip` apenas para esta sessão. Cada sinalizador leva um caminho. Repita o sinalizador para vários plugins: `--plugin-dir A --plugin-dir B.zip` | `claude --plugin-dir ./my-plugin` |117| `--plugin-dir` | Carregar um plugin de um diretório ou arquivo `.zip`, ou vários de uma [pasta de plugins](/docs/pt/plugins#test-your-plugins-locally), apenas para esta sessão. Cada sinalizador leva um caminho. Repita o sinalizador para mais caminhos: `--plugin-dir A --plugin-dir B.zip`. Passar uma pasta de plugins requer Claude Code v2.1.265 ou posterior | `claude --plugin-dir ./my-plugin` |

118| `--plugin-url` | Buscar um arquivo `.zip` de plugin de uma URL apenas para esta sessão. Repita o sinalizador para vários plugins, ou passe URLs separadas por espaço em um único valor entre aspas | `claude --plugin-url https://example.com/plugin.zip` |118| `--plugin-url` | Buscar um arquivo `.zip` de plugin de uma URL apenas para esta sessão. Repita o sinalizador para vários plugins, ou passe URLs separadas por espaço em um único valor entre aspas | `claude --plugin-url https://example.com/plugin.zip` |

119| `--print`, `-p` | Imprimir resposta sem modo interativo (veja [documentação do Agent SDK](/docs/pt/agent-sdk/overview) para detalhes de uso programático) | `claude -p "query"` |119| `--print`, `-p` | Imprimir resposta sem modo interativo (veja [documentação do Agent SDK](/docs/pt/agent-sdk/overview) para detalhes de uso programático) | `claude -p "query"` |

120| `--prompt-suggestions` | Emitir uma mensagem `prompt_suggestion` com um prompt de usuário previsto após cada turno que gera um; conversas muito curtas podem não produzir nenhum. Requer `--print`, `--output-format stream-json` e `--verbose`. Veja [Sugestões de prompt](/docs/pt/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |120| `--prompt-suggestions` | Emitir uma mensagem `prompt_suggestion` com um prompt de usuário previsto após cada turno que gera um; conversas muito curtas podem não produzir nenhum. Requer `--print`, `--output-format stream-json` e `--verbose`. Veja [Sugestões de prompt](/docs/pt/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |


132| `--strict-mcp-config` | Usar apenas servidores MCP de `--mcp-config`, ignorando todas as outras configurações de MCP. Veja [Controle exclusivo com managed-mcp.json](/docs/pt/managed-mcp#exclusive-control-with-managed-mcp-json) para o que o sinalizador faz sob um arquivo MCP gerenciado | `claude --strict-mcp-config --mcp-config ./mcp.json` |132| `--strict-mcp-config` | Usar apenas servidores MCP de `--mcp-config`, ignorando todas as outras configurações de MCP. Veja [Controle exclusivo com managed-mcp.json](/docs/pt/managed-mcp#exclusive-control-with-managed-mcp-json) para o que o sinalizador faz sob um arquivo MCP gerenciado | `claude --strict-mcp-config --mcp-config ./mcp.json` |

133| `--system-prompt` | Substituir todo o prompt do sistema por texto personalizado | `claude --system-prompt "You are a Python expert"` |133| `--system-prompt` | Substituir todo o prompt do sistema por texto personalizado | `claude --system-prompt "You are a Python expert"` |

134| `--system-prompt-file` | Carregar prompt do sistema de um arquivo, substituindo o prompt padrão | `claude --system-prompt-file ./custom-prompt.txt` |134| `--system-prompt-file` | Carregar prompt do sistema de um arquivo, substituindo o prompt padrão | `claude --system-prompt-file ./custom-prompt.txt` |

135| `--system-prompt-snapshot` | Passar `off` para reconstruir o prompt do sistema em cada solicitação em vez de reutilizar o prompt [registrado na primeira solicitação da conversa](#system-prompt-flags-in-resumed-conversations), por exemplo enquanto você itera no texto `--append-system-prompt` em execuções `--continue`. Requer Claude Code v2.1.257 ou posterior | `claude --system-prompt-snapshot off` |

135| `--teleport` | Retomar uma [sessão web](/docs/pt/claude-code-on-the-web) em seu terminal local | `claude --teleport` |136| `--teleport` | Retomar uma [sessão web](/docs/pt/claude-code-on-the-web) em seu terminal local | `claude --teleport` |

136| `--teammate-mode` | Definir como [equipe de agentes](/docs/pt/agent-teams) colegas de equipe são exibidos: `in-process` (padrão), `auto`, `tmux` ou `iterm2` (adicionado em v2.1.186). Substitui a configuração [`teammateMode`](/docs/pt/settings-reference#teammatemode) para esta sessão. Veja [Escolher um modo de exibição](/docs/pt/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |137| `--teammate-mode` | Definir como [equipe de agentes](/docs/pt/agent-teams) colegas de equipe são exibidos: `in-process` (padrão), `auto`, `tmux` ou `iterm2` (adicionado em v2.1.186). Substitui a configuração [`teammateMode`](/docs/pt/settings-reference#teammatemode) para esta sessão. Veja [Escolher um modo de exibição](/docs/pt/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |

137| `--tmux` | Criar uma sessão tmux para o worktree. Requer `--worktree`. Usa painéis nativos do iTerm2 quando disponível; passe `--tmux=classic` para tmux tradicional | `claude -w feature-auth --tmux` |138| `--tmux` | Criar uma sessão tmux para o worktree. Requer `--worktree`. Usa painéis nativos do iTerm2 quando disponível; passe `--tmux=classic` para tmux tradicional | `claude -w feature-auth --tmux` |

138| `--tools` | Restringir quais ferramentas integradas Claude pode usar. Use `""` para desativar todas, `"default"` para todas, ou nomes de ferramentas como `"Bash,Edit,Read"`. Se você nomear uma das [ferramentas de rastreamento de tarefas](/docs/pt/tools-reference#task-tool-availability) aqui, Claude Code também ativa a sessão. O sinalizador não afeta ferramentas MCP; para negar essas também, use `--disallowedTools "mcp__*"`. Uma lista que omite [`EndConversation`](/docs/pt/tools-reference#endconversation-tool-behavior) não a remove; `""` a remove apenas quando nenhuma ferramenta MCP permanecer | `claude --tools "Bash,Edit,Read"` |139| `--tools` | Restringir quais ferramentas integradas Claude pode usar. Use `""` para desativar todas, `"default"` para o conjunto padrão, ou nomes de ferramentas como `"Bash,Edit,Read"`. Em macOS, Linux e WSL, o conjunto padrão deixa de fora `Glob` e `Grep`, conforme descrito em [Comportamento da ferramenta Glob](/docs/pt/tools-reference#glob-tool-behavior). Se você nomear uma das [ferramentas de rastreamento de tarefas](/docs/pt/tools-reference#task-tool-availability) aqui, Claude Code também ativa a sessão. O sinalizador não afeta ferramentas MCP; para negar essas também, use `--disallowedTools "mcp__*"`. Uma lista que omite [`EndConversation`](/docs/pt/tools-reference#endconversation-tool-behavior) não a remove; `""` a remove apenas quando nenhuma ferramenta MCP permanecer | `claude --tools "Bash,Edit,Read"` |

139| `--verbose` | Ativar logging detalhado, mostra saída completa turno por turno. Substitui a configuração [`viewMode`](/docs/pt/settings-reference#viewmode) para esta sessão | `claude --verbose` |140| `--verbose` | Ativar logging detalhado, mostra saída completa turno por turno. Substitui a configuração [`viewMode`](/docs/pt/settings-reference#viewmode) para esta sessão | `claude --verbose` |

140| `--version`, `-v` | Exibir o número da versão | `claude -v` |141| `--version`, `-v` | Exibir o número da versão | `claude -v` |

141| `--worktree`, `-w` | Iniciar Claude em um [git worktree](/docs/pt/worktrees) isolado em `<repo>/.claude/worktrees/<name>`. Se você não der um nome, Claude Code gera um. Passe `#<number>`, uma URL de pull request do GitHub ou uma URL de merge request do GitLab para [buscar esse PR ou MR de `origin` e ramificar o worktree a partir dele](/docs/pt/worktrees#branch-from-a-pull-request). Ramificar a partir de um merge request do GitLab requer Claude Code v2.1.233 ou posterior | `claude -w feature-auth` |142| `--worktree`, `-w` | Iniciar Claude em um [git worktree](/docs/pt/worktrees) isolado em `<repo>/.claude/worktrees/<name>`. Se você não der um nome, Claude Code gera um. Passe `#<number>`, uma URL de pull request do GitHub ou uma URL de merge request do GitLab para [buscar esse PR ou MR de `origin` e ramificar o worktree a partir dele](/docs/pt/worktrees#branch-from-a-pull-request). Ramificar a partir de um merge request do GitLab requer Claude Code v2.1.233 ou posterior | `claude -w feature-auth` |


144 Sinalizadores de prompt do sistema145 Sinalizadores de prompt do sistema

145</h3>146</h3>

146 147 

147Claude Code fornece quatro sinalizadores para personalizar o prompt do sistema. Todos os quatro funcionam em modos interativo e não interativo.148Claude Code fornece cinco sinalizadores para personalizar o prompt do sistema. Quatro definem seu texto, e com `--system-prompt-snapshot` você controla se uma conversa mantém o texto com o qual começou. Todos os cinco funcionam em modos interativo e não interativo.

148 149 

149| Sinalizador | Comportamento | Exemplo |150| Sinalizador | Comportamento | Exemplo |

150| :---------------------------- | :----------------------------------------- | :------------------------------------------------------ |151| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |

151| `--system-prompt` | Substitui todo o prompt padrão | `claude --system-prompt "You are a Python expert"` |152| `--system-prompt` | Substitui todo o prompt padrão | `claude --system-prompt "You are a Python expert"` |

152| `--system-prompt-file` | Substitui pelo conteúdo do arquivo | `claude --system-prompt-file ./prompts/review.txt` |153| `--system-prompt-file` | Substitui pelo conteúdo do arquivo | `claude --system-prompt-file ./prompts/review.txt` |

153| `--append-system-prompt` | Anexa ao prompt padrão | `claude --append-system-prompt "Always use TypeScript"` |154| `--append-system-prompt` | Anexa ao prompt padrão | `claude --append-system-prompt "Always use TypeScript"` |

154| `--append-system-prompt-file` | Anexa conteúdo do arquivo ao prompt padrão | `claude --append-system-prompt-file ./style-rules.txt` |155| `--append-system-prompt-file` | Anexa conteúdo do arquivo ao prompt padrão | `claude --append-system-prompt-file ./style-rules.txt` |

156| `--system-prompt-snapshot` | Com `off`, reconstrói o prompt em cada solicitação. Com `on`, o padrão, reutiliza um prompt registrado onde [o registro se aplica](#system-prompt-flags-in-resumed-conversations) | `claude --append-system-prompt "Draft rules" --system-prompt-snapshot off` |

155 157 

156`--system-prompt` e `--system-prompt-file` são mutuamente exclusivos. Os sinalizadores de anexação podem ser combinados com qualquer sinalizador de substituição.158`--system-prompt` e `--system-prompt-file` são mutuamente exclusivos. Os sinalizadores de anexação podem ser combinados com qualquer sinalizador de substituição.

157 159 

158Escolha com base em se a identidade padrão do Claude Code ainda se adequa à sua tarefa. Use um sinalizador de anexação quando Claude deve permanecer um assistente de codificação que também segue suas regras extras: instruções por invocação, formatação de saída ou contexto de domínio para um script `-p`. Anexar preserva a orientação de ferramentas padrão, instruções de segurança e convenções de codificação, portanto você fornece apenas o que difere. Use um sinalizador de substituição quando a superfície, identidade ou modelo de permissão diferir do Claude Code, como um agente não codificador em um pipeline que nenhum humano observa. Substituir descarta todo o prompt padrão, incluindo orientação de ferramentas e instruções de segurança, portanto você assume a responsabilidade por tudo o que sua tarefa ainda precisa.160Escolha com base em se a identidade padrão do Claude Code ainda se adequa à sua tarefa. Use um sinalizador de anexação quando Claude deve permanecer um assistente de codificação que também segue suas regras extras: instruções por invocação, formatação de saída ou contexto de domínio para um script `-p`. Anexar preserva a orientação de ferramentas padrão, instruções de segurança e convenções de codificação, portanto você fornece apenas o que difere. Use um sinalizador de substituição quando a superfície, identidade ou modelo de permissão diferir do Claude Code, como um agente não codificador em um pipeline que nenhum humano observa. Substituir descarta todo o prompt padrão, incluindo orientação de ferramentas e instruções de segurança, portanto você assume a responsabilidade por tudo o que sua tarefa ainda precisa.

159 161 

160Esses sinalizadores se aplicam apenas à invocação atual. Para personas persistentes que você pode alternar e compartilhar em um projeto, use [estilos de saída](/docs/pt/output-styles). Para convenções de projeto que Claude deve sempre seguir, use [CLAUDE.md](/docs/pt/memory). O [guia do Agent SDK sobre prompts do sistema](/docs/pt/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) cobre a mesma decisão com mais profundidade.162Para personas persistentes que você pode alternar e compartilhar em um projeto, use [estilos de saída](/docs/pt/output-styles). Para convenções de projeto que Claude deve sempre seguir, use [CLAUDE.md](/docs/pt/memory). O [guia do Agent SDK sobre prompts do sistema](/docs/pt/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) cobre a mesma decisão com mais profundidade.

163 

164<h4 id="system-prompt-flags-in-resumed-conversations">

165 Sinalizadores de prompt do sistema em conversas retomadas

166</h4>

167 

168Por padrão, Claude Code constrói o prompt do sistema uma vez, na primeira solicitação de uma conversa, com o texto de quaisquer sinalizadores de prompt do sistema aplicados, e o registra na sessão. Até que a conversa seja compactada, cada solicitação posterior usa esse prompt registrado, incluindo depois que você retorna à conversa com `--resume` ou `--continue`. Se você passar texto de sinalizador de prompt do sistema diferente, ou nenhum, nesse lançamento posterior, ele entra em vigor uma vez que a conversa é compactada ou quando você inicia uma nova conversa.

169 

170Se você iniciar Claude Code em [modo bare](/docs/pt/headless#start-faster-with-bare-mode), passando `--bare` ou definindo `CLAUDE_CODE_SIMPLE=1`, o registro permanece desativado a menos que você passe `--system-prompt-snapshot on`. Antes de v2.1.268, sessões que não [buscam sinalizadores de recurso](/docs/pt/env-vars#features-that-need-feature-flag-fetching), incluindo sessões no Amazon Bedrock, na Plataforma de Agentes do Google Cloud e no Microsoft Foundry, reconstruíram o prompt em cada solicitação e `--system-prompt-snapshot` não tinha efeito.

171 

172Para reconstruir o prompt em cada solicitação em vez disso, por exemplo enquanto você itera em sua redação em execuções `--continue`, passe `--system-prompt-snapshot off`. Antes de v2.1.265, passar qualquer um dos sinalizadores de prompt do sistema também desativava o registro a menos que você passasse `--system-prompt-snapshot on`.

161 173 

162<h2 id="see-also">174<h2 id="see-also">

163 Veja também175 Veja também

cloud-environments.md +806 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Configurar ambientes na nuvem

6 

7> Configure ambientes na nuvem para sessões na nuvem do Claude Code: níveis de acesso à rede, variáveis de ambiente, scripts de configuração e cache de ambiente.

8 

9<Note>

10 Ambientes na nuvem requerem [Claude Code na web](/docs/pt/claude-code-on-the-web), que está em visualização de pesquisa para usuários Pro, Max e Team, e para usuários Enterprise com [assentos premium ou assentos Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).

11</Note>

12 

13Cada [sessão na nuvem](/docs/pt/claude-code-on-the-web) é executada em um ambiente na nuvem. Você pode configurar um ambiente para permitir ou negar [acesso à rede](#access-levels), [definir variáveis de ambiente](#set-environment-variables) para a sessão, em planos Pro e Max armazenar [credenciais de API](#add-api-credentials) que as sessões usam sem vê-las, e executar um [script de configuração](#setup-scripts) antes de Claude começar a trabalhar.

14 

15Os mesmos ambientes se aplicam em qualquer lugar onde você inicie uma sessão na nuvem: [Claude Code na web](/docs/pt/claude-code-on-the-web), o terminal com [`claude --cloud`](/docs/pt/claude-code-on-the-web#from-terminal-to-web), [Claude Tag](https://claude.com/docs/claude-tag/overview), [rotinas](/docs/pt/routines), o [aplicativo móvel Claude](/docs/pt/mobile) e o [aplicativo Desktop](/docs/pt/desktop). Cada uma dessas superfícies também pode rotear para um [ambiente auto-hospedado](/docs/pt/self-hosted-environments). [Disponibilidade e limitações](/docs/pt/self-hosted-environments#availability-and-limitations) cobre o que Claude ainda não pode usar quando uma sessão do Claude Tag é executada em um.

16 

17<Info>

18 Sessões de [Remote Control](/docs/pt/remote-control) conectam as interfaces web e móvel a uma sessão em sua própria máquina, que usa a rede e os arquivos da sua máquina, não um ambiente na nuvem. Sessões de canal do Claude Tag usam ambientes no nível da organização apenas, seja [ambientes compartilhados](#organization-shared-environments) ou [ambientes auto-hospedados](/docs/pt/self-hosted-environments).

19</Info>

20 

21<h2 id="the-default-environment">

22 O ambiente Default

23</h2>

24 

25Se você ainda não tem um ambiente, a integração configura o ambiente **Default** para você. Como depende de onde você se integra:

26 

27* **Fluxos CLI como `/web-setup`**: criam **Default** para você

28* **Integração web em Pro e Max**: cria **Default** para você

29* **Integração web em Team e Enterprise**: mostra um formulário **Criar seu primeiro ambiente na nuvem** a menos que um Proprietário tenha ativado [Configuração rápida da web](/docs/pt/claude-code-on-the-web#github-authentication-options); mantenha os padrões do formulário e clique em **Criar e concluir** para obter o mesmo ambiente **Default**

30 

31**Default** não carrega nenhuma configuração própria:

32 

33* [Acesso à rede **Trusted**](#access-levels): as sessões alcançam registros de pacotes e outros [domínios na lista de permissões](#default-allowed-domains), e nada mais através da rede da sessão.

34* Nenhuma outra configuração: **Default** não define variáveis de ambiente ou script de configuração, portanto as sessões começam apenas com as [ferramentas pré-instaladas](#installed-tools).

35 

36Com apenas **Default** disponível, cada sessão é executada nele. Quando você tem mais de um ambiente, as sessões escolhem um por superfície:

37 

38* Na web, no aplicativo Desktop e no aplicativo móvel, as sessões usam o ambiente mostrado no [seletor](#configure-your-environment). Um [padrão da organização](#organization-shared-environments) definido por um Proprietário preenche a seleção quando você não escolheu um.

39* A partir da CLI, Claude Code usa sua escolha [`/remote-env`](#select-an-environment-from-the-cli), ou volta para o ambiente hospedado pela Anthropic quando sua lista tem um, e caso contrário para o primeiro ambiente em sua lista que não é um ambiente bridge, uma entrada [Remote Control](/docs/pt/remote-control) registra para representar sua própria máquina em vez de um ambiente na nuvem. Para um [ambiente auto-hospedado](/docs/pt/self-hosted-environments), passar `--environment <environment-id>` com seu ID `ccpool_` [quando você despacha uma sessão](/docs/pt/self-hosted-environments-testing#run-the-test-loop) substitui a escolha `/remote-env` e o fallback para essa invocação. Claude Code rejeita IDs `env_` hospedados pela Anthropic passados para a flag, portanto use `/remote-env` para direcioná-los. A flag requer Claude Code v2.1.224 ou posterior.

40 

41Configure um ambiente quando o padrão não for suficiente: quando Claude precisa alcançar domínios fora da [lista de permissões padrão](#default-allowed-domains), precisa de variáveis de ambiente definidas para suas sessões, ou precisa de dependências instaladas antes de começar a trabalhar.

42 

43<h2 id="configure-your-environment">

44 Configure seu ambiente

45</h2>

46 

47Crie, edite e arquive ambientes a partir do seletor de ambiente, que você acessa em [claude.ai/code](https://claude.ai/code) após a [integração web](/docs/pt/web-quickstart), ou a partir da caixa de prompt no [aplicativo Desktop](/docs/pt/desktop#cloud-sessions). Os ambientes que você cria são pessoais para sua conta; [ambientes compartilhados](#organization-shared-environments) criados por um Proprietário aparecem no mesmo seletor. Veja [Ferramentas instaladas](#installed-tools) para saber o que está disponível sem nenhuma configuração.

48 

49<Steps>

50 <Step title="Abra o seletor de ambiente">

51 Em [claude.ai/code](https://claude.ai/code), selecione o ícone de nuvem mostrando o nome do ambiente atual, na linha acima da caixa de mensagem. Não há página de configurações ou URL direto para o seletor.

52 

53 <Frame>

54 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-selector.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=cc2813a5664519eaf5a89d793ce5af26" alt="O seletor de ambiente aberto acima da caixa de mensagem em claude.ai/code. O botão de nuvem mostrando o nome do ambiente Default fica na linha acima da caixa de mensagem. O menu aberto lista uma linha Local com rótulos Download e Desktop only, uma seção Cloud onde o ambiente Default é selecionado com uma marca de seleção e mostra um ícone de engrenagem de configurações ao passar o mouse, uma opção Add cloud environment e uma seção Remote Control com instruções de configuração." width="1672" height="682" data-path="images/cloud-environment-selector.png" />

55 </Frame>

56 </Step>

57 

58 <Step title="Adicione ou edite um ambiente">

59 Selecione **Add cloud environment**, ou passe o mouse sobre um ambiente existente e selecione o ícone de configurações que aparece à direita. O diálogo inclui o nome, nível de acesso à rede, variáveis de ambiente e script de configuração. Quando você edita um ambiente na nuvem existente em um plano Pro ou Max, o diálogo também inclui [credenciais de API](#add-api-credentials).

60 

61 <Frame>

62 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="O diálogo New cloud environment. Um campo Name com o placeholder Default, um seletor Network access definido como Trusted com links para a política de rede e níveis de acesso, uma caixa Environment variables mostrando texto placeholder no formato .env com uma nota de que os valores são visíveis para qualquer pessoa que use o ambiente, uma caixa Setup script descrita como um script Bash que é executado quando uma nova sessão é iniciada antes do Claude Code ser lançado, e botões Cancel e Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />

63 </Frame>

64 </Step>

65</Steps>

66 

67<h3 id="set-environment-variables">

68 Defina variáveis de ambiente

69</h3>

70 

71As variáveis de ambiente usam o formato `.env`, um par `KEY=value` por linha. Valores simples não precisam de aspas, e se você colocar um valor entre aspas com um par correspondente, as aspas não se tornam parte do valor. Coloque entre aspas um valor que abrange várias linhas ou contém um `#`: em um valor sem aspas, `#` inicia um comentário e o resto da linha é descartado.

72 

73O exemplo a seguir define três variáveis.

74 

75```text theme={null}

76NODE_ENV=development

77LOG_LEVEL=debug

78DATABASE_URL=postgres://localhost:5432/myapp

79```

80 

81Cada sessão copia os valores do ambiente uma vez, na inicialização, em variáveis de ambiente ordinárias que qualquer comando que Claude execute pode ler. Como as sessões em execução não releem a configuração, editar ou adicionar variáveis afeta as sessões que você inicia depois; as sessões já em execução mantêm os valores com os quais começaram.

82 

83Claude Code na web também define algumas variáveis em si mesmo quando inicia uma sessão. Para [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/pt/claude-code-on-the-web#manage-context), o valor que Claude Code na web define substitui um que você adiciona aqui, portanto adicionar essa chave aqui não tem efeito.

84 

85Qualquer pessoa que use o ambiente pode ler os valores. Em planos Pro e Max, use uma [credencial de API](#add-api-credentials) em vez disso para uma chave que o proxy do agente pode anexar a uma solicitação. As [solicitações que nunca recebem uma credencial](#requests-that-never-get-the-credential) estão listadas lá.

86 

87<h3 id="add-api-credentials">

88 Adicione credenciais de API

89</h3>

90 

91Uma credencial de API é uma chave de API ou token que você armazena em um ambiente na nuvem para que Claude possa chamar essa API de qualquer sessão no ambiente sem ver a chave. O proxy do agente da Anthropic adiciona a chave às solicitações para os hosts que você lista, depois que cada solicitação sai da VM da sessão. A chave nunca alcança Claude, os comandos que ele executa, ou as variáveis de ambiente da sessão.

92 

93As credenciais de API estão disponíveis em planos Pro e Max. Elas ainda não estão disponíveis em planos Team ou Enterprise, portanto a seção **API credentials** não aparece no diálogo de ambiente nesses planos.

94 

95<h4 id="requirements">

96 Requisitos

97</h4>

98 

99Dois destes decidem se você pode adicionar uma credencial, e dois decidem se o proxy do agente pode usá-la uma vez adicionada:

100 

101* **Função**: uma função de administrador da organização em sua organização claude.ai

102 * Em Team e Enterprise, Proprietários a mantêm e Administradores não

103 * Em Pro e Max, você a mantém em sua própria organização

104 * Sem ela, você vê uma nota em vez da lista de credenciais, até mesmo em seus próprios ambientes. Peça a um Proprietário para adicionar a credencial a um ambiente compartilhado e execute suas sessões lá

105* **Tipo de ambiente**: um ambiente na nuvem hospedado pela Anthropic que já existe. Um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) não tem credenciais de API

106* **Acessibilidade de API**: a API aceita conexões da internet, porque as solicitações saem da rede da Anthropic

107* **Chaves de criptografia**: se sua organização usa chaves de criptografia gerenciadas pelo cliente, você não pode salvar credenciais

108 

109<h4 id="add-a-credential">

110 Adicione uma credencial

111</h4>

112 

113Você adiciona credenciais uma de cada vez a partir do editor de um ambiente que já existe. O diálogo para um novo ambiente não as oferece. Também não há edição. Para alterar os hosts ou o valor de uma credencial, delete-a e adicione-a novamente.

114 

115<Steps>

116 <Step title="Abra as credenciais de API do ambiente">

117 [Abra o ambiente para edição](#configure-your-environment) em [claude.ai/code](https://claude.ai/code). No diálogo **Update cloud environment**, encontre **API credentials** abaixo de **Environment variables**. Você vê as credenciais já no ambiente, cada uma com os hosts aos quais se aplica.

118 </Step>

119 

120 <Step title="Adicione a credencial">

121 Selecione **Add credential** e preencha o formulário. Mantenha o **Credential type** padrão, **Bearer**, para uma chave de API que viaja em um cabeçalho de solicitação, e preencha estes campos:

122 

123 * **Name**: um rótulo para a credencial, como `Internal billing API`

124 * **Allowed websites**: os hosts da API, como `api.example.com`. Um `*.` inicial corresponde a cada subdomínio

125 * **Custom headers**: uma linha para o cabeçalho que carrega a chave. A linha começa com `Authorization` como o **Name** do cabeçalho e `Bearer` como seu **Prefix**; cole a chave em si como o **Value**. Para um cabeçalho como `X-Api-Key` que usa o valor simples, altere o nome e limpe o prefixo

126 

127 Para uma API que se autentica de outra forma, escolha um **Credential type** diferente. A lista é a mesma que [Claude Tag](https://claude.com/docs/claude-tag/overview), a integração do Slack para planos Team e Enterprise, oferece para [conexões](https://claude.com/docs/claude-tag/admins/add-connections).

128 </Step>

129 

130 <Step title="Salve a credencial">

131 Selecione **Connect**. A credencial aparece na lista com seus hosts, salva sem o botão **Save changes** do diálogo. Você não pode visualizar o valor novamente após salvar.

132 </Step>

133</Steps>

134 

135Para confirmar que a credencial funciona, inicie uma sessão no ambiente e peça a Claude para chamar a API, por exemplo com `curl`. A API responde como se a chave estivesse na solicitação, e a chave não aparece nas variáveis de ambiente da sessão ou em nenhum arquivo. Se a lista marca uma credencial **Not sent** em vez disso, a nota abaixo dela diz por quê e o que fazer. Duas credenciais cujos hosts se sobrepõem sem corresponder exatamente não recebem nenhum marcador, e o proxy do agente envia apenas uma delas.

136 

137<h4 id="which-requests-get-the-credential">

138 Quais solicitações recebem a credencial

139</h4>

140 

141O proxy do agente anexa uma credencial a uma solicitação quando o host da solicitação corresponde a um que você listou nessa credencial. As sessões podem alcançar esses hosts mesmo quando o [nível de acesso à rede](#access-levels) do ambiente não permitiria de outra forma, exceto os [hosts que nunca recebem a credencial](#requests-that-never-get-the-credential). A credencial se aplica em cada sessão que é executada no ambiente, quem quer que a tenha iniciado, até você deletá-la.

142 

143<h4 id="requests-that-never-get-the-credential">

144 Solicitações que nunca recebem a credencial

145</h4>

146 

147O proxy do agente nunca anexa uma credencial que você adiciona a estas solicitações:

148 

149* **GitHub**: o [proxy do GitHub](#github-proxy) autentica solicitações para GitHub em vez disso, portanto você não precisa de uma credencial de API para isso

150* **A API Anthropic e registros de pacotes públicos**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` e `proxy.golang.org`

151* **Solicitações de script de configuração**: Claude Code se conecta ao proxy do agente quando é lançado, depois que o [script de configuração](#setup-scripts) foi executado

152 

153<h3 id="select-an-environment-from-the-cli">

154 Selecione um ambiente a partir da CLI

155</h3>

156 

157Execute `/remote-env` em seu terminal para escolher o ambiente padrão para sessões na nuvem que você cria a partir da CLI, como [`claude --cloud`](/docs/pt/claude-code-on-the-web#from-terminal-to-web). O comando abre um seletor de seus ambientes existentes e salva sua escolha na chave `remote.defaultEnvironmentId` em suas [configurações de usuário](/docs/pt/settings#where-settings-live), portanto se aplica em cada projeto em sua máquina até você alterar, a menos que a mesma chave seja definida em uma [camada de configurações](/docs/pt/settings#settings-precedence) de precedência mais alta, como as configurações do projeto de um repositório.

158 

159Um ID de [ambiente auto-hospedado](/docs/pt/self-hosted-environments), que tem a forma `ccpool_...`, segue uma regra de origem mais rigorosa. Veja [`remote.defaultEnvironmentId`](/docs/pt/settings-reference#remote-defaultenvironmentid) para as camadas de configurações que Claude Code honra isso.

160 

161`/remote-env` apenas define o padrão: não inicia uma sessão e não pode adicionar ou editar ambientes. Gerencie-os a partir do [seletor de ambiente](#configure-your-environment).

162 

163<h3 id="archive-an-environment">

164 Arquive um ambiente

165</h3>

166 

167Para arquivar um ambiente, abra-o para edição e selecione **Archive**. Você não pode excluir um ambiente, apenas arquivá-lo.

168 

169O arquivamento afeta novas sessões, não as em execução:

170 

171* As sessões já em execução no ambiente continuam funcionando.

172* O ambiente desaparece do seletor e de `/remote-env`, portanto você não pode escolhê-lo para novas sessões.

173* As credenciais de API no ambiente permanecem anexadas em suas sessões em execução. Delete qualquer uma que você não queira mais antes de arquivar.

174* Nenhuma nova sessão pode ser iniciada em um ambiente arquivado, em qualquer superfície. Se o ambiente era seu [padrão CLI](#select-an-environment-from-the-cli) salvo, Claude Code inicia sessões na nuvem da CLI no ambiente hospedado pela Anthropic quando sua lista tem um, e caso contrário no primeiro ambiente em sua lista que não é um [ambiente bridge Remote Control](#the-default-environment). Qualquer coisa configurada com o ambiente explicitamente, como uma [rotina](/docs/pt/routines#environments-and-network-access), não pode iniciar novas sessões nele. Aponte-a para outro ambiente.

175 

176<h3 id="organization-shared-environments">

177 Ambientes compartilhados da organização

178</h3>

179 

180Em planos Team e Enterprise, um Proprietário pode criar ambientes na nuvem que são compartilhados com cada membro da organização. O mesmo papel gerencia tudo mais na página **Cloud environments** do administrador, incluindo [ambientes auto-hospedados](/docs/pt/self-hosted-environments); a função Admin não pode abrir a página. A lista completa de funções que podem abrir é a para [gerenciar configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings#access-control). Os ambientes compartilhados aparecem no seletor de ambiente de cada membro ao lado dos seus pessoais, portanto uma equipe pode padronizar uma configuração em vez de cada membro recriá-la.

181 

182Crie, edite e arquive ambientes compartilhados a partir da página **Cloud environments** nas [configurações de administrador](https://claude.ai/admin-settings). Um ambiente compartilhado também abre a partir do [seletor de ambiente](#configure-your-environment) em [claude.ai/code](https://claude.ai/code): um Proprietário pode editá-lo lá. Outros membros o veem como somente leitura. Cada ambiente compartilhado tem um nome, um [nível de acesso à rede](#access-levels), [variáveis de ambiente](#set-environment-variables) no formato `.env` e um [script de configuração](#setup-scripts). Os Proprietários escolhem o [ambiente padrão](#the-default-environment) da organização separadamente, em [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

183 

184Cada sessão de membro em um ambiente compartilhado lê suas variáveis, portanto não inclua segredos nelas. [Credenciais de API](#add-api-credentials), que dão às sessões uma chave que elas não podem ler, ainda não estão disponíveis em planos Team ou Enterprise.

185 

186<h3 id="set-the-environment-a-claude-tag-channel-uses">

187 Defina o ambiente que um canal do Claude Tag usa

188</h3>

189 

190Em canais do [Claude Tag](https://claude.com/docs/claude-tag/overview), Claude trabalha como a identidade compartilhada de sua organização, não como qualquer membro, portanto as sessões de canal usam ambientes no nível da organização apenas, seja ambientes compartilhados ou [ambientes auto-hospedados](/docs/pt/self-hosted-environments). Para dar a um canal uma cadeia de ferramentas que não é [pré-instalada](#installed-tools), como .NET, um Proprietário pode criar um [ambiente compartilhado](#organization-shared-environments) a partir da página **Cloud environments** do administrador com um [script de configuração](#setup-scripts) que a instala. Aponte o canal para um ambiente de uma de duas maneiras:

191 

192* Defina um ambiente compartilhado ou auto-hospedado como o [ambiente padrão](#the-default-environment) da organização em [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

193* [Fixe um a um canal](https://claude.com/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one) nas configurações de administrador do Claude Tag.

194 

195<h2 id="network-access">

196 Acesso à rede

197</h2>

198 

199Cada ambiente define um nível de acesso à rede, que controla as conexões de saída que suas sessões podem fazer. O nível padrão, **Trusted**, permite registros de pacotes e outros [domínios na lista de permissões](#default-allowed-domains); **Custom** usa sua própria lista de domínios.

200 

201Para alterar o acesso à rede de um ambiente, [abra-o para edição](#configure-your-environment) e use o seletor **Network access** no diálogo. O ícone de nuvem que abre o seletor aparece nas superfícies do aplicativo listadas em [O ambiente Default](#the-default-environment) e no [editor de rotina](/docs/pt/routines#environments-and-network-access); os ambientes pessoais não têm uma página separada nas configurações de sua conta claude.ai.

202 

203<Note>

204 Os conectores MCP que você ativa em uma sessão ou rotina funcionam sem adicionar seus hosts aos **Allowed domains**, porque o tráfego do conector viaja através dos servidores da Anthropic em vez da rede da sessão. Você configura conectores por sessão ou por rotina; remova qualquer um que não precise para limitar quais ferramentas Claude pode alcançar. Isso depende do mesmo canal vinculado à Anthropic observado em [Segurança e isolamento](/docs/pt/claude-code-on-the-web#security-and-isolation).

205</Note>

206 

207<h3 id="access-levels">

208 Níveis de acesso

209</h3>

210 

211O campo **Network access** no [diálogo de ambiente](#configure-your-environment) usa um de quatro níveis:

212 

213| Nível | Conexões de saída |

214| :---------- | :-------------------------------------------------------------------------------------------------------------- |

215| **None** | Sem acesso à rede de saída através da rede da sessão |

216| **Trusted** | [Domínios na lista de permissões](#default-allowed-domains) apenas: registros de pacotes, GitHub, SDKs na nuvem |

217| **Full** | Qualquer domínio |

218| **Custom** | Sua própria lista de permissões, opcionalmente incluindo os padrões |

219 

220Qualquer que seja o nível que você escolha, as sessões ainda podem alcançar estes, porque cada um usa um caminho que não passa pela lista de permissões de rede da sessão:

221 

222* GitHub, através de seu [proxy separado](#github-proxy)

223* [Conectores MCP](#network-access) que você ativa, cujo tráfego viaja através dos servidores da Anthropic

224* Os hosts que você listou nas [credenciais de API](#add-api-credentials) do ambiente, exceto os [hosts que nunca recebem a credencial](#requests-that-never-get-the-credential)

225* A API Anthropic, para as próprias solicitações do Claude Code, até mesmo em **None**, conforme observado em [Segurança e isolamento](/docs/pt/claude-code-on-the-web#security-and-isolation)

226 

227<h3 id="allow-specific-domains">

228 Permita domínios específicos

229</h3>

230 

231Para permitir domínios que não estão na lista Trusted, selecione **Custom** nas configurações de acesso à rede do ambiente, depois liste um domínio por linha no campo **Allowed domains**. Este exemplo permite três hosts que um projeto interno pode precisar.

232 

233```text theme={null}

234api.example.com

235*.internal.example.com

236registry.example.com

237```

238 

239As sessões neste ambiente agora podem alcançar `api.example.com`, qualquer subdomínio de `internal.example.com` e `registry.example.com`, e nenhum outro domínio através da rede da sessão. [Tráfego do GitHub](#github-proxy), [tráfego do conector MCP](#network-access) e solicitações para os hosts das [credenciais de API](#add-api-credentials) do ambiente, outros que os [hosts que nunca recebem a credencial](#requests-that-never-get-the-credential), não passam por essa lista de permissões. Um `*.` inicial corresponde a cada subdomínio. Para manter também os [domínios Trusted](#default-allowed-domains), marque **Also include default list of common package managers**; deixe desmarcado para permitir apenas o que você listar.

240 

241Se sua organização usa [artefatos](/docs/pt/artifacts#availability), você não precisa de `*.frame.claudeusercontent.com` na lista para as sessões lerem. Quando a lista deixa esse host de fora, Claude Code lê o conteúdo do artefato através da conexão da sessão com a Anthropic em vez disso. Mantenha o host em uma lista de permissões em duas situações:

242 

243* **Sessões neste ambiente abrem artefatos públicos de outra organização**: Claude Code busca aqueles do host diretamente, portanto adicione-o a esta lista.

244* **Você está configurando a CLI local ou um executor auto-hospedado**: mantenha o host nessa lista de permissões. Veja [requisitos de acesso à rede](/docs/pt/network-config#network-access-requirements) e os [requisitos de rede](/docs/pt/self-hosted-environments-deploy#network-requirements) auto-hospedados.

245 

246Cada ambiente tem sua própria lista de domínios permitidos; não há uma lista de permissões no nível da organização que os administradores possam enviar para os ambientes de cada membro. As [configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings) ainda se aplicam dentro de sessões na nuvem, mas nenhuma delas adiciona domínios à lista de permissões de rede do ambiente.

247 

248<h3 id="github-proxy">

249 Proxy do GitHub

250</h3>

251 

252Em ambientes hospedados pela Anthropic, todas as operações do GitHub passam por um proxy dedicado que mantém suas credenciais reais do GitHub fora da VM da sessão, independentemente do [nível de acesso](#access-levels) do ambiente. As sessões em um ambiente auto-hospedado autenticam operações git com credenciais que sua implantação fornece; [Configurar git](/docs/pt/self-hosted-environments-deploy#configure-git) cobre as opções, incluindo credenciais cunhadas por sessão e uma opção de entrada para este mesmo proxy. O proxy fornece:

253 

254* **Credenciais do Git**: o cliente git dentro da VM usa uma credencial com escopo, que o proxy verifica e troca por seu token real do GitHub.

255* **Solicitações de API**: solicitações das ferramentas GitHub integradas e de `gh` sob o [placeholder `proxy-injected`](#work-with-github-issues-and-pull-requests), saem com suas credenciais reais substituídas.

256* **Proteção de push**: `git push` funciona apenas contra o branch de trabalho atual da sessão; clonagem, busca e operações de PR funcionam normalmente.

257* **Escopo do repositório**: as solicitações de API do GitHub e de ativos de lançamento alcançam apenas repositórios anexados à sessão, portanto um script de configuração que baixa ativos de lançamento de um repositório não anexado recebe um 403.

258* **Restrições de GraphQL**: o proxy serve apenas um conjunto fixado de operações de GraphQL para fluxos de trabalho de solicitação de pull. O proxy rejeita tudo mais no endpoint de GraphQL com um 403 que diz `This GraphQL query is not enabled for this session` e nomeia o fallback REST, `gh api repos/{owner}/{repo}/...`. A restrição se aplica a cada solicitação através do proxy independentemente das credenciais que você fornece, portanto um `GH_TOKEN` que você define recebe o mesmo 403. Claude não pode alcançar APIs do GitHub que existem apenas em GraphQL, como Projects v2, através do proxy.

259 

260Os arquivos confirmados de repositórios públicos chegam através de `raw.githubusercontent.com`, que o [proxy de segurança](#security-proxy) manipula em vez disso. Esse domínio está na [lista Trusted](#default-allowed-domains) padrão, portanto esses arquivos permanecem acessíveis a menos que o [nível de acesso](#access-levels) do ambiente os exclua.

261 

262<h3 id="security-proxy">

263 Proxy de segurança

264</h3>

265 

266As sessões na nuvem em ambientes hospedados pela Anthropic são executadas atrás de um proxy de rede HTTP/HTTPS para fins de segurança e prevenção de abuso; em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments-deploy#default-deny-egress), o tráfego de saída sai através de seu próprio limite de rede em vez disso. Todo o tráfego de internet de saída de uma sessão hospedada pela Anthropic passa por esse proxy, que fornece:

267 

268* Proteção contra solicitações maliciosas

269* Limitação de taxa e prevenção de abuso

270* Filtragem de conteúdo para segurança aprimorada

271* Uma trilha de auditoria no nível de DNS dos nomes de host solicitados

272 

273<h2 id="what’s-available-in-cloud-sessions">

274 O que está disponível em sessões na nuvem

275</h2>

276 

277Em ambientes hospedados pela Anthropic, cada sessão obtém uma máquina virtual (VM) fresca executando Ubuntu 24.04 em x86\_64, independentemente de seu próprio sistema operacional e arquitetura de CPU, com seu repositório clonado e cadeias de ferramentas comuns pré-instaladas. Quando uma dependência fornece binários pré-compilados, como gems Ruby com extensões nativas ou wheels Python pré-construídos, use sua compilação x86\_64 Linux para corresponder à VM. Esta seção cobre os padrões hospedados pela Anthropic, as ferramentas GitHub integradas, como [executar testes e serviços](#run-tests-start-services-and-add-packages) e os [limites de recursos](#resource-limits) que cada VM obtém.

278 

279<Note>

280 As sessões que sua organização roteia para um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) são executadas em seus próprios executores em vez disso, com as ferramentas que sua imagem de executor fornece.

281</Note>

282 

283<h3 id="what-carries-over-from-your-setup">

284 O que é transferido de sua configuração

285</h3>

286 

287As sessões na nuvem começam a partir de um clone fresco de seu repositório. Qualquer coisa que você confirme no repositório está disponível. Qualquer coisa que você tenha instalado ou configurado apenas em sua própria máquina não está disponível na sessão. A política de sua organização chega separadamente através das [configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings).

288 

289| | Disponível em sessões na nuvem | Por quê |

290| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

291| Seu `CLAUDE.md` do repositório | Sim | Parte do clone |

292| Seus hooks `.claude/settings.json` do repositório | Sim | Parte do clone |

293| Seus servidores MCP `.mcp.json` do repositório | Sim | Parte do clone |

294| Seu `.claude/rules/` do repositório | Sim | Parte do clone |

295| Seu `.claude/skills/`, `.claude/agents/`, `.claude/commands/` do repositório | Sim | Parte do clone |

296| Plugins declarados em `.claude/settings.json` | Sim | Instalados no início da sessão a partir do [marketplace](/docs/pt/plugin-marketplaces) que você declarou. Requer acesso à rede para alcançar a fonte do marketplace |

297| As [configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings) de sua organização | Sim | Buscadas dos servidores da Anthropic quando a sessão é iniciada. Veja [Cobertura de superfície](/docs/pt/model-config#surface-coverage) para como `availableModels` é aplicado em sessões na nuvem. As configurações implantadas em seu dispositivo através de MDM ou arquivos de configurações gerenciadas não se aplicam, porque a sessão é executada em uma VM gerenciada pela Anthropic; em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments), as sessões também leem o arquivo de configurações gerenciadas na imagem do executor, por [como Claude Code combina fontes gerenciadas](/docs/pt/managed-settings#how-claude-code-combines-managed-sources) |

298| Seu `~/.claude/CLAUDE.md` do usuário | Não | Vive em sua máquina, não no repositório |

299| Seu `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` do usuário | Não | Vivem em sua máquina, não no repositório. Confirme-os no diretório `.claude/` do repositório em vez disso. As sessões na nuvem carregam automaticamente skills que você ativa em claude.ai |

300| Plugins ativados apenas em suas configurações de usuário | Não | O `enabledPlugins` com escopo de usuário vive em `~/.claude/settings.json`. Declare-os em `.claude/settings.json` do repositório em vez disso, ou ative-os para sua conta claude.ai para que Claude Code os carregue como [plugins sincronizados](/docs/pt/plugins-reference#synced-plugins) |

301| Servidores MCP que você adicionou com `claude mcp add` no escopo local padrão ou no escopo de usuário | Não | Aqueles escrevem em `~/.claude.json` em sua máquina, não no repositório. Adicione o servidor com `claude mcp add --scope project`, que escreve o [`.mcp.json`](/docs/pt/mcp#project-scope) do repositório, e confirme esse arquivo |

302| Variáveis de transporte em seu bloco `env` `.claude/settings.json` do repositório, como `NODE_EXTRA_CA_CERTS` e as [variáveis de certificado de cliente mTLS](/docs/pt/network-config#mtls-authentication) | Não | O ambiente de hospedagem gerencia a conexão de API da sessão, portanto Claude Code ignora essas chaves e anota cada chave ignorada no log de depuração da sessão |

303| Chaves de API e tokens para serviços que Claude chama | Em planos Pro e Max, como [credenciais de API](#add-api-credentials) | Você adiciona a chave uma vez no ambiente e o proxy do agente a anexa às solicitações para os hosts que você lista. Uma chave que o proxy do agente [não pode anexar](#requests-that-never-get-the-credential), ou qualquer chave em um plano Team ou Enterprise, fica em uma variável de ambiente |

304| Autenticação interativa como AWS SSO | Não | Não suportado. SSO requer login baseado em navegador que não pode ser executado em uma sessão na nuvem |

305 

306Para disponibilizar sua própria configuração em sessões na nuvem, confirme-a no repositório.

307 

308Qualquer pessoa que use o ambiente pode ler suas variáveis de ambiente e script de configuração. A nota do diálogo em **Environment variables** diz isso e avisa contra colocar segredos lá. Em planos Pro e Max, armazene uma chave que o proxy do agente pode anexar como uma [credencial de API](#add-api-credentials) em vez disso.

309 

310<h3 id="installed-tools">

311 Ferramentas instaladas

312</h3>

313 

314As sessões na nuvem vêm com tempos de execução de linguagem comuns, ferramentas de compilação e bancos de dados pré-instalados. A tabela abaixo resume o que está incluído por categoria.

315 

316| Categoria | Incluído |

317| :------------ | :--------------------------------------------------------------------- |

318| **Python** | Python 3.x com pip, poetry, uv, black, mypy, pytest, ruff |

319| **Node.js** | 20, 21 e 22, com npm, yarn, pnpm, bun¹, eslint, prettier, chromedriver |

320| **Ruby** | 3.1, 3.2, 3.3 com gem, bundler, rbenv |

321| **PHP** | 8.3 com Composer |

322| **Java** | OpenJDK 21 com Maven e Gradle |

323| **Go** | Go com suporte a módulos |

324| **Rust** | rustc e cargo |

325| **C/C++** | GCC, Clang, cmake, ninja, conan |

326| **Docker** | docker, dockerd, docker compose |

327| **Databases** | PostgreSQL 16, Redis 7.0 |

328| **Utilities** | git, gh, jq, yq, ripgrep, tmux, vim, nano |

329 

330¹ Bun está instalado mas tem [problemas de compatibilidade](#install-dependencies-with-a-sessionstart-hook) de proxy conhecidos para busca de pacotes.

331 

332Para obter as versões da maioria das ferramentas nesta tabela, peça a Claude para executar `check-tools` em uma sessão na nuvem. É um comando shell instalado na VM da sessão, não um comando slash; você pede a Claude porque [Claude executa todos os comandos da VM para você](#run-tests-start-services-and-add-packages). Para uma ferramenta que não relata, como Ruby, PHP, bun, PostgreSQL ou Redis, peça a Claude para executar o comando de versão próprio da ferramenta, por exemplo `psql --version`.

333 

334As versões do Node.js estão instaladas em `/opt/node20`, `/opt/node21` e `/opt/node22`, com 22 em `PATH` por padrão. Para trabalhar com uma versão diferente, peça a Claude para prepender o diretório `bin` dessa versão, como `/opt/node20/bin`, a `PATH`.

335 

336As cadeias de ferramentas fora dessa lista, como o SDK .NET, não estão pré-instaladas mesmo quando seus registros de pacotes estão na [lista de permissões padrão](#default-allowed-domains). Instale-as com um [script de configuração](#setup-scripts).

337 

338<h3 id="work-with-github-issues-and-pull-requests">

339 Trabalhe com problemas e solicitações de pull do GitHub

340</h3>

341 

342As sessões na nuvem incluem ferramentas GitHub integradas que permitem a Claude ler problemas, listar solicitações de pull, buscar diffs e postar comentários sem nenhuma configuração. Essas ferramentas se autenticam através do [proxy do GitHub](#github-proxy) usando qualquer método que você configurou em [opções de autenticação do GitHub](/docs/pt/claude-code-on-the-web#github-authentication-options), portanto seu token nunca entra no contêiner.

343 

344Você pode definir `GH_TOKEN` ou `GITHUB_TOKEN` você mesmo nas [configurações de ambiente](#set-environment-variables), ou deixar ambos não definidos e deixar o [proxy do GitHub](#github-proxy) autenticar para você:

345 

346* Se você definir um token, ele passa para o contêiner inalterado, portanto seus scripts e o [`gh` CLI](https://cli.github.com) do GitHub usam-no diretamente.

347* Se você não definir nenhum e o [proxy do GitHub](#github-proxy) estiver manipulando a autenticação para sua sessão, ambas as variáveis leem como a string placeholder `proxy-injected` nos comandos que Claude executa, e o proxy substitui suas credenciais reais em solicitações de saída do GitHub. `gh` funciona sem um token seu, mas um script que lê `GITHUB_TOKEN` diretamente obtém o placeholder, não um token utilizável.

348 

349Um token que você define é uma variável de ambiente ordinária, portanto qualquer pessoa que use o ambiente pode lê-lo; o caminho do proxy mantém a credencial fora da configuração do ambiente e da VM da sessão.

350 

351Para verificar qual caso se aplica à sua sessão, peça a Claude para executar `echo $GH_TOKEN`.

352 

353O [`gh` CLI](https://cli.github.com) do GitHub está pré-instalado. Se você precisar de um comando `gh` que as ferramentas integradas não cobrem, como `gh release` ou `gh workflow run`, peça a Claude para executá-lo. `gh` lê `GH_TOKEN` automaticamente, portanto você não precisa executar `gh auth login`.

354 

355<h3 id="link-output-back-to-the-session">

356 Vincule a saída de volta à sessão

357</h3>

358 

359Cada sessão na nuvem tem uma URL de transcrição em claude.ai, e a sessão pode ler seu próprio ID a partir da variável de ambiente `CLAUDE_CODE_REMOTE_SESSION_ID`. Use isso para colocar um link rastreável em corpos de PR, mensagens de commit, posts do Slack ou relatórios gerados para que um revisor possa abrir a execução que os produziu.

360 

361Os commits que Claude cria em uma sessão na nuvem incluem um trailer git `Claude-Session: <url>`, e os corpos de PR incluem a URL da sessão em sua própria linha. Isso requer v2.1.179 ou posterior. Para omitir o trailer e o link do corpo de PR, defina [`attribution.sessionUrl`](/docs/pt/settings-reference#attribution-sessionurl) como `false`. A configuração requer v2.1.182 ou posterior.

362 

363Para incluir o link da sessão em algo diferente de um commit ou PR, como uma mensagem do Slack que Claude posta ou um arquivo de relatório que ele escreve, peça a Claude para executar o seguinte comando e use sua saída. O comando converte o prefixo `cse_` no valor da variável de ambiente para o prefixo `session_` que a URL de transcrição espera:

364 

365```bash theme={null}

366echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"

367```

368 

369<h3 id="run-tests-start-services-and-add-packages">

370 Execute testes, inicie serviços e adicione pacotes

371</h3>

372 

373Você não obtém um shell na VM da sessão. Claude executa cada comando para você, portanto expresse as tarefas nesta seção como solicitações em seu prompt.

374 

375<h4 id="run-tests">

376 Execute testes

377</h4>

378 

379Claude executa testes como parte do trabalho em uma tarefa. Peça por isso em seu prompt, como "corrigir os testes falhando em `tests/`" ou "executar pytest após cada alteração." Os executores de teste que vêm com as [cadeias de ferramentas pré-instaladas](#installed-tools), como pytest e cargo test, funcionam sem configuração adicional. Um executor que seu projeto declara como uma dependência, como jest, instala com suas dependências.

380 

381<h4 id="start-services">

382 Inicie serviços

383</h4>

384 

385PostgreSQL e Redis estão pré-instalados mas não estão em execução por padrão. Peça a Claude para iniciar o que você precisar; os comandos que ele executa são:

386 

387```bash theme={null}

388service postgresql start

389```

390 

391```bash theme={null}

392service redis-server start

393```

394 

395Docker está disponível para executar serviços em contêiner. Peça a Claude para executar `docker compose up` para iniciar os serviços do seu projeto. O acesso à rede para puxar imagens segue o [nível de acesso](#access-levels) do seu ambiente, e os [padrões Trusted](#default-allowed-domains) incluem Docker Hub e outros registros comuns.

396 

397Se suas imagens forem grandes ou lentas para puxar, adicione `docker compose pull` ou `docker compose build` ao seu [script de configuração](#setup-scripts). O [cache do ambiente](#environment-caching) mantém as imagens puxadas, portanto cada nova sessão as tem no disco. O cache armazena apenas arquivos, não processos em execução, portanto Claude ainda inicia os contêineres cada sessão.

398 

399<h4 id="add-packages">

400 Adicione pacotes

401</h4>

402 

403Para adicionar pacotes que não estão pré-instalados, use um [script de configuração](#setup-scripts). O [cache do ambiente](#environment-caching) mantém o que o script instala, portanto os pacotes que você instala lá estão disponíveis no início de cada sessão sem reinstalar cada vez. Você também pode pedir a Claude para instalar pacotes no meio da sessão, mas essas instalações não se transferem para outras sessões.

404 

405<h3 id="resource-limits">

406 Limites de recursos

407</h3>

408 

409As sessões na nuvem em ambientes hospedados pela Anthropic são executadas com limites de recursos aproximados que podem mudar ao longo do tempo:

410 

411* 4 vCPUs

412* 16 GB de RAM

413* 30 GB de disco

414 

415A VM pode parar tarefas que precisam significativamente mais memória, como grandes trabalhos de compilação ou testes com uso intensivo de memória. Para cargas de trabalho além desses limites, use [Remote Control](/docs/pt/remote-control) para executar Claude Code em seu próprio hardware, ou execute sessões na nuvem em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) em computação que sua organização opera.

416 

417<h2 id="setup-scripts">

418 Scripts de configuração

419</h2>

420 

421Um script de configuração é um script Bash que é executado quando uma nova sessão na nuvem é iniciada, antes do Claude Code ser lançado. Use scripts de configuração para instalar dependências, configurar ferramentas ou buscar qualquer coisa que a sessão precise que não esteja pré-instalada.

422 

423Os scripts são executados como root no Ubuntu 24.04, portanto `apt install` e a maioria dos gerenciadores de pacotes de linguagem funcionam.

424 

425Para adicionar um script de configuração, abra o diálogo de configurações do ambiente e insira seu script no campo **Setup script**.

426 

427Este exemplo instala [ShellCheck](https://www.shellcheck.net/), que não está pré-instalado.

428 

429```bash theme={null}

430#!/bin/bash

431apt update && apt install -y shellcheck

432```

433 

434<h3 id="script-requirements">

435 Requisitos do script

436</h3>

437 

438Um script de configuração tem três restrições para trabalhar:

439 

440* **Saia com zero**: se o script sair com não-zero, a sessão falha ao iniciar. Anexe `|| true` a comandos não críticos para que uma falha de instalação intermitente não bloqueie a sessão.

441* **Termine em cinco minutos**: mantenha o tempo de execução total do script em aproximadamente cinco minutos para que o [cache do ambiente](#environment-caching) possa ser construído. Execute instalações independentes em paralelo com `&` e `wait`, e mova qualquer download único que não se encaixe em um [hook SessionStart](#setup-scripts-vs-sessionstart-hooks) que o inicie em segundo plano.

442* **Acesso à rede para instalações**: as instalações de pacotes precisam alcançar registros. O nível **Trusted** padrão cobre [registros de pacotes comuns](#default-allowed-domains) incluindo npm, PyPI, RubyGems e crates.io; com acesso à rede **None**, as instalações falham.

443 

444<h3 id="environment-caching">

445 Cache do ambiente

446</h3>

447 

448O script de configuração é executado na primeira vez que você inicia uma sessão em um ambiente. Depois que é concluído, a Anthropic tira um snapshot do sistema de arquivos e reutiliza esse snapshot como ponto de partida para sessões posteriores. As novas sessões começam com suas dependências, ferramentas e imagens Docker já no disco, e pulam a etapa do script de configuração. Isso mantém a inicialização rápida mesmo quando o script instala cadeias de ferramentas grandes ou puxa imagens de contêiner.

449 

450O cache é um snapshot do sistema de arquivos, portanto mantém o que o script de configuração escreve no disco e perde qualquer coisa que estava apenas em execução. Os pacotes que você instala, as imagens Docker que você puxa e os arquivos que você escreve todos se transferem. Um banco de dados que o script iniciou, uma pilha `docker compose up` ou qualquer outro processo em segundo plano não; inicie aqueles por sessão pedindo a Claude ou com um [hook SessionStart](#setup-scripts-vs-sessionstart-hooks).

451 

452O script de configuração é executado novamente para reconstruir o cache quando você altera o script de configuração do ambiente ou hosts de rede permitidos, e quando o cache atinge sua expiração após aproximadamente sete dias. Retomar uma sessão existente nunca re-executa o script de configuração.

453 

454Você não precisa ativar o cache ou gerenciar snapshots você mesmo.

455 

456<h3 id="setup-scripts-vs-sessionstart-hooks">

457 Scripts de configuração vs. hooks SessionStart

458</h3>

459 

460Use um script de configuração para provisionar a própria VM: cadeias de ferramentas e ferramentas CLI que não estão [pré-instaladas](#installed-tools). Use um [hook SessionStart](/docs/pt/hooks#sessionstart) para configuração de projeto que deve ser executada em qualquer lugar, nuvem e local, como `npm install`.

461 

462Os scripts de configuração e hooks SessionStart são executados em uma ordem fixa quando uma sessão na nuvem é iniciada. A tabela compara onde você os configura, quando são executados e onde são executados.

463 

464| | Scripts de configuração | Hooks SessionStart |

465| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

466| **Onde você os configura** | O diálogo de ambiente em [claude.ai/code](https://claude.ai/code), mais a página **Cloud environments** do administrador para [ambientes compartilhados](#organization-shared-environments) | Um [arquivo de configurações](/docs/pt/settings#where-settings-live) como seu `.claude/settings.json` do repositório; veja [O que é transferido de sua configuração](#what-carries-over-from-your-setup) para quais arquivos alcançam uma sessão na nuvem |

467| **Quando eles são executados** | Antes do Claude Code ser lançado, pulado quando um [ambiente em cache](#environment-caching) existe | Depois que Claude Code é lançado, em cada sessão incluindo retomada |

468| **Onde eles são executados** | Sessões na nuvem apenas | Sessões locais e na nuvem |

469 

470Se você tem hooks SessionStart em seu `~/.claude/settings.json` no nível de usuário, não espere por eles na nuvem: as configurações no nível de usuário ficam em sua máquina. Qual outro hook é executado depende de onde a sessão é executada:

471 

472* **Ambiente hospedado pela Anthropic**: Claude Code executa hooks do repositório e das [configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings) de sua organização.

473* **[Ambiente auto-hospedado](/docs/pt/self-hosted-environments-configuration#permissions-and-tool-approval)**: Claude Code também executa os hooks que o operador semeou a partir do `~/.claude/` do host do executor, e os hooks no arquivo de configurações gerenciadas da imagem do executor quando esse arquivo é um das [fontes gerenciadas que Claude Code aplica](/docs/pt/managed-settings#how-claude-code-combines-managed-sources).

474 

475<h3 id="install-dependencies-with-a-sessionstart-hook">

476 Instale dependências com um hook SessionStart

477</h3>

478 

479Para instalar dependências apenas em sessões na nuvem, emparelhe um hook SessionStart com um script que verifica onde está sendo executado.

480 

481Primeiro, adicione um hook SessionStart ao seu `.claude/settings.json` do repositório. Esta configuração diz a Claude Code para executar `scripts/install_pkgs.sh` do seu repositório sempre que uma sessão é iniciada ou retomada:

482 

483```json theme={null}

484{

485 "hooks": {

486 "SessionStart": [

487 {

488 "matcher": "startup|resume",

489 "hooks": [

490 {

491 "type": "command",

492 "command": "bash \"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"

493 }

494 ]

495 }

496 ]

497 }

498}

499```

500 

501O `matcher` limita o hook aos eventos `startup` e `resume`, e `$CLAUDE_PROJECT_DIR` resolve para a raiz do repositório, portanto o hook encontra o script independentemente do diretório de trabalho da sessão.

502 

503Em seguida, crie o script em `scripts/install_pkgs.sh`. Ele sai imediatamente fora da nuvem, depois instala suas dependências:

504 

505```bash theme={null}

506#!/bin/bash

507 

508if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then

509 exit 0

510fi

511 

512npm install

513pip install -r requirements.txt

514exit 0

515```

516 

517A verificação `CLAUDE_CODE_REMOTE` é o que escopa a instalação para sessões na nuvem: a VM do ambiente carrega essa variável como `true`, nunca é `true` localmente, portanto em seu laptop o script sai antes de instalar qualquer coisa.

518 

519Juntos, os dois arquivos dão a cada sessão na nuvem um `npm install` e `pip install` fresco na inicialização enquanto deixam as sessões locais intocadas.

520 

521<h4 id="limitations-in-cloud-sessions">

522 Limitações em sessões na nuvem

523</h4>

524 

525Os hooks SessionStart se comportam da mesma forma na nuvem que localmente, com essas ressalvas:

526 

527* **Sem escopo apenas na nuvem**: os hooks são executados em sessões locais e na nuvem. Para pular a execução local, verifique a variável de ambiente `CLAUDE_CODE_REMOTE` conforme mostrado acima.

528* **Requer acesso à rede**: os comandos de instalação precisam alcançar registros de pacotes. Se seu ambiente usa acesso à rede **None**, esses hooks falham. A [lista de permissões padrão](#default-allowed-domains) em **Trusted** cobre npm, PyPI, RubyGems e crates.io.

529* **Compatibilidade de proxy**: em ambientes hospedados pela Anthropic, todo o tráfego de saída passa por um [proxy de segurança](#security-proxy), e alguns gerenciadores de pacotes não funcionam corretamente com isso; Bun é um exemplo conhecido. Em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments-deploy#default-deny-egress), o tráfego de saída vai através de seu próprio limite de rede em vez disso.

530* **Adiciona latência de inicialização**: os hooks são executados cada vez que uma sessão é iniciada ou retomada, ao contrário dos scripts de configuração que se beneficiam do [cache do ambiente](#environment-caching). Mantenha os scripts de instalação rápidos verificando se as dependências já estão presentes antes de reinstalar.

531 

532Para personalizar a imagem base, use um script de configuração para instalar o que você precisa no topo da [imagem fornecida](#installed-tools), ou execute sua própria imagem como um contêiner ao lado de Claude com `docker compose`. Substituir a imagem base inteiramente ainda não é suportado.

533 

534<h2 id="default-allowed-domains">

535 Domínios permitidos padrão

536</h2>

537 

538Com acesso à rede **Trusted**, as sessões podem alcançar os seguintes domínios por padrão. Os domínios marcados com `*` indicam correspondência de subdomínio curinga, portanto `*.gcr.io` permite qualquer subdomínio de `gcr.io`.

539 

540<AccordionGroup>

541 <Accordion title="Serviços Anthropic">

542 * api.anthropic.com

543 * statsig.anthropic.com

544 * docs.claude.com

545 * platform.claude.com

546 * code.claude.com

547 * claude.ai

548 </Accordion>

549 

550 <Accordion title="Controle de versão">

551 * github.com

552 * [www.github.com](http://www.github.com)

553 * api.github.com

554 * npm.pkg.github.com

555 * raw\.githubusercontent.com

556 * pkg-npm.githubusercontent.com

557 * objects.githubusercontent.com

558 * release-assets.githubusercontent.com

559 * codeload.github.com

560 * avatars.githubusercontent.com

561 * camo.githubusercontent.com

562 * gist.github.com

563 * gitlab.com

564 * [www.gitlab.com](http://www.gitlab.com)

565 * registry.gitlab.com

566 * bitbucket.org

567 * [www.bitbucket.org](http://www.bitbucket.org)

568 * api.bitbucket.org

569 </Accordion>

570 

571 <Accordion title="Registros de contêiner">

572 * registry-1.docker.io

573 * auth.docker.io

574 * index.docker.io

575 * hub.docker.com

576 * [www.docker.com](http://www.docker.com)

577 * production.cloudflare.docker.com

578 * download.docker.com

579 * gcr.io

580 * \*.gcr.io

581 * ghcr.io

582 * mcr.microsoft.com

583 * \*.data.mcr.microsoft.com

584 * public.ecr.aws

585 </Accordion>

586 

587 <Accordion title="Plataformas na nuvem">

588 * cloud.google.com

589 * accounts.google.com

590 * gcloud.google.com

591 * \*.googleapis.com

592 * storage.googleapis.com

593 * compute.googleapis.com

594 * container.googleapis.com

595 * azure.com

596 * portal.azure.com

597 * microsoft.com

598 * [www.microsoft.com](http://www.microsoft.com)

599 * \*.microsoftonline.com

600 * packages.microsoft.com

601 * dotnet.microsoft.com

602 * dot.net

603 * visualstudio.com

604 * dev.azure.com

605 * \*.amazonaws.com

606 * \*.api.aws

607 * oracle.com

608 * [www.oracle.com](http://www.oracle.com)

609 * java.com

610 * [www.java.com](http://www.java.com)

611 * java.net

612 * [www.java.net](http://www.java.net)

613 * download.oracle.com

614 * yum.oracle.com

615 </Accordion>

616 

617 <Accordion title="Gerenciadores de pacotes JavaScript e Node">

618 * registry.npmjs.org

619 * [www.npmjs.com](http://www.npmjs.com)

620 * [www.npmjs.org](http://www.npmjs.org)

621 * npmjs.com

622 * npmjs.org

623 * yarnpkg.com

624 * registry.yarnpkg.com

625 </Accordion>

626 

627 <Accordion title="Gerenciadores de pacotes Python">

628 * pypi.org

629 * [www.pypi.org](http://www.pypi.org)

630 * files.pythonhosted.org

631 * pythonhosted.org

632 * test.pypi.org

633 * pypi.python.org

634 * pypa.io

635 * [www.pypa.io](http://www.pypa.io)

636 </Accordion>

637 

638 <Accordion title="Gerenciadores de pacotes Ruby">

639 * rubygems.org

640 * [www.rubygems.org](http://www.rubygems.org)

641 * api.rubygems.org

642 * index.rubygems.org

643 * ruby-lang.org

644 * [www.ruby-lang.org](http://www.ruby-lang.org)

645 * rubyforge.org

646 * [www.rubyforge.org](http://www.rubyforge.org)

647 * rubyonrails.org

648 * [www.rubyonrails.org](http://www.rubyonrails.org)

649 * rvm.io

650 * get.rvm.io

651 </Accordion>

652 

653 <Accordion title="Gerenciadores de pacotes Rust">

654 * crates.io

655 * [www.crates.io](http://www.crates.io)

656 * index.crates.io

657 * static.crates.io

658 * rustup.rs

659 * static.rust-lang.org

660 * [www.rust-lang.org](http://www.rust-lang.org)

661 </Accordion>

662 

663 <Accordion title="Gerenciadores de pacotes Go">

664 * proxy.golang.org

665 * sum.golang.org

666 * index.golang.org

667 * golang.org

668 * [www.golang.org](http://www.golang.org)

669 * goproxy.io

670 * pkg.go.dev

671 </Accordion>

672 

673 <Accordion title="Gerenciadores de pacotes JVM">

674 * maven.org

675 * repo.maven.org

676 * central.maven.org

677 * repo1.maven.org

678 * repo.maven.apache.org

679 * jcenter.bintray.com

680 * gradle.org

681 * [www.gradle.org](http://www.gradle.org)

682 * services.gradle.org

683 * plugins.gradle.org

684 * kotlinlang.org

685 * [www.kotlinlang.org](http://www.kotlinlang.org)

686 * spring.io

687 * repo.spring.io

688 </Accordion>

689 

690 <Accordion title="Outros gerenciadores de pacotes">

691 * packagist.org (PHP Composer)

692 * [www.packagist.org](http://www.packagist.org)

693 * repo.packagist.org

694 * nuget.org (.NET NuGet)

695 * [www.nuget.org](http://www.nuget.org)

696 * api.nuget.org

697 * pub.dev (Dart/Flutter)

698 * api.pub.dev

699 * hex.pm (Elixir/Erlang)

700 * [www.hex.pm](http://www.hex.pm)

701 * cpan.org (Perl CPAN)

702 * [www.cpan.org](http://www.cpan.org)

703 * metacpan.org

704 * [www.metacpan.org](http://www.metacpan.org)

705 * api.metacpan.org

706 * cocoapods.org (iOS/macOS)

707 * [www.cocoapods.org](http://www.cocoapods.org)

708 * cdn.cocoapods.org

709 * haskell.org

710 * [www.haskell.org](http://www.haskell.org)

711 * hackage.haskell.org

712 * swift.org

713 * [www.swift.org](http://www.swift.org)

714 </Accordion>

715 

716 <Accordion title="Distribuições Linux">

717 * archive.ubuntu.com

718 * security.ubuntu.com

719 * ubuntu.com

720 * [www.ubuntu.com](http://www.ubuntu.com)

721 * \*.ubuntu.com

722 * ppa.launchpad.net

723 * launchpad.net

724 * [www.launchpad.net](http://www.launchpad.net)

725 * \*.nixos.org

726 </Accordion>

727 

728 <Accordion title="Ferramentas de desenvolvimento e plataformas">

729 * dl.k8s.io (Kubernetes)

730 * pkgs.k8s.io

731 * k8s.io

732 * [www.k8s.io](http://www.k8s.io)

733 * releases.hashicorp.com (HashiCorp)

734 * apt.releases.hashicorp.com

735 * rpm.releases.hashicorp.com

736 * archive.releases.hashicorp.com

737 * hashicorp.com

738 * [www.hashicorp.com](http://www.hashicorp.com)

739 * repo.anaconda.com (Anaconda/Conda)

740 * conda.anaconda.org

741 * anaconda.org

742 * [www.anaconda.com](http://www.anaconda.com)

743 * anaconda.com

744 * continuum.io

745 * apache.org (Apache)

746 * [www.apache.org](http://www.apache.org)

747 * archive.apache.org

748 * downloads.apache.org

749 * eclipse.org (Eclipse)

750 * [www.eclipse.org](http://www.eclipse.org)

751 * download.eclipse.org

752 * nodejs.org (Node.js)

753 * [www.nodejs.org](http://www.nodejs.org)

754 * developer.apple.com

755 * developer.android.com

756 * pkg.stainless.com

757 * binaries.prisma.sh

758 </Accordion>

759 

760 <Accordion title="Serviços na nuvem e monitoramento">

761 * statsig.com

762 * [www.statsig.com](http://www.statsig.com)

763 * api.statsig.com

764 * sentry.io

765 * \*.sentry.io

766 * downloads.sentry-cdn.com

767 * http-intake.logs.datadoghq.com

768 * browser-intake-us5-datadoghq.com

769 * \*.datadoghq.com

770 * \*.datadoghq.eu

771 * api.honeycomb.io

772 </Accordion>

773 

774 <Accordion title="Entrega de conteúdo e espelhos">

775 * sourceforge.net

776 * \*.sourceforge.net

777 * packagecloud.io

778 * \*.packagecloud.io

779 * fonts.googleapis.com

780 * fonts.gstatic.com

781 </Accordion>

782 

783 <Accordion title="Schema e configuração">

784 * json-schema.org

785 * [www.json-schema.org](http://www.json-schema.org)

786 * json.schemastore.org

787 * [www.schemastore.org](http://www.schemastore.org)

788 </Accordion>

789 

790 <Accordion title="Model Context Protocol">

791 * \*.modelcontextprotocol.io

792 </Accordion>

793</AccordionGroup>

794 

795<h2 id="related-resources">

796 Recursos relacionados

797</h2>

798 

799* [Claude Code na web](/docs/pt/claude-code-on-the-web): inicie, gerencie e compartilhe sessões na nuvem

800* [Guia de início rápido da web](/docs/pt/web-quickstart): conecte GitHub e inicie sua primeira sessão na nuvem

801* [Claude Tag](https://claude.com/docs/claude-tag/overview): as sessões que Claude inicia do Slack são executadas nos mesmos ambientes

802* [Rotinas](/docs/pt/routines): as execuções agendadas usam os mesmos ambientes e níveis de acesso à rede

803* [Remote Control](/docs/pt/remote-control): execute sessões na rede e nos arquivos de sua própria máquina em vez disso

804* [Ambientes auto-hospedados](/docs/pt/self-hosted-environments): execute sessões na nuvem na infraestrutura própria de sua organização

805* [Hooks SessionStart](/docs/pt/hooks#sessionstart): configuração confirmada no repositório que é executada em sessões locais e na nuvem

806* [Configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings): política da organização que alcança sessões na nuvem

commands.md +4 −4

Details

54| Comando | Propósito |54| Comando | Propósito |

55| :----------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |55| :----------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

56| `/add-dir <path>` | Adicione um diretório de trabalho para acesso a arquivos durante a sessão atual. Digite um caminho parcial para ver sugestões de diretório correspondentes; pressione `Tab` para aceitar uma. A maioria da configuração `.claude/` [não é descoberta](/docs/pt/permissions#additional-directories-grant-file-access-not-configuration) do diretório adicionado. Você não pode adicionar a maioria dos [caminhos de rede](/docs/pt/errors#working-directory-is-a-network-path), como `\\server\share`. Após uma adição bem-sucedida, seus [hooks `DirectoryAdded`](/docs/pt/hooks#directoryadded) são executados. Quando você o executa enquanto Claude está respondendo, Claude Code pede que você confirme o diretório imediatamente, e uma vez confirmado, a próxima chamada de ferramenta do Claude na mesma volta pode acessá-lo. Antes da v2.1.234, Claude Code enfileirava o comando até que a volta terminasse |56| `/add-dir <path>` | Adicione um diretório de trabalho para acesso a arquivos durante a sessão atual. Digite um caminho parcial para ver sugestões de diretório correspondentes; pressione `Tab` para aceitar uma. A maioria da configuração `.claude/` [não é descoberta](/docs/pt/permissions#additional-directories-grant-file-access-not-configuration) do diretório adicionado. Você não pode adicionar a maioria dos [caminhos de rede](/docs/pt/errors#working-directory-is-a-network-path), como `\\server\share`. Após uma adição bem-sucedida, seus [hooks `DirectoryAdded`](/docs/pt/hooks#directoryadded) são executados. Quando você o executa enquanto Claude está respondendo, Claude Code pede que você confirme o diretório imediatamente, e uma vez confirmado, a próxima chamada de ferramenta do Claude na mesma volta pode acessá-lo. Antes da v2.1.234, Claude Code enfileirava o comando até que a volta terminasse |

57| `/advisor [model\|off]` | Ative ou desative a [ferramenta advisor](/docs/pt/advisor), que consulta um segundo modelo para orientação em momentos-chave durante uma tarefa. Aceita `fable`, `opus`, `sonnet` ou um ID de modelo completo. `fable` requer [acesso Fable](/docs/pt/advisor#choose-an-advisor-model). Sem um argumento, abre um seletor |57| `/advisor [model\|off]` | Ative ou desative a [ferramenta advisor](/docs/pt/advisor), que consulta um segundo modelo para orientação em momentos-chave durante uma tarefa. Aceita `fable`, `opus`, `sonnet` ou um ID de modelo completo. `fable` requer [acesso Fable](/docs/pt/advisor#choose-an-advisor-model). Sem um argumento, abre um seletor. Em uma sessão sem um terminal interativo, ou via [Remote Control](/docs/pt/remote-control#limitations), passe o modelo ou `off` como um argumento; sem argumento lá, o comando imprime o advisor atual como texto. Esses formulários requerem Claude Code v2.1.260 ou posterior |

58| `/agents` | A partir da v2.1.198, executar `/agents` imprime um lembrete para pedir ao Claude para criar ou gerenciar [subagentes](/docs/pt/sub-agents), ou para editar `.claude/agents/` ou `~/.claude/agents/` diretamente. Na v2.1.197 e anteriores, abre uma interface interativa para criar e gerenciar configurações de subagentes |58| `/agents` | A partir da v2.1.198, executar `/agents` imprime um lembrete para pedir ao Claude para criar ou gerenciar [subagentes](/docs/pt/sub-agents), ou para editar `.claude/agents/` ou `~/.claude/agents/` diretamente. Na v2.1.197 e anteriores, abre uma interface interativa para criar e gerenciar configurações de subagentes |

59| `/artifacts` | Liste os [artefatos](/docs/pt/artifacts#find-an-artifact-again) que você possui ou que são compartilhados com você, depois anexe um à sessão, abra-o no seu navegador ou copie seu link. Disponível onde [artefatos](/docs/pt/artifacts#availability) estão. Requer Claude Code v2.1.208 ou posterior; anexar com `Enter` requer v2.1.216 |59| `/artifacts` | Liste os [artefatos](/docs/pt/artifacts#find-an-artifact-again) que você possui ou que são compartilhados com você, depois anexe um à sessão, abra-o no seu navegador ou copie seu link. Disponível onde [artefatos](/docs/pt/artifacts#availability) estão. Requer Claude Code v2.1.208 ou posterior; anexar com `Enter` requer v2.1.216 |

60| `/auto-mode-setup` | [Rascunhe entradas `autoMode.environment`](/docs/pt/auto-mode-config#generate-environment-entries) do seu projeto e sessões recentes, depois revise o rascunho e salve-o nas suas configurações de usuário. Requer um plano Pro, Max ou Team e Claude Code v2.1.228 ou posterior. No Windows nativo, requer v2.1.233 ou posterior |60| `/auto-mode-setup` | [Rascunhe entradas `autoMode.environment`](/docs/pt/auto-mode-config#generate-environment-entries) do seu projeto e sessões recentes, depois revise o rascunho e salve-o nas suas configurações de usuário. Requer um plano Pro, Max ou Team e Claude Code v2.1.228 ou posterior. No Windows nativo, requer v2.1.233 ou posterior |


81| `/deep-research <question>` | **[Workflow](/docs/pt/workflows#bundled-workflows).** Distribua buscas na web em uma pergunta, busque e verifique cruzadamente fontes e sintetize um relatório citado |81| `/deep-research <question>` | **[Workflow](/docs/pt/workflows#bundled-workflows).** Distribua buscas na web em uma pergunta, busque e verifique cruzadamente fontes e sintetize um relatório citado |

82| `/design [brief]` | **[Skill](/docs/pt/skills#bundled-skills).** Rascunhe mockups de UI, fluxos de tela, páginas de destino ou pôsteres como artboards em uma tela, publicados como um [artefato](/docs/pt/artifacts#draft-a-design-canvas) que executa uma visualização de pesquisa do editor Claude Design, por exemplo `/design a settings screen for a mobile banking app`. Onde a economia está habilitada para sua conta, você edita os artboards na tela e salva para publicar uma nova versão; caso contrário, você visualiza o rascunho e o exporta como PNG ou PDF. Requer uma sessão onde [artefatos estão disponíveis](/docs/pt/artifacts#availability) e Claude Code v2.1.234 ou posterior. Disponível na API Anthropic. No Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e Claude Platform no AWS, artefatos não estão disponíveis, então o comando não está disponível lá |82| `/design [brief]` | **[Skill](/docs/pt/skills#bundled-skills).** Rascunhe mockups de UI, fluxos de tela, páginas de destino ou pôsteres como artboards em uma tela, publicados como um [artefato](/docs/pt/artifacts#draft-a-design-canvas) que executa uma visualização de pesquisa do editor Claude Design, por exemplo `/design a settings screen for a mobile banking app`. Onde a economia está habilitada para sua conta, você edita os artboards na tela e salva para publicar uma nova versão; caso contrário, você visualiza o rascunho e o exporta como PNG ou PDF. Requer uma sessão onde [artefatos estão disponíveis](/docs/pt/artifacts#availability) e Claude Code v2.1.234 ou posterior. Disponível na API Anthropic. No Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e Claude Platform no AWS, artefatos não estão disponíveis, então o comando não está disponível lá |

83| `/design-login` | Autorize acesso ao sistema de design para `/design-sync` com sua conta claude.ai |83| `/design-login` | Autorize acesso ao sistema de design para `/design-sync` com sua conta claude.ai |

84| `/design-sync [hint]` | **[Skill](/docs/pt/skills#bundled-skills).** Converta o sistema de design React do seu repositório e carregue-o em [Claude Design](https://claude.ai/design), para que os designs que produz usem seus componentes reais. Opcionalmente nomeie o sistema de design, por exemplo `/design-sync Acme DS`. Uma sincronização pela primeira vez verifica cada componente e pode levar algumas horas em um repositório grande. Disponível na API Anthropic; no Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e Claude Platform no AWS, a ferramenta subjacente não consegue alcançar claude.ai, então o comando não está disponível |84| `/design-sync [hint]` | **[Skill](/docs/pt/skills#bundled-skills).** Converta o sistema de design React do seu repositório e carregue-o em [Claude Design](https://claude.ai/design), para que os designs que produz usem seus componentes reais. Opcionalmente nomeie o sistema de design, por exemplo `/design-sync Acme DS`. Uma sincronização pela primeira vez verifica cada componente e pode levar algumas horas em um repositório grande. Disponível na API Anthropic. Precisa de claude.ai, que a CLI não contatará no Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou Claude Platform no AWS, ou através de um [gateway de apps Claude](/docs/pt/claude-apps-gateway#availability-and-limitations), então o comando não está disponível lá |

85| `/desktop` | Continue a sessão atual no app Claude Code Desktop. Requer macOS ou Windows x64 e uma assinatura Claude. Alias: `/app` |85| `/desktop` | Continue a sessão atual no app Claude Code Desktop. Requer macOS ou Windows x64 e uma assinatura Claude. Alias: `/app` |

86| `/diff` | Revise as mudanças em sua árvore de trabalho, incluindo as edições que Claude fez até agora. Consulte [Revisar mudanças com /diff](/docs/pt/interactive-mode#review-changes-with-%2Fdiff) |86| `/diff` | Revise as mudanças em sua árvore de trabalho, incluindo as edições que Claude fez até agora. Consulte [Revisar mudanças com /diff](/docs/pt/interactive-mode#review-changes-with-%2Fdiff) |

87| `/doctor` | **[Skill](/docs/pt/skills#bundled-skills).** Execute uma verificação de configuração que diagnostica problemas e pode corrigi-los. Verifica a saúde da instalação, incluindo instalações duplicadas ou restantes, problemas de `PATH` e arquivos de configurações não analisáveis. Encontra skills, servidores MCP e plugins não utilizados versus seu custo de contexto, sinaliza [hooks](/docs/pt/hooks) lentos e verifica uma versão mais nova em seu [canal de lançamento](/docs/pt/setup#configure-release-channel). Deduplica arquivos `CLAUDE.md` locais contra os verificados, aparas arquivos [`CLAUDE.md`](/docs/pt/memory#my-claude-md-is-too-large) verificados cortando conteúdo que Claude poderia derivar do codebase e migra a orientação sempre carregada que permanece em [skills](/docs/pt/skills) e arquivos `CLAUDE.md` aninhados que carregam sob demanda. Também oferece fazer [modo automático](/docs/pt/permissions#permission-modes) seu padrão e [pré-aprovar](/docs/pt/permissions) comandos somente leitura frequentemente negados. Relata descobertas primeiro e pede confirmação antes de mudar qualquer coisa. Do terminal, `claude doctor` imprime diagnósticos de instalação somente leitura sem iniciar uma sessão. Alias: `/checkup`. A verificação de aparas `CLAUDE.md` requer Claude Code v2.1.206 ou posterior. Antes da v2.1.205, `/doctor` abria uma tela de diagnósticos somente leitura e pressionar `f` enviava o relatório para Claude |87| `/doctor` | **[Skill](/docs/pt/skills#bundled-skills).** Execute uma verificação de configuração que diagnostica problemas e pode corrigi-los. Verifica a saúde da instalação, incluindo instalações duplicadas ou restantes, problemas de `PATH` e arquivos de configurações não analisáveis. Encontra skills, servidores MCP e plugins não utilizados versus seu custo de contexto, sinaliza [hooks](/docs/pt/hooks) lentos e verifica uma versão mais nova em seu [canal de lançamento](/docs/pt/setup#configure-release-channel). Deduplica arquivos `CLAUDE.md` locais contra os verificados, aparas arquivos [`CLAUDE.md`](/docs/pt/memory#my-claude-md-is-too-large) verificados cortando conteúdo que Claude poderia derivar do codebase e migra a orientação sempre carregada que permanece em [skills](/docs/pt/skills) e arquivos `CLAUDE.md` aninhados que carregam sob demanda. Também oferece fazer [modo automático](/docs/pt/permissions#permission-modes) seu padrão e [pré-aprovar](/docs/pt/permissions) comandos somente leitura frequentemente negados. Relata descobertas primeiro e pede confirmação antes de mudar qualquer coisa. Do terminal, `claude doctor` imprime diagnósticos de instalação somente leitura sem iniciar uma sessão. Alias: `/checkup`. A verificação de aparas `CLAUDE.md` requer Claude Code v2.1.206 ou posterior. Antes da v2.1.205, `/doctor` abria uma tela de diagnósticos somente leitura e pressionar `f` enviava o relatório para Claude |


98| `/help` | Mostre ajuda e comandos disponíveis |98| `/help` | Mostre ajuda e comandos disponíveis |

99| `/hooks` | Veja configurações [hook](/docs/pt/hooks) para eventos de ferramentas |99| `/hooks` | Veja configurações [hook](/docs/pt/hooks) para eventos de ferramentas |

100| `/ide` | Gerencie integrações IDE e mostre status |100| `/ide` | Gerencie integrações IDE e mostre status |

101| `/import [codex\|gemini] [--dry-run] [--yes]` | Traga configuração de outros agentes de codificação em sua máquina, atualmente OpenAI Codex e Google Gemini CLI, para Claude Code, incluindo arquivos de instrução, servidores MCP, comandos, subagentes e skills. Em [modo não interativo](/docs/pt/headless) com `-p`, `/import` lista o que encontrou e fornece o comando que confirma a importação. Adicione `--dry-run` para visualizar sem escrever nada, ou `--yes` para pular o seletor interativo. Não disponível no Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou Claude Platform no AWS. Também indisponível quando você desativa [busca de sinalizador de recurso](/docs/pt/env-vars#features-that-need-feature-flag-fetching). Requer Claude Code v2.1.213 ou posterior |101| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | Traga configuração de OpenAI Codex, Google Gemini CLI ou Cursor em sua máquina para Claude Code, incluindo arquivos de instrução, servidores MCP, comandos, subagentes e skills. Em [modo não interativo](/docs/pt/headless) com `-p`, `/import` lista o que encontrou e fornece o comando que confirma a importação. Adicione `--dry-run` para visualizar sem escrever nada, ou `--yes` para pular o seletor interativo. Não disponível no Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou Claude Platform no AWS, ou através de um [gateway de apps Claude](/docs/pt/claude-apps-gateway#availability-and-limitations). Também indisponível quando você desativa [busca de sinalizador de recurso](/docs/pt/env-vars#features-that-need-feature-flag-fetching). Requer Claude Code v2.1.213 ou posterior. Importar de Cursor requer v2.1.265 ou posterior |

102| `/init` | Inicialize o projeto com um guia `CLAUDE.md`. Defina `CLAUDE_CODE_NEW_INIT=1` para um fluxo interativo que também percorre skills, hooks e arquivos de memória pessoal. Se `/init` encontrar configuração de um agente de codificação que `/import` suporta, oferece carregá-la com `/import` |102| `/init` | Inicialize o projeto com um guia `CLAUDE.md`. Defina `CLAUDE_CODE_NEW_INIT=1` para um fluxo interativo que também percorre skills, hooks e arquivos de memória pessoal. Se `/init` encontrar configuração de OpenAI Codex ou Google Gemini CLI, oferece carregá-la com `/import` |

103| `/insights` | Gere um relatório HTML analisando suas sessões recentes nesta máquina: em quais projetos você trabalha, como você usa Claude Code, onde as coisas dão errado e recursos para tentar. Não disponível em [sessões na nuvem](/docs/pt/claude-code-on-the-web). Consulte [Analise seus padrões de uso](/docs/pt/costs#analyze-your-usage-patterns) para a localização do relatório, retenção e custo |103| `/insights` | Gere um relatório HTML analisando suas sessões recentes nesta máquina: em quais projetos você trabalha, como você usa Claude Code, onde as coisas dão errado e recursos para tentar. Não disponível em [sessões na nuvem](/docs/pt/claude-code-on-the-web). Consulte [Analise seus padrões de uso](/docs/pt/costs#analyze-your-usage-patterns) para a localização do relatório, retenção e custo |

104| `/install-github-app` | Instale o Claude GitHub App para um repositório, com uma etapa opcional para configurar fluxos de trabalho [GitHub Actions](/docs/pt/github-actions) e segredos. Orienta você na seleção de um repositório e configuração da integração. Funciona apenas com repositórios github.com. Quando o git remote do seu repositório está em gitlab.com ou bitbucket.org, o comando imprime um aviso e sai em vez de iniciar a configuração. Para executar Claude Code a partir de pipelines GitLab, consulte [GitLab CI/CD](/docs/pt/gitlab-ci-cd) |104| `/install-github-app` | Instale o Claude GitHub App para um repositório, com uma etapa opcional para configurar fluxos de trabalho [GitHub Actions](/docs/pt/github-actions) e segredos. Orienta você na seleção de um repositório e configuração da integração. Funciona apenas com repositórios github.com. Quando o git remote do seu repositório está em gitlab.com ou bitbucket.org, o comando imprime um aviso e sai em vez de iniciar a configuração. Para executar Claude Code a partir de pipelines GitLab, consulte [GitLab CI/CD](/docs/pt/gitlab-ci-cd) |

105| `/install-slack-app` | Instale o Claude Slack app. Abre um navegador para completar o fluxo OAuth |105| `/install-slack-app` | Instale o Claude Slack app. Abre um navegador para completar o fluxo OAuth |

Details

1588 1588 

1589A sessão percorre um fluxo realista com contagens de tokens representativas:1589A sessão percorre um fluxo realista com contagens de tokens representativas:

1590 1590 

1591* **Antes de você digitar qualquer coisa**: CLAUDE.md, memória automática, nomes de ferramentas MCP e descrições de skills são todos carregados no contexto. Sua própria configuração pode adicionar mais aqui, como um [estilo de saída](/docs/pt/output-styles) ou texto de [`--append-system-prompt`](/docs/pt/cli-reference), que ambos vão para o prompt do sistema da mesma forma.1591* **Antes de você digitar qualquer coisa**: CLAUDE.md, memória automática, nomes de ferramentas MCP e descrições de skills são todos carregados no contexto. Sua própria configuração pode adicionar mais aqui, como um [estilo de saída](/docs/pt/output-styles) ou texto de [`--append-system-prompt`](/docs/pt/cli-reference).

1592* **Conforme Claude trabalha**: cada leitura de arquivo adiciona ao contexto, [regras com escopo de caminho](/docs/pt/memory#path-specific-rules) são carregadas automaticamente junto com arquivos correspondentes, e um [hook PostToolUse](/docs/pt/hooks-guide) é acionado após cada edição.1592* **Conforme Claude trabalha**: cada leitura de arquivo adiciona ao contexto, [regras com escopo de caminho](/docs/pt/memory#path-specific-rules) são carregadas automaticamente junto com arquivos correspondentes, e um [hook PostToolUse](/docs/pt/hooks-guide) é acionado após cada edição.

1593* **O prompt de acompanhamento**: um [subagent](/docs/pt/sub-agents) lida com a pesquisa em sua própria janela de contexto separada, então as leituras de arquivo grandes ficam fora da sua. Apenas o resumo e um pequeno trailer de metadados voltam.1593* **O prompt de acompanhamento**: um [subagent](/docs/pt/sub-agents) lida com a pesquisa em sua própria janela de contexto separada, então as leituras de arquivo grandes ficam fora da sua. Apenas o resumo e um pequeno trailer de metadados voltam.

1594* **No final**: `/compact` substitui a conversa por um resumo estruturado. A maioria do conteúdo de inicialização é recarregada automaticamente; a tabela abaixo mostra o que acontece com cada mecanismo.1594* **No final**: `/compact` substitui a conversa por um resumo estruturado. A maioria do conteúdo de inicialização é recarregada automaticamente; a tabela abaixo mostra o que acontece com cada mecanismo.


1601 1601 

1602| Mecanismo | Após compactação |1602| Mecanismo | Após compactação |

1603| :---------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- |1603| :---------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- |

1604| Prompt do sistema e estilo de saída | Inalterado; não faz parte do histórico de mensagens |1604| Prompt do sistema e estilo de saída | Ambos ainda se aplicam |

1605| CLAUDE.md na raiz do projeto e regras sem escopo | Re-injetado do disco |1605| CLAUDE.md na raiz do projeto e regras sem escopo | Re-injetado do disco |

1606| Memória automática | Re-injetado do disco |1606| Memória automática | Re-injetado do disco |

1607| O plano que Claude escreveu em [plan mode](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode) | Re-injetado do disco |1607| O plano que Claude escreveu em [plan mode](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode) | Re-injetado do disco |

Details

49 Nomes de processos auxiliares em monitores de processos49 Nomes de processos auxiliares em monitores de processos

50</h3>50</h3>

51 51 

52Com um launcher configurado, `ps` e Activity Monitor mostram o nome do binário versionado para os processos auxiliares de fundo em vez dos rótulos `claude bg-pty-host` e `claude bg-spare` do Claude Code, porque o `exec` do launcher reconstrói a lista de argumentos. A renomeação é um efeito colateral, não ocultação: os processos são de outra forma inalterados, e Claude Code identifica seus próprios processos pelo caminho do binário, nunca pelo nome de exibição.52Com um launcher configurado, `ps` e Activity Monitor não mostram mais os rótulos `claude bg-pty-host` e `claude bg-spare` do Claude Code para os processos auxiliares de fundo, porque o `exec` do launcher reconstrói a lista de argumentos. Perder os rótulos é um efeito colateral, não ocultação: os processos são de outra forma inalterados, e Claude Code identifica seus próprios processos pelo caminho do binário, nunca pelo nome de exibição.

53 53 

54<h2 id="set-up-the-launcher">54<h2 id="set-up-the-launcher">

55 Configure o launcher55 Configure o launcher

cross-session-messaging.md +405 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Mensagem para suas outras sessões do Claude Code

6 

7> Deixe Claude listar e enviar mensagens para suas outras sessões do Claude Code nesta máquina, e alcance suas sessões em outras máquinas ou na web.

8 

9<Note>

10 Mensagens entre sessões requerem Claude Code v2.1.224 ou posterior em macOS e Linux, incluindo Linux dentro do WSL 2. No Windows nativo, requer Claude Code v2.1.234 ou posterior. Quando uma sessão atende aos requisitos, as mensagens estão ativadas sem nada para habilitar. Consulte [Disponibilidade](#availability) para requisitos de provedor e como confirmar que uma sessão possui isso.

11</Note>

12 

13Mensagens entre sessões permitem que Claude entregue uma mensagem de uma de suas sessões do Claude Code para outra. Quando uma mudança em uma sessão quebra o que outra está construindo, Claude pode avisar essa sessão antes que você perceba. Quando uma sessão resolve uma pergunta que outra está bloqueada, Claude pode enviar a resposta através.

14 

15Uma mensagem é um pedaço de texto que um Claude escreve para outro, nunca o histórico de conversa ou arquivos do remetente. Para mover uma conversa inteira ou seu contexto, [retome a sessão](/docs/pt/sessions#resume-a-session) em vez disso.

16 

17Claude usa duas ferramentas para isso: `ListAgents` para descobrir quais agentes ele pode alcançar, e `SendMessage` para entregar uma mensagem a um deles pelo nome. Com a mesma ferramenta `SendMessage`, Claude também pode enviar mensagens para [subagentes](/docs/pt/sub-agents#resume-subagents) e colegas de [equipe de agentes](/docs/pt/agent-teams) dentro de uma única sessão ou equipe. Esta página cobre mensagens entre suas sessões independentes.

18 

19<h2 id="when-to-use-cross-session-messaging">

20 Quando usar cross-session messaging

21</h2>

22 

23Use messaging quando uma de suas sessões tem algo que outra sessão precisa no meio da tarefa. Claude pode enviar uma mensagem por conta própria quando vê a necessidade, por exemplo após fazer uma mudança que afeta o trabalho que outra sessão está fazendo, ou você pode pedir que envie uma. Os casos comuns:

24 

25* **Entregar uma descoberta**: quando uma sessão descobre uma mudança quebrada ou toma uma decisão, Claude a resume para a sessão trabalhando na área afetada, em vez de você re-explicá-la lá.

26* **Coordenar worktrees paralelos**: quando sessões trabalham o mesmo repositório em [worktrees](/docs/pt/worktrees) separadas, Claude pode dizer às outras sessões o que foi entregue.

27* **Obter status de trabalho de longa duração**: ter uma migração ou execução de teste relatar de volta para a sessão que você está observando, ou pedir você mesmo de lá. Se essa sessão estiver nesta máquina, Claude também pode [pedir a ela um aviso quando ela próxima ficar ociosa ou sair](#get-a-notice-when-another-session-goes-idle).

28* **Mensagem entre máquinas**: alcance uma de suas sessões em outra máquina ou na web.

29 

30Use messaging entre sessões independentes que você inicia e direciona você mesmo. Claude Code tem um recurso dedicado para cada uma das outras maneiras de executar ou alcançar múltiplas sessões, então use o construído para o que você está fazendo em vez disso:

31 

32* Para continuar uma conversa em outro terminal, ou compartilhar seu contexto com uma nova sessão, [retome a sessão](/docs/pt/sessions#resume-a-session)

33* Para uma equipe coordenada de sessões que Claude gera e supervisiona, use [equipes de agentes](/docs/pt/agent-teams)

34* Para observar e direcionar muitas sessões de um lugar, use [visualização de agentes](/docs/pt/agent-view)

35* Para direcionar uma sessão você mesmo do seu telefone ou outro dispositivo, em vez de ter sessões se enviando mensagens, use [Controle Remoto](/docs/pt/remote-control)

36* Para enviar eventos externos, como resultados de CI ou mensagens de chat, para uma sessão, use [canais](/docs/pt/channels)

37 

38<h2 id="message-another-session">

39 Mensagem para outra sessão

40</h2>

41 

42Quando uma de suas sessões aprende algo que outra sessão precisa, como uma descoberta, um status ou uma decisão, Claude a passa em vez de você copiar e colar entre terminais. Claude descobre o alvo com `ListAgents` e envia com `SendMessage`, então você nunca chama nenhuma ferramenta você mesmo. Claude pode decidir enviar uma mensagem sem ser solicitado, e você também pode solicitar uma.

43 

44Para solicitar uma você mesmo, diga a Claude o que você quer que a outra sessão saiba ou faça. Este exemplo é um prompt que você digita, não uma mensagem que Claude envia:

45 

46```text wrap theme={null}

47Ask the session running in my other terminal whether the migration finished

48```

49 

50Claude escreve a mensagem real em si, então seu prompt pode deixar o conteúdo para Claude. Este prompt pede um resumo sem ditar sua redação, e o que Claude envia varia:

51 

52```text wrap theme={null}

53Explain what we just did to the session working on the payments API

54```

55 

56Para nomear o alvo você mesmo, mencione a sessão em seu prompt: digite `@` seguido pelas primeiras letras do nome da sessão e escolha a sessão do typeahead, da mesma forma que você [@-menciona um subagente](/docs/pt/sub-agents#invoke-subagents-explicitly). Requer Claude Code v2.1.232 ou posterior. Claude Code insere a menção, como `@api-worker`, e diz a Claude qual sessão ela nomeia, então Claude pode enviar mensagem para essa sessão sem listar suas sessões primeiro. Este prompt nomeia o alvo com uma menção:

57 

58```text wrap theme={null}

59Let @api-worker know the schema migration finished

60```

61 

62O typeahead lista suas outras sessões ao vivo nesta máquina. Dois casos precisam de mais do que as primeiras letras de um nome:

63 

64* **Uma sessão além desta máquina**: uma sessão na nuvem ou Controle Remoto aparece no typeahead apenas depois que Claude listou ou enviou mensagem para suas sessões além desta máquina, então peça a Claude para listá-las primeiro.

65* **Um nome com espaço ou outros caracteres fora de letras, dígitos, hífens e sublinhados**: digite-o entre aspas duplas, como `@"release notes"`. Quando você escolhe a sessão do typeahead, Claude Code insere as aspas para você.

66 

67Você também pode digitar a menção sem o seletor. Quando mais de uma sessão ao vivo responde ao nome mencionado, Claude pergunta qual você quer dizer antes de enviar.

68 

69Para o que a mensagem que Claude escreve parece quando chega, incluindo um exemplo de uma, veja [como uma mensagem parece](#what-a-message-looks-like).

70 

71<h3 id="message-delivery">

72 Entrega de mensagem

73</h3>

74 

75O Claude receptor lê a mensagem entre chamadas de ferramenta durante um turno ativo, então uma ferramenta em execução nunca é interrompida. Quando a sessão receptora está ociosa, Claude Code inicia um novo turno com a mensagem.

76 

77Uma mensagem de outra sessão chega como texto simples. Se mencionar um arquivo ou um [recurso MCP](/docs/pt/mcp#use-mcp-resources) com `@`, Claude vê a menção como escrita e Claude Code não anexa nada, se a mensagem inicia um novo turno ou chega durante um. Claude ainda pode abrir um caminho mencionado na máquina receptora com suas próprias ferramentas, sujeito às permissões dessa sessão. Antes de v2.1.251, uma menção `@` em uma mensagem que iniciou um novo turno anexava o arquivo ou recurso MCP no lado receptor.

78 

79Claude Code recusa uma mensagem nos seguintes casos:

80 

81* A mensagem está [acima do limite de tamanho](#limitations). Claude Code a recusa na sessão de envio, antes de sair.

82* Uma rajada rápida para uma sessão nesta máquina atingiu [o que a caixa de entrada dessa sessão aceita](#limitations). Claude Code recusa mais mensagens para essa sessão.

83* O alvo de resposta nesta máquina falha em uma verificação de segurança, como um alvo com link simbólico ou um endpoint que não é o processo esperado. [Recusando enviar uma mensagem cross-session](/docs/pt/errors#refusing-to-send-a-cross-session-message) lista essas verificações.

84* Claude endereça a mensagem ao nome da própria sessão, conforme descrito em [Veja quais sessões Claude pode alcançar](#see-which-sessions-claude-can-reach).

85 

86A sessão receptora verifica cada mensagem chegando contra seus próprios [controles de entrada](#control-inbound-messages), e a verificação termina em um dos três resultados:

87 

88* **Entregue**: Claude Code passa a mensagem para o Claude receptor.

89* **Retida**: Claude Code coloca a mensagem de lado não entregue. Uma mensagem retida alcança Claude apenas quando você a aprova ou uma mudança de modo ou configurações posterior a permite.

90* **Recusada**: Claude Code descarta a mensagem sem entregá-la.

91 

92Uma vez entregue, a mensagem conta para [uso](/docs/pt/costs) como um prompt que você digita, e o Claude receptor pode responder ao remetente da mesma forma, exceto no [caso cross-machine unidirecional](#message-sessions-on-other-machines).

93 

94Os limites de permissão permanecem por sessão. Claude é instruído nunca pedir a outra sessão uma ação que foi negada ou bloqueada em sua própria sessão, ou que suas próprias configurações de permissão bloqueariam, e rotear esse trabalho de volta para você em vez disso. No lado receptor, os [prompts de permissão da própria sessão receptora e regras ainda se aplicam](#how-a-session-treats-an-incoming-message) a qualquer coisa que a mensagem peça.

95 

96<h3 id="get-a-notice-when-another-session-goes-idle">

97 Obter um aviso quando outra sessão fica ociosa

98</h3>

99 

100Claude pode pedir a uma de suas sessões nesta máquina para enviar de volta um aviso quando essa sessão próxima ficar ociosa ou sair. Ocioso aqui significa que a sessão terminou um turno sem nada na fila. Use quando você está esperando uma tarefa longa em outra sessão e quer ouvir quando terminar em vez de verificar. Requer Claude Code v2.1.236 ou posterior em ambas as sessões.

101 

102<h4 id="ask-for-a-notice">

103 Pedir um aviso

104</h4>

105 

106Diga a Claude o que você está esperando. Este prompt pede um aviso da sessão de migração:

107 

108```text wrap theme={null}

109Tell me when the migration session finishes what it's working on

110```

111 

112Claude se inscreve com a entrada `notify_when_idle` da ferramenta `SendMessage`, anexada a uma mensagem que está enviando de qualquer forma ou por conta própria. Por conta própria, Claude Code se inscreve sem iniciar um turno ou gastar tokens na sessão observada, e envia o aviso imediatamente se essa sessão já estiver ociosa. Anexado a uma mensagem, Claude Code entrega a mensagem primeiro e envia o aviso depois.

113 

114<h4 id="what-each-session-shows">

115 O que cada sessão mostra

116</h4>

117 

118A sessão observada mostra uma linha dizendo que outro processo pediu para ser informado quando a sessão próxima ficar ociosa. A sessão solicitante mostra o aviso como uma linha nomeando a sessão observada. A linha pode incluir a hora em que o turno dessa sessão terminou e um status de uma linha desse turno. Se a sessão solicitante estiver ociosa, Claude Code inicia um novo turno com o aviso.

119 

120<h4 id="limits">

121 Limites

122</h4>

123 

124O aviso é único: Claude Code o envia uma vez da sessão observada, e nenhuma sessão sonda a outra. Se nenhum aviso chegar dentro de 12 horas, Claude Code descarta a inscrição e diz a Claude, então não fica esperando.

125 

126Os [controles de entrada](#control-inbound-messages) de cada lado se aplicam a um aviso como uma mensagem:

127 

128* **`refuse` em qualquer lado**: nada chega. A sessão observada descarta a solicitação sem registrar ou responder a ela, então a inscrição expira sem resposta após 12 horas, e uma sessão solicitante com `refuse` nunca se inscreve.

129* **`hold` em qualquer lado**: o aviso chega com menos. A sessão observada deixa o status de uma linha de fora, e a sessão solicitante mostra o aviso em sua transcrição sem entregá-lo a Claude.

130 

131Apenas o Claude em sua conversa principal pode se inscrever, e apenas para suas sessões nesta máquina. Quando um subagente ou um colega de equipe de agentes define `notify_when_idle`, Claude Code não faz inscrição e diz a ele assim. Quando Claude pede um aviso de qualquer outro agente, como um colega, um subagente ou uma sessão além desta máquina, Claude Code recusa a chamada inteira, incluindo qualquer mensagem anexada a ela, e relata a recusa a Claude para que possa reenviar a mensagem sem a solicitação.

132 

133<h3 id="see-which-sessions-claude-can-reach">

134 Veja quais sessões Claude pode alcançar

135</h3>

136 

137Claude encontra o alvo de uma mensagem por conta própria, então você não precisa executar nada antes de pedir que envie. Para ver você mesmo quais sessões Claude pode alcançar, execute o comando `/list-agents`. A primeira linha, quando presente, é o nome da própria sessão, o que suas outras sessões usam para enviá-la mensagem. As linhas abaixo são as sessões que Claude pode alcançar:

138 

139* **Subagentes**: agentes executando dentro da sessão atual.

140* **Colegas**: os próprios colegas de [equipe de agentes](/docs/pt/agent-teams) dessa sessão. Antes de v2.1.239, colegas não apareciam na listagem, embora Claude já pudesse enviá-los mensagem pelo nome.

141* **Suas outras sessões locais**: sessões Claude Code executando na mesma máquina, incluindo [sessões em background](/docs/pt/agent-view). Uma sessão aparece apenas quando vincula um [socket de caixa de entrada](#the-sessions-inbox-socket).

142* **Suas sessões na nuvem**: suas sessões [Claude Code na web](/docs/pt/claude-code-on-the-web), mostradas enquanto essa sessão está conectada a [Controle Remoto](/docs/pt/remote-control). Claude Code as rotula `cloud` na listagem.

143* **Suas sessões Controle Remoto em outras máquinas**: mostradas enquanto essa sessão está conectada a [Controle Remoto](/docs/pt/remote-control), e rotuladas `Remote Control`. Claude Code mostra `offline` como o status de uma sessão cuja conexão Controle Remoto caiu.

144 

145Esta sessão não é uma das linhas. Se Claude endereça uma mensagem ao nome da própria sessão, Claude Code a recusa e diz a Claude que o alvo é a sessão atual. Antes de v2.1.239, a listagem não mostrava o nome dessa sessão, e Claude Code relatava uma mensagem enviada a ela como um agente que não conseguia encontrar.

146 

147Enquanto essa sessão está conectada a [Controle Remoto](/docs/pt/remote-control), Claude Code retém alguns detalhes de suas sessões locais da saída `/list-agents`, sem mudar o que Claude em si vê quando procura uma sessão para enviar mensagem:

148 

149* **Diretórios de trabalho**: deixa de fora o diretório de trabalho de cada sessão local.

150* **Nomes de sessão**: deixa de fora qualquer nome de sessão que não possa atribuir a uma pessoa, então uma linha deixada sem nome lê `(unnamed session)`.

151* **A primeira linha**: deixa de fora a linha com o nome dessa própria sessão a menos que você tenha digitado esse nome neste terminal, com `--name` ou com `/rename` e o nome, desde que iniciou ou retomou a sessão pela última vez.

152 

153Quando a saída lista qualquer coisa, termina com uma nota dizendo que detalhes foram retidos. Executar `/rename` seguido de um nome não utilizado em um teclado da própria sessão dá a essa sessão um nome que aparece na saída.

154 

155Claude Code lê suas listas de sessão na nuvem e Controle Remoto mais recentes primeiro e para após um número limitado de páginas para cada. Se sua conta tiver mais dessas sessões do que cabem, Claude Code não lista as mais antigas, e Claude não pode enviá-las mensagem pelo nome. Quando isso acontece, Claude Code diz assim na listagem, e Claude vê a mesma nota quando envia uma mensagem.

156 

157Claude endereça uma sessão além desta máquina pelo nome, da mesma forma que uma sessão local. Veja [Mensagem para sessões em outras máquinas](#message-sessions-on-other-machines) para como essas mensagens viajam.

158 

159Uma sessão responde ao nome que você define com o comando [`/rename`](/docs/pt/commands) ou a flag [`--name`](/docs/pt/cli-reference#cli-flags). Quando você não define um, Claude Code nomeia a sessão em si. Para uma sessão interativa, esse é o nome mostrado em [listagens de sessões em execução](/docs/pt/sessions#name-your-sessions).

160 

161Quando você renomeia uma sessão, Claude Code também atualiza o registro compartilhado que suas outras sessões usam para procurar o nome da sessão. Se não conseguir atualizar esse registro, avisa você na saída `/rename` que outras sessões ainda podem mostrar o nome antigo. Execute a sessão com [`--debug`](/docs/pt/cli-reference#cli-flags), e Claude Code registra a causa da atualização falhada.

162 

163Quando você renomeia uma sessão, ou inicia ou retoma uma interativa, com um nome que outra sessão ao vivo nesta máquina já usa, Claude Code deixa o nome com a sessão que já o tem e [renomeia o seu para uma variante](/docs/pt/sessions#name-your-sessions). Sessões ainda podem compartilhar um nome, por exemplo quando uma delas executa uma versão anterior de Claude Code ou o nome compartilhado é um que Claude Code gerou. A menos que essa sessão esteja conectada a Controle Remoto, Claude Code mostra o diretório de trabalho de cada sessão local na saída `/list-agents`, então você pode distinguir sessões com mesmo nome quando executam em diretórios diferentes. Claude endereça a mensagem de uma das duas formas, dependendo de quantas sessões ao vivo respondem ao nome:

164 

165* **Uma sessão responde ao nome**: Claude Code entrega a mensagem apenas no nome.

166* **Várias sessões compartilham o nome, ou Claude Code não conseguiu verificar em todos os lugares onde suas sessões executam**: Claude adiciona um identificador curto a cada linha de sua listagem e usa o identificador no endereço.

167 

168<h3 id="message-sessions-on-other-machines">

169 Mensagem para sessões em outras máquinas

170</h3>

171 

172Como uma mensagem viaja, e se passa por servidores Anthropic, depende de onde a sessão alvo executa:

173 

174| Onde a outra sessão executa | Como a mensagem viaja |

175| :-------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------- |

176| Nesta máquina | Sobre um socket por sessão em macOS e Linux, ou um pipe nomeado por sessão no Windows nativo, nunca através de servidores Anthropic |

177| Em outra de suas máquinas | Através de servidores Anthropic, chegando sobre a conexão [Controle Remoto](/docs/pt/remote-control) dessa máquina |

178| Em [Claude Code na web](/docs/pt/claude-code-on-the-web) | Através de servidores Anthropic, direto para a sessão na nuvem |

179 

180Iniciar uma conversa com uma sessão em outra de suas máquinas requer Claude Code v2.1.225 ou posterior e um alvo que [aparece na listagem](#see-which-sessions-claude-can-reach). Antes de v2.1.225, Claude só podia responder a uma mensagem que chegou de uma.

181 

182Você pode enviar mensagem para uma sessão mostrada como `offline` na [listagem](#see-which-sessions-claude-can-reach), uma cuja conexão Controle Remoto caiu. O envio passa, mas a mensagem chega apenas depois que a máquina dessa sessão se reconecta. Claude é informado disso quando envia.

183 

184A entrega na mesma máquina funciona onde quer que o recurso esteja habilitado. Cada sessão se registra em arquivos no disco. Quando Claude lista ou envia mensagem para suas sessões locais, Claude Code lê esses arquivos para encontrar as sessões, então duas sessões podem alcançar uma à outra apenas quando conseguem ver os mesmos arquivos.

185 

186Um contêiner tem seu próprio sistema de arquivos, então uma sessão dentro dele e uma sessão no host não podem alcançar uma à outra. Duas sessões dentro do mesmo contêiner ainda podem enviar mensagens uma à outra, incluindo em um [executor auto-hospedado](/docs/pt/self-hosted-environments). Uma sessão dentro de WSL 2 e uma sessão Windows nativa no mesmo computador também não podem alcançar uma à outra, porque se registram em diretórios home diferentes e escutam em tipos de socket diferentes.

187 

188Enquanto essa sessão está conectada a Controle Remoto, quando você envia mensagem para uma sessão em outra de suas máquinas, Claude Code mostra a mensagem na conversa dessa sessão sob o nome Controle Remoto dessa sessão. O Claude naquela máquina pode responder a esse nome. Por exemplo, quando essa sessão está conectada a Controle Remoto como `laptop-graceful-unicorn` e você envia mensagem para seu desktop, você vê a mensagem na sessão desktop sob `laptop-graceful-unicorn`.

189 

190Se essa sessão não estiver conectada a Controle Remoto quando Claude envia para uma sessão além desta máquina, a mensagem ainda passa, mas sem um [endereço de resposta](#what-a-message-looks-like), então o Claude receptor não pode respondê-la. Claude é informado disso quando envia.

191 

192Para exigir sua aprovação antes de qualquer mensagem ir além desta máquina, defina [`isolatePeerMachines`](#require-approval-for-cross-machine-messages).

193 

194<h2 id="how-a-session-treats-an-incoming-message">

195 Como uma sessão trata uma mensagem chegando

196</h2>

197 

198Quando a sessão A envia mensagem para a sessão B, Claude Code diz ao Claude de B que a mensagem veio de outra sessão, não de você, e limita o que a mensagem pode fazer:

199 

200* **Não pode aprovar nada**: uma mensagem de outra sessão nunca conta como seu consentimento, então não pode responder a um prompt de permissão pendente em seu nome.

201* **Não pode mudar configuração**: Claude Code instrui o Claude receptor nunca mudar configurações de permissão, `CLAUDE.md` ou outra configuração porque outra sessão pediu.

202* **Comandos não executam**: um comando no texto da mensagem, como `/compact`, chega como texto simples. Claude Code nunca o executa.

203* **Prompts de permissão ainda disparam**: se agir na mensagem requer uma permissão que a sessão receptora não tem, você vê o mesmo prompt que veria para qualquer outro trabalho.

204 

205<h3 id="what-a-message-looks-like">

206 Como uma mensagem parece

207</h3>

208 

209Quando uma mensagem chega, Claude Code a mostra na conversa como uma prévia de uma linha fraca, e a linha de prévia fica na conversa depois. A prévia carrega o nome do remetente e a primeira linha da mensagem, cortada com `…` quando é longa, como `› Message from @api-worker: Schema migration finished (ctrl+o to expand)`. Antes de v2.1.247, Claude Code mostrava a mensagem chegando em cheio em vez de uma prévia.

210 

211Qualquer um desses mostra o texto completo:

212 

213* Pressione `Ctrl+O` para abrir o [visualizador de transcrição](/docs/pt/interactive-mode#transcript-viewer) e ler o texto completo sob o nome da sessão do remetente.

214* Em uma sessão iniciada com [`--verbose`](/docs/pt/cli-reference#cli-flags), Claude Code mostra o texto completo em vez da prévia.

215 

216A prévia encurta apenas o que você vê. Se você a expande ou não, Claude lê a mensagem completa.

217 

218Claude recebe a mensagem com o nome do remetente e um endereço de resposta, exceto para uma [mensagem cross-machine unidirecional](#message-sessions-on-other-machines), que não carrega endereço de resposta. Além do nome e endereço de resposta, o Claude receptor obtém o texto da mensagem, nunca o histórico de conversa do remetente ou arquivos. [Entrega de mensagem](#message-delivery) cobre menções `@` no texto.

219 

220Uma mensagem que um [subagente](/docs/pt/sub-agents) escreveu chega sob o nome da sessão de envio, com o subagente identificado no texto da mensagem. Uma resposta a ela alcança a conversa principal dessa sessão, não o subagente.

221 

222Este exemplo é uma mensagem que um Claude escreveu para outro, como seu texto completo lê quando você o expande:

223 

224```text wrap theme={null}

225Schema migration finished

226The new column is tenant_id, and rebasing on main is safe now.

227```

228 

229<h3 id="control-inbound-messages">

230 Controlar mensagens chegando

231</h3>

232 

233Defina [`crossSessionInbound`](/docs/pt/settings-reference#crosssessioninbound) para escolher o que uma sessão faz com mensagens chegando de suas outras sessões:

234 

235| Valor | Comportamento |

236| :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

237| `accept` | Claude Code entrega cada mensagem a Claude |

238| `hold` | Claude Code mostra um aviso para cada mensagem e não a entrega. Se um `accept` depois se aplicar, por as [regras de precedência](/docs/pt/settings-reference#crosssessioninbound), Claude Code libera as mensagens retidas |

239| `refuse` | Claude Code descarta cada mensagem sem entregá-la |

240 

241Além de editar um arquivo de configurações, você pode selecionar o valor na linha `/config` **Messages from your other sessions**. Claude Code escreve o valor que você seleciona para suas configurações de usuário. A linha requer Claude Code v2.1.232 ou posterior e não aparece enquanto configurações gerenciadas ou a flag `--settings` define a chave, já que um valor de configurações de usuário não se aplicaria então. Claude Code rejeita o atalho `/config crossSessionInbound=value` para essa chave.

242 

243Para ver qual valor se aplica, siga as regras de precedência `crossSessionInbound` na [referência de configurações](/docs/pt/settings-reference#crosssessioninbound). Quando nenhum valor se aplica, Claude Code decide por mensagem das duas classes de modo de permissão das sessões. Agrupa sessões que [contornam prompts de permissão](/docs/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) em uma classe, e toda outra sessão na outra. Plan mode conta como contornando em sessões com permissões de bypass disponíveis, e [auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode), `acceptEdits` e `dontAsk` contam como solicitando:

244 

245* **A sessão receptora solicita permissões**: Claude Code entrega cada mensagem. Retém uma apenas para sua aprovação quando a sessão de envio se identifica como contornando prompts de permissão.

246* **A sessão receptora contorna prompts de permissão**: Claude Code retém cada mensagem para sua aprovação. Entrega uma apenas quando a sessão de envio se identifica como também contornando.

247 

248Quando o padrão retém uma mensagem, Claude Code abre um diálogo de aprovação na sessão receptora. O diálogo mostra o remetente e uma prévia:

249 

250* **Approve** entrega essa mensagem a Claude.

251* **Deny**, ou descartar o diálogo, a descarta.

252* Quando o diálogo fica sem resposta após o prazo [`dialogExpiry`](/docs/pt/settings-reference#dialogexpiry), Claude Code o fecha e descarta a mensagem. O prazo padrão é cinco minutos.

253* Enquanto nenhum terminal está anexado a uma [sessão em background](/docs/pt/agent-view), Claude Code deixa o diálogo aberto após o prazo. Depois que você anexa, se o diálogo fica sem resposta por um período de prazo completo, Claude Code o fecha e descarta a mensagem.

254* Se a classe de modo de permissão dessa sessão muda enquanto mensagens estão retidas, Claude Code re-aplica as regras de entrada, entrega as mensagens que agora aceita, e mostra um aviso.

255* Se uma mudança de configurações faz `refuse` se aplicar enquanto mensagens estão retidas, Claude Code descarta cada mensagem retida e relata uma recusa a cada remetente que pode alcançar.

256 

257Quando o remetente é uma sessão interativa na mesma máquina, Claude Code mostra um aviso lá quando o receptor retém a mensagem, e um acompanhamento quando o receptor depois entrega, nega ou expira. Se o receptor a recusa, Claude Code mostra um aviso lá que o receptor não está aceitando mensagens cross-session e diz ao Claude do remetente não esperar ou reenviar.

258 

259Claude Code retém no máximo 100 mensagens, separadamente da fila de entrega, e além disso descarta a mais antiga.

260 

261<h3 id="non-interactive-sessions">

262 Sessões não-interativas

263</h3>

264 

265Claude Code vincula um socket de caixa de entrada para uma sessão [`claude -p`](/docs/pt/headless) como uma interativa, então um worker `-p` de longa duração pode receber mensagens e aparece na listagem. Quando você inicia uma sessão em [modo bare](/docs/pt/headless#start-faster-with-bare-mode), Claude Code não vincula o socket, então essa sessão não pode receber mensagens e não aparece na lista de agentes.

266 

267Uma sessão `-p` não pode mostrar o diálogo de aprovação. Quando o [padrão de entrada](#control-inbound-messages) retém uma mensagem lá, Claude Code a mantém pelo mesmo prazo [`dialogExpiry`](/docs/pt/settings-reference#dialogexpiry) que o diálogo usa, cinco minutos por padrão:

268 

269* **Antes do prazo**: se um modo ou mudança de configurações permite a mensagem, Claude Code a entrega.

270* **Após o prazo**: Claude Code descarta a mensagem e a relata como expirada a um remetente que pode alcançar.

271 

272Defina `dialogExpiry` para `"never"` para manter mensagens padrão-retidas até a sessão terminar. Uma mensagem retida por uma configuração `hold` explícita não expira; Claude Code a entrega apenas quando um `accept` depois se aplica.

273 

274Quando a sessão termina com mensagens ainda retidas, Claude Code as relata como expiradas a cada remetente que pode alcançar. Antes de v2.1.225, nenhum prazo se aplicava em uma sessão `-p`: uma mensagem retida ficava retida a menos que uma mudança de modo de permissão durante a execução a entregasse, e uma sessão que terminava com mensagens retidas não relatava nada a seus remetentes.

275 

276Para deixar um worker `-p` receber mensagens desatendido, inicie-o com `crossSessionInbound` definido para `accept` em seu valor `--settings`. Um `accept` em suas configurações de usuário também funciona mas se aplica a cada sessão que você executa.

277 

278<h3 id="the-sessions-inbox-socket">

279 O socket de caixa de entrada da sessão

280</h3>

281 

282Leia esta seção quando uma sessão que você espera não está na lista de agentes, quando você quer um script ou hook para postar em uma sessão, ou quando um comando sandboxed não consegue alcançar o socket.

283 

284Claude Code vincula um socket de caixa de entrada para cada sessão com cross-session messaging habilitado, onde outras sessões na máquina entregam mensagens. O socket é um socket de domínio Unix em macOS e Linux, incluindo Linux dentro de WSL 2, e um pipe nomeado no Windows nativo. Para quais tipos de sessão vinculam um, veja [Sessões não-interativas](#non-interactive-sessions).

285 

286Você pode encontrar o caminho do socket em dois lugares:

287 

288* `/status` o mostra na linha `Peer address`. O caminho é prefixado com `uds:`.

289* Claude Code o exporta para [hooks](/docs/pt/hooks) e comandos Bash como a variável de ambiente [`CLAUDE_CODE_MESSAGING_SOCKET`](/docs/pt/env-vars#variables):

290 * Em uma sessão que inicia com messaging ativado, Claude Code exporta a variável antes de qualquer hook executar, incluindo `SessionStart`.

291 * Cada sessão exporta seu próprio socket, nunca um herdado de uma sessão pai.

292 

293Em macOS e Linux, Claude Code restringe o socket ao seu usuário do sistema operacional. No Windows nativo, em vez disso requer que cada conexão se autentique primeiro com uma chave que apenas seu usuário do sistema operacional pode ler. De qualquer forma, em uma máquina compartilhada as sessões de outro usuário não podem entregar a ela.

294 

295Em macOS e Linux, Claude Code também recusa criar o socket em um diretório que não consegue aceitar, por exemplo um que outro usuário possui, e usa um diretório privado por usuário, `/tmp/cc-socks-<uid>`, em vez disso. Quando não consegue aceitar nenhum diretório, a sessão executa sem uma caixa de entrada: Claude Code mostra um aviso, `/status` mostra `unavailable` e a razão em sua linha `Peer address`, e o log [`--debug`](/docs/pt/cli-reference#cli-flags) registra a recusa completa.

296 

297Ao lado do caminho do socket, Claude Code exporta um token por sessão como [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/pt/env-vars#variables). Um script postando para o socket da sua própria sessão pode enviar `{"type":"auth","token":"<token>"}` como a primeira linha de sua conexão, onde `<token>` é o valor de `CLAUDE_CODE_MESSAGING_TOKEN`. Se Claude Code requer a linha depende da plataforma:

298 

299* **macOS e Linux, incluindo WSL 2**: a linha é opcional. Claude Code aceita uma conexão com ou sem ela.

300* **Windows nativo**: a linha é obrigatória. Claude Code fecha qualquer conexão cuja primeira linha não é uma linha de autenticação válida e não entrega nada dessa conexão.

301 

302Abra a conexão apenas quando a mensagem que você está postando está pronta. Claude Code fecha uma conexão que não enviou uma linha completa dentro de 30 segundos, então capture a saída de um comando lento primeiro e depois abra a conexão para enviá-la.

303 

304As [regras own-child](#own-child-messages) abaixo dizem quando Claude Code consulta o token e como trata uma mensagem que não consegue verificar.

305 

306<span id="own-child-messages" />Claude Code executa mensagens chegando no socket através dos mesmos [controles de entrada](#control-inbound-messages) que qualquer outra mensagem peer, com uma exceção e um pré-requisito:

307 

308* **Mensagens own-child**: quando nenhum valor `crossSessionInbound` se aplica, Claude Code entrega uma mensagem que verifica veio dos processos filhos da própria sessão, como um hook ou comando Bash postando de volta para o socket da própria sessão.

309 * Em Linux, incluindo dentro de WSL 2, Claude Code pode verificar por evidência de processo mesmo para um filho que já saiu. Em macOS pode verificar assim apenas enquanto o processo de postagem ainda está executando, e em um contêiner onde Claude Code executa como ID de processo 1 não tem evidência de processo. No Windows nativo também não tem.

310 * Em macOS depois que o processo de postagem saiu e em contêineres onde Claude Code executa como ID de processo 1, essa evidência de processo está faltando, e Claude Code em vez disso verifica um filho que enviou o [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/pt/env-vars#variables) exportado da sessão na linha de autenticação que abriu sua conexão. No Windows nativo, esse token é a única forma que Claude Code verifica uma mensagem own-child.

311 * Quando Claude Code não consegue verificar de nenhuma forma, trata a mensagem como qualquer outra que não afirma nenhuma classe de permissão, então uma sessão que contorna prompts de permissão a retém para sua aprovação.

312* **Sessões sandboxed**: controle se um comando Bash pode alcançar o socket de dentro do [sandbox](/docs/pt/sandboxing) com as configurações de socket Unix do sandbox, [`sandbox.network.allowAllUnixSockets` e `sandbox.network.allowUnixSockets`](/docs/pt/settings-reference#sandbox-settings).

313 

314<h2 id="restrict-cross-session-messaging">

315 Restringir cross-session messaging

316</h2>

317 

318Além dos padrões por mensagem, você pode estreitar o messaging de duas formas. Exigir sua aprovação antes de qualquer mensagem sair da máquina, ou desativar o messaging para uma sessão ou uma organização.

319 

320<h3 id="require-approval-for-cross-machine-messages">

321 Exigir aprovação para mensagens cross-machine

322</h3>

323 

324Defina [`isolatePeerMachines`](/docs/pt/settings-reference#isolatepeermachines) para `true` para exigir sua aprovação explícita antes de qualquer `SendMessage` alcançar uma sessão além desta máquina:

325 

326```json theme={null}

327{

328 "isolatePeerMachines": true

329}

330```

331 

332Com isso definido, Claude Code pede sua aprovação antes da mensagem de Claude para uma sessão além desta máquina sair, mesmo em modo `bypassPermissions`, que pula prompts de permissão ordinários. Um `true` de qualquer escopo de configurações se aplica, então um arquivo de projeto verificado pode ativar o requisito mas não desativá-lo. Claude Code não solicita para mensagens entre sessões na mesma máquina.

333 

334<h3 id="turn-off-cross-session-messaging">

335 Desativar cross-session messaging

336</h3>

337 

338Receber e enviar são controles separados, então desative qualquer direção que você precise, ou ambas. Use `crossSessionInbound` para mensagens que chegam, e regras de permissão para o que Claude aqui pode enviar ou listar:

339 

340* **Parar de receber**: defina `crossSessionInbound` para `refuse`, e Claude Code descarta mensagens peer de entrada sem entregá-las. De configurações de projeto ou local, `refuse` se aplica sobre toda outra fonte, e de suas configurações de usuário se aplica a menos que configurações gerenciadas ou a flag `--settings` definam um valor.

341* **Parar de enviar e listar**: adicione [regras de negação de permissão](/docs/pt/permissions#tool-specific-permission-rules) nomeando `SendMessage` e `ListAgents`. Ambas pegam o nome da ferramenta simples sem especificador.

342 

343Administradores podem desativar ambos os lados para uma organização em [configurações gerenciadas](/docs/pt/managed-settings), combinando as regras de negação com o `refuse`:

344 

345```json theme={null}

346{

347 "permissions": {

348 "deny": ["SendMessage", "ListAgents"]

349 },

350 "crossSessionInbound": "refuse"

351}

352```

353 

354Com isso em vigor, Claude Code ainda vincula o socket de caixa de entrada de cada sessão, mas descarta cada mensagem que chega nele sem entregar nada a Claude. Negar `SendMessage` também remove messaging para subagentes e colegas de equipe de agentes, já que a mesma ferramenta serve ambos. Uma sessão recusante mostra nenhuma mudança visível, em seu próprio `/status` ou nas listagens de outras sessões na mesma máquina, então para confirmar, verifique os arquivos de configurações que se aplicam a essa sessão em vez de seu status.

355 

356<h2 id="availability">

357 Disponibilidade

358</h2>

359 

360Cross-session messaging requer Claude Code v2.1.224 ou posterior em macOS, Linux e WSL 2, e v2.1.234 ou posterior no Windows nativo. Disponibilidade, e quais sessões Claude pode enviar mensagem, também dependem de seu sistema operacional, provedor e configuração:

361 

362* **Sistema operacional**: disponível em macOS, Windows e Linux, incluindo Linux dentro de WSL 2.

363 

364* **Sessões nesta máquina**: disponível em cada provedor, incluindo Amazon Bedrock, Claude Platform em AWS, Google Cloud's Agent Platform e Microsoft Foundry, e em sessões que executam com [busca de flag de recurso](/docs/pt/env-vars#features-that-need-feature-flag-fetching) desativada. Naqueles provedores, e com busca de flag desativada, messaging na mesma máquina requer Claude Code v2.1.248 ou posterior. Claude Code entrega essas mensagens sobre um [socket por sessão em sua máquina](#the-sessions-inbox-socket), nunca através de servidores Anthropic.

365 

366 Para parar uma sessão de recebê-las, defina [`crossSessionInbound`](#turn-off-cross-session-messaging) para `refuse`.

367 

368* **Sessões além desta máquina**: Claude encontra suas sessões [Claude Code na web](/docs/pt/claude-code-on-the-web) e suas sessões em outras máquinas de uma sessão que está conectada a Controle Remoto, que precisa de um sign-in claude.ai como autenticação ativa dessa sessão e os outros [requisitos Controle Remoto](/docs/pt/remote-control#requirements). Claude não consegue encontrar essas sessões com uma chave de API ou em Amazon Bedrock, Claude Platform em AWS, Google Cloud's Agent Platform e Microsoft Foundry.

369 

370Para verificar uma sessão, digite `/list-agents`, também disponível como `/peers`. O resultado separa uma sessão que não tem o recurso de uma sessão onde algo mais estreito bloqueou uma mensagem, como uma ferramenta `SendMessage` faltante ou um envio recusado:

371 

372* **`/list-agents` não é reconhecido**: a sessão não tem cross-session messaging. Trabalhe através dos requisitos acima, começando com `claude --version` para o requisito de versão.

373* **`/list-agents` funciona mas um envio não chegou**: messaging está ativado, e algo mais estreito se aplica:

374 * **Regras de negação**: uma [regra de negação de permissão](#turn-off-cross-session-messaging) remove as ferramentas `SendMessage` e `ListAgents`.

375 * **Controles de entrada**: os [controles de entrada da sessão receptora](#control-inbound-messages) podem reter ou descartar o que você envia a ela.

376 * **Sessão na nuvem faltando**: uma sessão na nuvem aparece apenas enquanto essa sessão está conectada a [Controle Remoto](/docs/pt/remote-control).

377 * **Sessão em outra máquina faltando**: uma sessão em outra de suas máquinas aparece apenas quando executa com [Controle Remoto](/docs/pt/remote-control) e essa sessão também está conectada.

378 * **Sessão em outra máquina `offline`**: uma mensagem para uma sessão listada como `offline` passa, mas [chega apenas depois que a máquina dessa sessão se reconecta](#message-sessions-on-other-machines).

379 * **Sessão na nuvem ou em outra máquina mais antiga faltando**: Claude Code [lê essas listas de sessão mais recentes primeiro e para após um número limitado de páginas](#see-which-sessions-claude-can-reach), então Claude não consegue enviar mensagem para uma sessão que caiu além delas pelo nome.

380 * **Iniciando uma conversa**: [Mensagem para sessões em outras máquinas](#message-sessions-on-other-machines) cobre iniciar uma conversa com uma sessão além desta máquina.

381 

382Em uma sessão com messaging, `/status` também mostra uma linha `Peer address` com o endereço de caixa de entrada da própria sessão, ou `unavailable` e a razão quando Claude Code [não conseguiu configurar uma caixa de entrada](#the-sessions-inbox-socket).

383 

384<h2 id="limitations">

385 Limitações

386</h2>

387 

388Os limites aqui são propriedades do próprio canal de messaging e se aplicam onde quer que o recurso execute. Para lacunas de plataforma e provedor, veja [Disponibilidade](#availability) em vez disso.

389 

390* **Apenas texto simples**: Claude envia apenas texto simples entre sessões. Mensagens de protocolo [equipe de agentes](/docs/pt/agent-teams) estruturadas ficam dentro de uma equipe.

391* **O tamanho da mensagem na mesma máquina é limitado**: Claude Code recusa uma mensagem para uma sessão nesta máquina uma vez que sua forma serializada passa cerca de um milhão de caracteres. A recusa [nomeia os tamanhos exatos](/docs/pt/errors#message-too-large-for-cross-session-delivery). Nada alcança a sessão receptora.

392* **Rajadas rápidas para uma sessão são recusadas no remetente**: uma vez que uma rajada rápida de mensagens para uma sessão nesta máquina atinge o que a caixa de entrada dessa sessão aceita, Claude Code recusa envios adicionais na sessão de envio. A [recusa nomeia a rajada](/docs/pt/errors#too-many-messages-to-this-session-just-now) e diz a Claude para agrupar o resto em uma mensagem ou esperar. Antes de v2.1.236, Claude Code relatava esses envios como enviados enquanto a sessão receptora os descartava.

393* **Loops de mensagem são limitados**: na sessão receptora, Claude Code limita a taxa de mensagens repetidas por remetente, descarta repetições idênticas chegando dentro de uma janela curta, e enfileira no máximo 50 mensagens aceitas para Claude ler. Um loop de mensagem entre duas sessões portanto para por conta própria. Quando o limite de taxa, verificação de repetição ou limite de fila descarta uma mensagem de uma sessão interativa nesta máquina, Claude Code diz a essa sessão qual descartou e diz seu Claude não reenviar imediatamente.

394 

395<h2 id="related-resources">

396 Recursos relacionados

397</h2>

398 

399* [Subagentes](/docs/pt/sub-agents#resume-subagents) e [equipes de agentes](/docs/pt/agent-teams#messages-between-agents): messaging dentro de uma única sessão ou equipe

400* [Agentes em background](/docs/pt/agent-view): despache e monitore as sessões paralelas que você pode enviar mensagem

401* [Controle Remoto](/docs/pt/remote-control): conecte essa sessão para alcançar suas sessões em outras máquinas

402* [Configurações](/docs/pt/settings-reference#all-settings): `crossSessionInbound`, `isolatePeerMachines` e `dialogExpiry`

403* [Modos de permissão](/docs/pt/permission-modes): os modos por trás das duas classes do padrão de entrada

404* [Referência de ferramentas](/docs/pt/tools-reference): as linhas `ListAgents` e `SendMessage` na tabela de ferramentas

405* [Executar agentes em paralelo](/docs/pt/agents): compare as formas que Claude Code executa múltiplos agentes

Details

122| Servidor MCP do projeto adicionado mas não aparece | O prompt de aprovação única foi descartado | Servidores com escopo de projeto requerem aprovação. Execute `/mcp` para ver o status e aprovar. |122| Servidor MCP do projeto adicionado mas não aparece | O prompt de aprovação única foi descartado | Servidores com escopo de projeto requerem aprovação. Execute `/mcp` para ver o status e aprovar. |

123| Servidor MCP falha ao iniciar de alguns diretórios | `command` ou `args` usa um caminho de arquivo relativo | Use caminhos absolutos para scripts locais. Executáveis em seu `PATH` como `npx` ou `uvx` funcionam como estão. |123| Servidor MCP falha ao iniciar de alguns diretórios | `command` ou `args` usa um caminho de arquivo relativo | Use caminhos absolutos para scripts locais. Executáveis em seu `PATH` como `npx` ou `uvx` funcionam como estão. |

124| Servidor MCP inicia sem variáveis de ambiente esperadas | A entrada de configuração do servidor não as define, e elas não estão no ambiente que Claude Code passa para servidores stdio: seu próprio ambiente, menos as [variáveis que ele remove de subprocessos](/docs/pt/monitoring-usage#administrator-configuration) | Defina `env` por servidor dentro da entrada `.mcp.json` do servidor, que não depende do ambiente de lançamento ou confiança do workspace. |124| Servidor MCP inicia sem variáveis de ambiente esperadas | A entrada de configuração do servidor não as define, e elas não estão no ambiente que Claude Code passa para servidores stdio: seu próprio ambiente, menos as [variáveis que ele remove de subprocessos](/docs/pt/monitoring-usage#administrator-configuration) | Defina `env` por servidor dentro da entrada `.mcp.json` do servidor, que não depende do ambiente de lançamento ou confiança do workspace. |

125| A regra de negação `Bash(rm *)` não bloqueia `/bin/rm` ou `find -delete` | As regras de prefixo correspondem à string de comando literal, não ao executável subjacente | Adicione padrões explícitos para cada variante, ou use um [hook PreToolUse](/docs/pt/hooks-guide) ou o [sandbox](/docs/pt/sandboxing) para uma garantia difícil. |125| A regra de negação `Bash(rm *)` não bloqueia `/bin/rm` ou `find -delete` | As regras de Bash correspondem à string de comando literal, não ao executável subjacente; consulte [o que uma regra de Bash não corresponde](/docs/pt/permissions#bash-rule-limits) | Use um [hook PreToolUse](/docs/pt/hooks-guide) ou o [sandbox](/docs/pt/sandboxing) para uma garantia difícil. |

126 126 

127<h2 id="related-resources">127<h2 id="related-resources">

128 Recursos relacionados128 Recursos relacionados

desktop.md +13 −8

Details

9O aplicativo Claude Desktop tem três abas: **Chat** para conversas, **Cowork** para [Dispatch e trabalho agentic mais longo](https://claude.com/product/cowork), e **Code** para desenvolvimento de software. Esta página é a referência para a aba Code.9O aplicativo Claude Desktop tem três abas: **Chat** para conversas, **Cowork** para [Dispatch e trabalho agentic mais longo](https://claude.com/product/cowork), e **Code** para desenvolvimento de software. Esta página é a referência para a aba Code.

10 10 

11<CardGroup cols={3}>11<CardGroup cols={3}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">12 <Card title="Baixar para macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon13 Compilação universal para Intel e Apple Silicon

14 </Card>14 </Card>

15 15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">16 <Card title="Baixar para Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors17 Para processadores x64

18 </Card>18 </Card>

19 19 

20 <Card title="Get Claude for Linux (beta)" icon="linux" href="/docs/en/desktop-linux">20 <Card title="Obter Claude para Linux (beta)" icon="linux" href="/docs/pt/desktop-linux">

21 apt or .deb for Ubuntu and Debian21 apt ou .deb para Ubuntu e Debian

22 </Card>22 </Card>

23</CardGroup>23</CardGroup>

24 24 

25For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). On Linux, install with apt; see [Claude Desktop on Linux](/docs/en/desktop-linux).25Para Windows ARM64, baixe o [instalador ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). No Linux, instale com apt; consulte [Claude Desktop no Linux](/docs/pt/desktop-linux).

26 26 

27Após instalar, inicie Claude, faça login e clique na aba **Code**. A primeira vez que você a abrir no Windows, você precisa ter o [Git for Windows](https://git-scm.com/downloads/win) instalado; reinicie o aplicativo após instalá-lo. Para um passo a passo de sua primeira sessão, consulte o [guia de primeiros passos](/docs/pt/desktop-quickstart).27Após instalar, inicie Claude, faça login e clique na aba **Code**. A primeira vez que você a abrir no Windows, você precisa ter o [Git for Windows](https://git-scm.com/downloads/win) instalado; reinicie o aplicativo após instalá-lo. Para um passo a passo de sua primeira sessão, consulte o [guia de primeiros passos](/docs/pt/desktop-quickstart).

28 28 


743 743 

744Sessões em nuvem continuam em segundo plano mesmo se você fechar o aplicativo. O uso conta para seus [limites do plano de assinatura](/docs/pt/costs) sem cobranças de computação separadas.744Sessões em nuvem continuam em segundo plano mesmo se você fechar o aplicativo. O uso conta para seus [limites do plano de assinatura](/docs/pt/costs) sem cobranças de computação separadas.

745 745 

746Você pode criar ambientes em nuvem personalizados com diferentes níveis de acesso de rede e variáveis de ambiente. Selecione o menu suspenso de ambiente ao iniciar uma sessão em nuvem e escolha **Add cloud environment**. Veja [Configure cloud environments](/docs/pt/cloud-environments) para detalhes sobre configuração de acesso de rede e variáveis de ambiente.746Você pode criar ambientes em nuvem personalizados com diferentes níveis de acesso de rede e variáveis de ambiente. Quando você inicia uma sessão em nuvem, abra o menu suspenso de ambiente na caixa de prompt para gerenciá-los:

747 

748* **Add an environment**: selecione **Add cloud environment**

749* **Edit or archive one of your own environments**: passe o mouse sobre ele e clique no ícone de engrenagem

750 

751Veja [Configure cloud environments](/docs/pt/cloud-environments) para detalhes sobre configuração de acesso de rede e variáveis de ambiente.

747 752 

748<h3 id="ssh-sessions">753<h3 id="ssh-sessions">

749 SSH sessions754 SSH sessions

desktop-ios-simulator.md +176 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Testar aplicativos iOS no simulador

6 

7> Claude Code Desktop abre seu aplicativo no painel iOS Simulator quando Claude constrói, executa ou verifica, com um simulador separado para cada sessão.

8 

9<Note>

10 O painel iOS Simulator está em beta pública no Claude Code Desktop no macOS. Está disponível nos planos Pro, Max, Team e Enterprise, exceto em organizações Enterprise que têm uma configuração HIPAA ativada.

11</Note>

12 

13O painel iOS Simulator mostra seu aplicativo em execução no iOS Simulator da Apple ao lado de sua conversa no Claude Code Desktop. Quando Claude constrói, instala, inicia ou verifica seu aplicativo em um simulador, o painel abre automaticamente e transmite a tela do dispositivo ao vivo. Use-o para assistir Claude executar e testar seu aplicativo, ou toque no aplicativo você mesmo enquanto Claude continua trabalhando.

14 

15O painel do simulador controla o simulador diretamente, portanto não precisa de [computer use](/docs/pt/desktop#let-claude-use-your-computer) e nunca assume o controle de sua tela ou oculta suas outras janelas. A partir da CLI, Claude acessa o iOS Simulator através de [computer use](/docs/pt/computer-use#test-a-simulator-flow), que controla o simulador em sua tela da mesma forma que você faria com um mouse.

16 

17<h2 id="requirements">

18 Requisitos

19</h2>

20 

21O painel do simulador usa as ferramentas de simulador da Apple, que o aplicativo desktop não inclui. Antes de iniciar uma sessão, certifique-se de que você tem:

22 

23* Claude Desktop v1.24012.0 ou posterior

24* Um Mac, já que o iOS Simulator da Apple é executado apenas no macOS

25* [Xcode](https://developer.apple.com/xcode/) com a plataforma iOS instalada, que fornece os dispositivos simuladores. Se o Xcode ainda não listar simuladores, consulte [O painel do simulador diz que nenhum simulador foi encontrado](#the-simulator-pane-says-no-simulators-were-found)

26 * Use Xcode 26.x. O painel ainda não funciona com Xcode 27, que substitui o aplicativo Simulator por Device Hub. Se `xcode-select` aponta para Xcode 27 em seu Mac, consulte [O painel do simulador falha com Xcode 27](#the-simulator-pane-fails-with-xcode-27)

27 

28<Note>

29 Nesta página, "dispositivo" refere-se a um iPhone ou iPad simulado, um dos mesmos dispositivos simuladores que você gerencia no Xcode em **Window → Devices and Simulators**, não hardware físico.

30</Note>

31 

32O painel do simulador está disponível apenas em sessões locais. Em sessões [cloud](/docs/pt/desktop#run-long-running-tasks-remotely) e [SSH](/docs/pt/desktop#ssh-sessions), Claude é executado em uma máquina que não consegue alcançar os simuladores em seu Mac.

33 

34<h2 id="run-your-app-in-the-simulator">

35 Execute seu aplicativo no simulador

36</h2>

37 

38Você não precisa de um comando ou configuração para abrir o painel do simulador. Claude o abre quando executa seu aplicativo em um simulador.

39 

40<Steps>

41 <Step title="Abra seu projeto iOS">

42 No Claude Code Desktop, abra a aba **Code** e inicie uma sessão com a pasta do projeto do seu aplicativo como a [pasta do projeto](/docs/pt/desktop#start-a-session). Qualquer projeto que constrói um aplicativo para o iOS Simulator funciona.

43 </Step>

44 

45 <Step title="Peça a Claude para executar ou testar o aplicativo">

46 Formule a tarefa em torno da execução ou verificação do aplicativo. Por exemplo:

47 

48 ```text theme={null}

49 Build the app and run it in the simulator to check the onboarding flow.

50 ```

51 </Step>

52 

53 <Step title="Assista o aplicativo no painel do simulador">

54 Quando o aplicativo é iniciado em um simulador, o painel iOS Simulator abre ao lado da conversa. A primeira vez que Claude usa um dispositivo, o aplicativo desktop pede permissão; consulte [Conceder acesso de Claude a um dispositivo](#grant-claude-access-to-a-device). Claude instala o aplicativo, toca nele e lê a tela para verificar suas próprias alterações enquanto você assiste.

55 </Step>

56</Steps>

57 

58O painel do simulador abre sempre que Claude inicia o aplicativo em um simulador, em qualquer ponto da sessão. Quando sua solicitação é sobre ver o aplicativo, por exemplo "a nova tela parece correta?", Claude inicia um simulador antes de começar o trabalho. Depois que Claude corrige um bug ou altera uma tela, peça-lhe para verificar a alteração: reiniciar o aplicativo reabre o painel se ele não estiver aberto.

59 

60O painel do simulador mostra qualquer dispositivo em que o aplicativo foi realmente iniciado. Para testar em um dispositivo específico, nomeie-o em sua solicitação, por exemplo "execute-o no simulador iPhone SE", e Claude direcionará esse dispositivo quando construir e iniciar.

61 

62Um dispositivo que Claude inicia também aparece no aplicativo Simulator da Apple, e Claude pode instalar o aplicativo em um dispositivo que você já tem iniciado.

63 

64Você também pode abrir o painel do simulador você mesmo. Depois que a sessão tem um simulador anexado ou editou arquivos Swift, o menu **Views** na barra de ferramentas da sessão mostra uma entrada **iOS Simulator**. Se o painel ainda não está mostrando um dispositivo, clique em **Attach simulator**, ou escolha um dispositivo específico no menu de dispositivos ao lado; escolher um dispositivo desligado o inicia. Se Xcode ou seus simuladores estão faltando, o painel mostra as etapas de configuração em vez disso e as marca conforme você as completa.

65 

66<h2 id="control-the-simulator-yourself">

67 Controle o simulador você mesmo

68</h2>

69 

70O painel do simulador é interativo, não apenas um visualizador. Enquanto Claude trabalha, ou entre tarefas, você pode:

71 

72* Tocar e deslizar clicando e arrastando na tela do dispositivo

73* Pressionar botões de hardware com os mesmos atalhos de teclado do aplicativo Simulator da Apple: **Cmd+Shift+H** para Home, **Cmd+L** para bloquear, **Cmd+Up Arrow** e **Cmd+Down Arrow** para volume

74* Girar o dispositivo um quarto de volta no sentido horário com o botão girar ou **Cmd+Right Arrow**

75* Alternar qual dispositivo o painel mostra no menu de dispositivos, que lista a versão do SO de cada simulador e se está iniciado

76* Salvar uma captura de tela com **Cmd+S** ou uma gravação de tela com **Cmd+R**, usando os botões de captura do painel ou os atalhos de teclado; os arquivos são salvos em sua Desktop

77* Parar de transmitir um dispositivo sem desligá-lo clicando em **Detach simulator**, que retorna o painel ao estado **Attach simulator**

78 

79A linha sob o nome do dispositivo ajusta o fluxo de vídeo do simulador. Reduza **Frame rate** ou **Resolution** se o painel sobrecarregar seu Mac, alterne **Encoding** entre H.264 e JPEG, ou marque **FPS** para exibir a taxa de quadros que o painel está recebendo. Essas configurações alteram como o painel exibe o dispositivo, não como o aplicativo é executado.

80 

81Você e Claude controlam o mesmo dispositivo, portanto seus toques alteram o estado do aplicativo que Claude vê. Para fazer Claude verificar uma tela específica, navegue até ela tocando e depois pergunte. Enquanto Claude está controlando o dispositivo, o painel mostra um crachá **Claude is using this device** acima da tela; espere tocar até que o crachá desapareça, para que o resultado reflita o aplicativo em vez de sua entrada.

82 

83<h2 id="how-sessions-manage-devices">

84 Como as sessões gerenciam dispositivos

85</h2>

86 

87Cada dispositivo pertence à sessão que o iniciou, portanto [sessões paralelas](/docs/pt/desktop#work-in-parallel-with-sessions) não compartilham um dispositivo: o que você vê no painel de uma sessão reflete o trabalho dessa sessão, não de outra. Alternar sessões na barra lateral alterna a visualização do simulador junto com a conversa, e alternar de volta retoma o mesmo dispositivo onde parou. Se Claude trabalha com mais de um dispositivo, cada um abre seu próprio painel, até 4 por sessão.

88 

89Claude Code Desktop desliga os simuladores que iniciou quando não estão mais em uso: quando você sai do aplicativo, quando você arquiva a sessão, ou 10 minutos depois que você desanexa um dispositivo de seu painel. Dispositivos que você inicia você mesmo, seja no painel ou no aplicativo Simulator da Apple, nunca são desligados automaticamente. Para desligar o dispositivo anexado imediatamente, use o botão de desligamento no painel.

90 

91<h2 id="grant-claude-access-to-a-device">

92 Conceder acesso de Claude a um dispositivo

93</h2>

94 

95Claude pede seu consentimento antes de controlar um dispositivo, enquanto construir o aplicativo ou abrir uma URL nele segue o modo de permissão de sua sessão. Você ou sua organização também podem desativar completamente o acesso de Claude.

96 

97<h3 id="allow-a-device-the-first-time">

98 Permitir um dispositivo pela primeira vez

99</h3>

100 

101A primeira vez que Claude usa um simulador, o aplicativo desktop pede permissão. O consentimento cobre controlar esse dispositivo e tirar capturas de tela dele, e você o concede uma vez por dispositivo em vez de uma vez por sessão. As capturas de tela de Claude do dispositivo são enviadas para Anthropic e mantidas sob suas configurações normais de retenção de conversa, portanto não faça login em contas reais em um dispositivo que Claude usa.

102 

103Depois de permitir um dispositivo, as ações de Claude nele, como tocar, digitar, iniciar o aplicativo e tirar capturas de tela, são executadas sem mais prompts. Elas têm a mesma confiança que você clicando no painel, e elas apenas tocam o dispositivo simulado, portanto o painel não precisa das permissões de Acessibilidade e Gravação de Tela do macOS que o computer use requer.

104 

105Se você recusar, o dispositivo ainda inicia e o painel ainda funciona para seus próprios toques; apenas o acesso de Claude permanece desativado. Para mudar de ideia depois, clique em **Let Claude use it** no painel.

106 

107<h3 id="actions-that-follow-your-permission-mode">

108 Ações que seguem seu modo de permissão

109</h3>

110 

111Duas ações seguem o [modo de permissão](/docs/pt/permissions#permission-modes) de sua sessão em vez do consentimento único:

112 

113* Abrir uma URL no dispositivo, por exemplo para testar um deep link ou carregar uma página no Safari do dispositivo, porque uma URL pode levar dados para fora do dispositivo.

114* Construir o aplicativo, porque `xcodebuild` executa os scripts de construção do seu projeto em seu Mac. Verificar uma construção já em andamento não solicita.

115 

116<h3 id="turn-off-simulator-access">

117 Desativar acesso ao simulador

118</h3>

119 

120Você pode desativar o acesso do simulador de Claude nas configurações do aplicativo desktop. As organizações têm duas maneiras de desativá-lo para todos:

121 

122* A [configuração gerenciada](/docs/pt/desktop#managed-settings) `disableMobileSimulatorTools` bloqueia as ferramentas de simulador de Claude. O painel do simulador permanece utilizável para seus próprios toques, e a configuração não pode ser substituída de dentro do aplicativo.

123* A chave de política `requireCoworkFullVmSandbox`, que executa as ferramentas de Claude dentro de uma máquina virtual isolada em vez de em seu Mac, desativa o painel do simulador e as ferramentas de simulador de Claude inteiramente, portanto o painel não consegue anexar um dispositivo enquanto está definido.

124 

125Claude informa quando qualquer um deles se aplica.

126 

127<h2 id="limitations">

128 Limitações

129</h2>

130 

131Claude controla apenas dispositivos simulados e não consegue controlar um iPhone ou iPad físico. Para testar em um, execute o aplicativo nele a partir do Xcode você mesmo, depois descreva o que você vê ou anexe uma captura de tela à conversa para Claude trabalhar.

132 

133<h2 id="troubleshooting">

134 Troubleshooting

135</h2>

136 

137<h3 id="the-simulator-pane-doesn’t-open-when-claude-runs-the-app">

138 O painel do simulador não abre quando Claude executa o aplicativo

139</h3>

140 

141Claude pode não ter reconhecido que você queria executar ou testar o aplicativo, ou as ferramentas de simulador podem estar faltando. Verifique o seguinte:

142 

143* Declare o objetivo explicitamente, por exemplo "execute o aplicativo no iOS Simulator e toque no fluxo de inscrição".

144* Confirme que Xcode e os simuladores iOS estão instalados e que sua versão do Xcode atende aos [requisitos](#requirements).

145* Se sua organização gerencia Claude Code, as [ferramentas de simulador podem estar desativadas por política](#turn-off-simulator-access).

146* Se você está em uma organização Enterprise que tem uma configuração HIPAA ativada, o painel do simulador não está disponível para você.

147* O painel do simulador requer Claude Desktop v1.24012.0 ou posterior. Abra **Claude → Check for Updates**, depois reinicie o aplicativo.

148 

149<h3 id="the-simulator-pane-says-no-simulators-were-found">

150 O painel do simulador diz que nenhum simulador foi encontrado

151</h3>

152 

153Se `xcode-select` aponta para Xcode 27, o painel pode relatar que nenhum simulador foi encontrado mesmo que dispositivos existam; consulte [O painel do simulador falha com Xcode 27](#the-simulator-pane-fails-with-xcode-27). Caso contrário, Xcode está instalado mas não tem simuladores iOS para listar. O painel do simulador mostra as etapas de configuração a seguir e as marca conforme cada uma é concluída. Para instalar a peça faltante manualmente, baixe o tempo de execução do simulador iOS das configurações do Xcode, ou execute `xcodebuild -downloadPlatform iOS`.

154 

155<h3 id="the-simulator-pane-fails-with-xcode-27">

156 O painel do simulador falha com Xcode 27

157</h3>

158 

159O painel ainda não funciona com Xcode 27, que substitui o aplicativo Simulator por Device Hub. Com Xcode 27 selecionado, anexar um dispositivo falha, ou o painel relata que nenhum simulador foi encontrado mesmo que dispositivos existam.

160 

161O painel usa qualquer Xcode que `xcode-select` aponta. Se Xcode 27 é sua única instalação, instale Xcode 26.x ao lado primeiro. Depois selecione a instalação 26.x por seu caminho. Por exemplo, se está instalado como `/Applications/Xcode-26.4.app`:

162 

163```bash theme={null}

164sudo xcode-select -s /Applications/Xcode-26.4.app

165```

166 

167Execute `xcode-select -p` para verificar qual instalação está selecionada.

168 

169<h2 id="see-also">

170 Veja também

171</h2>

172 

173* [Computer use in Desktop](/docs/pt/desktop#let-claude-use-your-computer): controle de tela para aplicativos sem um painel dedicado

174* [Computer use from the CLI](/docs/pt/computer-use): como a CLI alcança o iOS Simulator

175* [Work in parallel with sessions](/docs/pt/desktop#work-in-parallel-with-sessions): como as sessões isolam alterações

176* [Get started with Claude Code Desktop](/docs/pt/desktop-quickstart)

Details

9O aplicativo de desktop oferece Claude Code com uma interface gráfica construída para executar múltiplas sessões lado a lado: uma barra lateral para gerenciar trabalho paralelo, um layout com arrastar e soltar com terminal integrado e editor de arquivos, revisão visual de diff, visualização ao vivo do aplicativo, monitoramento de PR do GitHub com mesclagem automática e tarefas agendadas. Nenhum terminal necessário.9O aplicativo de desktop oferece Claude Code com uma interface gráfica construída para executar múltiplas sessões lado a lado: uma barra lateral para gerenciar trabalho paralelo, um layout com arrastar e soltar com terminal integrado e editor de arquivos, revisão visual de diff, visualização ao vivo do aplicativo, monitoramento de PR do GitHub com mesclagem automática e tarefas agendadas. Nenhum terminal necessário.

10 10 

11<CardGroup cols={3}>11<CardGroup cols={3}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">12 <Card title="Baixar para macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon13 Compilação universal para Intel e Apple Silicon

14 </Card>14 </Card>

15 15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">16 <Card title="Baixar para Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors17 Para processadores x64

18 </Card>18 </Card>

19 19 

20 <Card title="Get Claude for Linux (beta)" icon="linux" href="/docs/en/desktop-linux">20 <Card title="Obter Claude para Linux (beta)" icon="linux" href="/docs/pt/desktop-linux">

21 apt or .deb for Ubuntu and Debian21 apt ou .deb para Ubuntu e Debian

22 </Card>22 </Card>

23</CardGroup>23</CardGroup>

24 24 

25For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). On Linux, install with apt; see [Claude Desktop on Linux](/docs/en/desktop-linux).25Para Windows ARM64, baixe o [instalador ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). No Linux, instale com apt; consulte [Claude Desktop no Linux](/docs/pt/desktop-linux).

26 26 

27<Note>27<Note>

28 Claude Code requer uma [assinatura Pro, Max, Team ou Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).28 Claude Code requer uma [assinatura Pro, Max, Team ou Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).

Details

14 Comparar opções de agendamento14 Comparar opções de agendamento

15</h2>15</h2>

16 16 

17Claude Code offers three ways to schedule recurring or one-off work:17Claude Code oferece três maneiras de agendar trabalho recorrente ou único:

18 18 

19| | [Cloud](/docs/en/routines) | [Desktop](/docs/en/desktop-scheduled-tasks) | [`/loop`](/docs/en/scheduled-tasks) |19| | [Cloud](/docs/pt/routines) | [Desktop](/docs/pt/desktop-scheduled-tasks) | [`/loop`](/docs/pt/scheduled-tasks) |

20| :------------------------- | :---------------------------------- | :------------------------------------- | :------------------------------------------------------------------------- |20| :--------------------------------- | :------------------------------------------ | :----------------------------------------------- | :------------------------------------------------------------------------ |

21| Runs on | Cloud, Anthropic-managed by default | Your machine | Your machine |21| Executa em | Cloud, gerenciado pela Anthropic por padrão | Sua máquina | Sua máquina |

22| Requires machine on | No | Yes | Yes |22| Requer máquina ligada | Não | Sim | Sim |

23| Requires open session | No | No | Yes |23| Requer sessão aberta | Não | Não | Sim |

24| Persistent across restarts | Yes | Yes | Restored on `--resume`, with [exceptions](/docs/en/scheduled-tasks#limitations) |24| Persistente entre reinicializações | Sim | Sim | Restaurado em `--resume`, com [exceções](/docs/pt/scheduled-tasks#limitations) |

25| Access to local files | No (fresh clone) | Yes | Yes |25| Acesso a arquivos locais | Não (clone fresco) | Sim | Sim |

26| MCP servers | Connectors configured per task | [Config files](/docs/en/mcp) and connectors | Inherits from session |26| Servidores MCP | Conectores configurados por tarefa | [Arquivos de configuração](/docs/pt/mcp) e conectores | Herda da sessão |

27| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |27| Prompts de permissão | Não (executa autonomamente) | Configurável por tarefa | Herda da sessão |

28| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |28| Agendamento personalizável | Via `/schedule` na CLI | Sim | Sim |

29| Minimum interval | 1 hour | 1 minute | 1 minute |29| Intervalo mínimo | 1 hora | 1 minuto | 1 minuto |

30 30 

31<Tip>31<Tip>

32 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.32 Use **tarefas em cloud** para trabalho que deve ser executado de forma confiável sem sua máquina. Use **tarefas Desktop** quando você precisa de acesso a arquivos e ferramentas locais. Use **`/loop`** para polling rápido durante uma sessão.

33</Tip>33</Tip>

34 34 

35<Note>35<Note>

Details

207 </Step>207 </Step>

208 208 

209 <Step title="Use seu novo plugin">209 <Step title="Use seu novo plugin">

210 Verifique o resumo da instalação: se ele relatar `Run /reload-plugins to activate.`, execute `/reload-plugins`, e se isso avisar que o recarregamento vai reler a conversa, execute-o novamente como `/reload-plugins --force`.210 Se o resumo da instalação relatar `Run /reload-plugins to activate.`, Claude Code então executa esse recarregamento para você. Se o recarregamento avisar que sua próxima mensagem releria a conversa, execute `/reload-plugins --force` para ativar o plugin.

211 211 

212 Skills de plugin são nomeadas com namespace pelo nome do plugin, então **commit-commands** fornece skills como `/commit-commands:commit`.212 Skills de plugin são nomeadas com namespace pelo nome do plugin, então **commit-commands** fornece skills como `/commit-commands:commit`.

213 213 


311```311```

312 312 

313<Note>313<Note>

314 Marketplaces baseados em URL têm algumas limitações comparadas a marketplaces baseados em Git. Se você encontrar erros "path not found" ao instalar plugins, veja [Troubleshooting](/docs/pt/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).314 Marketplaces baseados em URL têm algumas limitações comparadas a marketplaces baseados em Git. Se os installs de plugins de um marketplace baseado em URL falharem, veja [Troubleshooting](/docs/pt/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

315</Note>315</Note>

316 316 

317<h2 id="install-plugins">317<h2 id="install-plugins">


349Quando você instala a partir da interface `/plugin`, o resumo de instalação informa se o plugin está ativo em sua sessão atual:349Quando você instala a partir da interface `/plugin`, o resumo de instalação informa se o plugin está ativo em sua sessão atual:

350 350 

351* `Plugin is now active.`: Claude Code ativou o plugin como parte da instalação.351* `Plugin is now active.`: Claude Code ativou o plugin como parte da instalação.

352* `Run /reload-plugins to activate.`: o plugin ainda não está ativo, porque ativá-lo [invalidaria o prompt cache](/docs/pt/prompt-caching#enabling-or-disabling-a-plugin) ou porque a tentativa de ativação falhou. Execute o comando para ativar o plugin.352* `Run /reload-plugins to activate.`: o plugin ainda não está ativo, porque ativá-lo [invalidaria o prompt cache](/docs/pt/prompt-caching#enabling-or-disabling-a-plugin) ou porque a tentativa de ativação falhou. Claude Code então executa `/reload-plugins` para você. Se esse recarregamento avisar sobre o prompt cache, execute `/reload-plugins --force` para [ativar o plugin mesmo assim](#apply-plugin-changes-without-restarting).

353* Se o plugin falhar ao carregar, o resumo relata a falha e a aba **Errors** do `/plugin` mostra o detalhe.353* Se o plugin falhar ao carregar, o resumo relata a falha e a aba **Errors** do `/plugin` mostra o detalhe.

354 354 

355Antes da v2.1.221, nenhuma instalação entrava em vigor na sessão atual até você executar `/reload-plugins` ou reiniciar.355Antes da v2.1.221, nenhuma instalação entrava em vigor na sessão atual até você executar `/reload-plugins` ou reiniciar.


393 393 

394Você também pode gerenciar plugins com comandos diretos:394Você também pode gerenciar plugins com comandos diretos:

395 395 

396* Quando você executa `/plugin disable`, `/plugin enable` ou `/plugin uninstall`, Claude Code abre o painel de plugins para aplicar a mudança e o deixa aberto. Pressione **Esc** para fechar o painel antes de digitar outro comando.396* Quando você executa `/plugin disable`, `/plugin enable` ou `/plugin uninstall`, Claude Code abre o painel de plugins para fazer a mudança e o deixa aberto. Pressione **Esc** para fechar o painel antes de digitar outro comando. [Aplique mudanças de plugin sem reiniciar](#apply-plugin-changes-without-restarting) descreve quando a mudança entra em vigor em sua sessão.

397* Para scripts, use os comandos shell `claude plugin` em vez disso, que não abrem o painel.397* Para scripts, use os comandos shell `claude plugin` em vez disso, que não abrem o painel.

398 398 

399Liste plugins instalados sem abrir o menu:399Liste plugins instalados sem abrir o menu:


437 Aplique mudanças de plugin sem reiniciar437 Aplique mudanças de plugin sem reiniciar

438</h3>438</h3>

439 439 

440Quando o [resumo de instalação](#install-plugins) relata `Plugin is now active.`, Claude Code já ativou o plugin, e você pode pular esta etapa. Para tudo mais, plugins que você habilitou ou desabilitou durante a sessão e instalações cujo resumo relata `Run /reload-plugins to activate.`, aplique todas as mudanças sem reiniciar:440Quando você fecha o menu `/plugin`, Claude Code executa `/reload-plugins` para você aplicar as mudanças que você fez nele, como instalar, habilitar, desabilitar e desinstalar plugins. Se o recarregamento invalidaria o [cache de prompt](/docs/pt/prompt-caching#enabling-or-disabling-a-plugin), ele avisa e deixa as mudanças pendentes em vez disso; execute `/reload-plugins --force` para aplicá-las mesmo assim. Se Claude ainda estiver respondendo quando você fechar o menu, o recarregamento é executado após a resposta terminar.

441 441 

442```shell theme={null}442Para mudanças de plugin que acontecem fora do menu, execute `/reload-plugins` você mesmo. Essas mudanças incluem:

443/reload-plugins443 

444```444* Um comando `claude plugin` que você executou em outro terminal

445* Edições em um plugin que você carregou com [`--plugin-dir`](/docs/pt/plugins#test-your-plugins-locally) enquanto você o desenvolve

446* Um plugin [auto-atualização](#configure-auto-updates) cuja notificação pede que você recarregue

447* Uma mudança em uma pasta [`--plugin-dir`](/docs/pt/plugins#test-your-plugins-locally) que Claude Code manteve porque aplicá-la invalidaria o cache de prompt

445 448 

446Quando o recarregamento invalidaria o cache de prompt, o comando avisa e pula até que você o execute novamente com `--force`.449Antes de v2.1.268, plugins que você habilitou, desabilitou ou desinstalou no menu, e instalações que não foram ativadas durante a instalação, permaneceram pendentes até que você executasse `/reload-plugins`.

447 450 

448`/reload-plugins` também é executado em sessões sem um terminal interativo, como o aplicativo desktop, o Agent SDK e [modo não interativo](/docs/pt/headless) com `-p`. Requer Claude Code v2.1.260 ou posterior. Dois limites se aplicam nessas sessões:451`/reload-plugins` também é executado em sessões sem um terminal interativo, como o aplicativo desktop, o Agent SDK e [modo não interativo](/docs/pt/headless) com `-p`. Requer Claude Code v2.1.260 ou posterior. Dois limites se aplicam nessas sessões:

449 452 

Details

41* **Servidores MCP**: [conectores do claude.ai](/docs/pt/mcp#use-mcp-servers-from-claude-ai) carregam apenas quando sua assinatura claude.ai é o método de autenticação ativo. [Busca de ferramentas](/docs/pt/mcp#configure-tool-search) está desativada por padrão quando `ANTHROPIC_BASE_URL` aponta para um host não-first-party, e não é suportada em modelos do Google Cloud's Agent Platform anteriores à geração Claude 4.5 ou no Microsoft Foundry [implantações hospedadas no Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)41* **Servidores MCP**: [conectores do claude.ai](/docs/pt/mcp#use-mcp-servers-from-claude-ai) carregam apenas quando sua assinatura claude.ai é o método de autenticação ativo. [Busca de ferramentas](/docs/pt/mcp#configure-tool-search) está desativada por padrão quando `ANTHROPIC_BASE_URL` aponta para um host não-first-party, e não é suportada em modelos do Google Cloud's Agent Platform anteriores à geração Claude 4.5 ou no Microsoft Foundry [implantações hospedadas no Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)

42* **Subagents**: o [Explore subagent](/docs/pt/sub-agents#built-in-subagents) integrado limita seu modelo herdado a Opus na Claude API, e herda o modelo da conversa principal diretamente em qualquer outro provedor, incluindo Claude Platform on AWS42* **Subagents**: o [Explore subagent](/docs/pt/sub-agents#built-in-subagents) integrado limita seu modelo herdado a Opus na Claude API, e herda o modelo da conversa principal diretamente em qualquer outro provedor, incluindo Claude Platform on AWS

43* **[Commands](/docs/pt/commands#all-commands)**:43* **[Commands](/docs/pt/commands#all-commands)**:

44 * `/design-sync` e `/import` com sua forma de subcomando `claude import` não estão disponíveis no Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e Claude Platform on AWS44 * `/design-sync` e `/import` com sua forma de subcomando `claude import` não estão disponíveis no Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e Claude Platform on AWS, e através de um [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway#availability-and-limitations)

45 * `/voice` requer uma conta claude.ai45 * `/voice` requer uma conta claude.ai

46 * `/list-agents` e seu alias `/peers` estão disponíveis apenas em sessões onde [mensagens entre sessões estão habilitadas](/docs/pt/cross-session-messaging#availability)46 * `/list-agents` e seu alias `/peers` estão disponíveis apenas em sessões onde [mensagens entre sessões estão habilitadas](/docs/pt/cross-session-messaging#availability)

47 47 

fullscreen.md +4 −2

Details

33 * Se você reverteu para antes de sua primeira mensagem, Claude Code reinicia com uma conversa vazia33 * Se você reverteu para antes de sua primeira mensagem, Claude Code reinicia com uma conversa vazia

34* Seu [modo de permissão](/docs/pt/permission-modes) e [nível de esforço](/docs/pt/model-config#adjust-effort-level)34* Seu [modo de permissão](/docs/pt/permission-modes) e [nível de esforço](/docs/pt/model-config#adjust-effort-level)

35* O modelo que você selecionou pela última vez com [`/model`](/docs/pt/model-config#setting-your-model)35* O modelo que você selecionou pela última vez com [`/model`](/docs/pt/model-config#setting-your-model)

36* Regras que você passou com [`--allowed-tools` ou `--disallowed-tools`](/docs/pt/cli-reference#cli-flags), e seus sinalizadores `--agent`, `--agents` e `--append-system-prompt`36* Regras que você passou com [`--allowed-tools` ou `--disallowed-tools`](/docs/pt/cli-reference#cli-flags), e seus sinalizadores `--agent`, `--agents`, `--append-system-prompt` e `--system-prompt-snapshot`

37 37 

38Claude Code recusa reiniciar se a sessão tiver uma restrição que não possa passar para o processo reiniciado. As restrições que não pode passar incluem:38Claude Code recusa reiniciar se a sessão tiver uma restrição que não possa passar para o processo reiniciado. As restrições que não pode passar incluem:

39 39 


149 149 

150Essas ações são rebindáveis. Consulte [Ações de rolagem](/docs/pt/keybindings#scroll-actions) para a lista completa de nomes de ações, incluindo variantes de meia página e página inteira que não têm vinculação padrão.150Essas ações são rebindáveis. Consulte [Ações de rolagem](/docs/pt/keybindings#scroll-actions) para a lista completa de nomes de ações, incluindo variantes de meia página e página inteira que não têm vinculação padrão.

151 151 

152Enquanto você está rolado para cima, uma linha de cabeçalho atenuada no topo da conversa mostra o prompt mais recente que rolou acima da visualização. Clique na linha para ir para esse prompt.

153 

152<h3 id="auto-follow">154<h3 id="auto-follow">

153 Auto-follow155 Auto-follow

154</h3>156</h3>


179 181 

180Um valor de `3` corresponde ao padrão em `vim` e aplicativos similares. A configuração aceita qualquer valor positivo até 20, incluindo valores fracionários abaixo de 1, como `0.25` para desacelerar a rolagem de trackpad e roda do mouse acelerada em terminais que já amplificam eventos de roda.182Um valor de `3` corresponde ao padrão em `vim` e aplicativos similares. A configuração aceita qualquer valor positivo até 20, incluindo valores fracionários abaixo de 1, como `0.25` para desacelerar a rolagem de trackpad e roda do mouse acelerada em terminais que já amplificam eventos de roda.

181 183 

182Para ajustar a velocidade de rolagem interativamente, execute `/scroll-speed`. O diálogo mostra uma régua que você pode rolar enquanto está aberto para que você possa sentir a mudança imediatamente. Pressione `←` e `→` para ajustar a velocidade, `r` para redefinir para o padrão detectado automaticamente e `Enter` para salvar. O diálogo avança em números inteiros até 10, e em terminais que suportam controle mais fino, também oferece passos de um quarto até 0,25. Os passos de um quarto requerem Claude Code v2.1.172 ou posterior.184Para ajustar a velocidade de rolagem interativamente, execute `/scroll-speed`. O diálogo mostra uma régua que você pode rolar enquanto está aberto para que você possa sentir a mudança imediatamente. Pressione `←` e `→` para ajustar a velocidade, `r` para redefinir para o padrão detectado automaticamente e `Enter` para salvar. O diálogo avança em números inteiros até 10, e em terminais que suportam controle mais fino, também oferece passos de um quarto até 0,25.

183 185 

184O comando escreve o mesmo valor que a variável de ambiente `CLAUDE_CODE_SCROLL_SPEED` define, persistido em `~/.claude/settings.json`. O máximo do diálogo é 10: se você definir um valor mais alto através da variável de ambiente, o diálogo mostra 10, e salvar a partir do diálogo persiste 10. O comando não está disponível no terminal IDE JetBrains.186O comando escreve o mesmo valor que a variável de ambiente `CLAUDE_CODE_SCROLL_SPEED` define, persistido em `~/.claude/settings.json`. O máximo do diálogo é 10: se você definir um valor mais alto através da variável de ambiente, o diálogo mostra 10, e salvar a partir do diálogo persiste 10. O comando não está disponível no terminal IDE JetBrains.

185 187 

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Use Claude Code GitHub Actions com provedores de nuvem

6 

7> Execute Claude Code GitHub Actions através do Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry em vez da Claude API

8 

9[Claude Code GitHub Actions](/docs/pt/github-actions) chama a Claude API por padrão. Para rotear a inferência através de sua própria conta de nuvem, defina a entrada do provedor da Claude Code GitHub Action e configure sua nuvem para confiar no token OpenID Connect (OIDC) do fluxo de trabalho. O fluxo de trabalho se autentica com esse token, portanto você não armazena nenhuma credencial de nuvem de longa duração em seu repositório.

10 

11<Info>

12 Esta página se baseia na [configuração do GitHub Actions](/docs/pt/github-actions#setup). Ela assume que você já conhece o arquivo de fluxo de trabalho e a etapa `anthropics/claude-code-action`, e cobre apenas o que um provedor de nuvem muda.

13</Info>

14 

15<h2 id="choose-your-provider">

16 Escolha seu provedor

17</h2>

18 

19A Claude Code GitHub Action suporta três provedores, e as etapas de configuração abaixo diferem apenas na configuração do lado da nuvem. Use aquele onde sua organização já tem acesso ao modelo Claude. Você diz à Claude Code GitHub Action qual provedor usar com uma entrada no bloco `with:` da etapa `anthropics/claude-code-action`:

20 

21* **Amazon Bedrock**: `use_bedrock: "true"`

22* **Google Cloud's Agent Platform**: `use_vertex: "true"`

23* **Microsoft Foundry**: `use_foundry: "true"`

24 

25Os exemplos de fluxo de trabalho completos em [Configurar a integração](#set-up-the-integration) já incluem a entrada para cada provedor.

26 

27<h2 id="prerequisites">

28 Pré-requisitos

29</h2>

30 

31Antes de começar, você precisa de:

32 

33* Acesso de administrador ao repositório onde a Claude Code GitHub Action é executada, para instalar um GitHub App e adicionar segredos

34* Permissão para criar recursos de identidade em sua conta de nuvem: funções IAM e provedores de identidade OIDC no AWS, recursos de Workload Identity Federation e contas de serviço no Google Cloud, ou aplicativos Microsoft Entra no Azure

35* Acesso ao modelo Claude em seu provedor:

36 * **Amazon Bedrock**: acesso concedido aos modelos Claude. Perfis de inferência entre regiões, como os IDs de modelo `us.` nos exemplos desta página, precisam de acesso concedido em cada região de seu grupo de regiões. Veja [Claude Code no Amazon Bedrock](/docs/pt/amazon-bedrock)

37 * **Google Cloud's Agent Platform**: um projeto com a API Agent Platform ativada e acesso aos modelos Claude. Veja [Claude Code no Google Cloud's Agent Platform](/docs/pt/google-vertex-ai)

38 * **Microsoft Foundry**: um recurso Foundry com uma implantação de modelo Claude. Veja [Claude Code no Microsoft Foundry](/docs/pt/microsoft-foundry)

39 

40<h2 id="set-up-the-integration">

41 Configurar a integração

42</h2>

43 

44Além dos pré-requisitos, você cria quatro coisas: uma identidade GitHub para a Claude Code GitHub Action, a configuração de confiança do lado da nuvem, os segredos do repositório e o arquivo de fluxo de trabalho. As etapas abaixo orientam você em cada uma.

45 

46<Steps>

47 <Step title="Escolha uma identidade GitHub">

48 A Claude Code GitHub Action envia commits e publica comentários através de uma identidade GitHub. A [configuração rápida](/docs/pt/github-actions#quick-setup) instala o Claude GitHub App oficial para isso. Com um provedor de nuvem, você escolhe a identidade você mesmo:

49 

50 * **[Claude GitHub App](https://github.com/apps/claude) oficial**: instale-a no repositório, ou pule para a próxima etapa se já estiver instalada

51 * **GitHub App personalizado**: crie seu próprio app, descrito abaixo, quando você quiser apenas as três permissões que a Claude Code GitHub Action usa em vez do [conjunto completo do app oficial](/docs/pt/github-actions#github-app-permissions)

52 * **Token automático `GITHUB_TOKEN` do GitHub**: nenhum app para criar ou instalar, mas o GitHub não dispara seus fluxos de trabalho de CI em commits feitos com ele

53 

54 Os exemplos de fluxo de trabalho na quarta etapa se autenticam com um app personalizado. Essa etapa também diz o que mudar para as outras duas opções.

55 

56 Para criar um app personalizado, [registre um novo GitHub App](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app) com webhooks desativados, já que essa integração não os usa. Conceda a ele três permissões de repositório:

57 

58 * **Contents**: leitura e escrita

59 * **Issues**: leitura e escrita

60 * **Pull requests**: leitura e escrita

61 

62 Após registrar o app, gere uma chave privada e mantenha o arquivo `.pem` baixado, anote o ID do App na página de configurações do app, e [instale o app](https://docs.github.com/en/apps/using-github-apps/installing-your-own-github-app) no repositório onde a Claude Code GitHub Action é executada. Você adiciona a chave e o ID como segredos na terceira etapa.

63 </Step>

64 

65 <Step title="Configurar autenticação na nuvem">

66 Configure sua nuvem para confiar no token OIDC que o GitHub emite para o fluxo de trabalho, para que cada execução de fluxo de trabalho obtenha credenciais de nuvem de curta duração. Os pontos em cada aba resumem o que criar, e cada aba vincula o guia do próprio fornecedor de nuvem para as etapas no nível do console.

67 

68 <Tabs>

69 <Tab title="Amazon Bedrock">

70 Crie a configuração de confiança em sua conta AWS, seguindo o [guia AWS para criar provedores de identidade OIDC](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html):

71 

72 * Adicione um provedor de identidade OIDC do GitHub com URL do provedor `https://token.actions.githubusercontent.com` e público `sts.amazonaws.com`

73 * Crie uma função IAM confiável por esse provedor como uma identidade web, e anexe a política de invocação com escopo de [Configuração IAM](/docs/pt/amazon-bedrock#iam-configuration), que concede `bedrock:InvokeModel`, `bedrock:InvokeModelWithResponseStream`, `bedrock:ListInferenceProfiles` e `bedrock:GetInferenceProfile`, junto com duas ações de assinatura `aws-marketplace`

74 * Limite a política de confiança da função ao seu repositório com uma condição de assunto como `repo:your-org/your-repo:*`. Veja o [guia de endurecimento OIDC do GitHub](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect) para o formato de reclamação

75 

76 Anote o ARN da função. Você o adiciona como um segredo na próxima etapa.

77 </Tab>

78 

79 <Tab title="Google Cloud's Agent Platform">

80 Crie os recursos de federação em seu projeto Google Cloud, seguindo a [documentação de Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation):

81 

82 * Ative três APIs: IAM Credentials, Security Token Service (STS) e a API Agent Platform, cujo nome de serviço é `aiplatform.googleapis.com`

83 * Crie um Workload Identity Pool com um provedor OIDC do GitHub cujo emissor é `https://token.actions.githubusercontent.com`, e adicione uma condição de atributo que limite o pool ao seu repositório

84 * Crie uma conta de serviço dedicada com apenas a função `Vertex AI User`, que é `roles/aiplatform.user`, e permita que o pool a represente

85 

86 Anote o nome completo do recurso do provedor e o endereço de email da conta de serviço. Você os adiciona como segredos na próxima etapa.

87 </Tab>

88 

89 <Tab title="Microsoft Foundry">

90 Crie um aplicativo Microsoft Entra com uma credencial federada para seu repositório, seguindo o [guia da Microsoft para autenticação do GitHub Actions](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect):

91 

92 * Registre um aplicativo Microsoft Entra e adicione uma credencial de identidade federada que confie em tokens que o GitHub emite para seu repositório. Uma identidade gerenciada atribuída pelo usuário funciona no lugar de um aplicativo. Ambos têm o ID do cliente que você anota abaixo

93 * Atribua ao aplicativo a função `Azure AI User` em seu recurso Foundry. Veja [Configuração RBAC do Azure](/docs/pt/microsoft-foundry#azure-rbac-configuration) para uma função personalizada mais estreita

94 

95 Anote o ID do cliente do aplicativo, seu ID de locatário e seu ID de assinatura. Você os adiciona como segredos na próxima etapa.

96 </Tab>

97 </Tabs>

98 </Step>

99 

100 <Step title="Adicionar segredos do repositório">

101 No repositório onde a Claude Code GitHub Action é executada, adicione os segredos para seu provedor, mais os dois segredos do app se você criou um GitHub App personalizado na primeira etapa. Veja o guia do GitHub para [usar segredos no GitHub Actions](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions).

102 

103 | Segredo | Necessário para | Valor |

104 | -------------------------------- | ----------------------------- | --------------------------------------------- |

105 | `AWS_ROLE_TO_ASSUME` | Amazon Bedrock | O ARN da função IAM |

106 | `GCP_WORKLOAD_IDENTITY_PROVIDER` | Google Cloud's Agent Platform | O nome completo do recurso do provedor |

107 | `GCP_SERVICE_ACCOUNT` | Google Cloud's Agent Platform | O endereço de email da conta de serviço |

108 | `AZURE_CLIENT_ID` | Microsoft Foundry | O ID do cliente do aplicativo Entra |

109 | `AZURE_TENANT_ID` | Microsoft Foundry | Seu ID de locatário Microsoft Entra |

110 | `AZURE_SUBSCRIPTION_ID` | Microsoft Foundry | Seu ID de assinatura do Azure |

111 | `APP_ID` | GitHub App personalizado | O ID do GitHub App |

112 | `APP_PRIVATE_KEY` | GitHub App personalizado | O conteúdo do arquivo de chave privada `.pem` |

113 </Step>

114 

115 <Step title="Criar o arquivo de fluxo de trabalho">

116 Crie um arquivo de fluxo de trabalho para seu provedor, como `.github/workflows/claude.yml`. Cada exemplo responde a menções `@claude`, se autentica no GitHub com um app personalizado e inclui a permissão `id-token: write`, que o GitHub exige para emitir o token OIDC que seu provedor de nuvem troca por credenciais.

117 

118 Se você escolheu uma identidade GitHub diferente na primeira etapa, ajuste o exemplo:

119 

120 * **Claude GitHub App oficial**: delete a etapa Generate GitHub App token e a linha `github_token`

121 * **Token automático do GitHub**: delete a etapa de geração de token e mude a linha `github_token` para `github_token: ${{ secrets.GITHUB_TOKEN }}`

122 

123 <Warning>

124 Em repositórios públicos, um comentário contendo a frase de gatilho de qualquer usuário inicia este fluxo de trabalho. As etapas de credencial são executadas antes da Claude Code GitHub Action verificar o acesso de escrita do comentarista, portanto a ação rejeita usuários não autorizados apenas após o fluxo de trabalho ter gerado um token de App e se conectado ao seu provedor de nuvem, o que deixa entradas de log de auditoria e consome minutos de Actions. Para evitar essas execuções, adicione uma etapa que verifique o acesso de escrita do comentarista antes das etapas de credencial.

125 </Warning>

126 

127 <Tabs>

128 <Tab title="Amazon Bedrock">

129 Substitua o valor `aws-region` pelo seu próprio. A etapa de credenciais o exporta como `AWS_REGION` para o resto do trabalho.

130 

131 ```yaml theme={null}

132 name: Claude PR Action

133 

134 permissions:

135 contents: write

136 pull-requests: write

137 issues: write

138 id-token: write

139 

140 on:

141 issue_comment:

142 types: [created]

143 pull_request_review_comment:

144 types: [created]

145 issues:

146 types: [opened]

147 

148 jobs:

149 claude-pr:

150 if: |

151 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

152 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

153 (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))

154 runs-on: ubuntu-latest

155 steps:

156 - name: Checkout repository

157 uses: actions/checkout@v6

158 

159 - name: Generate GitHub App token

160 id: app-token

161 uses: actions/create-github-app-token@v2

162 with:

163 app-id: ${{ secrets.APP_ID }}

164 private-key: ${{ secrets.APP_PRIVATE_KEY }}

165 

166 - name: Configure AWS Credentials (OIDC)

167 uses: aws-actions/configure-aws-credentials@v4

168 with:

169 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}

170 aws-region: us-west-2

171 

172 - uses: anthropics/claude-code-action@v1

173 with:

174 github_token: ${{ steps.app-token.outputs.token }}

175 use_bedrock: "true"

176 claude_args: '--model us.anthropic.claude-sonnet-4-6'

177 ```

178 

179 <Tip>

180 Os IDs de modelo Bedrock incluem um prefixo de perfil de inferência entre regiões como `us.`. Use o prefixo para o grupo de regiões onde você concedeu acesso ao modelo.

181 </Tip>

182 </Tab>

183 

184 <Tab title="Google Cloud's Agent Platform">

185 Substitua o valor `CLOUD_ML_REGION` pelo seu próprio. Você não precisa codificar o ID do projeto, porque o fluxo de trabalho o lê da saída da etapa `auth`.

186 

187 ```yaml theme={null}

188 name: Claude PR Action

189 

190 permissions:

191 contents: write

192 pull-requests: write

193 issues: write

194 id-token: write

195 

196 on:

197 issue_comment:

198 types: [created]

199 pull_request_review_comment:

200 types: [created]

201 issues:

202 types: [opened]

203 

204 jobs:

205 claude-pr:

206 if: |

207 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

208 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

209 (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))

210 runs-on: ubuntu-latest

211 steps:

212 - name: Checkout repository

213 uses: actions/checkout@v6

214 

215 - name: Generate GitHub App token

216 id: app-token

217 uses: actions/create-github-app-token@v2

218 with:

219 app-id: ${{ secrets.APP_ID }}

220 private-key: ${{ secrets.APP_PRIVATE_KEY }}

221 

222 - name: Authenticate to Google Cloud

223 id: auth

224 uses: google-github-actions/auth@v2

225 with:

226 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}

227 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

228 

229 - uses: anthropics/claude-code-action@v1

230 with:

231 github_token: ${{ steps.app-token.outputs.token }}

232 use_vertex: "true"

233 claude_args: '--model claude-sonnet-5'

234 env:

235 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}

236 CLOUD_ML_REGION: us-east5

237 ```

238 </Tab>

239 

240 <Tab title="Microsoft Foundry">

241 Substitua `your-resource-name` pelo nome do seu recurso Foundry. Claude Code constrói a URL do endpoint a partir dele. A etapa `azure/login` se conecta com o token OIDC do fluxo de trabalho, e Claude Code pega as credenciais através da [cadeia de credencial padrão](https://learn.microsoft.com/en-us/azure/developer/javascript/sdk/authentication/credential-chains#defaultazurecredential-overview) do Azure.

242 

243 ```yaml theme={null}

244 name: Claude PR Action

245 

246 permissions:

247 contents: write

248 pull-requests: write

249 issues: write

250 id-token: write

251 

252 on:

253 issue_comment:

254 types: [created]

255 pull_request_review_comment:

256 types: [created]

257 issues:

258 types: [opened]

259 

260 jobs:

261 claude-pr:

262 if: |

263 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

264 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

265 (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))

266 runs-on: ubuntu-latest

267 steps:

268 - name: Checkout repository

269 uses: actions/checkout@v6

270 

271 - name: Generate GitHub App token

272 id: app-token

273 uses: actions/create-github-app-token@v2

274 with:

275 app-id: ${{ secrets.APP_ID }}

276 private-key: ${{ secrets.APP_PRIVATE_KEY }}

277 

278 - name: Authenticate to Azure

279 uses: azure/login@v2

280 with:

281 client-id: ${{ secrets.AZURE_CLIENT_ID }}

282 tenant-id: ${{ secrets.AZURE_TENANT_ID }}

283 subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

284 

285 - uses: anthropics/claude-code-action@v1

286 with:

287 github_token: ${{ steps.app-token.outputs.token }}

288 use_foundry: "true"

289 claude_args: '--model claude-sonnet-5'

290 env:

291 ANTHROPIC_FOUNDRY_RESOURCE: your-resource-name

292 ```

293 

294 <Tip>

295 Use um ID de modelo que corresponda a uma implantação Claude em seu recurso Foundry. Veja [Claude Code no Microsoft Foundry](/docs/pt/microsoft-foundry) para configuração de modelo e fixação de versão.

296 </Tip>

297 </Tab>

298 </Tabs>

299 

300 Com qualquer provedor, você pode limitar o tempo de execução e o custo adicionando `--max-turns` a `claude_args`. Veja [Gerenciar custos](/docs/pt/github-actions#manage-costs).

301 </Step>

302 

303 <Step title="Testar a configuração">

304 Mencione `@claude` em um comentário de issue ou PR, depois observe a execução na aba Actions do repositório. Claude responde em um comentário na mesma issue ou PR.

305 </Step>

306</Steps>

307 

308<h2 id="troubleshooting">

309 Troubleshooting

310</h2>

311 

312Uma execução com falha geralmente quebra em um de dois lugares:

313 

314* **Erros de autenticação**: geralmente uma configuração incorreta de OIDC. Verifique se o fluxo de trabalho inclui a permissão `id-token: write`, se a condição do repositório da configuração de confiança corresponde exatamente ao seu repositório, e se os nomes dos segredos em seu fluxo de trabalho correspondem aos que você adicionou

315* **Problemas de gatilho e CI**: esses se comportam da mesma forma que quando a Claude Code GitHub Action chama a API Claude. Veja a [seção de troubleshooting](/docs/pt/github-actions#troubleshooting) da página principal e o [FAQ](https://github.com/anthropics/claude-code-action/blob/main/docs/faq.md) da Claude Code GitHub Action

316 

317<h2 id="what’s-next">

318 Próximos passos

319</h2>

320 

321* [Claude Code GitHub Actions](/docs/pt/github-actions) para exemplos, parâmetros e melhores práticas

322* [Claude Code no Amazon Bedrock](/docs/pt/amazon-bedrock) para IDs de modelo Bedrock e regiões

323* [Claude Code no Google Cloud's Agent Platform](/docs/pt/google-vertex-ai) para IDs de modelo Agent Platform e regiões

324* [Claude Code no Microsoft Foundry](/docs/pt/microsoft-foundry) para configuração de modelo e endpoint Foundry

glossary.md +2 −2

Details

104 Checkpoint104 Checkpoint

105</h3>105</h3>

106 106 

107Um ponto de restauração criado a cada prompt que você envia. Claude Code captura snapshots de arquivos antes de cada edição para que um checkpoint possa revertê-los. Pressione `Esc` duas vezes ou execute `/rewind` para restaurar código, conversa ou ambos para um ponto anterior, ou para resumir parte da conversa a partir de uma mensagem selecionada. Checkpoints são salvos com a conversa, portanto uma sessão retomada ainda pode `/rewind` para eles. Eles são separados do git e não rastreiam alterações feitas através da ferramenta Bash.107Um ponto de restauração criado a cada prompt que você envia que inicia um turno. Claude Code captura snapshots de arquivos antes de cada edição para que um checkpoint possa revertê-los. Pressione `Esc` duas vezes ou execute `/rewind` para restaurar código, conversa ou ambos para um ponto anterior, ou para resumir parte da conversa a partir de uma mensagem selecionada. Checkpoints são salvos com a conversa, portanto uma sessão retomada ainda pode `/rewind` para eles. Eles são separados do git e não rastreiam alterações feitas através da ferramenta Bash.

108 108 

109Saiba mais: [Checkpointing](/docs/pt/checkpointing)109Saiba mais: [Checkpointing](/docs/pt/checkpointing)

110 110 


266 Output style266 Output style

267</h3>267</h3>

268 268 

269Uma configuração que modifica o prompt do sistema de Claude para alterar comportamento de resposta, tom ou formato. Diferentemente de [CLAUDE.md](#claude-md), que Claude Code entrega como uma mensagem de usuário após o prompt do sistema, um output style altera o próprio prompt do sistema.269Uma configuração que altera as instruções que Claude Code fornece ao Claude, para definir comportamento de resposta, tom ou formato. Diferentemente de [CLAUDE.md](#claude-md), que adiciona contexto do projeto junto com as instruções padrão do Claude Code, um output style personalizado pode substituir as instruções padrão de engenharia de software.

270 270 

271Saiba mais: [Output styles](/docs/pt/output-styles)271Saiba mais: [Output styles](/docs/pt/output-styles)

272 272 

headless.md +10 −5

Details

207 207 

208Mensagens de [subagentes](/docs/pt/sub-agents) aparecem no stream como mensagens `assistant` e `user` cujo campo `parent_tool_use_id` é o ID da chamada de ferramenta que gerou o subagente. Mensagens da conversa principal carregam `null` nesse campo.208Mensagens de [subagentes](/docs/pt/sub-agents) aparecem no stream como mensagens `assistant` e `user` cujo campo `parent_tool_use_id` é o ID da chamada de ferramenta que gerou o subagente. Mensagens da conversa principal carregam `null` nesse campo.

209 209 

210Por padrão, Claude Code emite apenas blocos `tool_use` e `tool_result` de subagentes. Passe [`--forward-subagent-text`](/docs/pt/cli-reference#cli-flags) ou defina [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/pt/env-vars) para também emitir blocos de texto e pensamento de subagentes, para que você possa reconstruir a transcrição de cada subagente. Isso requer Claude Code v2.1.211 ou posterior.210A primeira mensagem de um subagente em execução em [primeiro plano](/docs/pt/sub-agents#run-subagents-in-foreground-or-background) é uma mensagem `user` carregando o prompt que o conduz. Após essa primeira mensagem, Claude Code emite:

211 

212* **Por padrão**: os blocos `tool_use` e `tool_result` do subagente.

213* **Com [`--forward-subagent-text`](/docs/pt/cli-reference#cli-flags) ou [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/pt/env-vars)**: os blocos de texto e pensamento do subagente também, para que você possa reconstruir a transcrição de cada subagente. Isso requer Claude Code v2.1.211 ou posterior.

211 214 

212Quando você habilita uma das opções, Claude Code encaminha mensagens de [subagentes em cada profundidade de aninhamento](/docs/pt/sub-agents#let-subagents-spawn-their-own-subagents): quando um subagente gera seu próprio subagente, as mensagens do subagente aninhado carregam o ID da chamada de ferramenta Agent que o gerou em `parent_tool_use_id`, para que você possa reconstruir a árvore de aninhamento completa seguindo esses IDs. Antes da v2.1.219, mensagens de subagentes aninhados não apareciam no stream.215Quando você habilita uma das opções, Claude Code encaminha mensagens de [subagentes em cada profundidade de aninhamento](/docs/pt/sub-agents#let-subagents-spawn-their-own-subagents): quando um subagente gera seu próprio subagente, as mensagens do subagente aninhado carregam o ID da chamada de ferramenta Agent que o gerou em `parent_tool_use_id`, para que você possa reconstruir a árvore de aninhamento completa seguindo esses IDs. Antes da v2.1.219, mensagens de subagentes aninhados não apareciam no stream.

213 216 

217Skills que [executam em um subagente](/docs/pt/skills#run-skills-in-a-subagent) aparecem no stream da mesma forma: a primeira mensagem da skill bifurcada é uma mensagem `user` carregando o conteúdo da skill que conduz a execução. Se você habilitar uma das opções, o stream também carrega os blocos de texto e pensamento da skill bifurcada. Antes da v2.1.265, apenas os blocos `tool_use` e `tool_result` de uma skill bifurcada apareciam no stream.

218 

214<h4 id="handle-api-retries">219<h4 id="handle-api-retries">

215 Lidar com tentativas de API220 Lidar com tentativas de API

216</h4>221</h4>


222| `type` | `"system"` | tipo de mensagem |227| `type` | `"system"` | tipo de mensagem |

223| `subtype` | `"api_retry"` | identifica isso como um evento de repetição |228| `subtype` | `"api_retry"` | identifica isso como um evento de repetição |

224| `attempt` | inteiro | número da tentativa atual, começando em 1 |229| `attempt` | inteiro | número da tentativa atual, começando em 1 |

225| `max_retries` | inteiro | total de repetições permitidas |230| `max_retries` | inteiro | total de repetições permitidas para a causa dessa falha, que pode ser menor que o orçamento de toda a sessão |

226| `retry_delay_ms` | inteiro | milissegundos até a próxima tentativa |231| `retry_delay_ms` | inteiro | milissegundos até a próxima tentativa |

227| `error_status` | inteiro ou nulo | código de status HTTP, ou `null` para erros de conexão sem resposta HTTP |232| `error_status` | inteiro ou nulo | código de status HTTP da tentativa falhada, ou `null` quando a tentativa não obteve resposta HTTP da API |

228| `no_response` | objeto, opcional | presente apenas quando a tentativa falhada obteve [nenhum cabeçalho de resposta a tempo](/docs/pt/errors#no-response-from-api). `waited_ms` é quanto tempo essa tentativa aguardou e `retry_wait_ms` é quanto tempo a repetição aguardará. Nesses eventos, `max_retries` reflete a uma repetição que essa causa normalmente obtém, não o orçamento de toda a sessão. Requer Claude Code v2.1.261 ou posterior |233| `no_response` | objeto, opcional | presente apenas quando a tentativa falhada obteve [nenhum cabeçalho de resposta a tempo](/docs/pt/errors#no-response-from-api). `waited_ms` é quanto tempo essa tentativa aguardou e `retry_wait_ms` é quanto tempo a repetição aguardará. Nesses eventos, `max_retries` reflete a uma repetição que essa causa normalmente obtém, não o orçamento de toda a sessão. Requer Claude Code v2.1.261 ou posterior |

229| `error` | string | categoria de erro: `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, ou `unknown` |234| `error` | string | categoria de erro: `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, ou `unknown` |

230| `uuid` | string | identificador único do evento |235| `uuid` | string | identificador único do evento |

231| `session_id` | string | sessão à qual o evento pertence |236| `session_id` | string | sessão à qual o evento pertence |

232 237 


293Para definir uma linha de base para toda a sessão em vez de listar ferramentas individuais, passe um [modo de permissão](/docs/pt/permission-modes). Para `-p`, o [modo de permissão inicial integrado](/docs/pt/permission-modes#which-mode-a-session-starts-in) é Manual em todos os planos, então passe o modo de permissão que você deseja:298Para definir uma linha de base para toda a sessão em vez de listar ferramentas individuais, passe um [modo de permissão](/docs/pt/permission-modes). Para `-p`, o [modo de permissão inicial integrado](/docs/pt/permission-modes#which-mode-a-session-starts-in) é Manual em todos os planos, então passe o modo de permissão que você deseja:

294 299 

295* **`auto`**: passe `--permission-mode auto` para ter um classificador revisar a maioria das ações em vez de você300* **`auto`**: passe `--permission-mode auto` para ter um classificador revisar a maioria das ações em vez de você

296* **`dontAsk`**: Claude Code nega qualquer coisa não em suas regras `permissions.allow` ou no [conjunto de comandos somente leitura](/docs/pt/permissions#read-only-commands), o que é útil para execuções de CI bloqueadas. `AskUserQuestion`, ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools), e ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) são negadas mesmo quando uma regra de permissão corresponde301* **`dontAsk`**: Claude Code nega qualquer chamada que de outra forma solicitaria, o que é útil para execuções de CI bloqueadas. Ações que não precisam de aprovação no modo Manual ainda são executadas, como leituras de arquivo em seus diretórios de trabalho e o [conjunto de comandos somente leitura](/docs/pt/permissions#read-only-commands), e também ações que suas entradas `--allowedTools` ou regras `permissions.allow` cobrem. `AskUserQuestion`, ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools), e ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) são negadas mesmo quando uma regra de permissão corresponde

297* **`acceptEdits`**: Claude escreve arquivos sem solicitar, e Claude Code aprova automaticamente comandos comuns do sistema de arquivos como `mkdir`, `touch`, `mv` e `cp`. As [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves) ainda se aplicam. Além do conjunto de comandos somente leitura, outros comandos de shell e solicitações de rede ainda precisam de uma entrada `--allowedTools` ou uma regra `permissions.allow`. Consulte [o que `acceptEdits` aprova automaticamente](/docs/pt/permission-modes#auto-approve-file-edits-with-acceptedits-mode) para a lista completa302* **`acceptEdits`**: Claude escreve arquivos sem solicitar, e Claude Code aprova automaticamente comandos comuns do sistema de arquivos como `mkdir`, `touch`, `mv` e `cp`. As [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves) ainda se aplicam. Além do conjunto de comandos somente leitura, outros comandos de shell e solicitações de rede ainda precisam de uma entrada `--allowedTools` ou uma regra `permissions.allow`. Consulte [o que `acceptEdits` aprova automaticamente](/docs/pt/permission-modes#auto-approve-file-edits-with-acceptedits-mode) para a lista completa

298 303 

299Este exemplo aplica correções de lint com `acceptEdits` como a linha de base:304Este exemplo aplica correções de lint com `acceptEdits` como a linha de base:

hooks-guide.md +42 −37

Details

499 499 

500Claude Code dispara eventos de hook em pontos específicos do seu ciclo de vida. Quando um evento dispara, Claude Code executa todos os hooks correspondentes em paralelo; consulte [Campos do manipulador de hook](/docs/pt/hooks#hook-handler-fields) para saber como manipuladores duplicados são tratados. A tabela abaixo mostra cada evento e quando dispara:500Claude Code dispara eventos de hook em pontos específicos do seu ciclo de vida. Quando um evento dispara, Claude Code executa todos os hooks correspondentes em paralelo; consulte [Campos do manipulador de hook](/docs/pt/hooks#hook-handler-fields) para saber como manipuladores duplicados são tratados. A tabela abaixo mostra cada evento e quando dispara:

501 501 

502| Event | When it fires |502| Evento | Quando dispara |

503| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |503| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

504| `SessionStart` | When a session begins or resumes |504| `SessionStart` | Quando uma sessão começa ou é retomada |

505| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |505| `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 |

506| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |506| `UserPromptSubmit` | Quando você envia um prompt, antes de Claude processá-lo |

507| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |507| `UserPromptExpansion` | Quando um comando digitado pelo usuário se expande em um prompt, antes de chegar a Claude. Pode bloquear a expansão |

508| `PreToolUse` | Before a tool call executes. Can block it |508| `PreToolUse` | Antes de uma chamada de ferramenta ser executada. Pode bloqueá-la |

509| `PermissionRequest` | When a tool call needs a permission decision |509| `PermissionRequest` | Quando uma chamada de ferramenta precisa de uma decisão de permissão |

510| `PermissionDenied` | When auto mode denies a tool call, including denials without a classifier verdict. Use JSON `hookSpecificOutput.retry: true` to tell the model it may retry the denied tool call. Claude Code ignores `retry` when the classifier produced no verdict |510| `PermissionDenied` | Quando o modo automático nega uma chamada de ferramenta, incluindo negações sem um veredicto do classificador. Use JSON `hookSpecificOutput.retry: true` para informar ao modelo que ele pode tentar novamente a chamada de ferramenta negada. Claude Code ignora `retry` quando o classificador não produziu veredicto |

511| `PostToolUse` | After a tool call succeeds |511| `PostToolUse` | Depois que uma chamada de ferramenta é bem-sucedida |

512| `PostToolUseFailure` | After a tool call fails |512| `PostToolUseFailure` | Depois que uma chamada de ferramenta falha |

513| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |513| `PostToolBatch` | Depois que um lote completo de chamadas de ferramenta paralelas é resolvido, antes da próxima chamada do modelo |

514| `Notification` | When Claude Code sends a notification |514| `Notification` | Quando Claude Code envia uma notificação |

515| `MessageDisplay` | While assistant message text is displayed |515| `MessageDisplay` | Enquanto o texto da mensagem do assistente está sendo exibido |

516| `SubagentStart` | When a subagent is spawned |516| `SubagentStart` | Quando um subagente é criado |

517| `SubagentStop` | When a subagent finishes |517| `SubagentStop` | Quando um subagente termina |

518| `TaskCreated` | When a task is being created via `TaskCreate` |518| `TaskCreated` | Quando uma tarefa está sendo criada via `TaskCreate` |

519| `TaskCompleted` | When a task is being marked as completed |519| `TaskCompleted` | Quando uma tarefa está sendo marcada como concluída |

520| `Stop` | When Claude finishes responding |520| `Stop` | Quando Claude termina de responder |

521| `StopFailure` | When the turn ends due to an API error |521| `StopFailure` | Quando a rodada termina devido a um erro de API |

522| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |522| `TeammateIdle` | Quando um colega de [equipe de agentes](/docs/pt/agent-teams) está prestes a ficar ocioso |

523| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |523| `InstructionsLoaded` | Quando um arquivo CLAUDE.md ou `.claude/rules/*.md` é carregado no contexto. Dispara no início da sessão e quando os arquivos são carregados lentamente durante uma sessão |

524| `ConfigChange` | When a configuration file changes during a session |524| `ConfigChange` | Quando um arquivo de configuração muda durante uma sessão |

525| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |525| `CwdChanged` | Quando o diretório de trabalho muda, por exemplo quando Claude executa um comando `cd`. Útil para gerenciamento reativo do ambiente com ferramentas como direnv |

526| `DirectoryAdded` | When a working directory is added mid-session via `/add-dir` or the SDK `register_repo_root` control request |526| `DirectoryAdded` | Quando um diretório de trabalho é adicionado no meio da sessão via `/add-dir` ou a solicitação de controle SDK `register_repo_root` |

527| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |527| `FileChanged` | Quando um arquivo observado muda no disco. O campo `matcher` especifica quais nomes de arquivo observar |

528| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |528| `WorktreeCreate` | Quando um worktree está sendo criado via `--worktree`, `isolation: "worktree"`, ou para uma sessão em segundo plano. Substitui o comportamento padrão do git |

529| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |529| `WorktreeRemove` | Quando um worktree está sendo removido na saída da sessão, quando um subagente termina, ou quando você exclui uma sessão em segundo plano |

530| `PreCompact` | Before context compaction |530| `PreCompact` | Antes da compactação de contexto |

531| `PostCompact` | After context compaction completes |531| `PostCompact` | Depois que a compactação de contexto é concluída |

532| `PreModelSwitch` | Before Claude Code applies a model switch that you or a client requested. Can block the switch |532| `PreModelSwitch` | Antes de Claude Code aplicar uma mudança de modelo que você ou um cliente solicitou. Pode bloquear a mudança |

533| `PostModelSwitch` | After the session's model changes, including changes Claude Code makes on its own, such as restoring the model when you resume a session |533| `PostModelSwitch` | Depois que o modelo da sessão muda, incluindo mudanças que Claude Code faz por conta própria, como restaurar o modelo quando você retoma uma sessão |

534| `Elicitation` | When an MCP server requests user input during a tool call |534| `Elicitation` | Quando um servidor MCP solicita entrada do usuário durante uma chamada de ferramenta |

535| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |535| `ElicitationResult` | Depois que um usuário responde a uma elicitação MCP, antes da resposta ser enviada de volta ao servidor |

536| `SessionEnd` | When a session terminates |536| `SessionEnd` | Quando uma sessão é encerrada |

537 537 

538Cada hook tem um `type` que determina como ele executa. A maioria dos hooks usa `"type": "command"`, que executa um comando shell. Quatro outros tipos estão disponíveis:538Cada hook tem um `type` que determina como ele executa. A maioria dos hooks usa `"type": "command"`, que executa um comando shell. Quatro outros tipos estão disponíveis:

539 539 


731| `SubagentStop` | tipo de agente | mesmos valores que `SubagentStart` |731| `SubagentStop` | tipo de agente | mesmos valores que `SubagentStart` |

732| `ConfigChange` | fonte de configuração | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |732| `ConfigChange` | fonte de configuração | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

733| `DirectoryAdded` | como o diretório foi adicionado | `slash_command`, `register_repo_root` |733| `DirectoryAdded` | como o diretório foi adicionado | `slash_command`, `register_repo_root` |

734| `StopFailure` | 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`, `unknown` |734| `StopFailure` | 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`, `unknown` |

735| `InstructionsLoaded` | motivo de carregamento | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |735| `InstructionsLoaded` | motivo de carregamento | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

736| `Elicitation` | nome do servidor MCP | seus nomes de servidor MCP configurados |736| `Elicitation` | nome do servidor MCP | seus nomes de servidor MCP configurados |

737| `ElicitationResult` | nome do servidor MCP | mesmos valores que `Elicitation` |737| `ElicitationResult` | nome do servidor MCP | mesmos valores que `Elicitation` |


1077 Hook JSON não tem efeito1077 Hook JSON não tem efeito

1078</h3>1078</h3>

1079 1079 

1080Seu hook imprime JSON válido, mas a decisão não entra em vigor e nenhum erro aparece na transcrição.1080Seu hook imprime JSON válido, mas a decisão não entra em vigor e nenhum erro aparece na transcrição. Verifique qual causa se aplica:

1081 

1082* **Saída extra antes do JSON**: algo mais escreve para stdout primeiro, geralmente um `echo` incondicional no seu perfil de shell, então a saída não começa mais com `{` e Claude Code não a analisa como JSON. A causa e correção seguem esta lista.

1083* **Um campo no nível errado**: compare a colocação de cada campo contra o formato [saída JSON](/docs/pt/hooks#json-output). Por exemplo, `permissionDecision` pertence dentro de `hookSpecificOutput`, não no nível superior.

1081 1084 

1082Quando Claude Code executa um hook de comando em forma de shell, um sem `args`, ele gera `sh -c` no macOS e Linux, Git Bash no Windows, ou PowerShell quando Git Bash não está instalado por padrão. Este shell é não-interativo, mas Git Bash e algumas configurações, como `BASH_ENV` apontando para `~/.bashrc`, ainda fornecem seu perfil. Se esse perfil contiver instruções `echo` incondicionais, a saída é adicionada ao seu JSON do hook:1085Quando Claude Code executa um hook de comando em forma de shell, um sem `args`, ele gera `sh -c` no macOS e Linux, Git Bash no Windows, ou PowerShell quando Git Bash não está instalado por padrão. Este shell é não-interativo, mas Git Bash e algumas configurações, como `BASH_ENV` apontando para `~/.bashrc`, ainda fornecem seu perfil. Se esse perfil contiver instruções `echo` incondicionais, a saída é adicionada ao seu JSON do hook:

1083 1086 


1097 1100 

1098A variável `$-` contém flags de shell, e `i` significa interativo. Hooks executam em shells não-interativos, então o echo é pulado.1101A variável `$-` contém flags de shell, e `i` significa interativo. Hooks executam em shells não-interativos, então o echo é pulado.

1099 1102 

1103Quando seu hook retorna `permissionDecision` ou `additionalContext` no nível superior em vez de dentro de `hookSpecificOutput`, o JSON ainda analisa, e Claude Code ignora os campos deslocados sem reportar um erro. Para ver quais campos foram ignorados, inicie Claude Code com `claude --debug` e procure no [log de debug](/docs/pt/hooks#debug-hooks) por `Hook JSON output had unrecognized keys`.

1104 

1100<h3 id="debug-techniques">1105<h3 id="debug-techniques">

1101 Técnicas de debug1106 Técnicas de debug

1102</h3>1107</h3>

Details

141 141 

142Consulte a [referência de comandos](/docs/pt/commands) para obter a lista completa de comandos incluídos no Claude Code.142Consulte a [referência de comandos](/docs/pt/commands) para obter a lista completa de comandos incluídos no Claude Code.

143 143 

144<h3 id="complete-a-command-mid-prompt">

145 Completar um comando no meio do prompt

146</h3>

147 

148A conclusão de comando também funciona no meio de um prompt: digite `/` após um espaço, depois as primeiras letras de um nome, como em `executar os testes, depois /com`. Apenas comandos cujos nomes começam com essas letras correspondem, portanto um caminho de arquivo como `/tmp/notes.md` não mantém uma lista aberta. Claude Code executa um comando apenas quando o comando [inicia sua mensagem](/docs/pt/commands).

149 

150* **Na [renderização em tela cheia](/docs/pt/fullscreen)**: as correspondências aparecem como uma lista enquanto você digita, sem nenhuma linha destacada, portanto `Enter` ainda envia seu prompt conforme digitado. Pressione `Tab` para inserir a correspondência superior, ou escolha uma linha com as setas e `Enter`.

151* **Fora da tela cheia**: o resto da correspondência superior aparece como texto fantasma no seu cursor, com uma contagem como `+2` quando mais comandos correspondem. Pressione `Tab` para inserir a única correspondência, ou para abrir a lista quando várias correspondem, depois escolha uma linha com as setas e `Enter`.

152 

153Em ambos os renderizadores, pressione `Tab` em um `/` nu no meio do prompt para listar todos os comandos.

154 

155Uma skill de plugin corresponde também ao seu nome nu, portanto `/deploy` encontra uma skill nomeada `myplugin:deploy-app`. Quando você insere a correspondência, Claude Code escreve o `/myplugin:deploy-app` completo.

156 

144<h2 id="vim-editor-mode">157<h2 id="vim-editor-mode">

145 Modo editor Vim158 Modo editor Vim

146</h2>159</h2>


335* As tarefas em segundo plano são limpas automaticamente quando Claude Code sai. No macOS e Linux, quando você interrompe uma tarefa em segundo plano de [`/tasks`](/docs/pt/commands) ou Claude Code a interrompe ao sair, os processos que se desvincularam do shell da tarefa, como aqueles iniciados sob `setsid` ou `timeout`, também param348* As tarefas em segundo plano são limpas automaticamente quando Claude Code sai. No macOS e Linux, quando você interrompe uma tarefa em segundo plano de [`/tasks`](/docs/pt/commands) ou Claude Code a interrompe ao sair, os processos que se desvincularam do shell da tarefa, como aqueles iniciados sob `setsid` ou `timeout`, também param

336* Se você colocar a sessão em segundo plano em vez de sair dela, suas tarefas em segundo plano continuarão sendo executadas na sessão em segundo plano. Veja [colocar uma sessão em execução em segundo plano](/docs/pt/agent-view#from-inside-a-session)349* Se você colocar a sessão em segundo plano em vez de sair dela, suas tarefas em segundo plano continuarão sendo executadas na sessão em segundo plano. Veja [colocar uma sessão em execução em segundo plano](/docs/pt/agent-view#from-inside-a-session)

337* As tarefas em segundo plano são automaticamente encerradas se a saída exceder 5GB, com uma nota em stderr explicando o motivo350* As tarefas em segundo plano são automaticamente encerradas se a saída exceder 5GB, com uma nota em stderr explicando o motivo

338* No macOS e Linux, Claude Code encerra as tarefas em segundo plano em execução quando o sistema operacional sinaliza pressão de memória, desde que a sessão tenha ficado ociosa por pelo menos 30 minutos e nenhuma volta ou subagenteesteja em execução. Defina [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/docs/pt/env-vars) como `1` para desativar isso. Requer Claude Code v2.1.193 ou posterior351* No macOS e Linux, Claude Code encerra as tarefas em segundo plano em execução quando o sistema operacional sinaliza pressão de memória, desde que a sessão tenha ficado ociosa por pelo menos 30 minutos e nenhuma volta ou subagente esteja em execução. Defina [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/docs/pt/env-vars) como `1` para desativar isso. Requer Claude Code v2.1.193 ou posterior

339* Comandos em segundo plano pertencentes a um [subagente](/docs/pt/sub-agents) não têm limite de tempo, exceto que um comando pertencente a um subagente em execução em primeiro plano termina quando esse subagente fornece sua resposta final; veja [Comandos em segundo plano](/docs/pt/tools-reference#background-commands) na referência de ferramentas. Antes da v2.1.218, nem a recolha de pressão de memória nem o limite anterior de 60 minutos em comandos de subagente cobriam comandos movidos para o segundo plano com `Ctrl+B`352* Comandos em segundo plano pertencentes a um [subagente](/docs/pt/sub-agents) não têm limite de tempo, exceto que um comando pertencente a um subagente em execução em primeiro plano termina quando esse subagente fornece sua resposta final; veja [Comandos em segundo plano](/docs/pt/tools-reference#background-commands) na referência de ferramentas. Antes da v2.1.218, nem a recolha de pressão de memória nem o limite anterior de 60 minutos em comandos de subagente cobriam comandos movidos para o segundo plano com `Ctrl+B`

340 353 

341Para desabilitar toda a funcionalidade de tarefas em segundo plano, defina a variável de ambiente `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` como `1`. Veja [Variáveis de ambiente](/docs/pt/env-vars) para detalhes.354Para desabilitar toda a funcionalidade de tarefas em segundo plano, defina a variável de ambiente `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` como `1`. Veja [Variáveis de ambiente](/docs/pt/env-vars) para detalhes.


371* Saia com `Escape`, `Backspace` ou `Ctrl+U` em um prompt vazio384* Saia com `Escape`, `Backspace` ou `Ctrl+U` em um prompt vazio

372* Colar texto que começa com `!` em um prompt vazio entra no modo shell automaticamente, correspondendo ao comportamento de `!` digitado385* Colar texto que começa com `!` em um prompt vazio entra no modo shell automaticamente, correspondendo ao comportamento de `!` digitado

373 386 

374Em uma sessão interativa regular, os comandos que você digita no modo shell são executados fora da [sandbox](/docs/pt/sandboxing) mesmo quando você ativou sandboxing, porque a sandbox se aplica aos comandos que Claude executa. Veja [modo de sandbox estrito](/docs/pt/sandboxing#the-unsandboxed-retry-escape-hatch) para as sessões onde os comandos do modo shell também são executados em sandbox, como sessões em segundo plano com modo de sandbox estrito ativado.387A menos que sua sessão seja uma daquelas listadas em [modo de sandbox estrito](/docs/pt/sandboxing#the-unsandboxed-retry-escape-hatch), os comandos que você digita no modo shell são executados fora da [sandbox](/docs/pt/sandboxing) mesmo quando você ativou sandboxing, porque a sandbox se aplica aos comandos que Claude executa.

375 388 

376Claude responde automaticamente à saída do comando assim que ela chega à transcrição, para que você possa executar `! npm test` e obter uma explicação das falhas sem um segundo prompt. A resposta custa o mesmo que enviar um prompt normal. Para restaurar o comportamento anterior onde a saída é adicionada ao contexto sem uma resposta, defina [`respondToBashCommands`](/docs/pt/settings-reference#respondtobashcommands) como `false` em `settings.json`. Antes da v2.1.186, o modo shell sempre adicionava saída ao contexto sem uma resposta.389Claude responde automaticamente à saída do comando assim que ela chega à transcrição, para que você possa executar `! npm test` e obter uma explicação das falhas sem um segundo prompt. A resposta custa o mesmo que enviar um prompt normal. Para restaurar o comportamento anterior onde a saída é adicionada ao contexto sem uma resposta, defina [`respondToBashCommands`](/docs/pt/settings-reference#respondtobashcommands) como `false` em `settings.json`. Antes da v2.1.186, o modo shell sempre adicionava saída ao contexto sem uma resposta.

377 390 


577 590 

578Execute `/diff` para revisar as alterações em sua árvore de trabalho sem sair do Claude Code. Você vê as edições que Claude fez até agora junto com qualquer outra coisa que você não tenha confirmado.591Execute `/diff` para revisar as alterações em sua árvore de trabalho sem sair do Claude Code. Você vê as edições que Claude fez até agora junto com qualquer outra coisa que você não tenha confirmado.

579 592 

593Nas alterações que `/diff` lê do git, um submódulo aparece como uma única entrada, e apenas quando o commit para o qual aponta muda; edições de arquivos dentro do submódulo não aparecem lá.

594 

580Na [renderização em tela cheia](/docs/pt/fullscreen), `/diff` abre o [painel de diff](#diff-panel) ao lado da conversa, que permanece aberto e se atualiza enquanto você continua trabalhando. No renderizador clássico, `/diff` abre o [visualizador de diff](#diff-viewer) no lugar do prompt, e você o fecha quando terminar de ler.595Na [renderização em tela cheia](/docs/pt/fullscreen), `/diff` abre o [painel de diff](#diff-panel) ao lado da conversa, que permanece aberto e se atualiza enquanto você continua trabalhando. No renderizador clássico, `/diff` abre o [visualizador de diff](#diff-viewer) no lugar do prompt, e você o fecha quando terminar de ler.

581 596 

582<h3 id="diff-panel">597<h3 id="diff-panel">


664 679 

665A lista de tarefas é a lista de verificação de Claude: itens que Claude criou para planejar trabalho em várias etapas, com indicadores mostrando o que está pendente, em progresso ou concluído. É separada da visualização de tarefa em segundo plano. Para ver shells em execução e subagentes, use [`/tasks`](/docs/pt/commands) em vez disso.680A lista de tarefas é a lista de verificação de Claude: itens que Claude criou para planejar trabalho em várias etapas, com indicadores mostrando o que está pendente, em progresso ou concluído. É separada da visualização de tarefa em segundo plano. Para ver shells em execução e subagentes, use [`/tasks`](/docs/pt/commands) em vez disso.

666 681 

667Em [Opus 4.8, Sonnet 5, Fable 5, Mythos 5 e versões posteriores dessas famílias](/docs/pt/tools-reference#task-tool-availability), Claude acompanha trabalho em várias etapas sem uma lista de verificação escrita, e Claude Code não fornece as ferramentas que preenchem essa lista, portanto ela permanece vazia. Se você gostaria da lista de tarefas nesses modelos mesmo assim, opte por `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` ou uma das outras maneiras em [Disponibilidade da ferramenta de tarefas](/docs/pt/tools-reference#task-tool-availability). Em modelos anteriores, como Opus 4.7, e depois que você optar por participar, a lista de tarefas funciona da seguinte forma:682A lista é preenchida apenas em sessões que possuem as ferramentas de rastreamento de tarefas, que Claude Code fornece por padrão em [modelos Claude 3.x, Opus 4 até 4.7, Sonnet 4 até 4.6 e Haiku 4.5](/docs/pt/tools-reference#task-tool-availability). Em qualquer outro modelo, incluindo um ID de modelo que Claude Code não reconhece, a lista permanece vazia a menos que você opte por participar com `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` ou uma das outras maneiras em [Disponibilidade da ferramenta de tarefas](/docs/pt/tools-reference#task-tool-availability). Quando a sessão possui as ferramentas, a lista de tarefas funciona da seguinte forma:

668 683 

669* Pressione `Ctrl+T` para alternar a visualização da lista de tarefas. A exibição mostra até cinco tarefas por vez. Quando Claude ainda não criou nenhum item de lista de verificação, o alternador não tem efeito visível porque não há nada para exibir684* Pressione `Ctrl+T` para alternar a visualização da lista de tarefas. A exibição mostra até cinco tarefas por vez. Quando Claude ainda não criou nenhum item de lista de verificação, o alternador não tem efeito visível porque não há nada para exibir

670* Se você deixar a lista expandida, Claude Code restaura a visualização expandida na próxima vez que você iniciar uma sessão que ainda tenha tarefas, como com `--resume` ou `--continue`. Quando a lista de tarefas está vazia, Claude Code a inicia recolhida685* Se você deixar a lista expandida, Claude Code restaura a visualização expandida na próxima vez que você iniciar uma sessão que ainda tenha tarefas, como com `--resume` ou `--continue`. Quando a lista de tarefas está vazia, Claude Code a inicia recolhida


793 808 

794Claude Code ignora as variáveis de ambiente de token do `glab`, como `GITLAB_TOKEN`, quando verifica o status, portanto você não obtém nenhum badge apenas de um token exportado. Claude Code também procura por `glab` e por seu login uma vez por sessão, portanto reinicie Claude Code depois de instalar `glab` ou executar `glab auth login`.809Claude Code ignora as variáveis de ambiente de token do `glab`, como `GITLAB_TOKEN`, quando verifica o status, portanto você não obtém nenhum badge apenas de um token exportado. Claude Code também procura por `glab` e por seu login uma vez por sessão, portanto reinicie Claude Code depois de instalar `glab` ou executar `glab auth login`.

795 810 

811<h2 id="issue-reference-links">

812 Links de referência de problemas

813</h2>

814 

815Quando Claude menciona um problema como `owner/repo#123`, você pode clicar na referência para abri-lo, desde que seu terminal suporte hiperlinks. Se Claude Code não detectar suporte a hiperlinks em seu terminal, defina [`FORCE_HYPERLINK`](/docs/pt/env-vars) como `1` para ativar os links, ou como `0` para manter as referências como texto simples.

816 

817Você obtém um link apenas para o formulário de duas partes `owner/repo#123`. Estes permanecem como texto simples:

818 

819* Um `#123` isolado

820* Um caminho GitLab aninhado como `group/subgroup/project#123`

821* Qualquer referência dentro de um intervalo de código ou bloco de código

822 

823Claude Code constrói o link para o host do repositório que identifica a partir de seu git remote, não para o repositório que a referência nomeia:

824 

825| Host do seu repositório | Onde `owner/repo#123` vincula |

826| :------------------------------------------------------------------------- | :-------------------------------------------------- |

827| github.com, um host GitHub Enterprise, ou qualquer host não listado abaixo | `https://<host>/owner/repo/issues/123` |

828| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` |

829| bitbucket.org, codeberg.org, ou gitea.com | Sem link; a referência permanece como texto simples |

830 

796<h2 id="see-also">831<h2 id="see-also">

797 Veja também832 Veja também

798</h2>833</h2>

keybindings.md +9 −5

Details

505ctrl+k ctrl+s Pressione Ctrl+K, solte, depois Ctrl+S505ctrl+k ctrl+s Pressione Ctrl+K, solte, depois Ctrl+S

506```506```

507 507 

508Pressione cada sequência de teclas dentro de 3 segundos da anterior. Se você esperar mais tempo, Claude Code cancela o acorde e mostra um breve aviso dizendo isso.

509 

508<h3 id="special-keys">510<h3 id="special-keys">

509 Teclas especiais511 Teclas especiais

510</h3>512</h3>


520* `wheelup`, `wheeldown` - Eventos de rolagem da roda do mouse522* `wheelup`, `wheeldown` - Eventos de rolagem da roda do mouse

521 523 

522<h2 id="unbind-default-shortcuts">524<h2 id="unbind-default-shortcuts">

523 Desvinculação de atalhos padrão525 Desassociar atalhos de teclado padrão

524</h2>526</h2>

525 527 

526Defina uma ação como `null` para desvinculá-la de um atalho padrão:528Defina uma ação como `null` para desassociar um atalho de teclado padrão:

527 529 

528```json theme={null}530```json theme={null}

529{531{


538}540}

539```541```

540 542 

541Isso também funciona para vinculações de acordes. Desvinculando cada acorde que compartilha um prefixo libera esse prefixo para uso como uma vinculação de tecla única. Um acorde em qualquer contexto ativo mantém seu prefixo reservado, portanto você deve desvinculá-lo em cada contexto que o define.543Isso também funciona para atalhos de teclado de acordes. Desassociar cada acorde que compartilha um prefixo libera esse prefixo para uso como um atalho de teclado de uma única tecla. Um acorde em qualquer contexto ativo mantém seu prefixo reservado, portanto você deve desassociar cada acorde no contexto que o define.

542 544 

543Claude Code vincula esses acordes padrão no prefixo `ctrl+x`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e` e `ctrl+x enter` em `Chat`, `ctrl+x ctrl+b` em `Task` e `ctrl+x b` em `DiffPanel`. O acorde `ctrl+x enter` requer v2.1.247 ou posterior, e `ctrl+x b` requer v2.1.260 ou posterior. Para recuperar `ctrl+x` como uma vinculação de tecla única, desvinculá todos eles:545Claude Code vincula esses acordes padrão no prefixo `ctrl+x`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a` e `ctrl+x tab` em `Chat`, `ctrl+x ctrl+b` em `Task` e `ctrl+x b` em `DiffPanel`. O acorde `ctrl+x enter` requer v2.1.247 ou posterior, e `ctrl+x b`, `ctrl+x ctrl+a` e `ctrl+x tab` requerem v2.1.260 ou posterior. Para recuperar `ctrl+x` em si como um atalho de teclado de uma única tecla, desassocie todos eles:

544 546 

545```json theme={null}547```json theme={null}

546{548{


563 "ctrl+x ctrl+k": null,565 "ctrl+x ctrl+k": null,

564 "ctrl+x ctrl+e": null,566 "ctrl+x ctrl+e": null,

565 "ctrl+x enter": null,567 "ctrl+x enter": null,

568 "ctrl+x ctrl+a": null,

569 "ctrl+x tab": null,

566 "ctrl+x": "chat:newline"570 "ctrl+x": "chat:newline"

567 }571 }

568 }572 }


570}574}

571```575```

572 576 

573Se você desvinculá alguns, mas não todos os acordes em um prefixo, pressionar o prefixo ainda entra no modo de espera de acorde para as vinculações restantes.577Se você desassociar alguns, mas não todos os acordes em um prefixo, pressionar o prefixo ainda entra no modo de espera de acorde para as associações restantes.

574 578 

575<h2 id="reserved-shortcuts">579<h2 id="reserved-shortcuts">

576 Atalhos reservados580 Atalhos reservados

large-codebases.md +21 −21

Details

163 Reduza o que Claude lê163 Reduza o que Claude lê

164</h2>164</h2>

165 165 

166Instruções são apenas parte do que acaba no contexto do Claude. Leituras de arquivo são outro custo que cresce com a base de código. As configurações abaixo bloqueiam leituras de caminhos irrelevantes e substituem varreduras exaustivas por buscas de servidor de linguagem.166As instruções são apenas parte do que acaba no contexto do Claude. As leituras de arquivo são outro custo que cresce com a base de código. As configurações abaixo bloqueiam leituras de caminhos irrelevantes e substituem varreduras exaustivas de arquivos por pesquisas de servidor de linguagem.

167 167 

168<h3 id="block-reads-of-generated-and-vendored-code">168<h3 id="block-reads-of-generated-and-vendored-code">

169 Bloqueie leituras de código gerado e fornecido169 Bloqueie leituras de código gerado e fornecido

170</h3>170</h3>

171 171 

172As buscas de conteúdo do Claude respeitam `.gitignore` por padrão, então caminhos já listados lá, como `node_modules/`, `dist/` e `build/`, ficam fora dos resultados de busca sem configuração adicional.172As pesquisas de conteúdo do Claude respeitam `.gitignore` por padrão, portanto, caminhos já listados lá, como `node_modules/`, `dist/` e `build/`, ficam fora dos resultados de pesquisa sem configuração adicional.

173 173 

174Para caminhos que são verificados, como um SDK fornecido ou código gerado confirmado, adicione regras de negação `Read` em `permissions.deny` para bloquear Claude de abrir esses arquivos.174Para caminhos que são verificados, como um SDK fornecido ou código gerado confirmado, adicione regras de negação `Read` em `permissions.deny` para impedir que Claude abra esses arquivos.

175 175 

176As regras de negação podem cobrir todos que trabalham no repositório, apenas você, ou cada sessão na máquina, dependendo de qual arquivo de configurações você as coloca:176As regras de negação podem cobrir todos que trabalham no repositório, apenas você ou cada sessão na máquina, dependendo de qual arquivo de configurações você as colocar:

177 177 

178* **Todos que trabalham no repositório**: confirme as regras em `.claude/settings.json`, na raiz do repositório se você inicia Claude lá, ou em cada `.claude/` do pacote se você inicia de subdiretórios. Como outras configurações de projeto nesta página, esse arquivo não é herdado de diretórios pai.178* **Todos que trabalham no repositório**: confirme as regras em `.claude/settings.json`, na raiz do repositório se você iniciar o Claude lá, ou em cada `.claude/` do pacote se você iniciar a partir de subdiretórios. Como outras configurações de projeto nesta página, esse arquivo não é herdado de diretórios pai.

179* **Apenas você**: use `.claude/settings.local.json` na raiz do repositório, que carrega em cada sessão CLI dentro do repositório independentemente do diretório inicial, exceto nos casos em que Claude Code [não usa a raiz do repositório](/docs/pt/settings#where-claude-code-looks-for-each-file), como no Windows. Padrões relativos como o `Read(./vendor/**)` do exemplo ainda [ancoram no diretório de trabalho atual da sessão](/docs/pt/permissions#read-and-edit) em vez da raiz do repositório, então se você inicia sessões de subdiretórios, escreva as regras neste arquivo como caminhos absolutos `//`, como `Read(//absolute/path/to/repo/vendor/**)`. Antes da v2.1.211, `.claude/settings.local.json` também carregava apenas do diretório inicial.179* **Apenas você**: use `.claude/settings.local.json` na raiz do repositório, que carrega em cada sessão CLI dentro do repositório independentemente do diretório inicial, exceto nos casos em que Claude Code [não usa a raiz do repositório](/docs/pt/settings#where-claude-code-looks-for-each-file), como no Windows. Padrões relativos como o `Read(./**/vendor/**/*)` do exemplo ainda [ancoram no diretório de trabalho atual da sessão](/docs/pt/permissions#read-and-edit) em vez da raiz do repositório, portanto, se você iniciar sessões a partir de subdiretórios, escreva as regras neste arquivo como caminhos absolutos `//`, como `Read(//absolute/path/to/repo/**/vendor/**/*)`. Antes da v2.1.211, `.claude/settings.local.json` também carregava apenas a partir do diretório inicial.

180* **Todos, aplicado em cada sessão**: defina as regras em [configurações gerenciadas](/docs/pt/managed-settings), que as configurações de usuário e projeto não podem substituir.180* **Todos, aplicado em cada sessão**: defina as regras em [configurações gerenciadas](/docs/pt/managed-settings), que as configurações de usuário e projeto não podem substituir.

181 181 

182O exemplo abaixo bloqueia artefatos de compilação e um SDK fornecido:182O exemplo abaixo bloqueia artefatos de compilação e um SDK fornecido. Seus padrões de diretório terminam com `/**/*` em vez de `/**` para que cada regra cubra tudo dentro do diretório, mas não o próprio diretório. Claude pode então ainda listar esses diretórios ou entrar neles, por exemplo com `ls dist` ou `cd build`.

183 183 

184```json .claude/settings.json theme={null}184```json .claude/settings.json theme={null}

185{185{

186 "permissions": {186 "permissions": {

187 "deny": [187 "deny": [

188 "Read(./**/dist/**)",188 "Read(./**/dist/**/*)",

189 "Read(./**/build/**)",189 "Read(./**/build/**/*)",

190 "Read(./**/*.generated.*)",190 "Read(./**/*.generated.*)",

191 "Read(./vendor/**)"191 "Read(./**/vendor/**/*)"

192 ]192 ]

193 }193 }

194}194}

195```195```

196 196 

197As regras de negação cobrem as ferramentas de arquivo integradas do Claude. No Bash, elas cobrem os comandos de arquivo que Claude Code reconhece, como `cat`, `head`, `grep` e `find`, quando um caminho negado aparece como um argumento, e o alvo de um [redirecionamento](/docs/pt/permissions#redirections) como `< file`. Claude Code também faz uma tentativa de melhor esforço para deixar caminhos negados fora dos resultados das ferramentas Grep e Glob integradas. Uma busca Bash como `grep -r` ou `find` sobre um diretório que contém arquivos negados ainda os inclui em sua saída.197As regras de negação cobrem as ferramentas de arquivo integradas do Claude. Em Bash, elas cobrem os comandos de arquivo que Claude Code reconhece, como `cat`, `head`, `grep` e `find`, quando um caminho negado aparece como um argumento, e o alvo de um [redirecionamento](/docs/pt/permissions#redirections) como `< file`. Claude Code também faz uma tentativa de melhor esforço para manter caminhos negados fora dos resultados das ferramentas Grep e Glob integradas. Uma pesquisa Bash como `grep -r` ou `find` em um diretório que contém arquivos negados ainda os inclui em sua saída.

198 198 

199As regras de negação não cobrem subprocessos que abrem arquivos por conta própria. Para a sintaxe de padrão completa, veja [Regras de permissão Read e Edit](/docs/pt/permissions#read-and-edit).199As regras de negação não cobrem subprocessos que abrem arquivos por conta própria. Para a sintaxe de padrão completa, consulte [Regras de permissão Read e Edit](/docs/pt/permissions#read-and-edit).

200 200 

201<h3 id="reduce-file-reads-with-code-intelligence">201<h3 id="reduce-file-reads-with-code-intelligence">

202 Reduza leituras de arquivo com inteligência de código202 Reduza leituras de arquivo com inteligência de código

203</h3>203</h3>

204 204 

205Em uma grande base de código, encontrar onde um símbolo é definido ou usado pode custar muitas leituras de arquivo e chamadas grep. [Plugins de inteligência de código](/docs/pt/discover-plugins#code-intelligence) conectam Claude a um servidor de linguagem para que ele possa pular para definições, encontrar referências e superfícies erros de tipo diretamente em vez de verificar a árvore.205Em uma base de código grande, encontrar onde um símbolo é definido ou usado pode custar muitas leituras de arquivo e chamadas grep. [Plugins de inteligência de código](/docs/pt/discover-plugins#code-intelligence) conectam Claude a um servidor de linguagem para que ele possa pular para definições, encontrar referências e exibir erros de tipo diretamente em vez de varrer a árvore.

206 206 

207O marketplace oficial tem plugins para TypeScript, Python, Go, Rust e outras linguagens comuns. Execute o comando abaixo dentro de uma sessão Claude Code para instalar o plugin TypeScript:207O marketplace oficial tem plugins para TypeScript, Python, Go, Rust e outras linguagens comuns. Execute o comando abaixo dentro de uma sessão Claude Code para instalar o plugin TypeScript:

208 208 


213Se a instalação falhar, corresponda à mensagem que Claude Code relata:213Se a instalação falhar, corresponda à mensagem que Claude Code relata:

214 214 

215* `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.215* `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.

216* O plugin [não é encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.216* O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.

217 217 

218Para habilitar um plugin para todos no repositório em vez de instalá-lo você mesmo, adicione-o à configuração de projeto [`enabledPlugins`](/docs/pt/settings-reference#plugin-settings).218Para habilitar um plugin para todos no repositório em vez de instalá-lo você mesmo, adicione-o à [configuração de projeto `enabledPlugins`](/docs/pt/settings-reference#plugin-settings).

219 219 

220Os plugins de inteligência de código requerem o binário do servidor de linguagem da linguagem em cada máquina do desenvolvedor. Veja [qual binário cada linguagem requer](/docs/pt/discover-plugins#code-intelligence). Instalar do marketplace oficial requer acesso à rede para GitHub, onde o marketplace é hospedado. Em uma rede restrita, [adicione o marketplace de um host Git interno ou caminho local](/docs/pt/discover-plugins#add-from-other-git-hosts) em vez disso.220Os plugins de inteligência de código exigem o binário do servidor de linguagem da linguagem em cada máquina do desenvolvedor. Veja [qual binário cada linguagem exige](/docs/pt/discover-plugins#code-intelligence). A instalação do marketplace oficial requer acesso à rede para GitHub, onde o marketplace é hospedado. Em uma rede restrita, [adicione o marketplace de um host Git interno ou caminho local](/docs/pt/discover-plugins#add-from-other-git-hosts).

221 221 

222Isso funciona bem com `claudeMdExcludes` e as regras de negação `Read` acima. Aqueles mantêm conteúdo irrelevante fora do contexto, e inteligência de código mantém Claude de ler através do que permanece para localizar uma definição.222Isso funciona bem com `claudeMdExcludes` e as regras de negação `Read` acima. Aqueles mantêm conteúdo irrelevante fora do contexto, e a inteligência de código impede que Claude leia o que permanece para localizar uma definição.

223 223 

224<h2 id="scope-worktrees-and-file-access">224<h2 id="scope-worktrees-and-file-access">

225 Escopo worktrees e acesso a arquivos225 Escopo worktrees e acesso a arquivos


446 "../shared"446 "../shared"

447 ],447 ],

448 "deny": [448 "deny": [

449 "Read(./**/dist/**)",449 "Read(./**/dist/**/*)",

450 "Read(./**/build/**)"450 "Read(./**/build/**/*)"

451 ]451 ]

452 }452 }

453}453}


461{461{

462 "permissions": {462 "permissions": {

463 "deny": [463 "deny": [

464 "Read(./**/dist/**)",464 "Read(./**/dist/**/*)",

465 "Read(./**/build/**)"465 "Read(./**/build/**/*)"

466 ]466 ]

467 }467 }

468}468}

Details

438 Rotear para um provedor em nuvem através de um gateway438 Rotear para um provedor em nuvem através de um gateway

439</h3>439</h3>

440 440 

441Essas configurações apontam Claude Code para um gateway através de uma variável de URL base específica do provedor no lugar de `ANTHROPIC_BASE_URL`. Gateways Amazon Bedrock e Google Cloud's Agent Platform aceitam formatos de solicitação nativos desses provedores; gateways Microsoft Foundry e Claude Platform on AWS aceitam o formato Anthropic Messages e diferem apenas em qual variável de URL base os alcança.441Essas configurações apontam Claude Code para um gateway através de uma variável de URL base específica do provedor no lugar de `ANTHROPIC_BASE_URL`. Gateways Amazon Bedrock e Google Cloud's Agent Platform aceitam formatos de solicitação nativos desses provedores; gateways Microsoft Foundry e Claude Platform on AWS aceitam o formato Anthropic Messages. Na rota Amazon Bedrock e Google Cloud's Agent Platform, Claude Code também limita os cabeçalhos beta e campos de solicitação que envia ao conjunto que o provedor aceita. Para o que seu gateway recebe em cada rota, consulte o [guia de compatibilidade de gateway](/docs/pt/llm-gateway-protocol).

442 442 

443Use uma apenas se sua equipe de gateway nomeou especificamente Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou Claude Platform on AWS. Se a [solicitação de verificação](#verify-the-connection) acima retornou JSON, você pode pular esta seção.443Use uma apenas se sua equipe de gateway nomeou especificamente Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou Claude Platform on AWS. Se a [solicitação de verificação](#verify-the-connection) acima retornou JSON, você pode pular esta seção.

444 444 

445Defina o bloco para o provedor que sua equipe de gateway nomeou. As variáveis skip-auth dizem a Claude Code para não assinar solicitações com credenciais de provedor, já que o gateway as mantém. Se o gateway precisa de seu próprio token, adicione `ANTHROPIC_AUTH_TOKEN` após o bloco, exceto para Microsoft Foundry, que usa `ANTHROPIC_FOUNDRY_API_KEY` conforme mostrado.445Defina o bloco para o provedor que sua equipe de gateway nomeou. As variáveis skip-auth nos blocos Amazon Bedrock, Google Cloud's Agent Platform e Claude Platform on AWS dizem a Claude Code para não assinar solicitações com credenciais do provedor em nuvem, já que o gateway as mantém. Se o gateway também precisa de seu próprio token, onde você o coloca depende do provedor:

446 

447* **Amazon Bedrock, Google Cloud's Agent Platform ou Claude Platform on AWS**: adicione `ANTHROPIC_AUTH_TOKEN` após o bloco. Claude Code o envia para o gateway como um cabeçalho `Authorization: Bearer`. Para uma credencial em um esquema ou cabeçalho diferente, use [`ANTHROPIC_CUSTOM_HEADERS`](#send-additional-headers) em vez disso. Mantenha a variável skip-auth definida de qualquer forma, já que sem ela Claude Code remove qualquer cabeçalho `Authorization` que `ANTHROPIC_AUTH_TOKEN`, um [`apiKeyHelper`](#rotate-credentials-with-apikeyhelper) ou `ANTHROPIC_CUSTOM_HEADERS` adicionaria.

448* **Microsoft Foundry**: use `ANTHROPIC_FOUNDRY_API_KEY` conforme seu [bloco](#microsoft-foundry) mostra

446 449 

447<h4 id="amazon-bedrock">450<h4 id="amazon-bedrock">

448 Amazon Bedrock451 Amazon Bedrock

449</h4>452</h4>

450 453 

454Deixe `AWS_BEARER_TOKEN_BEDROCK` indefinido quando o gateway emite sua própria credencial. Se você o definir, Claude Code envia essa [chave de API Amazon Bedrock](/docs/pt/amazon-bedrock#2-configure-aws-credentials) como o cabeçalho `Authorization` em vez de seu token de gateway, mesmo com `CLAUDE_CODE_SKIP_BEDROCK_AUTH` definido.

455 

451<Tabs>456<Tabs>

452 <Tab title="Bash ou Zsh">457 <Tab title="Bash ou Zsh">

453 ```bash theme={null}458 ```bash theme={null}


470 Google Cloud's Agent Platform475 Google Cloud's Agent Platform

471</h4>476</h4>

472 477 

478Substitua o ID do projeto e a região pelos seus próprios valores. Claude Code inclui ambos no caminho de cada solicitação que envia para o gateway:

479 

473<Tabs>480<Tabs>

474 <Tab title="Bash ou Zsh">481 <Tab title="Bash ou Zsh">

475 ```bash theme={null}482 ```bash theme={null}


492 </Tab>499 </Tab>

493</Tabs>500</Tabs>

494 501 

502O bloco cobre roteamento e autenticação. As substituições de região e pins de modelo da [configuração do Agent Platform](/docs/pt/google-vertex-ai#4-configure-claude-code) se aplicam através de um gateway também:

503 

504* **Regiões por modelo**: se seu gateway serve alguns modelos de uma região diferente de `CLOUD_ML_REGION`, defina a variável `VERTEX_REGION_CLAUDE_*` correspondente para cada um, por exemplo `VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1`. A [referência de variáveis de ambiente](/docs/pt/env-vars) lista os nomes exatos.

505* **Versões de modelo**: pin `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL` e `ANTHROPIC_DEFAULT_HAIKU_MODEL` conforme em [Pin model versions](/docs/pt/google-vertex-ai#5-pin-model-versions). Definir `ANTHROPIC_DEFAULT_HAIKU_MODEL` também move tarefas de fundo como títulos de sessão para esse modelo, e essa seção explica qual modelo as executa de outra forma.

506* **Capacidades de modelo**: se você pin um ID de modelo que sua versão de Claude Code não reconhece, recursos como níveis de esforço ou pensamento estendido podem permanecer desativados nele. Declare o que o modelo suporta com [`ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES`](/docs/pt/model-config#customize-pinned-model-display-and-capabilities) e seus equivalentes Sonnet e Haiku.

507 

495<h4 id="microsoft-foundry">508<h4 id="microsoft-foundry">

496 Microsoft Foundry509 Microsoft Foundry

497</h4>510</h4>

Details

54 Endpoints opcionais e tráfego de inicialização54 Endpoints opcionais e tráfego de inicialização

55</h3>55</h3>

56 56 

57Endpoints de contagem de tokens são os únicos opcionais: quando estão ausentes, Claude Code volta a contar o uso de contexto através do endpoint de inferência. Solicitações de inferência são postadas em `/v1/messages?beta=true`, então corresponda no caminho, não na URL completa. O método Google Cloud's Agent Platform anexa sufixos ao caminho do modelo do editor, como em `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`.57Endpoints de contagem de tokens são os únicos opcionais: quando estão ausentes, Claude Code volta a uma estimativa baseada em caracteres do uso de contexto.

58 

59Corresponda no caminho, não na URL completa:

60 

61* Solicitações de inferência são postadas em `/v1/messages?beta=true`

62* O método Google Cloud's Agent Platform anexa sufixos ao caminho do modelo do editor, como em `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`

58 63 

59Um gateway também vê tráfego de inicialização de melhor esforço que pode rejeitar sem quebrar nada. Um gateway no formato Anthropic Messages recebe uma sonda de aquecimento de conexão `HEAD /api/hello`, que Claude Code ignora quando um proxy HTTP ou certificado de cliente está configurado. Um gateway no formato Amazon Bedrock recebe uma solicitação `GET /inference-profiles?type=SYSTEM_DEFINED` e, quando o modelo configurado é um perfil de inferência, buscas `GET /inference-profiles/{profile}`.64Um gateway também vê tráfego de inicialização de melhor esforço que pode rejeitar sem quebrar nada. Um gateway no formato Anthropic Messages recebe uma sonda de aquecimento de conexão `HEAD /api/hello`, que Claude Code ignora quando um proxy HTTP ou certificado de cliente está configurado. Um gateway no formato Amazon Bedrock recebe uma solicitação `GET /inference-profiles?type=SYSTEM_DEFINED` e, quando o modelo configurado é um perfil de inferência, buscas `GET /inference-profiles/{profile}`.

60 65 


152| Campos de [ferramenta](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) beta | Headers beta relacionados a ferramentas emparelhados com campos de schema de ferramenta como `strict` e `defer_loading` | `400` nomeando o campo de schema de ferramenta não reconhecido quando o corpo passa sem seu header | Encaminhe ambos, ou [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |157| Campos de [ferramenta](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) beta | Headers beta relacionados a ferramentas emparelhados com campos de schema de ferramenta como `strict` e `defer_loading` | `400` nomeando o campo de schema de ferramenta não reconhecido quando o corpo passa sem seu header | Encaminhe ambos, ou [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

153| [Esforço](https://platform.claude.com/docs/en/build-with-claude/effort) e [saídas estruturadas](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | O campo de corpo `output_config` carrega esforço, formato de saída estruturada e configurações de orçamento de tarefa; cada um emparelhado com seu próprio header beta | `400` nomeando `output_config`, frequentemente `Extra inputs are not permitted`, em upstreams Bedrock e Agent Platform | Encaminhe o campo e seus headers juntos |158| [Esforço](https://platform.claude.com/docs/en/build-with-claude/effort) e [saídas estruturadas](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | O campo de corpo `output_config` carrega esforço, formato de saída estruturada e configurações de orçamento de tarefa; cada um emparelhado com seu próprio header beta | `400` nomeando `output_config`, frequentemente `Extra inputs are not permitted`, em upstreams Bedrock e Agent Platform | Encaminhe o campo e seus headers juntos |

154| [Prompt caching](/docs/pt/prompt-caching) | Sem emparelhamento beta. Claude Code anexa marcadores `cache_control` a blocos `system` e a entradas `messages`, incluindo entradas `role: "system"` anexadas no meio da conversa | Sem erro: a conversa é cobrada como entrada não armazenada em cache a cada turno, visível como `input_tokens` alto com pouca ou nenhuma atividade de cache em `usage` | Encaminhe `cache_control` inalterado onde quer que apareça, e não converta `system` em forma de bloco ou conteúdo de mensagem para strings simples |159| [Prompt caching](/docs/pt/prompt-caching) | Sem emparelhamento beta. Claude Code anexa marcadores `cache_control` a blocos `system` e a entradas `messages`, incluindo entradas `role: "system"` anexadas no meio da conversa | Sem erro: a conversa é cobrada como entrada não armazenada em cache a cada turno, visível como `input_tokens` alto com pouca ou nenhuma atividade de cache em `usage` | Encaminhe `cache_control` inalterado onde quer que apareça, e não converta `system` em forma de bloco ou conteúdo de mensagem para strings simples |

155| [Contagem de tokens](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Sem emparelhamento beta; usa o endpoint `count_tokens` | Claude Code volta a contar o uso de contexto através do endpoint de mensagens | Exponha o endpoint para que contagens de tokens não consumam solicitações de inferência |160| [Contagem de tokens](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Sem emparelhamento beta; usa o endpoint `count_tokens` | Sem erro: Claude Code volta a uma estimativa baseada em caracteres, então `/context` mostra contagens aproximadas | Exponha o endpoint para contagens de tokens exatas |

156 161 

157As [variáveis](/docs/pt/model-config) `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` declaram capacidades de modelo apenas nas configurações do provedor: `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, e [`CLAUDE_CODE_USE_MANTLE`](/docs/pt/amazon-bedrock#use-the-mantle-endpoint). Elas não têm efeito atrás de um gateway `ANTHROPIC_BASE_URL`.162As [variáveis](/docs/pt/model-config) `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` declaram capacidades de modelo apenas nas configurações do provedor: `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, e [`CLAUDE_CODE_USE_MANTLE`](/docs/pt/amazon-bedrock#use-the-mantle-endpoint). Elas não têm efeito atrás de um gateway `ANTHROPIC_BASE_URL`.

158 163 


160 Retry automático e encaminhamento de erro165 Retry automático e encaminhamento de erro

161</h3>166</h3>

162 167 

163Quando o upstream rejeita o campo `thinking`, uma [assinatura de pensamento](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), uma mensagem de sistema no meio da conversa, ou o marcador `cache_control` em uma dessas mensagens, Claude Code tenta novamente a solicitação e desabilita a capacidade rejeitada pelo resto da conversa. Claude Code não tenta novamente rejeições de gerenciamento de contexto ou campo de schema de ferramenta; esses erros `400` chegam ao desenvolvedor.168O que Claude Code faz após uma rejeição upstream depende do que foi rejeitado:

169 

170* Quando o upstream rejeita o campo `thinking`, uma mensagem de sistema no meio da conversa, ou o marcador `cache_control` em tal mensagem, Claude Code tenta novamente a solicitação e desabilita a capacidade rejeitada pelo resto da conversa

171* Quando o upstream rejeita uma [assinatura de pensamento](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), Claude Code tenta novamente a solicitação sem os blocos de pensamento anteriores da conversa e os mantém fora de cada solicitação posterior. Novas respostas ainda incluem pensamento

172* Claude Code não tenta novamente rejeições de gerenciamento de contexto ou campos de schema de ferramenta, então esses erros `400` chegam ao desenvolvedor

164 173 

165A lógica de retry corresponde à redação de erro do upstream, então encaminhe corpos de resposta de erro inalterados. Um gateway que envolve erros upstream em seu próprio envelope quebra o caminho de recuperação, mesmo quando preserva o código de status, a menos que a mensagem do envelope carregue um token `capability_rejected:` estável. [O gateway de aplicativos Claude substitui esses tokens pela redação de erro dos provedores de nuvem](/docs/pt/claude-apps-gateway-config#upstream-error-messages), por exemplo `capability_rejected: prompt_too_long`.174A lógica de retry corresponde à redação de erro do upstream, então encaminhe corpos de resposta de erro inalterados. Um gateway que envolve erros upstream em seu próprio envelope quebra o caminho de recuperação, mesmo quando preserva o código de status, a menos que a mensagem do envelope carregue um token `capability_rejected:` estável. [O gateway de aplicativos Claude substitui esses tokens pela redação de erro dos provedores de nuvem](/docs/pt/claude-apps-gateway-config#upstream-error-messages), por exemplo `capability_rejected: prompt_too_long`.

166 175 

Details

207 207 

208Adicione as variáveis condicionais da tabela ao mesmo bloco `env`. Um `ANTHROPIC_BASE_URL` gerenciado é imposto e não pode ser substituído pela exportação de shell de um desenvolvedor, já que Claude Code o aplica sobre o ambiente do processo e configurações de precedência inferior.208Adicione as variáveis condicionais da tabela ao mesmo bloco `env`. Um `ANTHROPIC_BASE_URL` gerenciado é imposto e não pode ser substituído pela exportação de shell de um desenvolvedor, já que Claude Code o aplica sobre o ambiente do processo e configurações de precedência inferior.

209 209 

210Não inclua `forceLoginMethod` ou `forceLoginOrgUUID` em configurações gerenciadas junto com uma credencial de gateway. Qualquer chave bloqueia `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` e `apiKeyHelper` na inicialização, portanto os desenvolvedores veem `This machine's managed settings require a first-party login` e não podem prosseguir.210Não inclua `forceLoginMethod` ou `forceLoginOrgUUID` em configurações gerenciadas junto com uma credencial de gateway. Qualquer chave bloqueia `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` e `apiKeyHelper` na inicialização, e os desenvolvedores não podem prosseguir. Eles veem `This machine's managed settings require a first-party login`, ou [`Administrator policy requires a Cloud gateway sign-in`](/docs/pt/errors#administrator-policy-requires-a-cloud-gateway-sign-in) sob um valor `"gateway"`.

211 211 

212A entrega de [configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings#platform-availability) requer uma conexão direta com `api.anthropic.com`, portanto não alcança sessões roteadas por gateway. As implantações de gateway usam este caminho de configurações gerenciadas baseado em arquivo, que impõe as mesmas chaves.212A entrega de [configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings#platform-availability) requer uma conexão direta com `api.anthropic.com`, portanto não alcança sessões roteadas por gateway. As implantações de gateway usam este caminho de configurações gerenciadas baseado em arquivo, que impõe as mesmas chaves.

213 213 

managed-settings.md +445 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Implantar configurações gerenciadas

6 

7> Implante configurações gerenciadas na máquina de cada desenvolvedor: mecanismos de entrega por SO, como Claude Code combina fontes gerenciadas e como verificar a aplicação.

8 

9Configurações gerenciadas são as configurações que sua organização implanta na máquina de cada desenvolvedor. Claude Code as aplica acima de todos os outros níveis, portanto nenhum valor de usuário, projeto, local ou `--settings` as substitui, exceto por algumas [exceções sensíveis à segurança](/docs/pt/settings#exceptions-to-managed-settings-precedence) onde um valor mais restritivo de um nível inferior ainda conta.

10 

11Esta página é para o administrador que implanta configurações gerenciadas ou depura por que uma não está sendo aplicada. Para decidir o que impor, comece com a tabela [Decidir o que impor](/docs/pt/admin-setup#decide-what-to-enforce). Para o caminho do console claude.ai, consulte [Configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings). Para saber em qual arquivo os valores próprios do desenvolvedor vão, consulte [Configurações](/docs/pt/settings).

12 

13<h2 id="deploy-a-managed-settings-file">

14 Implantar um arquivo de configurações gerenciadas

15</h2>

16 

17Esta é a forma mais rápida de colocar uma política em cada máquina: um arquivo `managed-settings.json`. Se você ainda não escolheu como entregar configurações gerenciadas, ou seus dispositivos estão sob MDM ou os desenvolvedores executam sessões na nuvem, leia primeiro [Escolher um mecanismo de entrega](#choose-a-delivery-mechanism).

18 

19<Steps>

20 <Step title="Escrever managed-settings.json">

21 Escreva um `managed-settings.json` que contenha as chaves que você decidiu impor, na mesma forma JSON que `settings.json`. A tabela [Decidir o que impor](/docs/pt/admin-setup#decide-what-to-enforce) lista as chaves por trás de cada controle, e cada entrada na [referência de configurações](/docs/pt/settings-reference) diz se uma fonte gerenciada pode defini-la. Este arquivo bloqueia duas leituras de arquivo, desativa o modo de bypass e faz Claude Code ignorar regras de permissão de arquivos de usuário, projeto e local e de `--allowedTools`:

22 

23 ```json managed-settings.json theme={null}

24 {

25 "permissions": {

26 "deny": [

27 "Read(./.env)",

28 "Read(./secrets/**)"

29 ],

30 "disableBypassPermissionsMode": "disable"

31 },

32 "allowManagedPermissionRulesOnly": true

33 }

34 ```

35 

36 Para um exemplo mais completo que mostra a forma de mais chaves gerenciadas, incluindo o método de login, modelos, servidores MCP e marketplaces, consulte [Configurações gerenciadas de uma organização](/docs/pt/settings-example#an-organizations-managed-settings).

37 </Step>

38 

39 <Step title="Colocar o arquivo em cada máquina">

40 Salve o arquivo como `managed-settings.json` no diretório do sistema para o sistema operacional, usando qualquer ferramenta que já coloque arquivos em sua frota:

41 

42 * **macOS**: `/Library/Application Support/ClaudeCode/managed-settings.json`

43 * **Linux e WSL**: `/etc/claude-code/managed-settings.json`

44 * **Windows**: `C:\Program Files\ClaudeCode\managed-settings.json`

45 </Step>

46 

47 <Step title="Confirmar que a política foi aplicada">

48 Em uma máquina, execute `/status` dentro de Claude Code. A linha `Setting sources` mostra `Enterprise managed settings (file)`. Implante no resto da frota depois disso; [Verificar que uma política está em vigor](#check-that-a-policy-is-in-force) cobre o que observar quando a linha está faltando.

49 </Step>

50</Steps>

51 

52<span id="managed-settings-delivery" />

53 

54<span id="delivery-mechanisms" />

55 

56<h2 id="choose-a-delivery-mechanism">

57 Escolher um mecanismo de entrega

58</h2>

59 

60O arquivo nas etapas acima é uma de quatro formas de colocar configurações gerenciadas em uma máquina. Cada mecanismo carrega as mesmas chaves de política que um arquivo `settings.json`, portanto a [referência de configurações](/docs/pt/settings-reference) se aplica a todos eles. Algumas chaves estão vinculadas a fontes particulares, e a linha Scope de cada entrada diz qual:

61 

62* **Controles de entrega**: [`policyHelper`](/docs/pt/settings-reference#policyhelper), [`wslInheritsWindowsSettings`](/docs/pt/settings-reference#wslinheritswindowssettings) e [`managedSourcesBehavior`](/docs/pt/settings-reference#managedsourcesbehavior)

63* **Chaves de login do gateway**: [`forceLoginGatewayUrl`](/docs/pt/settings-reference#forcelogingatewayurl) e o valor `"gateway"` de [`forceLoginMethod`](/docs/pt/settings-reference#forceloginmethod)

64 

65Um arquivo de configurações gerenciadas, um perfil MDM ou o console claude.ai aplica uma política a todos que alcança. Para dar a um grupo de desenvolvedores uma política diferente, implante um arquivo ou perfil diferente para esse grupo; o console claude.ai [ainda não pode direcionar um grupo](/docs/pt/server-managed-settings#current-limitations), enquanto um [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway) auto-hospedado entrega configurações gerenciadas por grupo IdP.

66 

67Quando mais de um mecanismo entrega uma política para a mesma máquina, Claude Code por padrão usa um e ignora os outros. [Como Claude Code combina fontes gerenciadas](#how-claude-code-combines-managed-sources) fornece a ordem e o opt-in que aplica cada fonte.

68 

69As linhas MDM e arquivo são chamadas juntas de configurações gerenciadas por endpoint, porque a política é armazenada no dispositivo do desenvolvedor, em oposição à linha gerenciada pelo servidor, onde Claude Code a busca.

70 

71Escolha um mecanismo por como você já gerencia dispositivos, usando a tabela abaixo.

72 

73| Mecanismo | Como você o entrega | Quando Claude Code o lê | Use quando |

74| :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ |

75| [Configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings) | No console de administração claude.ai, ou em um [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway) auto-hospedado | Buscado na inicialização e pesquisado a cada hora; consulte [alterações que precisam de aprovação](#where-and-when-a-policy-applies) | Você quer um lugar para alterar a política de uma organização claude.ai sem tocar em cada máquina |

76| Política MDM ou nível do SO | Como um perfil de configuração macOS ou um valor de registro `HKLM` do Windows, através de Jamf, Intune, Group Policy ou uma ferramenta similar; consulte [onde cada mecanismo armazena a política](#where-each-mechanism-stores-the-policy) | Lido na inicialização e verificado quanto a alterações a cada 30 minutos | Você já gerencia dispositivos com MDM ou Group Policy |

77| Baseado em arquivo | Como `managed-settings.json` em um diretório do sistema em cada máquina; consulte [onde cada mecanismo armazena a política](#where-each-mechanism-stores-the-policy) | Lido na inicialização e recarregado quando um arquivo muda | Máquinas sem MDM, hosts Linux ou imagens que você constrói você mesmo |

78| Registro HKCU, Windows e WSL | Como um valor de registro `HKCU` do Windows; consulte [onde cada mecanismo armazena a política](#where-each-mechanism-stores-the-policy) | Lido na inicialização e verificado quanto a alterações a cada 30 minutos; Claude Code o usa apenas quando nenhuma outra fonte gerenciada entrega uma chave de política e nenhuma [configuração pai fornecida pelo host](#let-an-embedding-host-add-policy) fornece uma chave restritiva | Você não pode escrever a chave `HKLM` de nível de máquina |

79 

80Modelos iniciais para Jamf, Iru, Intune e Group Policy estão no [repositório de exemplos MDM](https://github.com/anthropics/claude-code/tree/main/examples/mdm).

81 

82Para servidores MCP gerenciados, que você implanta junto com qualquer um destes através de `managed-mcp.json` ou fornece através da chave [`managedMcpServers`](/docs/pt/settings-reference#managedmcpservers), consulte [Configuração MCP gerenciada](/docs/pt/managed-mcp).

83 

84<h3 id="where-and-when-a-policy-applies">

85 Onde e quando uma política se aplica

86</h3>

87 

88Uma política implantada alcança as sessões do desenvolvedor da seguinte forma:

89 

90* **Superfícies**: na máquina do desenvolvedor, o terminal, as extensões VS Code e JetBrains, a aba Code do aplicativo desktop e as sessões [Agent SDK](/docs/pt/agent-sdk/typescript) leem todas essas fontes. As sessões Agent SDK carregam configurações gerenciadas mesmo quando `settingSources` exclui os arquivos de usuário, projeto e local.

91* **Sessões na nuvem**: uma sessão em um ambiente hospedado pela Anthropic não lê um perfil MDM ou arquivo de dispositivo, portanto a política para ela deve vir de configurações gerenciadas pelo servidor. Uma sessão em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) também lê o arquivo de configurações gerenciadas em sua imagem de executor, por padrão apenas quando as configurações gerenciadas pelo servidor não entregam nenhuma chave de política, exceto pelas [chaves que Claude Code lê de cada fonte de administrador](#keys-read-from-every-admin-source). [Como Claude Code combina fontes gerenciadas](#how-claude-code-combines-managed-sources) cobre o opt-in que aplica ambas.

92* **Sessões Cowork**: [Cowork](https://claude.com/docs/cowork/overview) no aplicativo Claude Desktop executa suas sessões em Claude Code. Em uma sessão Cowork, Claude Code nunca busca configurações gerenciadas pelo servidor do console de administração claude.ai, mesmo quando o usuário se conecta com uma conta Team ou Enterprise, portanto qual política se aplica depende de onde a sessão é executada:

93 

94 * **Na máquina do usuário**: por padrão, Claude Code em uma sessão Cowork lê a política MDM ou nível do SO e o arquivo de configurações gerenciadas nesse dispositivo, portanto implante a política lá.

95 * **Em um sandbox de VM completa**: quando sua configuração gerenciada do Claude Desktop define [`requireCoworkFullVmSandbox`](https://claude.com/docs/third-party/claude-desktop/configuration#requirecoworkfullvmsandbox), Claude Code é executado dentro de uma máquina virtual onde a política MDM do dispositivo e o arquivo de configurações gerenciadas não estão presentes.

96 * **Sessões Cowork remotas**: estas são executadas em VMs gerenciadas pela Anthropic, onde Claude Code não tem política de dispositivo para ler.

97 

98 A tabela [cobertura de superfície](/docs/pt/model-config#surface-coverage) compara Cowork com as outras superfícies.

99* **Sessões em execução**: a maioria das alterações alcança uma sessão em execução no cronograma na [tabela de mecanismo de entrega](#choose-a-delivery-mechanism), sem uma reinicialização.

100 * Alterações em [`forceRemoteSettingsRefresh`](/docs/pt/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/pt/settings-reference#requiredminimumversion) e [algumas chaves editáveis pelo usuário](/docs/pt/settings#when-edits-take-effect) entram em vigor na próxima inicialização de sessão.

101 * Uma entrada [`policyHelper`](/docs/pt/settings-reference#policyhelper) nova ou alterada entra em vigor no próximo lançamento. Se configurações gerenciadas pelo servidor sombrearem o auxiliar nesse lançamento, o auxiliar é executado assim que uma busca relata que essas configurações foram removidas.

102* **Alterações que precisam de aprovação**: além das [atualizações que aguardam o próximo lançamento](/docs/pt/server-managed-settings#fetch-and-caching-behavior), uma alteração gerenciada pelo servidor em uma configuração que [precisa de aprovação](/docs/pt/server-managed-settings#security-approval-dialogs), como um hook ou uma variável `env`, aguarda o desenvolvedor aceitar o diálogo em uma sessão interativa e se aplica para a execução atual em uma sessão que uma extensão IDE ou o Agent SDK hospeda. Outras alterações gerenciadas pelo servidor se aplicam na próxima pesquisa.

103* **Sessões de longa duração**: uma sessão deixada aberta por semanas ainda pode ficar para trás em um lançamento. [`requiredMinimumVersion`](/docs/pt/settings-reference#requiredminimumversion) bloqueia um binário desatualizado de iniciar e não encerra uma sessão que já está em execução.

104 

105<span id="format-the-policy-for-each-platform" />

106 

107<h3 id="where-each-mechanism-stores-the-policy">

108 Onde cada mecanismo armazena a política

109</h3>

110 

111As chaves são as mesmas em todos os lugares, mas cada mecanismo as armazena em um lugar e forma diferentes:

112 

113* **Gerenciado pelo servidor**: os servidores da Anthropic, ou seu gateway, mantêm a política. Claude Code mantém um cache local que aplica na inicialização e [substitui em cada busca bem-sucedida](/docs/pt/server-managed-settings#security-considerations).

114* **Perfil de configuração macOS**: o domínio de preferências gerenciadas `com.anthropic.claudecode`. Use as mesmas chaves de nível superior que `managed-settings.json`, com configurações aninhadas como dicionários e listas como arrays plist.

115* **Registro HKLM do Windows**: o JSON como um valor `REG_SZ` ou `REG_EXPAND_SZ` nomeado `Settings` sob `HKLM\SOFTWARE\Policies\ClaudeCode`.

116* **Baseado em arquivo**: `managed-settings.json`, um diretório opcional `managed-settings.d/` e `managed-mcp.json` no diretório do sistema: `/Library/Application Support/ClaudeCode/` no macOS, `/etc/claude-code/` no Linux e WSL, e `C:\Program Files\ClaudeCode\` no Windows. Claude Code não lê o caminho legado do Windows `C:\ProgramData\ClaudeCode\managed-settings.json`.

117* **Registro HKCU do Windows**: o mesmo valor `Settings` sob `HKCU\SOFTWARE\Policies\ClaudeCode`.

118 

119<h3 id="split-a-file-based-policy-across-teams">

120 Dividir uma política baseada em arquivo entre equipes

121</h3>

122 

123Se várias equipes possuem partes de uma política, coloque cada parte em seu próprio arquivo em `managed-settings.d/`, ao lado de `managed-settings.json` no mesmo diretório do sistema, em vez de editar um arquivo compartilhado.

124 

125Claude Code mescla `managed-settings.json` primeiro, depois cada arquivo `*.json` no diretório em ordem alfabética. Nomeie os arquivos com prefixos numéricos para controlar a ordem, como `10-telemetry.json` e `20-security.json`. Claude Code ignora arquivos ocultos e arquivos que não terminam em `.json`.

126 

127Quando dois arquivos definem a mesma chave, Claude Code os combina por estas regras:

128 

129* **Valores únicos**, como `"model": "opus"` ou `"cleanupPeriodDays": 7`: o valor do arquivo posterior substitui o anterior

130* **Listas**, como `permissions.deny` ou `sandbox.network.allowedDomains`: as duas listas se combinam, com duplicatas removidas

131* **Blocos aninhados**, como `env` ou `sandbox`: os dois blocos se mesclam chave por chave, e cada chave dentro segue essas mesmas regras

132* **`fallbackModel`**: a cadeia posterior substitui a anterior inteira

133* **[`extraKnownMarketplaces`](/docs/pt/settings-reference#extraknownmarketplaces) e [`managedMcpServers`](/docs/pt/settings-reference#managedmcpservers)**: uma entrada posterior com o mesmo nome substitui a anterior inteira

134* **[`modelPicker`](/docs/pt/settings-reference#modelpicker)**: o lineup posterior substitui o anterior inteiro

135 

136<span id="precedence-within-the-managed-tier" />

137 

138<span id="which-managed-source-claude-code-uses" />

139 

140<h2 id="how-claude-code-combines-managed-sources">

141 Como Claude Code combina fontes gerenciadas

142</h2>

143 

144Quando sua organização entrega mais de uma fonte gerenciada para a mesma máquina, a chave [`managedSourcesBehavior`](/docs/pt/settings-reference#managedsourcesbehavior) decide o que Claude Code faz com as outras:

145 

146* **`"first-wins"`, o padrão**: Claude Code usa a fonte de classificação mais alta que entrega pelo menos uma chave de política e ignora o resto em vez de mesclá-las, exceto pelas poucas chaves em [Chaves lidas de cada fonte de administrador](#keys-read-from-every-admin-source). Claude Code não mostra aviso para as fontes que pula; `/status` [nomeia a fonte que usou e as que pulou](#read-the-source-in-/status).

147* **`"merge"`**: Claude Code aplica cada fonte de administrador que entrega uma chave de política e as combina por tipo de chave: na maioria das chaves o valor da fonte de classificação mais alta se aplica, listas se unem e locks assumem o valor mais restritivo. [Compor cada fonte gerenciada](#compose-every-managed-source) diz onde definir a chave e como cada tipo de chave se combina. Requer Claude Code v2.1.242 ou posterior.

148 

149Ambas as configurações classificam as fontes da mesma forma. Dois termos recorrem nesta seção:

150 

151* **Chave de política**: qualquer chave de configurações que não seja as duas chaves de controle, [`wslInheritsWindowsSettings`](/docs/pt/settings-reference#wslinheritswindowssettings) e [`managedSourcesBehavior`](/docs/pt/settings-reference#managedsourcesbehavior). Um arquivo de configurações gerenciadas ou política MDM que contém apenas aquelas não conta, e Claude Code passa para a próxima fonte.

152* **Fonte de administrador**: uma das três primeiras fontes abaixo. O registro HKCU gravável pelo usuário não é uma.

153 

154Claude Code verifica as fontes nesta ordem, prioridade mais alta primeiro:

155 

1561. Configurações remotas, entregues do claude.ai como [configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings) ou por um [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway). Claude Code busca essa fonte apenas quando a sessão se autentica na API da Anthropic diretamente com um [login ou chave elegível](/docs/pt/server-managed-settings#platform-availability), ou se conecta a um gateway com `/login`. Em outros provedores, ou quando `ANTHROPIC_BASE_URL` aponta para algo diferente da API da Anthropic, começa na próxima fonte

1572. Políticas MDM ou nível do SO: a plist macOS ou a chave de registro HKLM

1583. Arquivos de configurações gerenciadas, `managed-settings.d/*.json` e `managed-settings.json` mesclados juntos

1594. O registro HKCU, no Windows, e no WSL uma vez que a chave de registro HKLM ou o arquivo de configurações gerenciadas do Windows ativa [`wslInheritsWindowsSettings`](/docs/pt/settings-reference#wslinheritswindowssettings) e o valor HKCU também o define. Claude Code o lê apenas quando nenhuma fonte acima dele entrega uma chave de política e nenhuma [configuração pai fornecida pelo host](#let-an-embedding-host-add-policy) fornece uma chave restritiva

160 

161Este diagrama mostra a classificação, com exemplos das chaves entre fontes que Claude Code lê das três primeiras fontes sob qualquer configuração:

162 

163<img src="https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence.svg?fit=max&auto=format&n=zuWID2B-Rxm8DEC8&q=85&s=53f6be49f06eff48e01422c8ae1bc2e6" className="dark:hidden" alt="Diagrama mostrando as quatro fontes de configurações gerenciadas classificadas de configurações remotas no topo através de MDM, arquivos de configurações gerenciadas e o registro HKCU na parte inferior. Por padrão, a primeira fonte com uma chave de política fornece a política e o resto é pulado; com managedSourcesBehavior definido como merge, cada fonte de administrador com uma chave de política contribui, combinada por tipo de chave, e o registro HKCU fica de fora. Um painel lateral mostra que chaves entre fontes como os locks de sandbox, forceRemoteSettingsRefresh e o env por variável são lidos de cada fonte de administrador, que exclui o registro HKCU." width="680" height="330" data-path="images/managed-source-precedence.svg" />

164 

165<img src="https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence-dark.svg?fit=max&auto=format&n=zuWID2B-Rxm8DEC8&q=85&s=ae407a9a08a3d680e80cf1a2af845d71" className="hidden dark:block" alt="Diagrama mostrando as quatro fontes de configurações gerenciadas classificadas de configurações remotas no topo através de MDM, arquivos de configurações gerenciadas e o registro HKCU na parte inferior. Por padrão, a primeira fonte com uma chave de política fornece a política e o resto é pulado; com managedSourcesBehavior definido como merge, cada fonte de administrador com uma chave de política contribui, combinada por tipo de chave, e o registro HKCU fica de fora. Um painel lateral mostra que chaves entre fontes como os locks de sandbox, forceRemoteSettingsRefresh e o env por variável são lidos de cada fonte de administrador, que exclui o registro HKCU." width="680" height="330" data-path="images/managed-source-precedence-dark.svg" />

166 

167<h3 id="keys-read-from-every-admin-source">

168 Chaves lidas de cada fonte de administrador

169</h3>

170 

171Sob a configuração padrão `"first-wins"`, Claude Code lê a maioria das chaves apenas da [fonte que selecionou](#how-claude-code-combines-managed-sources) e ignora um valor em uma fonte de classificação mais baixa mesmo quando a fonte selecionada deixa essa chave indefinida.

172 

173Algumas chaves funcionam diferentemente. Claude Code as lê de cada fonte de administrador, portanto uma política MDM de classificação mais baixa ou arquivo de configurações gerenciadas ainda pode defini-las quando a fonte selecionada não o faz. Claude Code deixa o registro HKCU gravável pelo usuário de fora dessa verificação; quando HKCU é a única fonte e nenhum host fornece configurações pai, HKCU se aplica como qualquer fonte selecionada.

174 

175As chaves entre fontes incluem:

176 

177* `sandbox.network.allowManagedDomainsOnly` e `sandbox.filesystem.allowManagedReadPathsOnly`: um `true` em qualquer fonte de administrador ativa o lock. Enquanto um lock está ativo, Claude Code une a lista de permissões que ele bloqueia, `sandbox.network.allowedDomains` junto com regras de permissão `WebFetch(domain:...)`, ou `sandbox.filesystem.allowRead`, em cada fonte de administrador. Sem o lock, Claude Code trata a lista de permissões como qualquer outra chave, portanto sob `"first-wins"` a lista de permissões de uma fonte de administrador não selecionada é ignorada

178* `allowAllClaudeAiMcps`

179* Os caminhos binários de sandbox `sandbox.bwrapPath` e `sandbox.socatPath`

180* O binário `ripgrep` de sandbox, [`sandbox.ripgrep`](/docs/pt/settings-reference#sandbox-ripgrep)

181* `sandbox.filesystem.disabled` e `sandbox.network.strictAllowlist`

182* [`useAutoModeDuringPlan`](/docs/pt/settings-reference#useautomodeduringplan) e [`syncClaudeAiSkills`](/docs/pt/settings-reference#syncclaudeaiskills), onde um `false` de qualquer fonte de administrador desativa o comportamento. Um `false` nas configurações de usuário ou local do desenvolvedor também o desativa; cada chave só pode negar

183* [`enableArtifact`](/docs/pt/settings-reference#enableartifact), onde um `false` de qualquer fonte de administrador desativa a [ferramenta Artifact](/docs/pt/artifacts). Um `false` nas configurações de usuário, projeto ou local do desenvolvedor também o desativa, e nenhuma fonte o ativa novamente; consulte [quais valores de nível inferior ainda contam](/docs/pt/settings#exceptions-to-managed-settings-precedence). Requer Claude Code v2.1.242 ou posterior

184* [`maxEffortLevel`](/docs/pt/settings-reference#maxeffortlevel), onde o limite mais baixo em qualquer fonte de administrador se aplica. Se um desenvolvedor define um limite mais baixo em suas próprias configurações ou com `--settings`, Claude Code aplica aquele; nenhuma fonte pode aumentar o limite. Requer Claude Code v2.1.267 ou posterior

185* Um opt-out de trailer de commit em `attribution`, ou no `includeCoAuthoredBy` descontinuado, de qualquer nível

186* [`forceRemoteSettingsRefresh`](/docs/pt/server-managed-settings)

187* `env`, mesclado por variável em fontes de administrador: cada variável vem da fonte de prioridade mais alta que a define, portanto fontes inferiores preenchem variáveis que as superiores deixam indefinidas. Algumas variáveis seguem suas próprias regras; [Exceções por chave em fontes gerenciadas](/docs/pt/server-managed-settings#per-key-exceptions-across-managed-sources) nomeia cada uma. Requer Claude Code v2.1.223 ou posterior. Antes de v2.1.223, Claude Code aplicava apenas o bloco `env` inteiro da fonte selecionada

188 

189<h3 id="compose-every-managed-source">

190 Compor cada fonte gerenciada

191</h3>

192 

193Para ter Claude Code aplicar cada fonte de administrador que sua organização entrega, defina [`managedSourcesBehavior`](/docs/pt/settings-reference#managedsourcesbehavior) como `"merge"` na fonte de classificação mais alta que você implanta. Claude Code lê a chave apenas da fonte de classificação mais alta que carrega a chave ou uma chave de política, portanto uma fonte inferior não pode se optar para mesclar com a fonte acima dela, e uma máquina que nunca recebe configurações gerenciadas pelo servidor precisa da chave em seu perfil MDM também. O registro HKCU gravável pelo usuário nunca se mescla com outra fonte. Requer Claude Code v2.1.242 ou posterior.

194 

195Sob `"merge"`, Claude Code adiciona entradas de lista de uma fonte inferior, como regras `permissions.allow` e hooks, à política, portanto ative-o apenas quando cada fonte classificada abaixo da sua mais alta estiver sob controle de um administrador.

196 

197Esta tabela mostra como Claude Code combina cada tipo de chave sob `"merge"`. A entrada [`managedSourcesBehavior`](/docs/pt/settings-reference#managedsourcesbehavior) nomeia cada chave em três das linhas: listas de permissões de restrição, valores tomados inteiros e chaves lidas apenas da fonte de classificação mais alta.

198 

199| Tipo de chave | Como Claude Code a combina | Exemplos |

200| :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------- |

201| Listas | Combina as entradas de cada fonte | `permissions.allow`, `hooks`, `sandbox.network.allowedDomains`, `deniedMcpServers` |

202| Locks | Aplica o valor mais restritivo que qualquer fonte define; um valor mais solto se aplica apenas da fonte de classificação mais alta | `allowManagedHooksOnly`, `permissions.disableBypassPermissionsMode`, `crossSessionInbound` |

203| Listas de permissões de restrição | Toma a lista inteira da fonte de classificação mais alta que a define, sem adicionar entradas de fontes inferiores | `availableModels`, `allowedMcpServers`, `strictKnownMarketplaces`, `allowedChannelPlugins` e a cadeia `fallbackModel` |

204| Valores tomados inteiros | Toma o valor inteiro da fonte de classificação mais alta que o define, sem combinar entradas ou campos de fontes inferiores | `sandbox.credentials.awsPairs`, `sandbox.ripgrep` |

205| Servidores MCP fornecidos | Combina os nomes de servidor de cada fonte; quando duas fontes definem o mesmo nome, aplica a entrada inteira da fonte de classificação mais alta | `managedMcpServers` |

206| Chaves lidas apenas da fonte de classificação mais alta | Ignora a chave em cada fonte inferior, mesmo quando a fonte de classificação mais alta a deixa indefinida | Auxiliares de credencial como `apiKeyHelper`, pins de login como `forceLoginOrgUUID`, `modelPicker`, `permissions.defaultMode` |

207| `env` | Mescla por variável em fontes de administrador sob qualquer configuração, como [Chaves lidas de cada fonte de administrador](#keys-read-from-every-admin-source) descreve | |

208| Toda outra chave | Toma o valor da fonte de classificação mais alta que o define | `model`, `cleanupPeriodDays` |

209 

210Para confirmar quais fontes se combinaram em uma máquina, [leia a linha `Setting sources` em `/status`](#read-the-source-in-/status); essa seção diz o que cada rótulo significa.

211 

212<h3 id="compute-the-policy-with-a-helper-program">

213 Calcular a política com um programa auxiliar

214</h3>

215 

216Um [`policyHelper`](/docs/pt/settings-reference#policyhelper) é um executável que sua política MDM ou arquivo de configurações gerenciadas nomeia, e Claude Code o executa para calcular configurações gerenciadas na inicialização. Quando a fonte selecionada configura um e o auxiliar emite um objeto `managedSettings`, essa saída muda o que Claude Code lê:

217 

218* **O objeto `managedSettings` emitido é a única configuração gerenciada para a sessão**, incluindo para as [chaves que de outra forma lê de cada fonte de administrador](#keys-read-from-every-admin-source), exceto por [`forceRemoteSettingsRefresh`, que tem sua própria regra de inicialização](/docs/pt/settings-reference#forceremotesettingsrefresh)

219 

220Para quais falhas de auxiliar, e o que Claude Code faz quando uma falha, consulte [Falhas de auxiliar](/docs/pt/settings-reference#helper-failures).

221 

222<span id="parent-settings-from-embedding-hosts" />

223 

224<span id="control-policy-from-an-embedding-host" />

225 

226<span id="merge-policy-from-an-embedding-host" />

227 

228<h3 id="let-an-embedding-host-add-policy">

229 Deixar um host de incorporação adicionar política

230</h3>

231 

232Quando outro aplicativo inicia Claude Code, como Claude Desktop, uma extensão IDE ou um aplicativo Agent SDK, esse host pode passar suas próprias configurações gerenciadas através da opção SDK `managedSettings`. Claude Code chama essas configurações pai.

233 

234Por padrão, Claude Code ignora configurações pai sempre que uma fonte de administrador está presente: configurações gerenciadas pelo servidor, uma política MDM ou nível do SO, ou um arquivo de configurações gerenciadas.

235 

236Para ter Claude Code mesclar configurações pai junto com uma fonte de administrador, defina [`parentSettingsBehavior`](/docs/pt/settings-reference#parentsettingsbehavior) como `"merge"` na fonte gerenciada de prioridade mais alta; Claude Code lê a chave apenas dessa fonte.

237 

238Claude Code então mantém apenas os valores do host que restringem o que Claude pode fazer, com uma lacuna a saber: a menos que você também defina os locks `allowManaged*Only`, as regras de permissão de permissão do host e as listas de permissões de sandbox ainda se aplicam. Consulte [Restringir configurações pai](/docs/pt/claude-apps-gateway#restrict-parent-settings) para os locks.

239 

240Um [`policyHelper`](/docs/pt/settings-reference#policyhelper) pode desativar a mesclagem pai independentemente dessa chave; sua entrada diz quando.

241 

242Claude Code também aplica essas verificações a valores fornecidos pelo pai por conta própria:

243 

244* Quando qualquer fonte de administrador define `allowManagedPermissionRulesOnly`, Claude Code descarta [regras de permissão de permissão fornecidas pelo pai](/docs/pt/claude-apps-gateway#restrict-parent-settings) e `additionalDirectories` conforme as lê, mesmo quando uma fonte de prioridade mais alta deixa a chave indefinida. O efeito da chave em suas próprias regras de permissão vem das configurações gerenciadas que Claude Code aplica, ou das configurações pai que você escolheu mesclar

245* Claude Code aplica o valor `forceLoginOrgUUID` ou `allowedMcpServers` nas configurações gerenciadas que aplica e bloqueia um fornecido pelo pai. Um valor em uma fonte de administrador inferior que Claude Code não aplica nem se aplica nem bloqueia o do pai. A entrada [`managedSourcesBehavior`](/docs/pt/settings-reference#managedsourcesbehavior) diz qual fonte fornece cada chave sob `"merge"`. Antes de v2.1.223, um valor em qualquer fonte de administrador bloqueava o do pai

246* Um valor `availableModels` segue a mesma regra que `allowedMcpServers`

247 

248<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">

249 Manter o acesso à pasta Cowork quando apenas regras gerenciadas se aplicam

250</h4>

251 

252[Cowork](https://claude.com/docs/cowork/overview) no aplicativo Claude Desktop executa suas sessões em Claude Code e concede a cada sessão acesso a suas pastas de trabalho, como a pasta que o usuário conecta, através de regras de permissão que fornece quando inicia a sessão. Quando sua política gerenciada define [`allowManagedPermissionRulesOnly`](/docs/pt/settings-reference#allowmanagedpermissionrulesonly), Claude Code mantém apenas as regras de permissão na política gerenciada: descarta regras de permissão que um host fornece como configurações pai, como `--allowedTools` ou em um arquivo de configurações, portanto as gravações nessas pastas perdem sua pré-aprovação. Em uma sessão Cowork que pede antes de edições, Cowork não pode mostrar o prompt, e Claude relata cada gravação como bloqueada porque o caminho se resolve para um local protegido ou um caminho fora da pasta conectada.

253 

254Para restaurar as gravações, adicione regras de permissão para essas pastas à fonte gerenciada que Claude Code [seleciona](#precedence-within-the-managed-tier) nessas máquinas: em uma frota gerenciada por MDM, essa é a política MDM em vez de um arquivo de configurações gerenciadas separado. Este exemplo usa a forma de arquivo, e uma política MDM toma as mesmas chaves. Mantém `allowManagedPermissionRulesOnly` definido e permite edições sob uma pasta `CoworkProjects` no diretório inicial de cada usuário; substitua o caminho pelas pastas que seus usuários conectam:

255 

256```json managed-settings.json theme={null}

257{

258 "allowManagedPermissionRulesOnly": true,

259 "permissions": {

260 "allow": [

261 "Edit(~/CoworkProjects/**)"

262 ]

263 }

264}

265```

266 

267Depois de implantar a política, Claude pode salvar arquivos sob essa pasta em uma nova sessão Cowork. [Regras Read e Edit](/docs/pt/permissions#read-and-edit) cobrem a sintaxe de caminho, incluindo a forma `//` para caminhos absolutos.

268 

269<h3 id="what-a-developer-can-change">

270 O que um desenvolvedor pode alterar

271</h3>

272 

273Os próprios arquivos de configurações de um desenvolvedor, valores `--settings` e arquivos de projeto nunca substituem um valor gerenciado; as [exceções](/docs/pt/settings#exceptions-to-managed-settings-precedence) apenas deixam um valor inferior mais restritivo contar. Quatro coisas ficam fora dessa regra:

274 

275* **O modelo para uma sessão**: um `model` gerenciado é um padrão, não um lock. `--model` e `ANTHROPIC_MODEL` ainda escolhem o modelo para essa sessão, portanto implante [`availableModels`](/docs/pt/settings-reference#availablemodels) para restringir a escolha.

276* **Direitos de administrador local**: um desenvolvedor que é um administrador na máquina pode editar a própria fonte gerenciada, é por isso que a ferramenta MDM pode reimplantar o perfil ou arquivo em um cronograma e por que a chave de registro HKLM e o domínio de preferências gerenciadas macOS existem.

277* **O cache gerenciado pelo servidor**: as configurações gerenciadas pelo servidor vêm dos servidores da Anthropic, e uma edição no cache local [dura apenas até a próxima busca bem-sucedida](/docs/pt/server-managed-settings#security-considerations).

278* **Outras ferramentas**: as configurações gerenciadas vinculam apenas Claude Code. Um desenvolvedor que chama a API de outra ferramenta não está sob elas.

279 

280<span id="verify-enforcement" />

281 

282<span id="verify-that-a-policy-is-in-force" />

283 

284<h2 id="check-that-a-policy-is-in-force">

285 Verificar que uma política está em vigor

286</h2>

287 

288Um desenvolvedor relata que uma política não está sendo aplicada, ou você quer confirmar que um lançamento chegou antes de empurrá-lo para a frota. Dois comandos nessa máquina respondem: `/status` mostra qual fonte gerenciada Claude Code selecionou, e `claude doctor` lista o que descartou.

289 

290<h3 id="read-the-source-in-/status">

291 Ler a fonte em /status

292</h3>

293 

294Na máquina do desenvolvedor, execute `/status` dentro de Claude Code e leia a linha `Setting sources`. Quando uma fonte gerenciada está em vigor, a linha lista `Enterprise managed settings` com a fonte que Claude Code selecionou entre parênteses:

295 

296* `(remote)`: configurações gerenciadas pelo servidor do claude.ai ou um gateway

297* `(plist)` ou `(HKLM)`: uma política MDM ou nível do SO

298* `(file)`, `(drop-ins)` ou `(file + drop-ins)`: `managed-settings.json`, o diretório drop-in ou ambos

299* `(remote + file, merged)` ou outra lista terminando em `, merged`: sua organização [compõe cada fonte gerenciada](#compose-every-managed-source) e Claude Code mesclou as fontes listadas na política. Uma fonte inferior ainda pode fornecer variáveis `env` sem aparecer na lista. Requer Claude Code v2.1.242 ou posterior

300* `(HKCU)`: o fallback de registro gravável pelo usuário

301* `(parent process)`: um [host de incorporação](#let-an-embedding-host-add-policy) forneceu configurações restritivas

302* `(helper)`: um [`policyHelper`](/docs/pt/settings-reference#policyhelper) configurado pela fonte MDM ou arquivo selecionada

303 

304Quando Claude Code encontrou uma fonte gerenciada na máquina e não a selecionou, uma segunda linha, `Skipped sources`, nomeia cada tal fonte. Leia-a para distinguir uma política que nunca alcançou a máquina de uma que alcançou e que uma fonte de prioridade mais alta substituiu. Requer Claude Code v2.1.242 ou posterior.

305 

306Quando a política não está sendo aplicada, a linha `Setting sources` diz qual de dois problemas você tem:

307 

308* **A linha está faltando**: Claude Code não encontrou nenhuma fonte gerenciada que entregue uma chave de política.

309 

310 Se você implantou um arquivo de configurações gerenciadas, verifique se ele fica no caminho para o SO e se contém uma [chave de política](#how-claude-code-combines-managed-sources) em vez de apenas as chaves de controle. Um arquivo que não é JSON válido não produz este estado; Claude Code [recusa iniciar](#find-entries-claude-code-dropped) em vez disso.

311 

312 Quando você implantou através de configurações gerenciadas pelo servidor em vez disso, execute `claude doctor`, que relata o [resultado da busca](/docs/pt/server-managed-settings#verify-settings-delivery).

313* **A linha nomeia uma fonte diferente da que você implantou**: uma fonte de prioridade mais alta está presente e Claude Code ignorou a sua, e `Skipped sources` a lista. [Como Claude Code combina fontes gerenciadas](#how-claude-code-combines-managed-sources) fornece a ordem.

314 

315<span id="invalid-entries-in-managed-settings" />

316 

317<h3 id="find-entries-claude-code-dropped">

318 Encontrar entradas que Claude Code descartou

319</h3>

320 

321Quando um arquivo de configurações gerenciadas, perfil MDM, valor de registro ou payload gerenciado pelo servidor falha na validação de esquema, Claude Code primeiro pula as entradas individuais que pode reparar, como uma regra de permissão inválida, com um aviso para cada uma, depois descarta qualquer chave de nível superior cujo valor ainda falha e continua aplicando cada chave válida restante.

322 

323Claude Code é mais rigoroso com o `managedSettings` que um [`policyHelper`](/docs/pt/settings-reference#policyhelper) emite: faz os mesmos reparos de entrada, mas qualquer violação de esquema que sobreviva falha a execução inteira do auxiliar, e na inicialização Claude Code recusa iniciar, o mesmo que para um auxiliar que sai com código diferente de zero.

324 

325Quando um arquivo de configurações gerenciadas, arquivo drop-in, plist MDM ou valor de registro HKLM está presente mas não pode ser analisado como um objeto JSON, Claude Code recusa iniciar e imprime [um erro nomeando a fonte](/docs/pt/errors#managed-settings-document-could-not-be-parsed), mesmo quando outra fonte de administrador entrega uma política válida. Cada fonte falha desta forma quando:

326 

327* **Arquivo de configurações gerenciadas ou arquivo drop-in**: o arquivo não é JSON válido, ou seu nível superior não é um objeto

328* **Plist MDM**: o `plutil` do macOS relata o plist malformado, ou seu conteúdo convertido não é um objeto JSON

329* **Valor de registro HKLM**: o valor `Settings` não é uma string, está vazio ou não contém um objeto JSON

330 

331Três estados de fonte não causam essa recusa:

332 

333* Um arquivo, perfil ou valor de registro ausente não é uma falha; Claude Code é executado sem essa fonte.

334* Um arquivo de configurações gerenciadas vazio conta como `{}`.

335* Um valor malformado na chave de registro HKCU gravável pelo usuário nunca bloqueia o lançamento. Claude Code o relata como um aviso em `/status` e `claude doctor` em vez disso.

336 

337Se um arquivo de configurações gerenciadas, arquivo drop-in ou diretório `managed-settings.d/` não puder ser lido e nenhuma fonte de administrador fornecer uma política, sessões conectadas com credenciais claude.ai ou Claude Console saem na inicialização com uma mensagem para contatar um administrador.

338 

339Para encontrar uma entrada descartada, procure em um de três lugares:

340 

341* Sessões interativas mostram um diálogo na inicialização listando as entradas inválidas.

342* Execuções não interativas com `-p` imprimem um resumo para stderr.

343* [`claude doctor`](/docs/pt/debug-your-config) lista cada entrada inválida com sua fonte e campo.

344 

345<h4 id="keys-that-fail-closed">

346 Chaves que falham fechadas

347</h4>

348 

349Algumas chaves de aplicação não são descartadas quando inválidas. Claude Code aplica um fallback mais restritivo até que o valor seja corrigido; a tabela mostra o que aplica para cada chave:

350 

351| Campo | Comportamento quando presente mas inválido |

352| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

353| `allowedMcpServers` | Aplicado como uma lista de permissões vazia até que o valor seja corrigido, portanto nenhum servidor MCP que os usuários adicionem é admitido. Servidores que sua organização entrega através de [`managedMcpServers`](/docs/pt/settings-reference#managedmcpservers) ainda carregam, e servidores `managed-mcp.json` carregam por [Como um servidor é avaliado](/docs/pt/managed-mcp#how-a-server-is-evaluated). Uma entrada individual inválida é removida e o subconjunto válido é aplicado. |

354| `allowedHttpHookUrls` | Claude Code aplica uma [lista de permissões](/docs/pt/settings-reference#allowedhttphookurls) gerenciada vazia até que você corrija o valor, portanto um hook HTTP é executado apenas se outro arquivo de configurações listar sua URL. Se apenas uma entrada individual for inválida, Claude Code remove essa entrada e aplica o resto. |

355| `httpHookAllowedEnvVars` | Claude Code aplica uma [lista de permissões](/docs/pt/settings-reference#httphookallowedenvvars) gerenciada vazia até que você corrija o valor, portanto uma variável de cabeçalho é interpolada apenas se outro arquivo de configurações a nomear. Se apenas uma entrada individual for inválida, Claude Code remove essa entrada e aplica o resto. |

356| `allowedChannelPlugins` | Claude Code aplica uma lista de permissões vazia até que você corrija o valor, portanto nenhum plugin de canal passado para `--channels` é admitido. Se apenas uma entrada individual for inválida, ele remove essa entrada e aplica o resto. |

357| `allowManagedHooksOnly` | Tratado como `true` até ser corrigido: as [restrições de hook](/docs/pt/settings-reference#allowmanagedhooksonly) se aplicam e, a menos que `disableCommandPluginSources` seja explicitamente `false`, plugins de origem de comando são desabilitados. |

358| `allowManagedMcpServersOnly` | Tratado como `true`. |

359| `disableCommandPluginSources` | Tratado como `true`, portanto plugins de origem de comando permanecem desabilitados até que o valor seja corrigido. |

360| `availableModels` | Aplicado como uma lista de permissões vazia até ser corrigido, portanto apenas o modelo Padrão está disponível; uma entrada não-string é removida e o subconjunto válido é aplicado. |

361| `enforceAvailableModels` | Tratado como `true`. |

362| `forceLoginOrgUUID` | Nenhuma organização é permitida fazer login até que o valor seja corrigido. |

363| `crossSessionInbound` | Tratado como `refuse`, o valor mais restritivo, portanto [mensagens entre sessões](/docs/pt/cross-session-messaging#control-inbound-messages) de entrada são recusadas até que o valor seja corrigido. O desenvolvedor vê [um aviso](/docs/pt/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |

364| `deniedMcpServers` | Uma entrada individual inválida é removida e o subconjunto válido é aplicado. Um valor totalmente inválido é descartado com um aviso, já que negar cada servidor bloquearia servidores que a política nunca nomeou. |

365| `sandbox.credentials` | Uma entrada inválida recuperável é degradada para `mode: "deny"` com um aviso; uma irrecuperável é removida; entradas válidas permanecem aplicadas. Consulte [entradas de credencial inválidas](/docs/pt/settings-reference#invalid-credential-entries-in-managed-settings) |

366 

367`allowedHttpHookUrls` e `httpHookAllowedEnvVars` mesclam entre arquivos de configurações, portanto entradas em suas configurações de usuário, projeto ou local ainda se aplicam enquanto a lista gerenciada está vazia. Os fallbacks para essas duas chaves e para `allowedChannelPlugins` requerem Claude Code v2.1.267 ou posterior; versões anteriores descartam a chave inteira quando seu valor ou qualquer entrada é inválida.

368 

369`requiredMinimumVersion` e `requiredMaximumVersion` falham abertos por design: um valor inválido é descartado em vez de ser aplicado.

370 

371Esta tolerância se aplica apenas a configurações gerenciadas. Arquivos de configurações de usuário, projeto e local permanecem rigorosos: um arquivo cuja JSON ou forma de nível superior falha na validação é rejeitado como um todo e relatado, e uma entrada individual que falha, como uma regra de permissão malformada, é pulada com um aviso enquanto o resto do arquivo se aplica.

372 

373<span id="managed-only-settings" />

374 

375<h2 id="keys-only-a-managed-source-can-set">

376 Chaves que apenas uma fonte gerenciada pode definir

377</h2>

378 

379Claude Code lê as seguintes chaves apenas de uma fonte gerenciada; colocá-las em arquivos de configurações de usuário ou projeto não tem efeito.

380 

381A maioria delas são bloqueios: o valor que um bloqueio governa, como regras de permissão ou `sandbox.network.allowedDomains`, é uma chave ordinária que qualquer nível pode definir, e o bloqueio diz ao Claude Code para honrar apenas o valor gerenciado.

382 

383A tabela cobre os controles de permissão, plugin e entrega. Para qualquer chave não listada aqui, a coluna Escopo da [referência de configurações](/docs/pt/settings-reference#all-settings) diz se é apenas gerenciada; as chaves apenas gerenciadas restantes lá incluem a URL de login do gateway, versão, navegador, simulador móvel, host SSH, sessão local do Desktop, caminho binário da sandbox, preço do modelo e controles CLAUDE.md.

384 

385| Configuração | Descrição |

386| :-------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

387| [`allowAllClaudeAiMcps`](/docs/pt/settings-reference#allowallclaudeaimcps) | Carregue os conectores claude.ai que Claude Code busca por si mesmo junto com um `managed-mcp.json` implantado em vez de suprimi-los |

388| [`allowedChannelPlugins`](/docs/pt/settings-reference#allowedchannelplugins) | Lista de permissões de plugins de canal que podem enviar mensagens. Substitui a lista de permissões padrão da Anthropic quando definida. Requer `channelsEnabled: true`. Veja [Restringir quais plugins de canal podem ser executados](/docs/pt/channels#restrict-which-channel-plugins-can-run) |

389| [`allowManagedHooksOnly`](/docs/pt/settings-reference#allowmanagedhooksonly) | Quando `true`, restringe quais hooks são executados; veja [o que é executado sob `allowManagedHooksOnly`](/docs/pt/settings-reference#what-runs-under-allowmanagedhooksonly) para a lista completa de efeitos |

390| [`allowManagedMcpServersOnly`](/docs/pt/settings-reference#allowmanagedmcpserversonly) | Quando `true`, apenas `allowedMcpServers` das configurações gerenciadas são respeitados. `deniedMcpServers` ainda é mesclado de todas as fontes. Veja [Configuração MCP gerenciada](/docs/pt/managed-mcp) |

391| [`allowManagedPermissionRulesOnly`](/docs/pt/settings-reference#allowmanagedpermissionrulesonly) | Torna as configurações gerenciadas a única fonte de configurações de regras de permissão. A entrada lista todas as fontes que ignora |

392| [`blockedMarketplaces`](/docs/pt/settings-reference#blockedmarketplaces) | Lista de bloqueio de fontes de marketplace. As fontes bloqueadas são verificadas antes do download, portanto nunca tocam o sistema de arquivos. Veja [restrições de marketplace gerenciadas](/docs/pt/plugin-marketplaces#managed-marketplace-restrictions) |

393| [`channelsEnabled`](/docs/pt/settings-reference#channelsenabled) | Permitir [canais](/docs/pt/channels) para a organização. Veja [controles empresariais](/docs/pt/channels#enterprise-controls) para o padrão em cada plano |

394| [`disableCommandPluginSources`](/docs/pt/settings-reference#disablecommandpluginsources) | Quando `true`, bloqueia [fontes de plugin `command`](/docs/pt/plugin-marketplaces#command-sources) inteiramente, portanto o comando declarado no marketplace nunca é executado. Também bloqueia comandos [`headersHelper`](/docs/pt/plugin-marketplaces#authenticate-archive-downloads) do marketplace, exceto para um marketplace que as próprias configurações gerenciadas declaram. Quando não definido, segue `allowManagedHooksOnly`. Requer Claude Code v2.1.229 ou posterior, e o bloqueio `headersHelper` requer v2.1.238 ou posterior |

395| [`disableSideloadFlags`](/docs/pt/settings-reference#disablesideloadflags) | Rejeite os sinalizadores `--plugin-dir`, `--plugin-url`, `--agents` e `--mcp-config` na inicialização. Em sessões na nuvem, Claude Code descarta os servidores MCP que o servidor entregou através de `--mcp-config`, exceto entradas `type: "sdk"` em processo, e inicia a sessão. Requer Claude Code v2.1.193 ou posterior |

396| [`forceRemoteSettingsRefresh`](/docs/pt/settings-reference#forceremotesettingsrefresh) | Quando `true`, bloqueia a inicialização da CLI até que as configurações gerenciadas remotas sejam buscadas recentemente e sai se a busca falhar. Veja [aplicação de falha fechada](/docs/pt/server-managed-settings#enforce-fail-closed-startup) |

397| [`managedMcpServers`](/docs/pt/settings-reference#managedmcpservers) | Servidores MCP remotos fornecidos a cada usuário junto com os seus próprios. Fornece servidores em vez de bloquear qualquer coisa. Veja [Fornecer servidores através de configurações gerenciadas](/docs/pt/managed-mcp#provide-servers-through-managed-settings). Requer Claude Code v2.1.259 ou posterior |

398| [`managedSourcesBehavior`](/docs/pt/settings-reference#managedsourcesbehavior) | Se Claude Code aplica apenas a fonte gerenciada de prioridade mais alta ou [compõe cada uma delas](#compose-every-managed-source) |

399| [`parentSettingsBehavior`](/docs/pt/settings-reference#parentsettingsbehavior) | Se as configurações pai fornecidas pelo host são mescladas sob a política gerenciada |

400| [`pluginSuggestionMarketplaces`](/docs/pt/settings-reference#pluginsuggestionmarketplaces) | Marketplaces cujos plugins Claude Code pode sugerir aos usuários |

401| [`pluginTrustMessage`](/docs/pt/settings-reference#plugintrustmessage) | Mensagem personalizada anexada ao aviso de confiança de plugin mostrado antes da instalação |

402| [`policyHelper`](/docs/pt/settings-reference#policyhelper) | Executável que calcula configurações gerenciadas na inicialização; veja [Calcular configurações gerenciadas com um auxiliar de política](/docs/pt/settings-reference#policyhelper) |

403| [`sandbox.filesystem.allowManagedReadPathsOnly`](/docs/pt/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Quando `true`, apenas caminhos `filesystem.allowRead` das configurações gerenciadas são respeitados. `denyRead` ainda é mesclado de todas as fontes |

404| [`sandbox.network.allowManagedDomainsOnly`](/docs/pt/settings-reference#sandbox-network-allowmanageddomainsonly) | Honre apenas regras de permissão `allowedDomains` e `WebFetch(domain:...)` gerenciadas; bloqueie outros domínios sem solicitar |

405| [`strictKnownMarketplaces`](/docs/pt/settings-reference#strictknownmarketplaces) | Controla de quais fontes de marketplace de plugins os usuários podem adicionar e instalar plugins. Veja [restrições de marketplace gerenciadas](/docs/pt/plugin-marketplaces#managed-marketplace-restrictions) |

406| [`strictPluginOnlyCustomization`](/docs/pt/settings-reference#strictpluginonlycustomization) | Bloqueie skills, agentes, hooks e servidores MCP de fontes de usuário e projeto; `true` bloqueia todos os quatro, uma matriz nomeia qual |

407| [`wslInheritsWindowsSettings`](/docs/pt/settings-reference#wslinheritswindowssettings) | Quando definido no registro HKLM ou em um arquivo sob `C:\Program Files\ClaudeCode`, faça o WSL ler a cadeia de política do Windows e ler `/etc/claude-code` apenas quando nenhum arquivo de configurações gerenciadas ou drop-in sob esse diretório entregar uma [chave de política](#how-claude-code-combines-managed-sources); a entrada fornece a ordem |

408 

409<Note>

410 Nos planos Team e Enterprise, um Proprietário ativa ou desativa [Controle Remoto](/docs/pt/remote-control) e [sessões web](/docs/pt/claude-code-on-the-web) em toda a organização nas [configurações de administrador do Claude Code](https://claude.ai/admin-settings/claude-code). O Controle Remoto pode ser desativado adicionalmente por dispositivo com a configuração [`disableRemoteControl`](/docs/pt/settings-reference#disableremotecontrol). As sessões web não têm chave de configurações gerenciadas por dispositivo.

411 

412 Para verificar se essas configurações de organização chegaram a uma determinada máquina, execute `claude doctor` lá e leia a linha `Organization policy`, que diz onde Claude Code carregou a política ou por que não carregou. Requer Claude Code v2.1.261 ou posterior. Em uma sessão em execução, `/status` mostra a mesma linha quando a política não foi carregada.

413</Note>

414 

415<h2 id="turn-telemetry-off-for-your-organization">

416 Desativar telemetria para sua organização

417</h2>

418 

419Claude Code envia [telemetria](/docs/pt/data-usage#telemetry-services) operacional da Anthropic por padrão em sessões que usam a API da Anthropic, seja diretamente, através de um gateway LLM ou através de um `ANTHROPIC_BASE_URL` personalizado; [Comportamentos padrão por provedor de API](/docs/pt/data-usage#default-behaviors-by-api-provider) diz quais provedores a enviam. Para desativá-la para cada desenvolvedor sem depender da shell de cada pessoa, entregue `DISABLE_TELEMETRY` através do bloco `env` de suas configurações gerenciadas. Este exemplo define `DISABLE_TELEMETRY` para todos que a política alcança:

420 

421```json theme={null}

422{

423 "env": {

424 "DISABLE_TELEMETRY": "1"

425 }

426}

427```

428 

429Claude Code aplica um valor de `1` sem mostrar ao usuário o [diálogo de aprovação](/docs/pt/server-managed-settings#environment-variables-and-the-approval-dialog).

430 

431Se você desativar a telemetria, Claude Code para de enviar os dados de uso que alimentam o [painel de análise](/docs/pt/analytics) de sua organização para os desenvolvedores que a política alcança. A variável também desativa a busca de sinalizadores de recurso, o que torna Remote Control, modo automático padrão e os outros [recursos que precisam de busca de sinalizadores de recurso](/docs/pt/env-vars#features-that-need-feature-flag-fetching) indisponíveis para esses desenvolvedores.

432 

433[Onde e quando uma política se aplica](#where-and-when-a-policy-applies) diz qual mecanismo de entrega alcança cada superfície, e [Disponibilidade de plataforma](/docs/pt/server-managed-settings#platform-availability) diz quais sessões pulam a busca de configurações gerenciadas pelo servidor.

434 

435Se sua organização usa chaves de criptografia gerenciadas pelo cliente e roteia Claude Code através de um gateway, [Configurar proxies e gateways](/docs/pt/third-party-integrations#configure-proxies-and-gateways) diz por que essas sessões precisam dessa variável.

436 

437<h2 id="see-also">

438 Veja também

439</h2>

440 

441* [Configurar Claude Code para sua organização](/docs/pt/admin-setup): decidir o que impor e como

442* [Configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings): entregar política do console claude.ai ou um gateway

443* [Configuração MCP gerenciada](/docs/pt/managed-mcp): controlar quais servidores MCP os desenvolvedores podem usar

444* [Todas as configurações](/docs/pt/settings-reference): cada chave, com se uma fonte gerenciada pode defini-la

445* [Arquivos de configurações de exemplo](/docs/pt/settings-example#an-organizations-managed-settings): um `managed-settings.json` completo mostrando a forma das chaves gerenciadas

mcp.md +13 −7

Details

52 * `Marketplace "claude-plugins-official" não encontrado`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.52 * `Marketplace "claude-plugins-official" não encontrado`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.

53 * O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.53 * O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.

54 54 

55 Verifique o resumo da instalação: se relatar `Run /reload-plugins to activate.`, execute esse comando.55 Se o resumo da instalação relatar `Run /reload-plugins to activate.`, Claude Code então executa esse recarregamento para você. Se o recarregamento avisar que sua próxima mensagem releria a conversa, execute `/reload-plugins --force`.

56 </Step>56 </Step>

57 57 

58 <Step title="Execute a skill de construção">58 <Step title="Execute a skill de construção">


102 O transporte SSE (Server-Sent Events) está descontinuado. Use servidores HTTP em vez disso, quando disponível.102 O transporte SSE (Server-Sent Events) está descontinuado. Use servidores HTTP em vez disso, quando disponível.

103</Warning>103</Warning>

104 104 

105Alguns serviços ainda expõem apenas um endpoint SSE. Use o mesmo comando que o transporte HTTP, com `--transport sse`:105Alguns serviços ainda expõem apenas um endpoint SSE. Adicione-os com o mesmo comando `claude mcp add --transport http <name> <url>` que um [servidor HTTP](#option-1-add-a-remote-http-server). Claude Code tenta o transporte HTTP primeiro e muda para SSE quando o servidor não o aceita. A mudança automática requer Claude Code v2.1.265 ou posterior.

106 

107Em uma versão anterior, ou para conectar sobre SSE diretamente, passe `--transport sse` em vez disso:

106 108 

107```bash theme={null}109```bash theme={null}

108# Sintaxe básica110# Sintaxe básica


183 De uma URL185 De uma URL

184</h4>186</h4>

185 187 

186Uma URL significa que o servidor é remoto. Para um endpoint `https://`, adicione-o com `--transport http`, ou com `--transport sse` quando as instruções disserem que o endpoint usa SSE. Para um endpoint `wss://`, use a [Opção 4](#option-4-add-a-remote-websocket-server) em vez disso, já que `--transport` não aceita `ws`:188Uma URL significa que o servidor é remoto. Para um endpoint `https://`, adicione-o com `--transport http`, ou siga a [Opção 2](#option-2-add-a-remote-sse-server) quando as instruções disserem que o endpoint usa SSE. Para um endpoint `wss://`, use a [Opção 4](#option-4-add-a-remote-websocket-server) em vez disso, já que `--transport` não aceita `ws`:

187 189 

188```bash theme={null}190```bash theme={null}

189claude mcp add --transport http example https://mcp.example.com/mcp191claude mcp add --transport http example https://mcp.example.com/mcp


307Quando você completa a autenticação de `/mcp` e a conexão ainda falha com um status HTTP ou um código de erro de transporte, Claude Code adiciona esse código e a origem da URL que tentou à mensagem que imprime após a tentativa. A origem é o esquema e host, mais a porta quando a URL nomeia uma, como `https://mcp.example.com`.309Quando você completa a autenticação de `/mcp` e a conexão ainda falha com um status HTTP ou um código de erro de transporte, Claude Code adiciona esse código e a origem da URL que tentou à mensagem que imprime após a tentativa. A origem é o esquema e host, mais a porta quando a URL nomeia uma, como `https://mcp.example.com`.

308 310 

309* O caminho e a consulta nunca aparecem nessa mensagem.311* O caminho e a consulta nunca aparecem nessa mensagem.

310* Claude Code toma a origem após expansão `${VAR}`, portanto um host que vem de uma variável aparece expandido.312* Para um servidor na [escopo](#mcp-installation-scopes) local, de projeto, ou de usuário ou em configuração MCP gerenciada, a origem mostra o host como escrito nessa configuração, portanto uma referência `${VAR}` no host não é expandida na mensagem.

311* Para uma falha sem status ou código de erro, Claude Code mostra o texto de erro sem a origem.313* Para uma falha sem status ou código de erro, Claude Code mostra o texto de erro sem a origem.

312 314 

313Um servidor remoto cuja configuração tem uma `url` vazia mostra como `not configured` em `/mcp`, em `claude mcp list`, e no [gerenciador `/plugin`](/docs/pt/plugins), e Claude Code não tenta se conectar a ele. Um plugin pode incluir uma entrada de espaço reservado como esta para um conector que você configura depois, portanto Claude Code não a relata como um erro ou um problema de configuração. A visualização de detalhe do servidor em `/mcp` lê `No URL configured for this server`; defina a `url` da entrada para conectá-lo. Antes da v2.1.208, Claude Code relatava uma `url` vazia como um problema de configuração com um prompt para reconectar.315Um servidor remoto cuja configuração tem uma `url` vazia mostra como `not configured` em `/mcp`, em `claude mcp list`, e no [gerenciador `/plugin`](/docs/pt/plugins), e Claude Code não tenta se conectar a ele. Um plugin pode incluir uma entrada de espaço reservado como esta para um conector que você configura depois, portanto Claude Code não a relata como um erro ou um problema de configuração. A visualização de detalhe do servidor em `/mcp` lê `No URL configured for this server`; defina a `url` da entrada para conectá-lo. Antes da v2.1.208, Claude Code relatava uma `url` vazia como um problema de configuração com um prompt para reconectar.


371* Não registra um servidor [channel](#push-messages-with-channels) que se conecta na revisão mais recente, porque essa revisão não pode carregar mensagens de canal.373* Não registra um servidor [channel](#push-messages-with-channels) que se conecta na revisão mais recente, porque essa revisão não pode carregar mensagens de canal.

372* Falha em um [login OAuth MCP](#authenticate-with-remote-mcp-servers) cuja resposta de autorização nomeia um emissor inesperado.374* Falha em um [login OAuth MCP](#authenticate-with-remote-mcp-servers) cuja resposta de autorização nomeia um emissor inesperado.

373 375 

374Anthropic pode manter um servidor específico no protocolo anterior, ou fora desse stream, com um sinalizador de recurso que Claude Code busca. Em uma sessão [Claude Code na web](/docs/pt/cloud-environments#network-access), Claude Code pergunta a seus conectores MCP apenas se você definir `MCP_PROTOCOL_NEGOTIATION` como `auto`.376Anthropic pode manter um servidor específico no protocolo anterior, ou fora desse stream, com um sinalizador de recurso que Claude Code busca.

375 377 

376Para escolher o tempo de execução você mesmo, defina [`MCP_SDK_GENERATION`](/docs/pt/env-vars) como `v1` ou `v2`. Para decidir se Claude Code pergunta, defina [`MCP_PROTOCOL_NEGOTIATION`](/docs/pt/env-vars) como `auto` ou `legacy`. Onde Claude Code usa v1 por padrão, fixar `v2` não faz com que ele pergunte, portanto defina `auto` também.378Para escolher o tempo de execução você mesmo, defina [`MCP_SDK_GENERATION`](/docs/pt/env-vars) como `v1` ou `v2`. Para decidir se Claude Code pergunta, defina [`MCP_PROTOCOL_NEGOTIATION`](/docs/pt/env-vars) como `auto` ou `legacy`. Onde Claude Code usa v1 por padrão, fixar `v2` não faz com que ele pergunte, portanto defina `auto` também.

377 379 


535 537 

536* **Ciclo de vida automático**: servidores se conectam e desconectam nestes pontos:538* **Ciclo de vida automático**: servidores se conectam e desconectam nestes pontos:

537 * Na inicialização da sessão, Claude Code conecta os servidores para plugins ativados automaticamente. Em `/mcp`, um servidor de plugin remoto (HTTP ou SSE) que você usou antes pode mostrar o status [`cached`](#server-status-detail) em vez disso; Claude Code o conecta quando Claude chama pela primeira vez uma de suas ferramentas539 * Na inicialização da sessão, Claude Code conecta os servidores para plugins ativados automaticamente. Em `/mcp`, um servidor de plugin remoto (HTTP ou SSE) que você usou antes pode mostrar o status [`cached`](#server-status-detail) em vez disso; Claude Code o conecta quando Claude chama pela primeira vez uma de suas ferramentas

538 * Se você ativar ou desativar um plugin durante uma sessão, execute `/reload-plugins` para conectar ou desconectar seus servidores MCP. Em uma sessão sem um terminal interativo, o recarregamento não conecta ou desconecta servidores MCP de plugin; essas mudanças entram em vigor em sua próxima sessão540 * Se você ativar ou desativar um plugin durante uma sessão, Claude Code conecta ou desconecta seus servidores MCP quando a mudança se aplica. [Aplicar mudanças de plugin sem reiniciar](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) descreve quando isso é. Em uma sessão sem um terminal interativo, `/reload-plugins` não conecta ou desconecta servidores MCP de plugin; essas mudanças entram em vigor em sua próxima sessão

539 * Quando você recarrega, Claude Code mantém as conexões ativas de servidores de plugin cuja configuração não mudou, e faz o mesmo quando você [substitui a lista de servidores MCP da sessão](/docs/pt/agent-sdk/typescript#mcpsetserversresult) do Agent SDK sem nomeá-los541 * Quando você recarrega, Claude Code mantém as conexões ativas de servidores de plugin cuja configuração não mudou, e faz o mesmo quando você [substitui a lista de servidores MCP da sessão](/docs/pt/agent-sdk/typescript#mcpsetserversresult) do Agent SDK sem nomeá-los

540 * Quando você [move a sessão com `/cd`](/docs/pt/permissions#move-the-session-to-another-directory) na v2.1.246 ou posterior, Claude Code conecta os servidores de plugins que as configurações do novo diretório ativam e desconecta os servidores de plugins que não estão mais ativados, portanto você não precisa executar `/reload-plugins` após a mudança542 * Quando você [move a sessão com `/cd`](/docs/pt/permissions#move-the-session-to-another-directory) na v2.1.246 ou posterior, Claude Code conecta os servidores de plugins que as configurações do novo diretório ativam e desconecta os servidores de plugins que não estão mais ativados, portanto você não precisa executar `/reload-plugins` após a mudança

541 * Em [sessões web](/docs/pt/claude-code-on-the-web), uma chamada MCP para um servidor de plugin que ainda não está conectado, como logo após uma sessão ociosa acordar, inicia o servidor sob demanda e aguarda sua conexão543 * Em [sessões web](/docs/pt/claude-code-on-the-web), uma chamada MCP para um servidor de plugin que ainda não está conectado, como logo após uma sessão ociosa acordar, inicia o servidor sob demanda e aguarda sua conexão


634 636 

635Por razões de segurança, Claude Code solicita aprovação em sessões interativas antes de usar servidores com escopo de projeto de arquivos `.mcp.json`. Para redefinir essas escolhas de aprovação, execute `claude mcp reset-project-choices`.637Por razões de segurança, Claude Code solicita aprovação em sessões interativas antes de usar servidores com escopo de projeto de arquivos `.mcp.json`. Para redefinir essas escolhas de aprovação, execute `claude mcp reset-project-choices`.

636 638 

637Em execuções `claude -p`, sessões do [Agent SDK](/docs/pt/headless) e [sessões na nuvem](/docs/pt/claude-code-on-the-web), Claude Code não pode mostrar esse prompt: ele carrega servidores com escopo de projeto sem perguntar. Claude Code também ignora o prompt em uma sessão que você inicia no modo `bypassPermissions` com [`skipDangerousModePermissionPrompt`](/docs/pt/settings-reference#skipdangerousmodepermissionprompt) definido. Para manter um servidor fora mesmo assim:639Em execuções `claude -p`, sessões do [Agent SDK](/docs/pt/headless) e [sessões na nuvem](/docs/pt/claude-code-on-the-web), Claude Code não pode mostrar esse prompt: ele carrega servidores com escopo de projeto sem perguntar. Claude Code também ignora o prompt em uma sessão que você inicia no modo `bypassPermissions` com [`skipDangerousModePermissionPrompt`](/docs/pt/settings-reference#skipdangerousmodepermissionprompt) definido em suas configurações de usuário ou em configurações gerenciadas. Para manter um servidor fora mesmo assim:

638 640 

639* Adicione-o a [`disabledMcpjsonServers`](/docs/pt/settings-reference#disabledmcpjsonservers), que o bloqueia em todos os modos de permissão.641* Adicione-o a [`disabledMcpjsonServers`](/docs/pt/settings-reference#disabledmcpjsonservers), que o bloqueia em todos os modos de permissão.

640* Exclua as configurações do projeto inteiramente com [`--setting-sources`](/docs/pt/cli-reference#cli-flags) ou a opção `settingSources` do SDK.642* Exclua as configurações do projeto inteiramente com [`--setting-sources`](/docs/pt/cli-reference#cli-flags) ou a opção `settingSources` do SDK.


778* Para um servidor no qual você ainda não fez login, qualquer código de status o sinaliza em `/mcp` para que você possa completar o fluxo OAuth.780* Para um servidor no qual você ainda não fez login, qualquer código de status o sinaliza em `/mcp` para que você possa completar o fluxo OAuth.

779* Para um [conector claude.ai](#use-mcp-servers-from-claude-ai), um `401` causado por claude.ai rejeitando seu token de sessão não sinaliza o conector, porque re-autorizar o conector não pode corrigir seu login. Claude Code mostra o [estado de token de sessão rejeitado](/docs/pt/errors#claude-ai-rejected-the-session-token) em vez disso.781* Para um [conector claude.ai](#use-mcp-servers-from-claude-ai), um `401` causado por claude.ai rejeitando seu token de sessão não sinaliza o conector, porque re-autorizar o conector não pode corrigir seu login. Claude Code mostra o [estado de token de sessão rejeitado](/docs/pt/errors#claude-ai-rejected-the-session-token) em vez disso.

780* Para um servidor cujo cabeçalho `Authorization` você configurou, em `headers` ou através de um [`headersHelper`](#use-dynamic-headers-for-custom-authentication), um `401` ou `403` ao conectar não sinaliza o servidor, porque a credencial a corrigir é a que você configurou. Claude Code relata a conexão como falha em vez disso.782* Para um servidor cujo cabeçalho `Authorization` você configurou, em `headers` ou através de um [`headersHelper`](#use-dynamic-headers-for-custom-authentication), um `401` ou `403` ao conectar não sinaliza o servidor, porque a credencial a corrigir é a que você configurou. Claude Code relata a conexão como falha em vez disso.

783* Para um conector [entregue a uma sessão em nuvem](#how-connectors-reach-claude-code), Claude Code não executa um fluxo de login, porque o proxy da sessão se autentica no conector com a autorização que você concedeu em claude.ai. Quando um conector lá precisa ser autorizado novamente, reconecte-o em [claude.ai/customize/connectors](https://claude.ai/customize/connectors) em vez de a partir da sessão.

781 784 

782Quando uma solicitação para um servidor OAuth no qual você já fez login retorna `401 Unauthorized`, Claude Code atualiza o token armazenado, reconecta e tenta a solicitação novamente uma vez. Ele sinaliza o servidor em `/mcp` apenas se essa tentativa também falhar. Antes da v2.1.206, uma atualização de token que falhava por um motivo transitório, como um erro de rede, sinalizava um servidor OAuth como necessitando autenticação pelo resto da sessão, mesmo que seu token de atualização ainda fosse válido.785Quando uma solicitação para um servidor OAuth no qual você já fez login retorna `401 Unauthorized`, Claude Code atualiza o token armazenado, reconecta e tenta a solicitação novamente uma vez. Ele sinaliza o servidor em `/mcp` apenas se essa tentativa também falhar. Antes da v2.1.206, uma atualização de token que falhava por um motivo transitório, como um erro de rede, sinalizava um servidor OAuth como necessitando autenticação pelo resto da sessão, mesmo que seu token de atualização ainda fosse válido.

783 786 


923 Dicas:926 Dicas:

924 927 

925 * O segredo do cliente é armazenado com segurança no seu chaveiro do sistema (macOS) ou em um arquivo de credenciais, não na sua configuração928 * O segredo do cliente é armazenado com segurança no seu chaveiro do sistema (macOS) ou em um arquivo de credenciais, não na sua configuração

929 * Você pode definir o segredo do cliente apenas quando adiciona o servidor. Quando você se autentica com `claude mcp login` ou a partir de `/mcp`, Claude Code usa o segredo armazenado e não solicita um ou lê `MCP_CLIENT_SECRET`

930 * Para adicionar ou alterar o segredo depois, remova o servidor com `claude mcp remove <name>`, depois adicione-o novamente com `--client-secret` e o mesmo `--scope`

926 * Se o servidor usar um cliente OAuth público sem segredo, use apenas `--client-id` sem `--client-secret`931 * Se o servidor usar um cliente OAuth público sem segredo, use apenas `--client-id` sem `--client-secret`

927 * Essas flags se aplicam apenas aos transportes HTTP e SSE. Elas não têm efeito em servidores stdio932 * Essas flags se aplicam apenas aos transportes HTTP e SSE. Elas não têm efeito em servidores stdio

928 * Use `claude mcp get <name>` para verificar se as credenciais OAuth estão configuradas para um servidor933 * Use `claude mcp get <name>` para verificar se as credenciais OAuth estão configuradas para um servidor


1328* **Limite configurável**: você pode ajustar o máximo de tokens de saída do MCP permitidos usando a variável de ambiente `MAX_MCP_OUTPUT_TOKENS`1333* **Limite configurável**: você pode ajustar o máximo de tokens de saída do MCP permitidos usando a variável de ambiente `MAX_MCP_OUTPUT_TOKENS`

1329* **Limite padrão**: o máximo padrão é 25.000 tokens1334* **Limite padrão**: o máximo padrão é 25.000 tokens

1330* **Escopo**: a variável de ambiente se aplica a ferramentas que não declaram seu próprio limite. Ferramentas que definem [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) usam esse valor em vez disso para conteúdo de texto, independentemente do que `MAX_MCP_OUTPUT_TOKENS` está definido. Ferramentas que retornam dados de imagem ainda estão sujeitas a `MAX_MCP_OUTPUT_TOKENS`1335* **Escopo**: a variável de ambiente se aplica a ferramentas que não declaram seu próprio limite. Ferramentas que definem [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) usam esse valor em vez disso para conteúdo de texto, independentemente do que `MAX_MCP_OUTPUT_TOKENS` está definido. Ferramentas que retornam dados de imagem ainda estão sujeitas a `MAX_MCP_OUTPUT_TOKENS`

1336* **Acima do limite**: quando um resultado sem conteúdo de imagem excede o limite, Claude Code o salva em um arquivo e o substitui na conversa com uma mensagem que nomeia o caminho do arquivo, para que Claude leia o arquivo quando precisar do conteúdo. O arquivo fica no diretório `tool-results` da sessão em [`~/.claude/projects/`](/docs/pt/claude-directory#cleaned-up-automatically).

1331 1337 

1332Para aumentar o limite para ferramentas que produzem grandes saídas:1338Para aumentar o limite para ferramentas que produzem grandes saídas:

1333 1339 

memory.md +4 −2

Details

275 Compartilhe regras entre projetos com symlinks275 Compartilhe regras entre projetos com symlinks

276</h4>276</h4>

277 277 

278O diretório `.claude/rules/` suporta symlinks, então você pode manter um conjunto compartilhado de regras e vinculá-las em múltiplos projetos. Symlinks são resolvidos e carregados normalmente, e symlinks circulares são detectados e tratados graciosamente.278O diretório `.claude/rules/` suporta symlinks, então você pode manter um conjunto compartilhado de regras e vinculá-las em múltiplos projetos. Symlinks circulares são detectados e tratados graciosamente.

279 

280Claude Code trata um symlink cujo alvo está fora do seu diretório de trabalho como uma [importação externa](#import-additional-files). As regras vinculadas não são carregadas até que você aprove importações externas para o projeto, e depois disso apenas as sem um campo [`paths`](#path-specific-rules) são carregadas. Claude Code pede essa aprovação apenas quando um arquivo de memória de projeto importa um arquivo fora do diretório de trabalho com `@path`, não para symlinks sozinhos. Para carregar regras compartilhadas sem essa aprovação, mantenha-as em [`~/.claude/rules/`](#user-level-rules), onde se aplicam a cada projeto na sua máquina.

279 281 

280Este exemplo vincula tanto um diretório compartilhado quanto um arquivo individual:282Este exemplo vincula tanto um diretório compartilhado quanto um arquivo individual:

281 283 


493 495 

494Se a instrução é algo que deve ser executado em um ponto específico, como antes de cada commit ou após cada edição de arquivo, escreva-a como um [hook](/docs/pt/hooks-guide) em vez disso. Hooks são executados como comandos shell em eventos de ciclo de vida fixos e se aplicam independentemente do que Claude decidir fazer.496Se a instrução é algo que deve ser executado em um ponto específico, como antes de cada commit ou após cada edição de arquivo, escreva-a como um [hook](/docs/pt/hooks-guide) em vez disso. Hooks são executados como comandos shell em eventos de ciclo de vida fixos e se aplicam independentemente do que Claude decidir fazer.

495 497 

496Para instruções que você quer no nível do prompt do sistema, use [`--append-system-prompt`](/docs/pt/cli-reference#system-prompt-flags). Isso deve ser passado a cada invocação, então é mais adequado para scripts e automação do que para uso interativo.498Para instruções que você quer no nível do prompt do sistema, use [`--append-system-prompt`](/docs/pt/cli-reference#system-prompt-flags). Você passa isso no lançamento, então é mais adequado para scripts e automação do que para uso interativo. Para como se comporta quando você retoma uma conversa, veja [Sinalizadores de prompt do sistema em conversas retomadas](/docs/pt/cli-reference#system-prompt-flags-in-resumed-conversations).

497 499 

498<Tip>500<Tip>

499 Use o hook [`InstructionsLoaded`](/docs/pt/hooks#instructionsloaded) para registrar exatamente quais arquivos de instrução são carregados, quando são carregados e por quê. Isso é útil para depurar regras específicas de caminho ou arquivos carregados preguiçosamente em subdiretórios.501 Use o hook [`InstructionsLoaded`](/docs/pt/hooks#instructionsloaded) para registrar exatamente quais arquivos de instrução são carregados, quando são carregados e por quê. Isso é útil para depurar regras específicas de caminho ou arquivos carregados preguiçosamente em subdiretórios.

mobile.md +104 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code no celular

6 

7> Inicie, monitore e dirija tarefas do Claude Code do seu telefone com o aplicativo Claude para iOS e Android.

8 

9O aplicativo Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) e [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) é um cliente para sessões do Claude Code em vez de um lugar onde o código é executado. Do seu telefone você acessa [sessões na nuvem](#start-and-monitor-cloud-sessions) na nuvem, uma sessão em execução em sua própria máquina através do [Remote Control](#continue-a-local-session-with-remote-control), ou o aplicativo Desktop através do [Dispatch](/docs/pt/desktop#sessions-from-dispatch).

10 

11<Note>

12 Claude Code não tem um aplicativo móvel separado: sessões na nuvem e Remote Control vivem na aba **Code** no aplicativo Claude, e Dispatch é uma tarefa para a qual você envia mensagens no aplicativo.

13</Note>

14 

15<h2 id="get-the-app">

16 Obtenha o aplicativo

17</h2>

18 

19<Steps>

20 <Step title="Baixe o aplicativo Claude">

21 Instale o aplicativo Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) ou [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). Em um iPad, instale o mesmo aplicativo iOS.

22 

23 <Tip>

24 Execute `/mobile` em uma sessão do Claude Code para exibir um código QR de download que você pode escanear. `/ios` e `/android` fazem a mesma coisa.

25 </Tip>

26 </Step>

27 

28 <Step title="Faça login">

29 Faça login com a mesma conta claude.ai e organização que você usa para Claude Code. Sessões na nuvem e Remote Control exigem uma conta claude.ai, portanto não são acessíveis com uma chave de API do Anthropic Console ou de um provedor terceirizado como Amazon Bedrock.

30 </Step>

31 

32 <Step title="Abra a aba Code">

33 Toque em **Code** na navegação do aplicativo para acessar suas sessões, ou abra [claude.ai/code/new](https://claude.ai/code/new) no seu telefone para iniciar uma nova sessão Code no aplicativo. Se você não vir a aba Code, seu plano ou organização pode não incluir esses recursos; consulte [disponibilidade por plano de assinatura](/docs/pt/feature-availability#availability-by-subscription-plan).

34 </Step>

35</Steps>

36 

37<h2 id="work-from-your-phone">

38 Trabalhe do seu telefone

39</h2>

40 

41Do aplicativo você pode iniciar sessões na nuvem, dirigir uma sessão do Claude Code em execução no seu computador, ou enviar uma tarefa para o Dispatch. O aplicativo é o mesmo para os três; eles diferem em onde o trabalho acontece.

42 

43| Recurso | O que você conecta | Quando usar |

44| :----------------------------------------------- | :----------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

45| [Claude Code na web](/docs/pt/claude-code-on-the-web) | Uma sessão na nuvem na infraestrutura de nuvem, gerenciada pela Anthropic por padrão | Seu repositório está no GitHub e a tarefa deve continuar em execução depois que você guardar seu telefone. Consulte o [guia de início rápido da web](/docs/pt/web-quickstart) para configurar. |

46| [Remote Control](/docs/pt/remote-control) | Uma sessão do Claude Code em execução no seu computador | O trabalho precisa do seu sistema de arquivos local, ferramentas ou servidores MCP. |

47| [Dispatch](/docs/pt/desktop#sessions-from-dispatch) | O aplicativo Desktop no seu computador | Você quer enviar uma tarefa e deixar o Dispatch decidir como executá-la. Requer um plano Pro ou Max. |

48 

49Se seu computador estiver desligado, use sessões na nuvem, que são executadas na nuvem e continuam com seu laptop fechado. Remote Control e Dispatch dirigem sua própria máquina, portanto ela precisa permanecer ligada com Claude Code ou o aplicativo Desktop em execução. Se sua máquina hibernar durante uma sessão Remote Control, Claude Code se reconecta quando a máquina volta a ficar online.

50 

51Para uma comparação mais completa, consulte [trabalhe quando estiver longe do seu terminal](/docs/pt/platforms#work-when-you-are-away-from-your-terminal).

52 

53Sessões na nuvem e Remote Control são executadas a partir da aba **Code**. Para Dispatch, que você envia como uma tarefa no aplicativo, consulte [sessões do Dispatch](/docs/pt/desktop#sessions-from-dispatch).

54 

55<h3 id="start-and-monitor-cloud-sessions">

56 Inicie e monitore sessões na nuvem

57</h3>

58 

59Claude Code na web executa tarefas na infraestrutura de nuvem, gerenciada pela Anthropic por padrão, portanto uma sessão continua depois que você guarda seu telefone. Na aba Code, selecione um repositório e branch, descreva a tarefa e envie-a. As sessões persistem entre dispositivos: uma tarefa que você inicia no seu laptop está pronta para revisar do seu telefone, e uma que você inicia do seu telefone está esperando quando você volta à sua mesa.

60 

61Abra uma sessão no aplicativo para verificar o progresso, responder às perguntas do Claude ou dirigi-lo em uma nova direção. Você também pode dizer ao Claude para [observar um pull request](/docs/pt/claude-code-on-the-web#auto-fix-pull-requests) e corrigir falhas de CI ou comentários de revisão conforme chegam. Para conectar o GitHub e configurar seu ambiente, siga o [guia de início rápido da web](/docs/pt/web-quickstart), e consulte [Claude Code na web](/docs/pt/claude-code-on-the-web) para tudo que as sessões na nuvem podem fazer.

62 

63<h3 id="continue-a-local-session-with-remote-control">

64 Continue uma sessão local com Remote Control

65</h3>

66 

67Remote Control conecta o aplicativo Claude a uma sessão do Claude Code em execução em sua máquina, portanto a execução de código e o acesso ao sistema de arquivos permanecem locais enquanto você dirige a sessão do seu telefone. Inicie a sessão no seu computador com `claude remote-control`, ou execute `/remote-control` em uma sessão que já está aberta. Em seguida, escaneie o código QR da sessão que o terminal pode exibir, ou abra o aplicativo Claude, toque em **Code** e escolha a sessão na lista. Consulte [conectar de outro dispositivo](/docs/pt/remote-control#connect-from-another-device) para cada opção.

68 

69Quando você adiciona um anexo no aplicativo Claude, ele também chega à sessão local:

70 

71* **Fotos**: Claude vê fotos anexadas diretamente como parte de sua mensagem. Claude Code também salva cada foto em `~/.claude/uploads/` e diz ao Claude o caminho do arquivo salvo, para que Claude possa copiar a imagem em arquivos que cria.

72* **Outros arquivos**: Claude Code os baixa para sua máquina e os passa para Claude como referências de arquivo `@`.

73 

74Para requisitos, modos de invocação e solução de problemas, consulte a [visão geral do Remote Control](/docs/pt/remote-control).

75 

76<h3 id="get-push-notifications">

77 Obtenha notificações push

78</h3>

79 

80Quando Remote Control está ativo, Claude pode enviar notificações push para seu telefone, normalmente quando uma tarefa de longa duração termina ou quando precisa de uma decisão sua. Você também pode solicitar uma em seu prompt, como `notify me when the tests finish`. Consulte [notificações push móveis](/docs/pt/remote-control#mobile-push-notifications) para os dois toggles `/config` e solução de problemas de entrega.

81 

82Dispatch envia sua própria notificação quando uma sessão Code que ele gerou termina ou precisa de sua aprovação, descrito em [sessões do Dispatch](/docs/pt/desktop#sessions-from-dispatch).

83 

84<h2 id="limitations">

85 Limitações

86</h2>

87 

88O cliente móvel cobre a maioria do que uma sessão precisa, com algumas limitações:

89 

90* **Comandos somente locais**: comandos que só são executados na interface do terminal, como `/plugin` e `/resume`, não funcionam do aplicativo. As [limitações do Remote Control](/docs/pt/remote-control#limitations) listam os comandos que funcionam do celular e como seu comportamento difere.

91* **Modos de permissão**: sessões na nuvem oferecem Accept edits, Plan e Auto no menu suspenso de modo, e sessões Remote Control oferecem Manual, Accept edits e Plan. Você não pode selecionar Bypass permissions do aplicativo em nenhum dos casos, e você não pode selecionar Auto para uma sessão Remote Control. Consulte [alternar modos de permissão](/docs/pt/permission-modes#switch-permission-modes).

92* **Planos do Dispatch**: Dispatch requer um plano Pro ou Max e não está disponível em Team ou Enterprise.

93 

94<h2 id="related-resources">

95 Recursos relacionados

96</h2>

97 

98* [Plataformas e integrações](/docs/pt/platforms): compare todas as superfícies em que Claude Code é executado

99* [Claude Code na web](/docs/pt/claude-code-on-the-web): como as sessões na nuvem são executadas e como mover trabalho para e do seu terminal

100* [Configure ambientes na nuvem](/docs/pt/cloud-environments): níveis de acesso à rede, variáveis de ambiente e scripts de configuração para sessões na nuvem

101* [Remote Control](/docs/pt/remote-control): continue uma sessão local de qualquer dispositivo

102* [Sessões do Dispatch](/docs/pt/desktop#sessions-from-dispatch): como as tarefas do Dispatch se tornam sessões Code no aplicativo Desktop

103* [Channels](/docs/pt/channels): pergunte algo ao Claude do seu telefone via Telegram, Discord ou iMessage enquanto o trabalho é executado em sua máquina

104* [Claude Code no Slack](/docs/pt/slack): delegue tarefas de codificação do seu espaço de trabalho Slack mencionando `@Claude`

Details

219**`claude_code.interaction`**219**`claude_code.interaction`**

220 220 

221| Atributo | Descrição | Controlado Por |221| Atributo | Descrição | Controlado Por |

222| ------------------------- | -------------------------------------------------------------------------- | ----------------------- |222| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- |

223| `user_prompt` | Texto do prompt. O valor é `<REDACTED>` a menos que o gate esteja definido | `OTEL_LOG_USER_PROMPTS` |223| `user_prompt` | Texto do prompt. O valor é `<REDACTED>` a menos que o gate esteja definido | `OTEL_LOG_USER_PROMPTS` |

224| `user_prompt_length` | Comprimento do prompt em caracteres | |224| `user_prompt_length` | Comprimento do prompt em caracteres | |

225| `interaction.sequence` | Contador baseado em 1 de interações nesta sessão | |225| `interaction.sequence` | Contador baseado em 1 de interações nesta sessão | |

226| `parent.source` | Como o span obteve seu pai de rastreamento: `env` quando foi pai sob um `TRACEPARENT` de entrada, `none` quando iniciou seu próprio rastreamento. Requer Claude Code v2.1.268 ou posterior | |

226| `interaction.duration_ms` | Duração de parede do turno | |227| `interaction.duration_ms` | Duração de parede do turno | |

227 228 

228**`claude_code.llm_request`**229**`claude_code.llm_request`**

229 230 

230| Atributo | Descrição | Controlado Por |231| Atributo | Descrição | Controlado Por |

231| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |232| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |

232| `model` | Identificador do modelo | |233| `model` | Identificador do modelo | |

233| `gen_ai.system` | Sempre `anthropic`. Convenção semântica GenAI OpenTelemetry | |234| `gen_ai.system` | Sempre `anthropic`. Convenção semântica GenAI OpenTelemetry | |

234| `gen_ai.request.model` | Mesmo valor que `model`. Convenção semântica GenAI OpenTelemetry | |235| `gen_ai.request.model` | Mesmo valor que `model`. Convenção semântica GenAI OpenTelemetry | |

235| `query_source` | Subsistema que emitiu a solicitação, como `repl_main_thread` ou um nome de subagente | |236| `query_source` | Subsistema que emitiu a solicitação, como `repl_main_thread` ou um nome de subagente | `ENABLE_BETA_TRACING_DETAILED` |

237| `query_source_safe` | Forma limitada de `query_source`, emitida independentemente de rastreamento beta detalhado estar ativo, com valores como `repl_main_thread` ou `agent.builtin.general-purpose`. `:` se torna `.` e agentes nomeados pelo usuário aparecem como `agent.custom`. Requer Claude Code v2.1.268 ou posterior | |

236| `agent_id` | Identificador do subagente ou colega que emitiu a solicitação. Ausente na sessão principal | |238| `agent_id` | Identificador do subagente ou colega que emitiu a solicitação. Ausente na sessão principal | |

237| `parent_agent_id` | Identificador do agente que gerou este. Ausente para a sessão principal e para agentes gerados diretamente a partir dela | |239| `parent_agent_id` | Identificador do agente que gerou este. Ausente para a sessão principal e para agentes gerados diretamente a partir dela | |

238| `workflow.run_id` | Identificador de execução da ferramenta [Workflow](/docs/pt/workflows) que gerou este agente, prefixado `wf_`. Ausente para agentes não gerados por um workflow | |240| `workflow.run_id` | Identificador de execução da ferramenta [Workflow](/docs/pt/workflows) que gerou este agente, prefixado `wf_`. Ausente para agentes não gerados por um workflow | |


241| `llm_request.context` | `interaction`, `tool` ou `standalone` dependendo do span pai | |243| `llm_request.context` | `interaction`, `tool` ou `standalone` dependendo do span pai | |

242| `duration_ms` | Duração de parede incluindo tentativas | |244| `duration_ms` | Duração de parede incluindo tentativas | |

243| `ttft_ms` | Tempo até o primeiro token em milissegundos | |245| `ttft_ms` | Tempo até o primeiro token em milissegundos | |

246| `first_content_ms` | Tempo desde o início da solicitação até o primeiro bloco de conteúdo da tentativa bem-sucedida, em milissegundos. Ausente em solicitações que voltaram para o caminho não-streaming. Requer Claude Code v2.1.268 ou posterior | |

244| `input_tokens` | Contagem de tokens de entrada do bloco de uso da API | |247| `input_tokens` | Contagem de tokens de entrada do bloco de uso da API | |

245| `output_tokens` | Contagem de tokens de saída | |248| `output_tokens` | Contagem de tokens de saída | |

246| `cache_read_tokens` | Tokens lidos do cache de prompt | |249| `cache_read_tokens` | Tokens lidos do cache de prompt | |


252| `success` | `true` ou `false` | |255| `success` | `true` ou `false` | |

253| `status_code` | Código de status HTTP quando a solicitação falhou | |256| `status_code` | Código de status HTTP quando a solicitação falhou | |

254| `error` | Mensagem de erro quando a solicitação falhou | |257| `error` | Mensagem de erro quando a solicitação falhou | |

258| `error_class` | Token de classe de erro curto quando a solicitação falhou, como `api_timeout` ou `server_overload`. Requer Claude Code v2.1.268 ou posterior | |

255| `response.has_tool_call` | `true` quando a resposta continha blocos de uso de ferramenta | |259| `response.has_tool_call` | `true` quando a resposta continha blocos de uso de ferramenta | |

256| `stop_reason` | API response `stop_reason`, como `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` ou `refusal` | |260| `stop_reason` | API response `stop_reason`, como `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` ou `refusal` | |

257| `gen_ai.response.finish_reasons` | Mesmo valor que `stop_reason`, envolvido em um array de string. Convenção semântica GenAI OpenTelemetry | |261| `gen_ai.response.finish_reasons` | Mesmo valor que `stop_reason`, envolvido em um array de string. Convenção semântica GenAI OpenTelemetry | |


261**`claude_code.tool`**265**`claude_code.tool`**

262 266 

263| Atributo | Descrição | Controlado Por |267| Atributo | Descrição | Controlado Por |

264| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |268| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

265| `tool_name` | Nome da ferramenta | |269| `tool_name` | Nome da ferramenta | |

270| `tool_name_safe` | Forma de `tool_name` que não carrega nomes escolhidos pelo usuário. Nomes de ferramentas integradas passam verbatim. Nomes de ferramentas MCP aparecem como `mcp_other`, exceto nomes de ferramentas que correspondem a algumas formas fixas, como ferramentas `playwright` nomeadas `browser_*`, que passam verbatim. Requer Claude Code v2.1.268 ou posterior | |

271| `bash_command_class` | Para a ferramenta Bash: categoria do primeiro programa do comando de uma lista fixa, como `vcs` ou `package_manager`. `other` para um programa fora da lista, `unparsed` quando a linha não pode ser analisada. Requer Claude Code v2.1.268 ou posterior | |

272| `bash_argv0` | Para a ferramenta Bash: o primeiro programa do comando quando está na mesma lista fixa, como `git` ou `npm`. `other` para qualquer programa fora da lista. Requer Claude Code v2.1.268 ou posterior | |

266| `duration_ms` | Duração de parede incluindo espera de permissão e execução | |273| `duration_ms` | Duração de parede incluindo espera de permissão e execução | |

267| `result_tokens` | Tamanho aproximado em tokens do resultado da ferramenta | |274| `result_tokens` | Tamanho aproximado em tokens do resultado da ferramenta | |

268| `agent_id` | Identificador do subagente ou colega que executou a ferramenta. Ausente na sessão principal | |275| `agent_id` | Identificador do subagente ou colega que executou a ferramenta. Ausente na sessão principal | |


289**`claude_code.tool.execution`**296**`claude_code.tool.execution`**

290 297 

291| Atributo | Descrição | Controlado Por |298| Atributo | Descrição | Controlado Por |

292| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |299| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

293| `duration_ms` | Tempo gasto executando o corpo da ferramenta | |300| `duration_ms` | Tempo gasto executando o corpo da ferramenta | |

294| `tool_use_id` | Mesmo valor que no span pai `claude_code.tool` | |301| `tool_use_id` | Mesmo valor que no span pai `claude_code.tool` | |

295| `gen_ai.tool.call.id` | Mesmo valor que `tool_use_id`. Convenção semântica GenAI OpenTelemetry | |302| `gen_ai.tool.call.id` | Mesmo valor que `tool_use_id`. Convenção semântica GenAI OpenTelemetry | |

296| `success` | `true` ou `false` | |303| `success` | `true` ou `false` | |

297| `error` | String de categoria de erro quando a execução falhou, como `Error:ENOENT` ou `ShellError`. Contém a mensagem de erro completa em vez disso quando o gate está definido | `OTEL_LOG_TOOL_DETAILS` |304| `error` | String de categoria de erro quando a execução falhou, como `Error:ENOENT` ou `ShellError`. Contém a mensagem de erro completa em vez disso quando o gate está definido | `OTEL_LOG_TOOL_DETAILS` |

305| `error_class` | A categoria de erro em forma de identificador, com caracteres fora de letras, dígitos e sublinhados substituídos por `_`, como `Error_ENOENT` ou `ShellError`. Carrega a categoria mesmo quando `error` carrega a mensagem completa. Requer Claude Code v2.1.268 ou posterior | |

298 306 

299**`claude_code.hook`**307**`claude_code.hook`**

300 308 


499| `user.account_uuid` | UUID da conta (quando autenticado) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (padrão: true) |507| `user.account_uuid` | UUID da conta (quando autenticado) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (padrão: true) |

500| `user.account_id` | ID da conta em formato marcado correspondendo às APIs de administrador Anthropic (quando autenticado), como `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (padrão: true) |508| `user.account_id` | ID da conta em formato marcado correspondendo às APIs de administrador Anthropic (quando autenticado), como `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (padrão: true) |

501| `user.id` | Identificador anônimo aleatório gerado na primeira execução e persistido em `~/.claude.json`. Não contém informações pessoais e não é derivado da sua conta Claude. Deletar o arquivo produz um novo valor não relacionado na próxima execução. | Sempre incluído |509| `user.id` | Identificador anônimo aleatório gerado na primeira execução e persistido em `~/.claude.json`. Não contém informações pessoais e não é derivado da sua conta Claude. Deletar o arquivo produz um novo valor não relacionado na próxima execução. | Sempre incluído |

502| `user.email` | Endereço de email do usuário (quando autenticado via OAuth) | Sempre incluído quando disponível |510| `user.email` | Endereço de email do usuário, do seu login ou, em uma [sessão na nuvem](/docs/pt/claude-code-on-the-web), das credenciais da própria sessão | Sempre incluído quando disponível |

503| `terminal.type` | Tipo de terminal, como `iTerm.app`, `vscode`, `cursor` ou `tmux` | Sempre incluído quando detectado |511| `terminal.type` | Tipo de terminal, como `iTerm.app`, `vscode`, `cursor` ou `tmux` | Sempre incluído quando detectado |

504| Chaves de `OTEL_RESOURCE_ATTRIBUTES` | Atributos personalizados que você define, como `department` ou `team.id`. Veja [Suporte a organização multi-equipe](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (padrão: true) |512| Chaves de `OTEL_RESOURCE_ATTRIBUTES` | Atributos personalizados que você define, como `department` ou `team.id`. Veja [Suporte a organização multi-equipe](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (padrão: true) |

505 513 


1329 1337 

1330Claude Code retenta solicitações de API falhadas internamente e emite um único evento `claude_code.api_error` apenas depois de desistir, então o evento em si é o sinal terminal para essa solicitação. Tentativas de repetição intermediárias não são registradas como eventos separados.1338Claude Code retenta solicitações de API falhadas internamente e emite um único evento `claude_code.api_error` apenas depois de desistir, então o evento em si é o sinal terminal para essa solicitação. Tentativas de repetição intermediárias não são registradas como eventos separados.

1331 1339 

1332O atributo `attempt` no evento registra o número total de tentativas. `CLAUDE_CODE_MAX_RETRIES` tem como padrão 10 e é limitado a 15; a partir da v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` aumenta o padrão e remove o limite. Quando a solicitação esgota todas as tentativas em um erro transitório, `attempt` é igual a um a mais do que esse limite efetivo: 11 por padrão, e nunca mais de 16 a menos que o watchdog esteja definido. Um valor menor indica um erro não retentável, como uma resposta `400`.1340O atributo `attempt` no evento registra o número total de tentativas. `CLAUDE_CODE_MAX_RETRIES` tem como padrão 10 e é limitado a 15. A partir da v2.1.199, você pode definir `CLAUDE_CODE_RETRY_WATCHDOG` para aumentar o padrão e remover o limite.

1341 

1342Quando a solicitação esgota todas as tentativas em um erro transitório, `attempt` é igual a um a mais do que esse limite efetivo: 11 por padrão, e nunca mais de 16 a menos que o watchdog esteja definido. Um valor menor indica um erro não retentável, como uma resposta `400`, ou uma causa com seu próprio orçamento de tentativas menor. Por exemplo, Claude Code retenta uma falha ao carregar credenciais da AWS ou Google Cloud no máximo duas vezes.

1333 1343 

1334Para distinguir uma sessão que se recuperou de uma que travou, agrupe eventos por `session.id` e verifique se um evento `api_request` posterior existe após o erro.1344Para distinguir uma sessão que se recuperou de uma que travou, agrupe eventos por `session.id` e verifique se um evento `api_request` posterior existe após o erro.

1335 1345 


1358 Atribuir ações a usuários1368 Atribuir ações a usuários

1359</h3>1369</h3>

1360 1370 

1361Os [atributos padrão](#standard-attributes) em cada evento incluem a identidade do usuário autenticado: `user.email`, `user.account_uuid`, `user.account_id` e `organization.id` quando conectado com uma conta Claude, mais `user.id` e o `session.id` por sessão. `user.id` é um identificador com escopo de instalação, exceto em sessões do [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway), onde é o assunto do IdP do token emitido pelo gateway.1371Os [atributos padrão](#standard-attributes) em cada evento incluem a identidade do usuário autenticado: `user.email`, `user.account_uuid`, `user.account_id` e `organization.id` quando conectado com uma conta Claude ou, em uma [sessão na nuvem](/docs/pt/claude-code-on-the-web), quando as credenciais da própria sessão as carregam, mais `user.id` e o `session.id` por sessão. `user.id` é um identificador com escopo de instalação, exceto em sessões do [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway), onde é o assunto do IdP do token emitido pelo gateway.

1362 1372 

1363Chamadas de ferramenta MCP, comandos Bash e edições de arquivo são, portanto, atribuídas ao desenvolvedor que iniciou a sessão. Claude Code não atua sob uma conta de serviço separada; a identidade registrada em cada evento é a própria conta Claude do desenvolvedor, ou a identidade do IdP do desenvolvedor em uma sessão do [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway).1373Chamadas de ferramenta MCP, comandos Bash e edições de arquivo são, portanto, atribuídas ao desenvolvedor que iniciou a sessão. Claude Code não atua sob uma conta de serviço separada; a identidade registrada em cada evento é a própria conta Claude do desenvolvedor, ou a identidade do IdP do desenvolvedor em uma sessão do [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway).

1364 1374 


1486 1496 

1487* A exportação OpenTelemetry para seu backend é opt-in e requer configuração explícita. Para a telemetria operacional separada da Anthropic e como desabilitá-la, consulte [Uso de dados](/docs/pt/data-usage#telemetry-services)1497* A exportação OpenTelemetry para seu backend é opt-in e requer configuração explícita. Para a telemetria operacional separada da Anthropic e como desabilitá-la, consulte [Uso de dados](/docs/pt/data-usage#telemetry-services)

1488* Conteúdos de arquivo brutos e trechos de código não são incluídos em métricas ou eventos. Os spans de rastreamento são um caminho de dados separado: veja o ponto `OTEL_LOG_TOOL_CONTENT` abaixo1498* Conteúdos de arquivo brutos e trechos de código não são incluídos em métricas ou eventos. Os spans de rastreamento são um caminho de dados separado: veja o ponto `OTEL_LOG_TOOL_CONTENT` abaixo

1489* Quando autenticado via OAuth, `user.email` é incluído em atributos de telemetria. Se isso for uma preocupação para sua organização, trabalhe com seu backend de telemetria para filtrar ou reduzir este campo1499* Quando autenticado via OAuth, `user.email` é incluído em atributos de telemetria, enviado apenas para o endpoint OTel que você configura, nunca para a Anthropic. Se isso for uma preocupação para sua organização, trabalhe com seu backend de telemetria para filtrar ou reduzir este campo

1490* O conteúdo do prompt do usuário não é coletado por padrão. Apenas o comprimento do prompt é registrado. Para incluir conteúdo do prompt, defina `OTEL_LOG_USER_PROMPTS=1`1500* O conteúdo do prompt do usuário não é coletado por padrão. Apenas o comprimento do prompt é registrado. Para incluir conteúdo do prompt, defina `OTEL_LOG_USER_PROMPTS=1`

1491* O texto de resposta do assistente não é coletado por padrão. Apenas o comprimento da resposta é registrado. Para incluir texto de resposta, defina `OTEL_LOG_ASSISTANT_RESPONSES=1`. Como todos os dados OpenTelemetry do Claude Code, o texto de resposta é enviado apenas para o endpoint OTel que você configura, nunca para a Anthropic. Quando esta variável não está definida, `OTEL_LOG_USER_PROMPTS` é usado como fallback, portanto defina `OTEL_LOG_ASSISTANT_RESPONSES=0` se você quiser conteúdo de prompt sem conteúdo de resposta1501* O texto de resposta do assistente não é coletado por padrão. Apenas o comprimento da resposta é registrado. Para incluir texto de resposta, defina `OTEL_LOG_ASSISTANT_RESPONSES=1`. Como todos os dados OpenTelemetry do Claude Code, o texto de resposta é enviado apenas para o endpoint OTel que você configura, nunca para a Anthropic. Quando esta variável não está definida, `OTEL_LOG_USER_PROMPTS` é usado como fallback, portanto defina `OTEL_LOG_ASSISTANT_RESPONSES=0` se você quiser conteúdo de prompt sem conteúdo de resposta

1492* Argumentos de entrada de ferramenta e parâmetros não são registrados por padrão. Para incluí-los, defina `OTEL_LOG_TOOL_DETAILS=1`. Para os servidores integrados do Claude Desktop, em sessões que o Claude Desktop possui, `tool_decision` e `tool_result` carregam o par `mcp_server_name`/`mcp_tool_name`, nomes criados pelo host em vez de conteúdo de argumentos, mesmo com a flag desativada. A exceção requer Claude Code v2.1.214 ou posterior. Estes dados são enviados apenas para o endpoint OTEL que você configura, nunca para a Anthropic. Os argumentos ainda podem conter valores sensíveis, portanto configure seu backend de telemetria para filtrar ou reduzir esses atributos conforme necessário. Quando ativado:1502* Argumentos de entrada de ferramenta e parâmetros não são registrados por padrão. Para incluí-los, defina `OTEL_LOG_TOOL_DETAILS=1`. Para os servidores integrados do Claude Desktop, em sessões que o Claude Desktop possui, `tool_decision` e `tool_result` carregam o par `mcp_server_name`/`mcp_tool_name`, nomes criados pelo host em vez de conteúdo de argumentos, mesmo com a flag desativada. A exceção requer Claude Code v2.1.214 ou posterior. Estes dados são enviados apenas para o endpoint OTEL que você configura, nunca para a Anthropic. Os argumentos ainda podem conter valores sensíveis, portanto configure seu backend de telemetria para filtrar ou reduzir esses atributos conforme necessário. Quando ativado:

Details

246| `bridge.claudeusercontent.com` | Ponte WebSocket da [extensão Claude no Chrome](/docs/pt/chrome) |246| `bridge.claudeusercontent.com` | Ponte WebSocket da [extensão Claude no Chrome](/docs/pt/chrome) |

247| `*.frame.claudeusercontent.com` | Leituras de conteúdo de [Artifact](/docs/pt/artifacts). A CLI busca os arquivos de um artifact deste host quando Claude abre um, e apenas quando a ferramenta Artifact está [disponível](/docs/pt/artifacts#availability) para sua conta. Para desativar a ferramenta e remover este requisito, defina [`"enableArtifact": false`](/docs/pt/settings-reference#enableartifact) ou [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/pt/env-vars); Claude Code também honra a configuração [`disableArtifact`](/docs/pt/settings-reference#disableartifact) descontinuada. Consulte [Desabilitar artifacts](/docs/pt/artifacts#disable-artifacts) para saber como essas configurações interagem |247| `*.frame.claudeusercontent.com` | Leituras de conteúdo de [Artifact](/docs/pt/artifacts). A CLI busca os arquivos de um artifact deste host quando Claude abre um, e apenas quando a ferramenta Artifact está [disponível](/docs/pt/artifacts#availability) para sua conta. Para desativar a ferramenta e remover este requisito, defina [`"enableArtifact": false`](/docs/pt/settings-reference#enableartifact) ou [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/pt/env-vars); Claude Code também honra a configuração [`disableArtifact`](/docs/pt/settings-reference#disableartifact) descontinuada. Consulte [Desabilitar artifacts](/docs/pt/artifacts#disable-artifacts) para saber como essas configurações interagem |

248| `raw.githubusercontent.com` | Feed de changelog para [`/release-notes`](/docs/pt/commands). Em sessões interativas, Claude Code também o busca em segundo plano na inicialização quando seu changelog em cache ainda não cobre a versão em execução, como na primeira inicialização após uma atualização; sessões não interativas e em nuvem nunca o buscam |248| `raw.githubusercontent.com` | Feed de changelog para [`/release-notes`](/docs/pt/commands). Em sessões interativas, Claude Code também o busca em segundo plano na inicialização quando seu changelog em cache ainda não cobre a versão em execução, como na primeira inicialização após uma atualização; sessões não interativas e em nuvem nunca o buscam |

249| `*-review.googlesource.com` | Pesquisa de alteração Gerrit em checkouts `googlesource.com`. Quando uma sessão de guia Claude Desktop Code inicia ou retoma em um checkout [confiável](/docs/pt/permissions#project-allow-rules-and-workspace-trust) cujo `origin` é um host `googlesource.com`, Claude Code pergunta anonimamente ao servidor `-review` desse host pela alteração aberta correspondente ao `Change-Id` do HEAD, uma vez por inicialização ou retomada. Outros tipos de sessão pulam a pesquisa, e nenhum outro host Gerrit é contatado. Opcional: desabilite com [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/pt/env-vars) |

249| `http-intake.logs.us5.datadoghq.com` | Eventos de telemetria operacional, enviados apenas quando a CLI usa a API Anthropic diretamente, nunca para Amazon Bedrock, Agent Platform do Google Cloud ou Microsoft Foundry. Opcional: desabilite com [`DISABLE_TELEMETRY`](/docs/pt/data-usage#telemetry-services) ou `DO_NOT_TRACK` |250| `http-intake.logs.us5.datadoghq.com` | Eventos de telemetria operacional, enviados apenas quando a CLI usa a API Anthropic diretamente, nunca para Amazon Bedrock, Agent Platform do Google Cloud ou Microsoft Foundry. Opcional: desabilite com [`DISABLE_TELEMETRY`](/docs/pt/data-usage#telemetry-services) ou `DO_NOT_TRACK` |

250| `browser-intake-us5-datadoghq.com` | Relatórios de erros operacionais, enviados quando a CLI usa a API Anthropic diretamente e um portão de lançamento do lado do servidor os habilita. Opcional: desabilite com `DISABLE_ERROR_REPORTING` ou `DISABLE_TELEMETRY`; consulte [Serviços de telemetria](/docs/pt/data-usage#telemetry-services) |251| `browser-intake-us5-datadoghq.com` | Relatórios de erros operacionais, enviados quando a CLI usa a API Anthropic diretamente e um portão de lançamento do lado do servidor os habilita. Opcional: desabilite com `DISABLE_ERROR_REPORTING` ou `DISABLE_TELEMETRY`; consulte [Serviços de telemetria](/docs/pt/data-usage#telemetry-services) |

251| `formulae.brew.sh` | Verificações de versão de atualização em instalações do Homebrew. Outros métodos de instalação não contatam este host |252| `formulae.brew.sh` | Verificações de versão de atualização em instalações do Homebrew. Outros métodos de instalação não contatam este host |

overview.md +10 −10

Details

18 <Tab title="Terminal">18 <Tab title="Terminal">

19 O CLI completo para trabalhar com Claude Code diretamente em seu terminal. Edite arquivos, execute comandos e gerencie todo o seu projeto a partir da linha de comando.19 O CLI completo para trabalhar com Claude Code diretamente em seu terminal. Edite arquivos, execute comandos e gerencie todo o seu projeto a partir da linha de comando.

20 20 

21 To install Claude Code, use one of the following methods:21 Para instalar Claude Code, use um dos seguintes métodos:

22 22 

23 <Tabs>23 <Tabs>

24 <Tab title="Native Install (Recommended)">24 <Tab title="Instalação Nativa (Recomendado)">

25 **macOS, Linux, WSL:**25 **macOS, Linux, WSL:**

26 26 

27 ```bash theme={null}27 ```bash theme={null}


40 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd40 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

41 ```41 ```

42 42 

43 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.43 Se você vir `The token '&&' is not a valid statement separator`, você está no PowerShell, não no CMD. Se você vir `'irm' is not recognized as an internal or external command`, você está no CMD, não no PowerShell. Seu prompt mostra `PS C:\` quando você está no PowerShell e `C:\` sem o `PS` quando você está no CMD.

44 44 

45 If the install command fails with `syntax error near unexpected token '<'`, a `403`, or another curl error, see [Troubleshoot installation](/docs/en/troubleshoot-install#find-your-error) to match the error to a fix and for alternative install methods.45 Se o comando de instalação falhar com `syntax error near unexpected token '<'`, um `403`, ou outro erro de curl, consulte [Solucionar problemas de instalação](/docs/pt/troubleshoot-install#find-your-error) para corresponder o erro a uma correção e para métodos alternativos de instalação.

46 46 

47 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.47 [Git for Windows](https://git-scm.com/downloads/win) é recomendado no Windows nativo para que Claude Code possa usar a ferramenta Bash. Se Git for Windows não estiver instalado, Claude Code usa PowerShell como ferramenta de shell. Configurações WSL não precisam de Git for Windows.

48 48 

49 <Info>49 <Info>

50 Native installations automatically update in the background to keep you on the latest version.50 As instalações nativas são atualizadas automaticamente em segundo plano para mantê-lo na versão mais recente.

51 </Info>51 </Info>

52 </Tab>52 </Tab>

53 53 


56 brew install --cask claude-code56 brew install --cask claude-code

57 ```57 ```

58 58 

59 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.59 Homebrew oferece dois casks. `claude-code` rastreia o canal de versão estável, que normalmente fica cerca de uma semana atrás e pula versões com regressões importantes. `claude-code@latest` rastreia o canal mais recente e recebe novas versões assim que são lançadas.

60 60 

61 <Info>61 <Info>

62 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.62 As instalações do Homebrew não são atualizadas automaticamente. Execute `brew upgrade claude-code` ou `brew upgrade claude-code@latest`, dependendo de qual cask você instalou, para obter os recursos mais recentes e correções de segurança.

63 </Info>63 </Info>

64 </Tab>64 </Tab>

65 65 


69 ```69 ```

70 70 

71 <Info>71 <Info>

72 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.72 As instalações do WinGet não são atualizadas automaticamente. Execute `winget upgrade Anthropic.ClaudeCode` periodicamente para obter os recursos mais recentes e correções de segurança.

73 </Info>73 </Info>

74 </Tab>74 </Tab>

75 </Tabs>75 </Tabs>

76 76 

77 You can also install with [apt, dnf, or apk](/docs/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.77 Você também pode instalar com [apt, dnf, ou apk](/docs/pt/setup#install-with-linux-package-managers) no Debian, Fedora, RHEL e Alpine.

78 78 

79 Em seguida, inicie Claude Code em qualquer projeto. Substitua `your-project` pelo caminho para um diretório de projeto em sua máquina:79 Em seguida, inicie Claude Code em qualquer projeto. Substitua `your-project` pelo caminho para um diretório de projeto em sua máquina:

80 80 

Details

22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Leituras, edições de arquivo e comandos comuns do sistema de arquivos (`mkdir`, `touch`, `mv`, `cp`, etc.) | Iterando sobre código que você está revisando |22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Leituras, edições de arquivo e comandos comuns do sistema de arquivos (`mkdir`, `touch`, `mv`, `cp`, etc.) | Iterando sobre código que você está revisando |

23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Leituras, mais comandos aprovados pelo classificador quando [modo automático](#eliminate-prompts-with-auto-mode) está disponível | Explorando uma base de código antes de alterá-la |23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Leituras, mais comandos aprovados pelo classificador quando [modo automático](#eliminate-prompts-with-auto-mode) está disponível | Explorando uma base de código antes de alterá-la |

24| [`auto`](#eliminate-prompts-with-auto-mode) | Tudo, com verificações de segurança em segundo plano | Tarefas longas, reduzindo fadiga de prompts |24| [`auto`](#eliminate-prompts-with-auto-mode) | Tudo, com verificações de segurança em segundo plano | Tarefas longas, reduzindo fadiga de prompts |

25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Apenas ferramentas pré-aprovadas | CI bloqueado e scripts |25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Leituras e ferramentas pré-aprovadas; qualquer coisa que geraria um prompt é negada | CI bloqueado e scripts |

26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tudo | Apenas contêineres isolados e VMs |26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tudo | Apenas contêineres isolados e VMs |

27 27 

28O modo que revisa cada ação é nomeado **Manual** na CLI, em `claude --help`, nas extensões VS Code e JetBrains, e no aplicativo de desktop. Seu valor de configuração é `default`, que é o que hooks e integrações SDK usam. A CLI aceita `manual` como um alias em qualquer lugar onde você digita o valor, por exemplo `claude --permission-mode manual` ou `"defaultMode": "manual"`. O rótulo Manual e o alias `manual` requerem Claude Code v2.1.200 ou posterior. O rótulo do aplicativo de desktop não depende da sua versão da CLI.28O modo que revisa cada ação é nomeado **Manual** na CLI, em `claude --help`, nas extensões VS Code e JetBrains, e no aplicativo de desktop. Seu valor de configuração é `default`, que é o que hooks e integrações SDK usam. A CLI aceita `manual` como um alias em qualquer lugar onde você digita o valor, por exemplo `claude --permission-mode manual` ou `"defaultMode": "manual"`. O rótulo Manual e o alias `manual` requerem Claude Code v2.1.200 ou posterior. O rótulo do aplicativo de desktop não depende da sua versão da CLI.


131 Alternar modos de permissão131 Alternar modos de permissão

132</h2>132</h2>

133 133 

134Cada interface tem seu próprio controle para alternar modos de permissão durante uma sessão e sua própria forma de escolher o modo de permissão que novas sessões iniciam. Pedir a Claude no chat para alterar o modo de permissão não funciona. Selecione sua interface para ver seus controles.134Cada interface tem seu próprio controle para alternar modos de permissão durante uma sessão e sua própria forma de escolher o modo de permissão que novas sessões iniciam. Selecione sua interface para ver seus controles.

135 135 

136<Tabs>136<Tabs>

137 <Tab title="CLI">137 <Tab title="CLI">


387 387 

388Claude Code v2.1.205 e posterior também bloqueiam estes por padrão:388Claude Code v2.1.205 e posterior também bloqueiam estes por padrão:

389 389 

390* Escrita em transcrições de sessão do Claude Code, os arquivos de histórico `.jsonl` sob `~/.claude/projects/` ou seu diretório de configuração configurado, seja diretamente ou através de um comando de shell. A regra também cobre as linhas de metadados que Claude Code acrescenta a cada entrada de transcrição para suas próprias verificações. Uma transcrição é estado de sessão que Claude Code escreve, não um arquivo de trabalho, e uma entrada adulterada atinge cada verificação posterior uma vez que você retoma a sessão, então o modo automático bloqueia essas gravações como defesa em profundidade. Ler uma transcrição não é bloqueado390* Escrita em transcrições de sessão do Claude Code, os arquivos de histórico `.jsonl` sob `~/.claude/projects/` ou seu diretório de configuração configurado, seja diretamente ou através de um comando de shell. A regra também cobre as linhas de metadados que Claude Code acrescenta a cada entrada de transcrição para suas próprias verificações. Ler uma transcrição não é bloqueado

391* Uma exclusão forçada recursiva, como `rm -rf "$VAR"` ou `Remove-Item -Recurse -Force $dir` cujo alvo é uma variável de shell, ou um glob enraizado em uma, que não é atribuído em nenhum lugar na conversa que o classificador vê. O valor veio apenas da saída de comando anterior, que o classificador nunca recebe, então o classificador não consegue verificar o alvo de exclusão contra as outras regras de exclusão. O bloqueio é limpo quando você nomeia o caminho exato sendo deletado, ou quando Claude re-executa a exclusão com o caminho literal resolvido escrito no comando. Exclusões cujo alvo o classificador consegue resolver não são afetadas. Alvos `Remove-Item` que são um `*` nu ou terminam em `/*` ou `\*` nunca chegam ao classificador: Claude Code [nega-os imediatamente](#remove-item-in-powershell)391* Uma exclusão forçada recursiva, como `rm -rf "$VAR"` ou `Remove-Item -Recurse -Force $dir` cujo alvo é uma variável de shell, ou um glob enraizado em uma, que não é atribuído em nenhum lugar na conversa que o classificador vê. O valor veio apenas da saída de comando anterior, que o classificador nunca recebe, então o classificador não consegue verificar o alvo de exclusão contra as outras regras de exclusão. O bloqueio é limpo quando você nomeia o caminho exato sendo deletado, ou quando Claude re-executa a exclusão com o caminho literal resolvido escrito no comando. Exclusões cujo alvo o classificador consegue resolver não são afetadas. Alvos `Remove-Item` que são um `*` nu ou terminam em `/*` ou `\*` nunca chegam ao classificador: Claude Code [nega-os imediatamente](#remove-item-in-powershell)

392 392 

393Claude Code v2.1.257 e posterior também bloqueiam estes por padrão:393Claude Code v2.1.257 e posterior também bloqueiam estes por padrão:


409* Instalação de dependências declaradas em seus arquivos de lock ou manifestos409* Instalação de dependências declaradas em seus arquivos de lock ou manifestos

410* Leitura de `.env` e envio de credenciais para sua API correspondente410* Leitura de `.env` e envio de credenciais para sua API correspondente

411* Solicitações HTTP somente leitura411* Solicitações HTTP somente leitura

412* Pushing para qualquer branch do repositório em que você está trabalhando, incluindo o branch padrão. Um branch não padrão cujo nome o marca como um destino de deploy ou publicação, como `production` ou `gh-pages`, não é coberto: o classificador julga um push lá em seus próprios termos. O conteúdo do push ainda é verificado contra as outras regras, [regras `permissions.deny`](/docs/pt/permissions#manage-permissions) ainda podem bloquear pushes para branches específicos completamente em todos os modos, e a proteção de branch do próprio remote ainda se aplica. Antes de v2.1.211, apenas pushes para o branch em que você começou, branches que Claude criou e pushes rotineiros para o branch padrão eram permitidos por padrão, e antes de v2.1.203 qualquer push direto para o branch padrão era bloqueado412* Pushing para qualquer branch do repositório em que você está trabalhando, incluindo o branch padrão. Um branch não padrão cujo nome o marca como um destino de deploy ou publicação, como `production` ou `gh-pages`, não é coberto: o classificador julga um push lá em seus próprios termos. O conteúdo do push ainda é verificado contra as outras regras, [regras `permissions.deny`](/docs/pt/permissions#manage-permissions) ainda podem bloquear comandos push [conforme escrito](/docs/pt/permissions#bash-rule-limits) em todos os modos, e a proteção de branch do próprio remote ainda se aplica. Antes de v2.1.211, apenas pushes para o branch em que você começou, branches que Claude criou e pushes rotineiros para o branch padrão eram permitidos por padrão, e antes de v2.1.203 qualquer push direto para o branch padrão era bloqueado

413 413 

414Claude Code v2.1.195 e posterior também permitem estes por padrão:414Claude Code v2.1.195 e posterior também permitem estes por padrão:

415 415 


428 428 

429Execute `claude auto-mode defaults` para imprimir as listas de regras completas como JSON. Se ações rotineiras forem bloqueadas, um administrador pode adicionar repos, buckets e serviços confiáveis via configuração `autoMode.environment`: veja [Configurar modo automático](/docs/pt/auto-mode-config).429Execute `claude auto-mode defaults` para imprimir as listas de regras completas como JSON. Se ações rotineiras forem bloqueadas, um administrador pode adicionar repos, buckets e serviços confiáveis via configuração `autoMode.environment`: veja [Configurar modo automático](/docs/pt/auto-mode-config).

430 430 

431Pushing para qualquer branch do repositório em que você está trabalhando e criando uma pull request que corresponde à sua solicitação são executados sem um prompt, a menos que o push ou pull request caia sob a [lista bloqueada](#what-the-classifier-blocks-by-default), como segredos ou dados sensíveis deixando o repositório, ou uma pull request que tenha como alvo um repositório ou organização diferente. Para exigir um checkpoint humano antes dessas ações enquanto permanece em modo automático, adicione regras `permissions.ask`: veja [Limites comuns](/docs/pt/auto-mode-config#common-boundaries).431Pushing para qualquer branch do repositório em que você está trabalhando e criando uma pull request que corresponde à sua solicitação são executados sem um prompt, a menos que o push ou pull request caia sob a [lista bloqueada](#what-the-classifier-blocks-by-default), como segredos ou dados sensíveis deixando o repositório, ou uma pull request que tenha como alvo um repositório ou organização diferente. Para exigir um checkpoint humano antes dessas ações enquanto permanece em modo automático, adicione regras `permissions.ask`, que correspondem ao comando [conforme escrito](/docs/pt/permissions#bash-rule-limits): veja [Limites comuns](/docs/pt/auto-mode-config#common-boundaries).

432 432 

433<h3 id="first-read-outside-the-working-directories">433<h3 id="first-read-outside-the-working-directories">

434 A primeira leitura fora dos diretórios de trabalho434 A primeira leitura fora dos diretórios de trabalho


474 1. Ações correspondentes a suas [regras de permissão, solicitação ou negação](/docs/pt/permissions#manage-permissions) resolvem imediatamente. Gravações em [caminhos protegidos](#protected-paths) são roteadas para o classificador mesmo quando uma regra de permissão corresponde, e assim como remoções `rm` e `rmdir` direcionadas a um [caminho crítico](#critical-paths) em Claude Code v2.1.218 e posterior. Ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) o solicitam diretamente mesmo quando uma regra de permissão corresponde, e assim como ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) em sessões onde essa configuração chega a Claude Code. Regras de solicitação que correspondem no conteúdo de um comando, como `Bash(git push *)`, voltam para um prompt de permissão474 1. Ações correspondentes a suas [regras de permissão, solicitação ou negação](/docs/pt/permissions#manage-permissions) resolvem imediatamente. Gravações em [caminhos protegidos](#protected-paths) são roteadas para o classificador mesmo quando uma regra de permissão corresponde, e assim como remoções `rm` e `rmdir` direcionadas a um [caminho crítico](#critical-paths) em Claude Code v2.1.218 e posterior. Ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) o solicitam diretamente mesmo quando uma regra de permissão corresponde, e assim como ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) em sessões onde essa configuração chega a Claude Code. Regras de solicitação que correspondem no conteúdo de um comando, como `Bash(git push *)`, voltam para um prompt de permissão

475 2. Ações somente leitura e edições de arquivo em seu diretório de trabalho são auto-aprovadas, exceto gravações em [caminhos protegidos](#protected-paths) e [a primeira leitura fora dos diretórios de trabalho](#first-read-outside-the-working-directories), que o solicita475 2. Ações somente leitura e edições de arquivo em seu diretório de trabalho são auto-aprovadas, exceto gravações em [caminhos protegidos](#protected-paths) e [a primeira leitura fora dos diretórios de trabalho](#first-read-outside-the-working-directories), que o solicita

476 3. Tudo mais vai para o classificador. As ferramentas de conector e ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) que o solicitam diretamente na etapa 1 nunca chegam ao classificador, então uma aprovação exigida pela organização nem uma etapa de consentimento é auto-aprovada476 3. Tudo mais vai para o classificador. As ferramentas de conector e ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) que o solicitam diretamente na etapa 1 nunca chegam ao classificador, então uma aprovação exigida pela organização nem uma etapa de consentimento é auto-aprovada

477 4. Se o classificador bloquear, Claude recebe o motivo e tenta uma alternativa. Na maioria das sessões o motivo é o texto fixo `Blocked by classifier` em vez de uma explicação escrita, em Claude Code v2.1.208 e posterior; veja [Revisar negações](/docs/pt/auto-mode-config#review-denials)477 4. Se o classificador bloquear, Claude recebe o motivo e tenta uma alternativa. Na maioria das sessões o motivo nomeia a regra que o classificador correspondeu, como `[Data Exfiltration]`, em vez de dar uma explicação escrita; veja [Revisar negações](/docs/pt/auto-mode-config#review-denials)

478 478 

479 Ao entrar no modo automático, regras de permissão amplas que concedem execução de código arbitrária são descartadas:479 Ao entrar no modo automático, regras de permissão amplas que concedem execução de código arbitrária são descartadas:

480 480 


518 Permitir apenas ferramentas pré-aprovadas com modo dontAsk518 Permitir apenas ferramentas pré-aprovadas com modo dontAsk

519</h2>519</h2>

520 520 

521Se você definir o modo `dontAsk`, Claude Code nega automaticamente toda chamada de ferramenta que de outra forma solicitaria você. Claude executa apenas ações que correspondem às suas regras `permissions.allow`, [comandos Bash somente leitura](/docs/pt/permissions#read-only-commands) e chamadas aprovadas por um [hook PreToolUse](/docs/pt/permissions#extend-permissions-with-hooks). Use este modo para pipelines de CI ou ambientes restritos onde você pré-define exatamente o que Claude pode fazer; a sessão nunca aguarda entrada. A barra de status mostra `⏵⏵ don't ask on` enquanto este modo está ativo.521Se você definir o modo `dontAsk`, Claude Code nega automaticamente toda chamada de ferramenta que de outra forma solicitaria você. Claude ainda executa ações que não precisam de aprovação no modo Manual, como leituras de arquivo dentro de seus diretórios de trabalho e [comandos Bash somente leitura](/docs/pt/permissions#read-only-commands), além de ações que correspondem às suas regras `permissions.allow` e chamadas aprovadas por um [hook PreToolUse](/docs/pt/permissions#extend-permissions-with-hooks). Use este modo para pipelines de CI ou ambientes restritos onde você pré-define o que Claude pode fazer; a sessão nunca aguarda entrada. A barra de status mostra `⏵⏵ don't ask on` enquanto este modo está ativo.

522 522 

523Claude Code nega chamadas que correspondem às suas [regras `ask`](/docs/pt/permissions#manage-permissions) explícitas em vez de solicitar. Também nega a ferramenta integrada `AskUserQuestion` mesmo que suas regras de permissão correspondam a ela, e faz o mesmo para ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) em sessões onde essa configuração chega a Claude Code. Nega ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) da mesma forma, porque seu cartão de aprovação precisa de uma resposta que este modo nunca coleta; isso requer Claude Code v2.1.199 ou posterior.523Claude Code nega chamadas que correspondem às suas [regras `ask`](/docs/pt/permissions#manage-permissions) explícitas em vez de solicitar. Também nega a ferramenta integrada `AskUserQuestion` mesmo que suas regras de permissão correspondam a ela, e faz o mesmo para ferramentas de conector [que sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) em sessões onde essa configuração chega a Claude Code. Nega ferramentas MCP marcadas [`_meta["anthropic/requiresUserInteraction"]`](/docs/pt/mcp#require-approval-for-a-specific-tool) da mesma forma, porque seu cartão de aprovação precisa de uma resposta que este modo nunca coleta; isso requer Claude Code v2.1.199 ou posterior.

524 524 

525Remoções `rm` e `rmdir` direcionadas a um [caminho crítico](#critical-paths), como `rm -rf /` e `rm -rf ~`, são negadas mesmo quando uma regra de permissão corresponde a elas ou um hook `PreToolUse` as permite.525Remoções `rm` e `rmdir` direcionadas a um [caminho crítico](#critical-paths), como `rm -rf /` e `rm -rf ~`, são negadas mesmo quando uma regra de permissão corresponde a elas ou um hook `PreToolUse` as permite.

526 526 

permissions.md +8 −4

Details

82Claude Code suporta vários modos de permissão que controlam como ele aprova chamadas de ferramentas. Veja [Modos de permissão](/docs/pt/permission-modes) para quando usar cada um. Para alterar o modo em que as sessões começam, defina `defaultMode` em seus [arquivos de configuração](/docs/pt/settings#where-settings-live). [Qual modo uma sessão começa](/docs/pt/permission-modes#which-mode-a-session-starts-in) cobre o padrão integrado para cada plano e o que a extensão VS Code lê.82Claude Code suporta vários modos de permissão que controlam como ele aprova chamadas de ferramentas. Veja [Modos de permissão](/docs/pt/permission-modes) para quando usar cada um. Para alterar o modo em que as sessões começam, defina `defaultMode` em seus [arquivos de configuração](/docs/pt/settings#where-settings-live). [Qual modo uma sessão começa](/docs/pt/permission-modes#which-mode-a-session-starts-in) cobre o padrão integrado para cada plano e o que a extensão VS Code lê.

83 83 

84| Modo | Descrição |84| Modo | Descrição |

85| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |85| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

86| `default` | Solicita permissão no primeiro uso de cada ferramenta. Rotulado como Manual na CLI, nas extensões VS Code e JetBrains, e no aplicativo desktop, e Claude Code aceita `manual` como um alias. O rótulo e o alias requerem Claude Code v2.1.200 ou posterior. O rótulo do aplicativo desktop não depende da sua versão da CLI |86| `default` | Solicita permissão no primeiro uso de cada ferramenta. Rotulado como Manual na CLI, nas extensões VS Code e JetBrains, e no aplicativo desktop, e Claude Code aceita `manual` como um alias. O rótulo e o alias requerem Claude Code v2.1.200 ou posterior. O rótulo do aplicativo desktop não depende da sua versão da CLI |

87| `acceptEdits` | Aceita automaticamente edições de arquivo e comandos comuns do sistema de arquivos como `mkdir`, `touch`, `mv` e `cp` para caminhos no diretório de trabalho ou `additionalDirectories` |87| `acceptEdits` | Aceita automaticamente edições de arquivo e comandos comuns do sistema de arquivos como `mkdir`, `touch`, `mv` e `cp` para caminhos no diretório de trabalho ou `additionalDirectories` |

88| `plan` | Claude lê arquivos e executa comandos shell somente leitura para explorar, mas não edita seus arquivos de origem; com [modo automático](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) disponível, comandos aprovados pelo classificador também são executados. Rotulado como Plan na CLI e na extensão VS Code |88| `plan` | Claude lê arquivos e executa comandos shell somente leitura para explorar, mas não edita seus arquivos de origem; com [modo automático](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) disponível, comandos aprovados pelo classificador também são executados. Rotulado como Plan na CLI e na extensão VS Code |

89| `auto` | Aprova automaticamente chamadas de ferramentas com verificações de segurança em segundo plano que verificam se as ações se alinham com sua solicitação |89| `auto` | Aprova automaticamente chamadas de ferramentas com verificações de segurança em segundo plano que verificam se as ações se alinham com sua solicitação |

90| `dontAsk` | Nega automaticamente ferramentas a menos que pré-aprovadas via `/permissions` ou regras `permissions.allow`. `AskUserQuestion`, ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) e ferramentas de conector [sua organização definida como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) em sessões onde essa configuração chega ao Claude Code são negadas mesmo se você as permitiu |90| `dontAsk` | Nega automaticamente toda chamada que de outra forma solicitaria permissão; leituras de arquivo em seus diretórios de trabalho e outras ações que não precisam de aprovação ainda são executadas, assim como ferramentas pré-aprovadas via `/permissions` ou regras `permissions.allow`. `AskUserQuestion`, ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool) e ferramentas de conector [sua organização definida como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) em sessões onde essa configuração chega ao Claude Code são negadas mesmo se você as permitiu |

91| `bypassPermissions` | Ignora prompts de permissão, exceto pelas [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves) |91| `bypassPermissions` | Ignora prompts de permissão, exceto pelas [ações que nenhum modo aprova automaticamente](/docs/pt/permission-modes#actions-no-mode-auto-approves) |

92 92 

93<Warning>93<Warning>


455Quando Claude acessa um symlink, as regras de permissão verificam dois caminhos: o próprio symlink e o arquivo para o qual ele se resolve. As regras allow e deny tratam esse par de forma diferente: as regras allow voltam a solicitar, enquanto as regras deny bloqueiam imediatamente.455Quando Claude acessa um symlink, as regras de permissão verificam dois caminhos: o próprio symlink e o arquivo para o qual ele se resolve. As regras allow e deny tratam esse par de forma diferente: as regras allow voltam a solicitar, enquanto as regras deny bloqueiam imediatamente.

456 456 

457* **Regras allow**: se aplicam apenas quando tanto o caminho do symlink quanto seu alvo correspondem. Um symlink dentro de um diretório permitido que aponta para fora dele ainda solicita.457* **Regras allow**: se aplicam apenas quando tanto o caminho do symlink quanto seu alvo correspondem. Um symlink dentro de um diretório permitido que aponta para fora dele ainda solicita.

458* **Regras deny**: se aplicam quando o caminho do symlink ou seu alvo correspondem. Um symlink que aponta para um arquivo negado é ele próprio negado.458* **Regras deny**: se aplicam quando o caminho do symlink ou seu alvo correspondem. Um symlink que aponta para um arquivo negado é ele próprio negado. Por exemplo, com `Read(./project/**)` permitido e `Read(~/.ssh/**)` negado, um symlink em `./project/key` apontando para `~/.ssh/id_rsa` é bloqueado: o alvo falha na regra allow e corresponde à regra deny.

459 459 

460Por exemplo, com `Read(./project/**)` permitido e `Read(~/.ssh/**)` negado, um symlink em `./project/key` apontando para `~/.ssh/id_rsa` é bloqueado: o alvo falha na regra allow e corresponde à regra deny.460Em macOS e Linux, uma regra deny ou ask escrita através de um diretório com symlink com um padrão `//`, `~/` ou `/` também se aplica na localização real do diretório. Por exemplo, em macOS, onde `/etc` se resolve para `/private/etc`, `Read(//etc/**)` também bloqueia `/private/etc/hosts`. Antes de v2.1.268, uma regra deny ou ask escrita através de um diretório com symlink não se aplicava a um caminho dado por sua localização real.

461 461 

462Quando uma ferramenta abre um arquivo aprovado, Claude Code [confirma que o caminho ainda se resolve para a localização que a verificação de permissão aprovou](/docs/pt/errors#refusing-after-a-symlink-changed).462Quando uma ferramenta abre um arquivo aprovado, Claude Code [confirma que o caminho ainda se resolve para a localização que a verificação de permissão aprovou](/docs/pt/errors#refusing-after-a-symlink-changed).

463 463 


490| `WebFetch` | Claude faz fetch sem solicitar você. Não muda quais hosts comandos em sandbox podem alcançar. | Claude Code remove a ferramenta `WebFetch`, portanto Claude não consegue fazer fetch. Não muda quais hosts comandos em sandbox podem alcançar. |490| `WebFetch` | Claude faz fetch sem solicitar você. Não muda quais hosts comandos em sandbox podem alcançar. | Claude Code remove a ferramenta `WebFetch`, portanto Claude não consegue fazer fetch. Não muda quais hosts comandos em sandbox podem alcançar. |

491| `WebFetch(domain:*)` | Claude faz fetch sem solicitar você, e comandos em sandbox podem alcançar qualquer host. | Claude Code mantém a ferramenta e recusa cada fetch, e comandos em sandbox não conseguem alcançar nenhum host. |491| `WebFetch(domain:*)` | Claude faz fetch sem solicitar você, e comandos em sandbox podem alcançar qualquer host. | Claude Code mantém a ferramenta e recusa cada fetch, e comandos em sandbox não conseguem alcançar nenhum host. |

492 492 

493As duas formas também diferem em leituras de [artifacts](/docs/pt/artifacts), as páginas que a ferramenta Artifact publica em claude.ai. Uma regra deny ou ask `WebFetch` simples não se aplica a essas leituras. Uma regra `domain:` cobrindo `claude.ai` ou o host de conteúdo `*.claudeusercontent.com`, como `WebFetch(domain:claude.ai)` ou `WebFetch(domain:*)`, nega cada leitura ou solicita antes dela. Uma [regra `Artifact`](/docs/pt/artifacts#disable-artifacts) faz o mesmo.

494 

495Quando uma regra bloqueia uma leitura, a negação nomeia a regra. Antes de v2.1.268, uma regra deny `WebFetch` simples bloqueava cada leitura de artifact, e uma regra ask simples solicitava antes de cada uma.

496 

493Para deixar Claude fazer fetch livremente enquanto mantém a lista de permissões do sandbox como está, use a forma simples. Este `settings.json` faz isso:497Para deixar Claude fazer fetch livremente enquanto mantém a lista de permissões do sandbox como está, use a forma simples. Este `settings.json` faz isso:

494 498 

495```json theme={null}499```json theme={null}

platforms.md +10 −10

Details

48 Trabalhe quando você estiver longe de seu terminal48 Trabalhe quando você estiver longe de seu terminal

49</h2>49</h2>

50 50 

51Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.51Claude Code oferece várias maneiras de trabalhar quando você não está no seu terminal. Elas diferem no que dispara o trabalho, onde Claude é executado e quanto você precisa configurar.

52 52 

53| | Trigger | Claude runs on | Setup | Best for |53| | Gatilho | Claude é executado em | Configuração | Melhor para |

54| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |54| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- |

55| [Dispatch](/docs/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |55| [Dispatch](/docs/pt/desktop#sessions-from-dispatch) | Envie uma tarefa a partir do aplicativo móvel Claude | Sua máquina (Desktop) | [Emparelhe o aplicativo móvel com Desktop](https://support.claude.com/en/articles/13947068) | Delegar trabalho enquanto você está ausente, configuração mínima |

56| [Remote Control](/docs/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |56| [Remote Control](/docs/pt/remote-control) | Dirija uma sessão em execução a partir de [claude.ai/code](https://claude.ai/code) ou do aplicativo móvel Claude | Sua máquina (CLI ou VS Code) | Execute `claude remote-control` | Orientar trabalho em andamento de outro dispositivo |

57| [Channels](/docs/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/docs/en/channels#quickstart) or [build your own](/docs/en/channels-reference) | Reacting to external events like CI failures or chat messages |57| [Channels](/docs/pt/channels) | Envie eventos de um aplicativo de chat como Telegram ou Discord, ou seu próprio servidor | Sua máquina (CLI) | [Instale um plugin de canal](/docs/pt/channels#quickstart) ou [crie o seu próprio](/docs/pt/channels-reference) | Reagir a eventos externos como falhas de CI ou mensagens de chat |

58| [Slack](/docs/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/docs/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/docs/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |58| [Slack](/docs/pt/slack) | Mencione `@Claude` em um canal de equipe | Nuvem Anthropic | [Instale o aplicativo Slack](/docs/pt/slack#setting-up-claude-code-in-slack) com [Claude Code na web](/docs/pt/claude-code-on-the-web) ativado | PRs e revisões do chat da equipe |

59| [Self-hosted environments](/docs/en/self-hosted-environments) | Start a [cloud session](/docs/en/claude-code-on-the-web) and pick your organization's environment | Your organization's infrastructure | [Deploy runners](/docs/en/self-hosted-environments-quickstart), on Team and Enterprise plans | Cloud sessions that must run inside your network |59| [Self-hosted environments](/docs/pt/self-hosted-environments) | Inicie uma [sessão na nuvem](/docs/pt/claude-code-on-the-web) e escolha o ambiente da sua organização | Infraestrutura da sua organização | [Implante runners](/docs/pt/self-hosted-environments-quickstart), em planos Team e Enterprise | Sessões na nuvem que devem ser executadas dentro da sua rede |

60| [Scheduled tasks](/docs/en/scheduled-tasks) | Set a schedule | [CLI](/docs/en/scheduled-tasks), [Desktop](/docs/en/desktop-scheduled-tasks), or [cloud](/docs/en/routines) | Pick a frequency | Recurring automation like daily reviews |60| [Scheduled tasks](/docs/pt/scheduled-tasks) | Defina um cronograma | [CLI](/docs/pt/scheduled-tasks), [Desktop](/docs/pt/desktop-scheduled-tasks), ou [nuvem](/docs/pt/routines) | Escolha uma frequência | Automação recorrente como revisões diárias |

61 61 

62Se você não tem certeza por onde começar, [instale a CLI](/docs/pt/quickstart) e execute-a em um diretório de projeto. Se você preferir não usar um terminal, [Desktop](/docs/pt/desktop-quickstart) oferece o mesmo mecanismo com uma interface gráfica.62Se você não tem certeza por onde começar, [instale a CLI](/docs/pt/quickstart) e execute-a em um diretório de projeto. Se você preferir não usar um terminal, [Desktop](/docs/pt/desktop-quickstart) oferece o mesmo mecanismo com uma interface gráfica.

63 63 

Details

123 123 

124A cópia local da dependência satisfaz a entrada de dependência do seu plugin, mesmo quando a entrada nomeia um marketplace, portanto você não precisa instalar a dependência do seu marketplace. Claude Code não verifica uma [restrição de versão](#declare-a-dependency-with-a-version-constraint) contra uma cópia local, portanto o `plugin.json` local não precisa de uma `version`. Antes da v2.1.242, uma entrada de dependência que nomeava um marketplace nunca correspondia à cópia local, e Claude Code desabilitava seu plugin no carregamento.124A cópia local da dependência satisfaz a entrada de dependência do seu plugin, mesmo quando a entrada nomeia um marketplace, portanto você não precisa instalar a dependência do seu marketplace. Claude Code não verifica uma [restrição de versão](#declare-a-dependency-with-a-version-constraint) contra uma cópia local, portanto o `plugin.json` local não precisa de uma `version`. Antes da v2.1.242, uma entrada de dependência que nomeava um marketplace nunca correspondia à cópia local, e Claude Code desabilitava seu plugin no carregamento.

125 125 

126Quando ambos os plugins estão em uma pasta pai, você pode passar essa pasta para `--plugin-dir` uma vez. Se a pasta não for ela mesma um plugin, Claude Code carrega cada pasta filha que tem um `.claude-plugin/plugin.json`. Requer Claude Code v2.1.265 ou posterior.

127 

126Se você não instalou a dependência do seu marketplace, seu plugin para de carregar quando a cópia local desaparece:128Se você não instalou a dependência do seu marketplace, seu plugin para de carregar quando a cópia local desaparece:

127 129 

128* **Você desabilitou a cópia local**: Claude Code desabilita seu plugin no próximo carregamento de plugin. Para uma entrada de dependência que nomeia um marketplace, Claude Code relata `Dependency "<name>@inline" is disabled — enable it or remove the dependency`; para uma entrada de nome simples, ele relata a dependência pelo seu nome simples. `<name>@inline` é como Claude Code identifica cada plugin `--plugin-dir` e `--plugin-url`.130* **Você desabilitou a cópia local**: Claude Code desabilita seu plugin no próximo carregamento de plugin. Para uma entrada de dependência que nomeia um marketplace, Claude Code relata `Dependency "<name>@inline" is disabled — enable it or remove the dependency`; para uma entrada de nome simples, ele relata a dependência pelo seu nome simples. `<name>@inline` é como Claude Code identifica cada plugin `--plugin-dir` e `--plugin-url`.

plugin-evals.md +705 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Testar plugins com evals

6 

7> Escreva casos de eval para seu plugin Claude Code, execute-os com claude plugin eval, classifique os resultados, compare com uma linha de base sem plugin e gate CI na pontuação.

8 

9`claude plugin eval` executa seu [plugin](/docs/pt/plugins) contra um conjunto de casos de teste e classifica os resultados. Cada caso é um prompt realista mais um ou mais avaliadores. Um avaliador é uma verificação de aprovação/reprovação sobre o que Claude produziu, como uma regex sobre a resposta, se uma ferramenta particular foi chamada, ou uma rubrica que um segundo modelo julga a resposta.

10 

11Você não precisa escrever o conjunto manualmente. `claude plugin eval init` pergunta sobre seu plugin, propõe os casos e avaliadores, tenta-os e escreve os arquivos. Você também pode pedir a Claude para fazer o mesmo a partir de uma sessão que você já tem aberta.

12 

13Use evals para medir com que confiabilidade seu plugin direciona Claude para o resultado correto, para detectar regressões quando você altera o plugin ou um novo modelo é lançado, e para ver qual é a contribuição do plugin em comparação com nenhum plugin.

14 

15Esta página é para autores de plugins e skills que têm um plugin funcionando e desejam testar seu comportamento, e para equipes que fazem gate de mudanças de plugin em CI. Seu formato de caso é separado do arquivo `evals/evals.json` que o [skill-creator plugin](/docs/pt/skills#run-evals-with-skill-creator) usa. Para criar um plugin, consulte [Criar plugins](/docs/pt/plugins); para verificar os arquivos de um plugin quanto a erros de sintaxe e esquema em vez de seu comportamento, use [`claude plugin validate`](/docs/pt/plugins-reference#plugin-validate).

16 

17<Note>

18 Cada execução de eval e cada avaliador de juiz é uma chamada de modelo real em sua conta, contada contra o uso do seu plano ou sua fatura de API, então verifique os [requisitos](#requirements) primeiro. Em seguida, [crie seu primeiro conjunto de eval](#create-your-first-eval-suite), ou vá para [Executar evals em CI](#run-evals-in-ci) se você já tiver um.

19</Note>

20 

21<h2 id="requirements">

22 Requisitos

23</h2>

24 

25Para executar evals de plugin você precisa:

26 

27* Claude Code v2.1.269 ou posterior. Execute `claude --version` para verificar e `claude update` para atualizar.

28* Um diretório de plugin com um manifesto `plugin.json` ou `.claude-plugin/plugin.json`, ou um [plugin de diretório de skills](/docs/pt/plugins-reference#skills-directory-plugins).

29* A mesma autenticação e provedor de modelo que suas sessões normais de Claude Code usam. Execuções de eval, avaliadores pontuados por juiz e `claude plugin eval init` chamam o modelo com suas credenciais, então contam contra seus limites de uso do plano ou sua fatura de API. Quando o comando relata um custo, a figura é uma [estimativa de preço de lista](/docs/pt/costs) dessas chamadas.

30 

31<h2 id="how-an-eval-run-works">

32 Como uma execução de eval funciona

33</h2>

34 

35Um conjunto de eval vive em um diretório chamado `evals/` dentro de seu plugin, organizado como [Escrever e refinar casos](#write-and-refine-cases) mostra. Cada caso é seu próprio subdiretório com um [prompt](#set-run-limits-and-tools-in-prompt-md) e um ou mais [avaliadores](#grade-the-result). O prompt é algo que uma pessoa usando seu plugin poderia digitar, como uma solicitação que um de seus skills deveria lidar.

36 

37<h3 id="what-happens-in-a-run">

38 O que acontece em uma execução

39</h3>

40 

41Para cada execução de um caso, Claude Code inicia uma sessão [isolada](#how-runs-are-isolated) [não-interativa](/docs/pt/headless) fresca com apenas seu plugin carregado, envia o prompt e deixa Claude trabalhar até que termine ou atinja o limite de turno ou tempo do caso. Cada avaliador então verifica a resposta final, a transcrição ou um arquivo que Claude criou, e passa ou falha.

42 

43<h3 id="how-a-case-is-scored">

44 Como um caso é pontuado

45</h3>

46 

47Uma execução de um agente não-determinístico diz pouco, então cada caso é executado três vezes por padrão. A pontuação de uma execução é a fração de seus avaliadores que passaram, ponderada se você definir pesos, e a pontuação do caso é a média entre suas execuções. Um caso passa quando sua pontuação atende ao [`--threshold`](#command-options), `1.0` por padrão. Em chamadas de modelo, um conjunto faz aproximadamente casos × execuções execuções de agente com o plugin e tantas novamente para a [linha de base sem plugin](#the-no-plugin-baseline), mais três chamadas de juiz curtas por avaliador `llm` ou `baseline` por execução.

48 

49<h3 id="the-no-plugin-baseline">

50 A linha de base sem plugin

51</h3>

52 

53Uma pontuação alta por si só não diz que o plugin ajudou, porque Claude poderia fazer tão bem sem ele. Para separar os dois, as execuções de cada caso são repetidas sem plugin carregado por padrão, e você obtém duas pontuações, `WITH` e `W/OUT`. Sua diferença, `Δ`, é o que o plugin contribuiu. Se um caso marca 1.0 com e sem o plugin, o plugin não é o que o fez passar. Os dois conjuntos de execuções são chamados de braço com e braço sem; [Comparar com uma linha de base sem plugin](#compare-against-a-no-plugin-baseline) cobre como os avaliadores são pontuados entre eles e como desativar a linha de base.

54 

55<h2 id="create-your-first-eval-suite">

56 Crie seu primeiro conjunto de eval

57</h2>

58 

59Este passo a passo escreve um caso para seu próprio plugin, o executa e lê o resultado. Antes de começar, certifique-se de que você tem:

60 

61* Claude Code v2.1.269 ou posterior e os outros [requisitos](#requirements)

62* Um terminal aberto no diretório raiz de seu plugin, aquele contendo `plugin.json` ou `.claude-plugin/plugin.json`

63* Um skill no plugin que você deseja testar e uma solicitação que um usuário digitaria que deveria acioná-lo

64 

65<Steps>

66 <Step title="Crie os casos">

67 A partir da raiz do plugin, execute:

68 

69 ```bash theme={null}

70 claude plugin eval init

71 ```

72 

73 Se Claude Code ainda não confia neste diretório, ele primeiro pergunta `Trust this plugin directory?`; responda `y`. Uma sessão interativa de Claude Code então abre. Claude lê seu plugin e pergunta qual é um bom resultado, propõe prompts que devem e não devem acionar o plugin, projeta avaliadores para cada um, testa-os uma vez para verificar se se comportam, e escreve um diretório de caso por prompt sob `evals/`, cada um nomeado após seu prompt. Quando Claude diz que o conjunto está pronto, saia dessa sessão com `/exit` ou Ctrl+D para retornar ao seu shell.

74 

75 Se você já tiver uma sessão de Claude Code aberta na raiz do plugin, você pode em vez disso pedir a Claude para executar `claude plugin eval init`. Claude executa o comando e então faz as mesmas perguntas nessa conversa.

76 

77 Se você preferir escrever um caso você mesmo para ver exatamente o que os arquivos contêm, siga [Escrever um caso manualmente](#write-a-case-manually) e volte aqui para executá-lo.

78 </Step>

79 

80 <Step title="Execute o conjunto">

81 De volta ao seu shell na raiz do plugin, execute cada caso sob `evals/`:

82 

83 ```bash theme={null}

84 claude plugin eval .

85 ```

86 

87 Você já confiou neste diretório durante a etapa 1, então a execução começa imediatamente. Se você escreveu o caso manualmente em vez disso, a execução primeiro pergunta `Trust this plugin directory? [y/N]`; responda `y`. [O que uma execução pode acessar](#security) explica no que você está concordando.

88 

89 Cada caso é executado três vezes com seu plugin e três vezes sem ele, então um caso é seis execuções. Uma linha de progresso é impressa conforme cada execução termina, com a pontuação dessa execução e o veredicto de cada avaliador.

90 </Step>

91 

92 <Step title="Leia o resumo">

93 Quando o conjunto termina você vê uma tabela de resumo, seguida de onde o relatório foi:

94 

95 ```text theme={null}

96 CASE WITH W/OUT Δ RUNS COST NOTES

97 first-case 1.00 0.33 +0.67 6 $0.41

98 

99 1 case(s) · mean Δ +0.67 · 74s · $0.41

100 Report: /Users/you/my-plugin/evals/results/2026-09-10T17-02-11-482Z/report.html

101 Published: https://claude.ai/... · keep local next time with --no-publish

102 ```

103 

104 `WITH` é a pontuação do caso com seu plugin carregado, `W/OUT` é a pontuação sem ele, e um `Δ` positivo significa que o plugin aumentou a pontuação. `COST` é uma estimativa de preço de lista das chamadas de modelo, e `NOTES` mostra a explicação do avaliador de falha de peso mais alto, ou o erro da execução, do braço com.

105 </Step>

106 

107 <Step title="Abra o relatório e itere">

108 Abra a URL `Published:`, ou o caminho `Report:` quando nenhuma linha `Published:` aparecer, para ver o veredicto de cada avaliador e explicação para cada execução, e para avaliadores `llm` os votos do juiz e o trecho que ele julgou. A linha `Published:` aparece apenas quando sua conta pode [publicar relatórios](#html-report).

109 

110 O achado mais comum primeiro é um `Δ` próximo a zero com o avaliador `tool_used: Skill` do caso falhando, o que significa que Claude não está escolhendo seu skill em fraseado natural. Ajuste a [`description`](/docs/pt/skills#frontmatter-reference) do skill, execute `claude plugin eval .` novamente e compare.

111 

112 Para iterar em um caso barato, execute um único braço uma vez. Uma única execução é barulhenta, então confirme qualquer mudança nas três execuções padrão antes de confiar nela. Com um braço a tabela mostra colunas `SCORE` e `PASS%` em vez de `WITH`, `W/OUT` e `Δ`:

113 

114 ```bash theme={null}

115 claude plugin eval . --case <case-name> --runs 1 --ablation none

116 ```

117 

118 Substitua `<case-name>` por um dos nomes de diretório sob `evals/`.

119 </Step>

120</Steps>

121 

122<h2 id="write-and-refine-cases">

123 Escrever e refinar casos

124</h2>

125 

126Os casos que `claude plugin eval init` escreve são arquivos simples que você pode abrir, alterar e adicionar. Um caso é um diretório sob o diretório de eval do plugin que contém um `prompt.md`, um `case.yaml` ou ambos. Para agrupar casos, aninhá-los sob um diretório que não seja em si um caso; qualquer coisa dentro de um diretório de caso, como `graders/` e arquivos de fixture, pertence a esse caso.

127 

128Este é o layout que `claude plugin eval init` escreve e o que usar para novos conjuntos. A [referência de conjunto de eval](#eval-suite-reference) tem a árvore completa, incluindo mocks e resultados:

129 

130```text theme={null}

131my-plugin/

132├── .claude-plugin/plugin.json

133├── skills/...

134└── evals/

135 ├── first-case/

136 │ ├── prompt.md # frontmatter: case fields; body: the prompt

137 │ ├── graders/

138 │ │ ├── criteria.md # frontmatter: type + options; body: rubric or pattern

139 │ │ └── skill-fired.md

140 │ └── case.yaml # optional: only for context.* fields

141 ├── ignores-unrelated-request/

142 │ └── ...

143 └── results/ # written by each run; add to .gitignore

144```

145 

146<h3 id="write-a-case-manually">

147 Escrever um caso manualmente

148</h3>

149 

150Ter Claude escrever os casos com `claude plugin eval init` é o caminho recomendado. Para escrever um você mesmo em vez disso, comece a partir de um modelo em branco. O comando a seguir escreve um caso nomeado `first-case` com um `prompt.md` de espaço reservado e um avaliador de espaço reservado, e não executa nada:

151 

152```bash theme={null}

153claude plugin eval init --bare first-case

154```

155 

156```text theme={null}

157evals/first-case/

158├── prompt.md # the prompt sent to Claude, plus run limits

159└── graders/

160 └── criteria.md # one grader: how to score the result

161```

162 

163Em `prompt.md` você escreve a mensagem que Claude recebe em cada execução, e define os limites da execução e as ferramentas que o caso pode usar em seu frontmatter. Abra `evals/first-case/prompt.md` e substitua o corpo do espaço reservado por uma solicitação que um de seus skills deveria lidar, fraseada da maneira que um usuário digitaria em vez de nomear o skill. Este exemplo é para um skill que redige mensagens de commit; use sua própria solicitação:

164 

165```markdown theme={null}

166---

167max_turns: 10

168allowed_tools: [Read, Glob, Grep, Skill]

169---

170 

171Write me a commit message for this change: I renamed getUser to fetchUser and updated the three call sites.

172```

173 

174Cada execução começa em um diretório de trabalho vazio, então coloque o que a tarefa precisa no próprio prompt, ou [configure o espaço de trabalho](#add-setup-or-history-with-case-yaml) primeiro. A [lista completa de campos de frontmatter](#prompt-md-fields) cobre o modelo, timeout, tags e variáveis de ambiente.

175 

176Cada arquivo sob `graders/` é uma verificação aplicada após a execução. Abra `evals/first-case/graders/criteria.md` e substitua o espaço reservado por uma rubrica para o modelo de juiz, escrita como condições PASS e FAIL concretas:

177 

178```markdown theme={null}

179---

180type: llm

181---

182 

183PASS if <what a correct response contains>.

184FAIL if <what a wrong or missing response looks like>.

185```

186 

187Em seguida, adicione um segundo avaliador que verifica se seu skill é o que produziu a resposta. Crie `evals/first-case/graders/skill-fired.md`, substituindo `your-skill-name` pelo `name` do `SKILL.md` do seu skill:

188 

189```markdown theme={null}

190---

191type: tool_used

192tool: Skill

193input_match: '"skill"\s*:\s*"(?:[\w-]+:)?your-skill-name"'

194---

195```

196 

197Isso passa quando Claude invocou esse skill pelo menos uma vez durante a execução, incluindo por sua forma `plugin-name:skill-name` com namespace. [Tipos de avaliador](#grader-types) lista as outras verificações disponíveis, como corresponder a uma regex ou confirmar que um arquivo foi criado.

198 

199Com ambos os arquivos salvos, execute o caso da maneira que o [quickstart](#create-your-first-eval-suite) faz, com `claude plugin eval .` a partir da raiz do plugin.

200 

201<h3 id="set-run-limits-and-tools-in-prompt-md">

202 Defina limites de execução e ferramentas em prompt.md

203</h3>

204 

205Defina `max_turns`, `timeout_seconds`, `model`, `tags` de um caso e o `allowed_tools` que pode usar em frontmatter `prompt.md`; a referência [prompt.md frontmatter](#prompt-md-fields) lista cada campo e seu padrão. Claude recebe o corpo exatamente como você o escreveu. Menções `@path` nele não são expandidas em anexos de arquivo, então se Claude precisar ler um arquivo, conceda uma ferramenta para ele em `allowed_tools`.

206 

207<h3 id="grade-the-result">

208 Escolha e pese avaliadores

209</h3>

210 

211O frontmatter de um avaliador define seu `type` e opcionalmente um `weight` que o faz contar para mais da pontuação da execução e um [`arm`](#compare-against-a-no-plugin-baseline) que controla como é pontuado contra a linha de base. Dos seis tipos, `regex`, `tool_used`, `tool_order` e `file_exists` são computados a partir da transcrição e arquivos e não custam nada, enquanto `llm` e `baseline` chamam um modelo de juiz e adicionam ao custo da execução.

212 

213Não há avaliadores de código personalizado. [Tipos de avaliador](#grader-types) lista as opções de cada tipo e condição de aprovação, e [o que um avaliador pode ver](#what-a-grader-can-look-at) lista os valores que `target` e `focus` aceitam.

214 

215O juiz para avaliadores `llm` e `baseline` é um modelo pequeno e rápido por padrão. Passe `--judge-model sonnet` ou um ID de modelo completo para usar um mais forte para rubricas nuançadas.

216 

217<h4 id="choose-graders-that-give-a-stable-signal">

218 Escolha avaliadores que dão um sinal estável

219</h4>

220 

221Um avaliador `llm` pede a um modelo um veredicto, então sua resposta pode diferir entre execuções, e difere mais quanto mais longo o texto que tem que ler. Esses hábitos mantêm as pontuações de um conjunto estáveis o suficiente para confiar:

222 

223* Para saída longa, como um arquivo gerado, classifique-a com um avaliador `regex` sobre o conteúdo do arquivo, que verifica o arquivo inteiro da mesma forma toda vez. Mantenha avaliadores `llm` para saídas curtas, com rubricas escritas como condições PASS e FAIL concretas.

224* Dê a cada caso um avaliador sobre o resultado, como a mensagem final ou um arquivo produzido, e um sobre como Claude chegou lá, como `tool_used` ou `tool_order`. Juntos eles dizem se a resposta estava correta e se seu plugin a produziu.

225* Se um avaliador `tool_used: Skill` de um caso passa mas `Δ` é negativo, suspeite do juiz antes do plugin. Um modelo de juiz pequeno pode marcar uma resposta correta como errada porque está formatada diferentemente do que a rubrica descreve. Re-execute com `--judge-model sonnet` e aperte a rubrica para que a formatação não decida o veredicto.

226* Para verificar que uma compilação ou teste passou dentro da execução, peça a Claude para executá-lo e escrever o resultado em um arquivo, classifique esse arquivo e afirme que o comando foi executado com um avaliador `tool_used` cujo `input_match` nomeia o comando.

227 

228<h3 id="compare-against-a-no-plugin-baseline">

229 Pontuação contra a linha de base sem plugin

230</h3>

231 

232Quando um plugin está sob teste, cada caso é executado em dois braços por padrão. O braço com é suas execuções com o plugin carregado, e o braço sem é o mesmo número de execuções sem nenhum plugin. O resumo e relatório mostram ambas as pontuações e `Δ`, a pontuação do braço com menos a pontuação do braço sem. Passe `--ablation none` para executar apenas o braço com, o que reduz o custo pela metade quando você não precisa da comparação, como ao iterar em avaliadores.

233 

234Em uma execução de dois braços, alguns avaliadores são relatados com `scored: false`. Uma verificação como "o skill foi invocado" nunca pode passar sem o plugin, então contá-la empurraria o braço sem para zero e inflaria `Δ`. Para manter os dois braços comparáveis, Claude Code exclui tais avaliadores da pontuação em ambos os braços e os relata no braço com como indicadores de aprovação/reprovação apenas. Isso inclui:

235 

236* Cada avaliador `tool_used` cujo `tool` é `Skill`

237* Qualquer avaliador que você marque `arm: with-only`

238 

239Se cada avaliador em um caso é um desses, eles são pontuados normalmente em vez disso, já que não haveria nada deixado para pontuar. Defina `arm: both` em um avaliador para pontuá-lo em ambos os braços independentemente, que é o que você quer para uma verificação "não deve invocar o skill" com `min: 0` e `max: 0`. Sob `--ablation none` nada é excluído, então o mesmo conjunto pode produzir uma pontuação absoluta diferente nos dois modos.

240 

241<h3 id="use-a-different-eval-directory">

242 Use um diretório de eval diferente

243</h3>

244 

245Se `evals/` já está sendo usado por outra ferramenta, mantenha o conjunto em um diretório diferente. Você pode registrar esse diretório no `plugin.json` do plugin para que cada execução e cada colaborador o use, ou passe-o na linha de comando para uma única execução:

246 

247* **Em `plugin.json`**: adicione `"experimental": { "evals": "quality/evals" }`.

248* **Na linha de comando**: passe `--eval-dir quality/evals` para `claude plugin eval` e `claude plugin eval init`.

249 

250Se você definir ambos, o diretório da flag é usado. Dê um caminho relativo de nomes de diretório simples como `qa` ou `quality/evals`. Um caminho absoluto ou um contendo `..` não é aceito: como um valor de flag é um erro, enquanto um valor de manifesto inutilizável imprime uma linha `Warning:` e a execução usa `evals/` em vez disso. Casos, resultados e saída `init` todos se movem para esse diretório.

251 

252<h2 id="set-up-fixtures-and-mocks">

253 Configure fixtures e mocks

254</h2>

255 

256Um caso pode precisar de mais que um prompt: arquivos ou um repositório git no espaço de trabalho, uma conversa anterior para continuar, ou respostas dos servidores MCP com os quais seu plugin fala. Cada um desses é configurado ao lado do caso para que as execuções permaneçam repetíveis.

257 

258<h3 id="add-setup-or-history-with-case-yaml">

259 Semeie o espaço de trabalho ou conversa

260</h3>

261 

262Cada execução começa em um espaço de trabalho vazio. Quando um caso precisa de mais que o prompt, adicione um `case.yaml` ao lado de `prompt.md` com um bloco `context`.

263 

264Para criar arquivos de fixture ou um repositório git primeiro, escreva um script Bash no diretório de caso e nomeie-o em `context.scaffold_script`. O script é executado como você, fora da sandbox do agente, e apenas quando você passa `--scaffold`, então passe essa flag apenas para conjuntos que você ou sua organização escreveu. Para continuar uma conversa anterior, salve a transcrição como um arquivo `.jsonl` e nomeie-a em `context.history_file`, e o prompt do caso se torna o próximo turno do usuário. Para deixar Claude ler diretórios de fixture durante a execução, liste-os em `context.add_dirs`.

265 

266Um `case.yaml` também precisa de `schema_version: "1.1"` e `name`; a referência [case.yaml fields](#case-yaml-fields) tem a lista completa.

267 

268Este `case.yaml` semeia um espaço de trabalho a partir de um script e deixa Claude ler fixtures de um diretório `resources/`:

269 

270```yaml theme={null}

271schema_version: "1.1"

272name: changelog-from-diff

273tags: [smoke]

274context:

275 scaffold_script: fixture.sh

276 add_dirs: [resources]

277```

278 

279<h3 id="mock-mcp-servers">

280 Mock MCP servers

281</h3>

282 

283Você pode avaliar um plugin cujos skills chamam ferramentas MCP sem o serviço real por trás delas. Coloque um arquivo Markdown por ferramenta sob `evals/mocks/<server>/<tool>.md` para o conjunto inteiro, ou sob um diretório `mocks/` próprio de um caso para um caso, onde `<server>` é o nome do servidor na [configuração MCP](/docs/pt/plugins-reference#mcp-servers) do seu plugin.

284 

285Uma execução nunca inicia seus servidores MCP reais do plugin a menos que você peça. Claude Code registra um substituto sob o próprio nome de cada servidor. Ferramentas com um arquivo mock respondem a partir dele e são permitidas sem uma concessão `--allow-tools`, e uma ferramenta sem arquivo mock não está disponível para Claude. Um servidor sem nenhum mock aparece na linha de progresso `mocked:` do caso como `plugin_<plugin>_<server>[not started: no mock]`.

286 

287O corpo do arquivo é o que a ferramenta retorna a Claude. Este mock substitui uma ferramenta `create_issue` em um servidor nomeado `tracker`, verifica a entrada que Claude envia e ecoa o título de volta. Salve-o como `evals/mocks/tracker/create_issue.md`:

288 

289```markdown theme={null}

290---

291expect:

292 title: string

293 priority: [low, medium, high]

294---

295 

296Created issue #4821: {{input.title}}

297```

298 

299Insira campos da entrada da chamada com `{{input.<field>}}` e o conteúdo de um arquivo de fixture ao lado do mock com `{{file:fixtures/{input.<field>}.json}}`. O bloco `expect:` protege a entrada. Se uma chamada violar, a execução aborta com pontuação 0 e registra por quê, então um caso pode afirmar o que seu plugin pediu ao servidor. Defina `error: true` para retornar o corpo como um erro de ferramenta em vez disso, ou `type: agent` para ter um modelo pequeno responder como o servidor a partir de instruções no corpo. A [referência de arquivo mock](#mock-files) lista cada chave e os arquivos `_server.md` e `_tools.json`.

300 

301Para classificar as chamadas em si, aponte um avaliador para `target: mock_calls`.

302 

303Para executar contra os servidores MCP reais do plugin em vez disso, passe uma dessas flags. De qualquer forma, esses processos são executados como você, fora da sandbox da execução, e suas ferramentas precisam de uma concessão [`--allow-tools`](#grant-tools):

304 

305* **`--allow-real-servers`**: inicie o processo real para cada servidor que você não mockificou e continue respondendo ferramentas mockificadas a partir de seus arquivos

306* **`--mocks off`**: ignore `mocks/` inteiramente e inicie cada servidor que o plugin declara

307 

308<h4 id="replay-agent-mock-answers">

309 Reproduza respostas de mock de agente

310</h4>

311 

312Um mock `type: agent` responde com uma chamada ao [`--judge-model`](#command-options), então sua saída varia entre execuções e muda se você mudar o juiz. Quando uma execução é concluída sem um erro ou aborto, Claude Code salva cada resposta que um mock de agente deu sob o diretório de resultados em `mock-recordings/`.

313 

314Abra `ADOPT.txt` lá para ver cada gravação e o diretório `.replay/<server>/` para copiar para, ao lado do mock que a produziu. Depois de copiar uma gravação lá, execuções posteriores respondem a chamada idêntica a partir dela sem chamada de modelo. Confirme `mocks/.replay/` com o resto de `mocks/` para que as execuções de CI sejam repetíveis.

315 

316<h2 id="run-evals">

317 Executar evals

318</h2>

319 

320Uma vez que um conjunto existe, `claude plugin eval` o executa. Você escolhe qual plugin e casos executar com o argumento de destino, concede quaisquer ferramentas que os casos precisem além do conjunto somente leitura com `--allow-tools`, e controla contagem de execução, modelos, custo e saída com as outras opções.

321 

322<h3 id="choose-what-to-evaluate">

323 Escolha o que avaliar

324</h3>

325 

326Na maioria das vezes você executa `claude plugin eval .` a partir da raiz do plugin, que executa cada caso no conjunto com o plugin em que você está em pé carregado. Para executar um arquivo de caso único, ou para avaliar um plugin que você instalou em vez de um que está desenvolvendo, passe um destino diferente:

327 

328| Destino | O que é executado |

329| :--------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

330| Um diretório raiz do plugin, como `.` | Cada caso sob seu diretório de eval, com esse plugin carregado |

331| Um arquivo único `prompt.md` ou `case.yaml` | Esse caso, com seu plugin envolvente carregado |

332| Um plugin instalado por nome, `name` ou `name@marketplace` | Os casos na cópia instalada do diretório de eval, com a cópia instalada carregada. Os resultados são escritos sob `./evals/results/` no seu diretório atual, ou `./<dir>/results/` com `--eval-dir` |

333| `name@skills-dir` | O mesmo, para um [plugin de diretório de skills](/docs/pt/plugins-reference#skills-directory-plugins) |

334| Omitido | O diretório atual como um caminho |

335 

336Adicione `--case <glob>` para filtrar por nome de caso e `--tag <tag>` para manter casos com qualquer uma das tags fornecidas. Coloque o destino antes de `--tag`, `--allow-tools` e `--json`. Os dois primeiros pegam uma lista e `--json` pega um caminho opcional, então cada um deles lê um destino que segue como seu próprio valor.

337 

338<h3 id="grant-tools">

339 Conceda ferramentas

340</h3>

341 

342As execuções nunca param para pedir permissão. Ferramentas integradas que precisam de uma concessão que você não deu, como `Bash`, `Write`, `Edit`, `WebFetch` e `WebSearch`, são removidas da sessão, então Claude não pode chamá-las. A lista de permissões é as ferramentas somente leitura que o caso lista em `allowed_tools`, de `Read`, `Glob`, `Grep`, `NotebookRead`, `Skill`, `Agent`, `TodoWrite` e as ferramentas de tarefa `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, `TaskStop` e `TaskOutput`, mais o que você conceder com `--allow-tools`, que se aplica a cada caso na execução. Para deixar casos usar `Bash`, `Write`, `Edit`, `WebFetch` ou `WebSearch`, conceda-os você mesmo:

343 

344```bash theme={null}

345claude plugin eval . --allow-tools Write Edit "Bash(npm test *)"

346```

347 

348Quando um caso pediu uma ferramenta que você não concedeu, a execução a lista em stderr como `not granted`. Ferramentas em um servidor MCP [mockificado](#mock-mcp-servers) não precisam de concessão. Ferramentas em um servidor MCP de plugin real precisam tanto do servidor iniciado, com `--allow-real-servers` ou `--mocks off`, quanto de uma concessão por nome, como `--allow-tools "mcp__plugin_my-plugin_github__*"`; as ferramentas MCP de um plugin são nomeadas `mcp__plugin_<plugin>_<server>__<tool>`.

349 

350Quando você concede `Bash` em qualquer forma, cada comando é executado sob a [sandbox de nível do SO](/docs/pt/sandboxing) do Claude Code. As escritas são confinadas ao espaço de trabalho da execução, seu diretório inicial e configuração de Claude Code são ilegíveis, e o acesso à rede é limitado a domínios que você concede com `--allow-tools "WebFetch(domain:example.com)"`. Se você conceder Bash ou PowerShell em uma máquina sem backend de sandbox, Claude Code recusa cada execução em vez de executá-la sem confinamento, e o caso mostra um erro de execução e geralmente marca 0. Windows nativo não tem backend, então execute conjuntos que concedem shell sob WSL2; no Linux, instale `bubblewrap` e `socat` primeiro. Veja os [pré-requisitos de sandboxing](/docs/pt/sandboxing).

351 

352<h3 id="command-options">

353 Opções de comando

354</h3>

355 

356Esta tabela cobre as opções para contagem de execução, modelos, pontuação, custo, concessões de ferramentas, mocks e saída. Execute `claude plugin eval --help` para a lista completa, que também inclui `--case`, `--tag`, `--eval-dir`, `--no-scaffold`, `--report` e `--verbose`.

357 

358| Opção | Padrão | Efeito |

359| :------------------------- | :--------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

360| `--runs <n>` | `runs` de cada caso, senão 3 | Execuções por caso por braço |

361| `-j`, `--concurrency <n>` | `1` | Execute até este número de execuções de agente de uma vez, de 1 a 8. Elas compartilham o limite de taxa de sua conta, então isso encurta o tempo de parede em vez de aumentar a taxa de transferência além desse limite. Os resultados mantêm a ordem do caso |

362| `--model <model>` | `model` de cada caso, senão `ANTHROPIC_MODEL` se definido, senão o padrão de Claude Code | Modelo para o agente sob teste. Fixe-o em CI para que um lançamento de modelo não seja confundido com uma regressão de plugin |

363| `--judge-model <model>` | Um modelo pequeno e rápido | Modelo para avaliadores `llm` e `baseline` |

364| `--ablation <mode>` | `with-without` quando um plugin resolve, senão `none` | Se também executar cada caso sem o plugin para medir o que ele adiciona. `none` executa um braço; `with-without` adiciona a linha de base sem plugin |

365| `--threshold <0..1>` | `1.0` | Um caso passa quando sua pontuação de braço com é pelo menos isso. Qualquer caso abaixo disso faz o comando sair 1 |

366| `--max-cost-usd <usd>` | Sem teto | Um teto no custo estimado de preço de lista da execução, não no uso do plano. Verificado antes de cada execução começar. Uma vez gasto, nada mais começa; execuções já em voo terminam, então o gasto pode passar o teto por essas execuções. Se alguma execução for deixada não iniciada, o comando sai 2 com resultados parciais |

367| `--allow-tools <tools...>` | Nenhum | Conceda ferramentas além do conjunto somente leitura. Veja [Conceda ferramentas](#grant-tools) |

368| `--scaffold` | Desligado | Execute o [`scaffold_script`](#add-setup-or-history-with-case-yaml) de cada caso |

369| `--trust-plugin` | Desligado | Pule o prompt de confiança de primeira execução para um plugin cujo código e conjunto você executaria você mesmo. Passe-o em CI para que o trabalho nunca seja recusado ou deixado esperando no prompt. Veja [O que uma execução pode acessar](#security) |

370| `--mocks <mode>` | `record` | `record` responde chamadas de ferramenta MCP a partir de [mocks](#mock-mcp-servers), não inicia os servidores MCP reais do plugin e salva respostas de mock de agente para reprodução. `off` ignora mocks e inicia os servidores MCP reais do plugin |

371| `--allow-real-servers` | Desligado | Com `--mocks record`, também inicie os servidores MCP reais do plugin para servidores que não têm mock |

372| `--json [path]` | Desligado | Imprima o [documento de resultado](#json-result) para stdout, ou escreva-o em um caminho terminando em `.json`. A execução é silenciosa: sem linhas de progresso ou tabela de resumo |

373| `--output-dir <dir>` | `<eval dir>/results/<timestamp>/` | Onde `aggregate-result.json` e `report.html` vão |

374| `--no-publish` | | Mantenha o relatório HTML local. Veja [Relatório HTML](#html-report) |

375| `--publish-report` | | Publique o relatório mesmo onde ficaria local por padrão, como uma execução que uma sessão de Claude Code iniciou |

376| `--keep-temp` | Desligado | Mantenha o diretório de sandbox de cada execução e imprima seu caminho, para depuração do que Claude produziu |

377 

378<h3 id="run-evals-in-ci">

379 Executar evals em CI

380</h3>

381 

382Em seu trabalho de CI, execute o conjunto com `--json` para escrever o resultado para arquivamento e falhe a compilação no código de saída. Passe `--trust-plugin` para que o trabalho nunca espere no [prompt de confiança de primeira execução](#security), fixe ambos os modelos para que as pontuações sejam comparáveis ao longo do tempo, mantenha o relatório local e defina um teto de custo como um limite superior:

383 

384```bash theme={null}

385claude plugin eval . \

386 --trust-plugin \

387 --json results.json \

388 --threshold 0.8 \

389 --model claude-sonnet-5 \

390 --judge-model claude-haiku-4-5 \

391 --no-publish \

392 --max-cost-usd 20

393```

394 

395O código de saída do trabalho diz o que aconteceu:

396 

397| Código de saída | Significado |

398| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

399| 0 | Cada caso marcou em ou acima de `--threshold` e cada arquivo de caso carregou |

400| 1 | Um caso marcou abaixo do limite, um arquivo de caso falhou ao carregar, nenhum caso foi encontrado, uma execução não pôde ser iniciada, o diretório do plugin não é confiável e `--trust-plugin` não foi passado, ou uma opção era inválida |

401| 2 | Execução parcial: o teto `--max-cost-usd` foi atingido, ou sua credencial foi rejeitada antes ou na primeira execução. `results.json` ainda é escrito com `partial: true` e o motivo |

402| 130 | Interrompido. Resultados parciais são escritos |

403| 143 | Terminado, como por um timeout de CI |

404 

405Problemas ao escrever ou publicar o relatório HTML nunca mudam o código de saída. Para ver por que um caso marcou baixo, execute-o localmente sem `--json` para que o progresso por execução e as linhas do avaliador sejam impressas.

406 

407Um executor de CI precisa de uma instalação de Claude Code e [credenciais no ambiente](/docs/pt/authentication) como `ANTHROPIC_API_KEY`. Sem `--trust-plugin`, um trabalho cujo diretório de checkout Claude Code ainda não confia é recusado com saída 1 quando não tem terminal, ou espera no prompt quando o executor aloca um. `claude plugin eval init` precisa de um terminal para fazer suas perguntas; em CI, execute `claude plugin eval init --bare <name>` para obter o modelo em branco.

408 

409Para manter custos previsíveis, dê a cada conjunto de mudança rápida apenas avaliadores que não chamam um juiz, use `--ablation none` onde você não precisa de `Δ` e deixe documentos `partial: true` e execuções com `skippedPaidGraders` fora de qualquer tendência que você gráfico.

410 

411<h2 id="read-the-results">

412 Leia os resultados

413</h2>

414 

415Cada execução com pelo menos um caso escreve um diretório `results/<timestamp>/` dentro do diretório de eval, contendo `aggregate-result.json` e `report.html`. Para um destino de caminho que está sob o plugin; para um plugin que você nomeou, está sob seu diretório atual, como a [tabela de destino](#choose-what-to-evaluate) mostra. A tabela de resumo, o JSON e o relatório todos renderizam os mesmos dados de resultado.

416 

417<h3 id="html-report">

418 Relatório HTML

419</h3>

420 

421`report.html` é um arquivo único e autossuficiente que não faz solicitações externas, então você pode anexá-lo a um trabalho de CI ou abri-lo do disco. Este exemplo é o topo de um relatório para uma execução de conjunto de três casos com `--threshold 0.8`; o custo mostrado é uma estimativa de preço de lista e varia com o modelo e o número de casos:

422 

423<img src="https://mintcdn.com/claude-code/qq7LHDi_F0aeFHgk/images/plugin-eval-report.png?fit=max&auto=format&n=qq7LHDi_F0aeFHgk&q=85&s=106eb6e6a70a6565f891ea3a4564f87d" alt="Topo de um relatório de eval: uma linha de veredicto lendo &#x22;Plugin effect: +33.3 pts vs baseline, improved 2, flat 1, regressed 0 of 3 cases&#x22;, cinco blocos de resumo para pontuação do conjunto, delta de ablação, pontuação de baseline, casos passando no limite e execuções perfeitas, então o primeiro caso com seu delta, barra de pontuação e uma execução cujos dois avaliadores mostram aprovação" width="1360" height="1032" data-path="images/plugin-eval-report.png" />

424 

425Leia-o de cima para baixo:

426 

427* **A linha de veredicto e os blocos** respondem se o plugin ajudou em todo o conjunto. A pontuação do conjunto é a média das pontuações com plugin por caso, Ablation Δ é o quão longe isso fica acima ou abaixo da pontuação de baseline, e Cases conta quantos atingiram o limite. Perfect runs é a proporção de execuções com plugin onde cada avaliador passou.

428* **Cada cartão de caso** mostra o próprio `Δ` do caso e a pontuação com plugin, com uma marca na barra no limite. Um caso cujo `Δ` é negativo recebe uma borda esquerda vermelha, então as regressões se destacam quando você rola.

429* **Dentro de um caso**, as execuções com plugin vêm primeiro e as execuções de baseline depois. Cada execução lista seus avaliadores com um chip de aprovação ou reprovação. Um avaliador reprovado já está expandido com sua explicação, e um avaliador `llm` também mostra os votos do juiz e a evidência que foi mostrada, que é onde você descobre por que uma execução teve uma pontuação baixa. Avaliadores que não contam para a pontuação, como `tool_used: Skill`, carregam um badge de `plugin-fired indicator`.

430* **Prompt e Graders**, abaixo das execuções, mostram o prompt do caso e a rubrica ou padrão de cada avaliador, para que alguém lendo o relatório sem o conjunto possa ver o que foi perguntado e o que contou como bom.

431 

432Se você estiver conectado com uma assinatura claude.ai e [artifacts](/docs/pt/artifacts) estiverem disponíveis para sua conta, Claude Code também publica o relatório como um artefato privado e imprime `Published: <url>`. Passe `--no-publish` para mantê-lo local. Se nenhuma linha `Published:` aparecer, como com autenticação de chave de API, o arquivo local é o relatório.

433 

434Uma execução que uma sessão de Claude Code iniciou, como quando você pede a Claude para executar o conjunto para você, também fica local, e sua linha `Report:` diz `kept local`. Adicione `--publish-report` a esse comando para publicá-lo.

435 

436<h3 id="json-result">

437 Resultado JSON

438</h3>

439 

440`aggregate-result.json` e saída `--json` é um documento versionado com `schemaVersion: 1` para scripts de CI analisarem. Os nomes de campo são camelCase e novos campos são adicionados sem renomear os existentes, então escreva seu script para ignorar campos que não reconhece.

441 

442Estes são os campos que um script de gating geralmente lê. O documento também carrega a configuração do conjunto, cada definição de avaliador e resultados de avaliador por execução com explicações e evidências:

443 

444| Campo | Significado |

445| :------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

446| `partial`, `partialReason` | `true` com `cost_ceiling`, `interrupted` ou `auth_failed` quando o conjunto não terminou. Deixe resultados parciais fora de gráficos de tendência |

447| `aggregates.overallScore` | Pontuação média do caso em todo o conjunto |

448| `aggregates.casesPassed`, `aggregates.casesTotal` | Casos em ou acima de `--threshold` e o total |

449| `aggregates.meanDelta` | `Δ` médio entre casos, sob o modo de dois braços |

450| `cases[].name` | Nome do caso |

451| `cases[].aggregates.score` | Pontuação média de execução de braço com para o caso |

452| `cases[].aggregates.delta` | Pontuação de braço com menos pontuação de braço sem. Omitido quando os braços não são comparáveis |

453| `cases[].arms.with[].error` | `null`, ou por que uma execução terminou anormalmente, como `timed out after 300s`. Uma execução que começou mas terminou mal ainda é classificada no que produziu, então um erro não nulo não implica pontuação 0 |

454| `cases[].arms.with[].aborted` | Presente quando um [mock](#mock-mcp-servers) `expect:` ou `abort_when` parou a execução, com `server`, `tool` e `reason`. A execução marca 0 e `error` permanece `null` |

455| `cases[].arms.with[].skippedPaidGraders` | `true` quando o teto de custo pulou os avaliadores de juiz dessa execução, então sua pontuação não é comparável |

456| `costUsd`, `durationSeconds`, `claudeVersion` | Custo estimado a preço de lista incluindo chamadas de juiz, segundos de parede e a versão de Claude Code que executou o conjunto |

457 

458<h2 id="security">

459 O que uma execução pode acessar

460</h2>

461 

462`claude plugin eval` carrega os skills e hooks do plugin de destino e executa seu conjunto de eval em sua máquina, como você. Apontá-lo para um plugin é a mesma decisão de confiança que `claude --plugin-dir`, então apenas avalie plugins em que você confia. O isolamento descrito nesta seção limita o que o agente sob teste pode alcançar; não é um limite contra o próprio código do plugin, e um conjunto que passa não diz nada sobre se o plugin é seguro.

463 

464<h3 id="trust-the-plugin-directory">

465 Confie no diretório do plugin

466</h3>

467 

468A primeira vez que você executa `claude plugin eval` contra um diretório, Claude Code pergunta `Trust this plugin directory?` antes de carregar qualquer coisa dele, a menos que você já tenha aceitado o prompt de confiança lá em uma sessão interativa de `claude`. Dentro de um repositório git, responder sim confia no repositório inteiro, para sessões interativas também. Quando stdin ou stdout não é um terminal, ou sob `--json`, a execução não pode perguntar e é recusada com saída 1; passe `--trust-plugin` para afirmar a confiança você mesmo, apenas para um plugin que você executaria em sua própria máquina. Um destino que você nomeia em vez de dar como caminho, significando um plugin instalado ou um plugin de diretório de skills, pula o prompt.

469 

470Algumas partes do plugin e conjunto são executadas apenas quando você passa sua flag para essa execução: um [`scaffold_script`](#add-setup-or-history-with-case-yaml) de caso com `--scaffold`, [ferramentas além do conjunto somente leitura](#grant-tools) com `--allow-tools` e os [servidores MCP reais](#mock-mcp-servers) do plugin com `--allow-real-servers` ou `--mocks off`. Um `allowed_tools` de caso e um frontmatter `allowed-tools` próprio de skill não podem ampliar nenhum deles. Quando o plugin envia hooks que você não escreveu, ou você inicia seus servidores MCP reais, trate suas pontuações como consultivas a menos que você o tenha executado em um ambiente isolado como um contêiner ou executor de CI, já que hooks e servidores são executados fora da sandbox do agente e poderiam tocar nos arquivos que os avaliadores leem.

471 

472<h3 id="how-runs-are-isolated">

473 Como as execuções são isoladas

474</h3>

475 

476Cada execução obtém um diretório inicial descartável, diretório de trabalho e configuração de Claude Code, e o agente sob teste é executado lá como um processo filho `claude -p` com apenas seu plugin carregado. Mantenha essas consequências em mente quando escrever casos:

477 

478* **Nada pessoal ou de nível de projeto carrega.** Suas configurações de usuário, hooks, arquivos `CLAUDE.md`, servidores MCP, outros plugins instalados, memória e skills estão ausentes, e nenhum `.claude/` ou `.mcp.json` com escopo de projeto acima da sandbox é lido. A maioria de seu ambiente de shell também é retida; apenas uma [lista de permissões](#prompt-md-fields) e variáveis `EVAL_*` alcançam a execução. Se o plugin precisa de configuração, envie-a no plugin, crie-a em um `scaffold_script` ou passe variáveis `EVAL_*`.

479* **A política gerenciada ainda pode restringir uma execução.** Restrições em [configurações gerenciadas](/docs/pt/managed-settings) que um administrador implantou na máquina se aplicam dentro de uma execução, então os resultados em uma máquina gerenciada podem diferir de uma não gerenciada por essa política.

480* **A ferramenta Artifact está desligada.** Um skill que publica um [artifact](/docs/pt/artifacts) pode ser classificado apenas no que produz antes dessa etapa.

481* **As definições de caso estão ocultas do agente.** Uma execução não pode ler o diretório de eval, então Claude não pode ver o prompt do caso, seus avaliadores ou casos irmãos.

482* **Sem sandbox de rede fora de comandos shell.** Comandos shell que você concede são executados sob as regras de sandbox. Uma concessão `WebFetch(domain:…)` alcança esse domínio diretamente, e os hooks próprios do plugin e qualquer servidor MCP real que você inicia podem alcançar qualquer host.

483 

484<h2 id="eval-suite-reference">

485 Referência de conjunto de eval

486</h2>

487 

488Tudo o que um conjunto de eval pode conter vive sob o diretório de eval do plugin, `evals/` a menos que você [configure outro](#use-a-different-eval-directory). Esta árvore mostra cada arquivo que `claude plugin eval` lê ou escreve lá; apenas `prompt.md` ou `case.yaml` é necessário para um caso existir:

489 

490```text theme={null}

491evals/

492├── <case>/ # one directory per case; nest under a non-case directory to group

493│ ├── prompt.md # frontmatter: case and run fields; body: the prompt

494│ ├── case.yaml # optional: context.* fields, or the whole case in one file

495│ ├── graders/

496│ │ └── <name>.md # one grader per file; frontmatter: type and options; body: rubric

497│ ├── mocks/ # optional: mocks for this case only, same layout as below

498│ └── <fixtures, scripts, transcripts referenced by case.yaml>

499├── mocks/ # optional: suite-wide MCP mocks

500│ ├── <server>/

501│ │ ├── <tool>.md # one mocked tool; body: the tool result

502│ │ ├── _server.md # optional: one agent that answers several tools

503│ │ ├── _tools.json # optional: saved tools/list response for real descriptions and schemas

504│ │ └── fixtures/ # files inserted with {{file:fixtures/...}}

505│ └── .replay/<server>/ # adopted agent-mock recordings, answered without a model call

506└── results/<timestamp>/ # written by each run; add results/ to .gitignore

507 ├── aggregate-result.json

508 ├── report.html

509 └── mock-recordings/ # agent-mock answers from clean runs, with ADOPT.txt

510```

511 

512<h3 id="prompt-md-fields">

513 prompt.md frontmatter

514</h3>

515 

516O frontmatter `prompt.md` aceita esses campos. Uma chave desconhecida é um erro:

517 

518| Campo | Padrão | Propósito |

519| :--------------------- | :------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

520| `schema_version` | `"1.1"`, definido para você | Versão do formato de caso. Casos escritos como `prompt.md` o obtêm automaticamente, então você raramente o define |

521| `name` | O nome do diretório | Nome do caso. Globs `--case` o combinam e o relatório o chave |

522| `description` | | Para humanos. Não usado em tempo de execução |

523| `tags` | `[]` | Rótulos para filtragem `--tag`. Um caso é executado se qualquer uma de suas tags corresponder |

524| `plugins` | O plugin envolvente mais próximo | Diretórios de plugin sob teste, relativos ao diretório de caso. Defina `plugins: ["../.."]` quando a detecção automática não encontra seu plugin; veja [o plugin não carregou](#the-baseline-arm-shows-no-plugin-or-delta-is-zero) |

525| `runs` | `3` | Execuções por braço, 1 a 50. `--runs` o substitui |

526| `expected_outcome` | | Para humanos. Não usado em tempo de execução |

527| `model` | O padrão da sessão filha | Modelo para o agente sob teste. `--model` o substitui |

528| `max_turns` | `10` | Limite de turno, até 200. Atingi-lo é registrado como um erro de execução e geralmente reduz a pontuação, então defina-o generosamente |

529| `timeout_seconds` | `300` | Limite de parede por execução, até 3600 |

530| `allowed_tools` | `[]` | Ferramentas que o caso quer, como `[Read, Glob, Grep, Skill]`. Ferramentas somente leitura são concedidas quando listadas aqui; para qualquer outra coisa, veja [Conceda ferramentas](#grant-tools) |

531| `append_system_prompt` | | Texto anexado ao prompt do sistema da sessão filha |

532| `env` | `{}` | Variáveis de ambiente extras para a sessão filha. As chaves devem corresponder a `EVAL_[A-Z0-9_]*`; qualquer outra chave falha a execução. A execução herda apenas uma lista de permissões do seu shell: básicos como `PATH` e localidade, configurações de proxy e certificado, as variáveis que selecionam e autenticam seu provedor de modelo, a maioria de `ANTHROPIC_*` e `CLAUDE_CODE_*` configuração e `EVAL_*`. Para entregar ao plugin qualquer outra coisa, como uma configuração de toolchain, exporte-a como uma variável `EVAL_*` |

533 

534<h3 id="case-yaml-fields">

535 case.yaml fields

536</h3>

537 

538`case.yaml` descreve o mesmo caso em YAML e adiciona os campos que apontam para outros arquivos. Requer `schema_version: "1.1"` e `name`. Os campos `prompt.md` `description`, `tags`, `plugins`, `runs` e `expected_outcome` vão no nível superior; `model`, `max_turns`, `timeout_seconds`, `allowed_tools`, `append_system_prompt` e `env` vão sob `execution:`. Quando ambos os arquivos existem, o frontmatter `prompt.md` substitui os campos `case.yaml` correspondentes, o corpo `prompt.md` é o prompt e `graders/*.md` são adicionados após qualquer avaliador listado em `case.yaml`.

539 

540Esses campos existem apenas em `case.yaml`:

541 

542| Campo | Propósito |

543| :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

544| `context.scaffold_script` | Um script Bash no diretório de caso que é executado no espaço de trabalho vazio antes de Claude começar, para criar arquivos de fixture ou um repositório git. Ele é executado apenas quando você passa [`--scaffold`](#add-setup-or-history-with-case-yaml) |

545| `context.history_file` | Uma transcrição `.jsonl` no diretório de caso para retomar. O prompt do caso se torna o próximo turno do usuário |

546| `context.add_dirs` | Diretórios dentro do diretório de caso que Claude pode ler durante a execução, concedido somente leitura |

547| `execution.prompt` | O prompt, quando você mantém o caso inteiro em `case.yaml` e omite `prompt.md` |

548| `graders` | Uma lista de avaliadores, cada um com um `name` mais as mesmas chaves que um arquivo `graders/*.md` leva em frontmatter. Para avaliadores `llm`, coloque a rubrica em `criteria` |

549 

550<h3 id="grader-frontmatter">

551 Grader frontmatter

552</h3>

553 

554Cada arquivo de avaliador sob `graders/` leva essas chaves em frontmatter, mais as opções para seu tipo. O nome do avaliador é o nome do arquivo sem `.md`:

555 

556| Chave | Padrão | Propósito |

557| :------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

558| `type` | obrigatório | Um dos [tipos de avaliador](#grader-types) |

559| `weight` | `1` | Peso relativo na pontuação da execução. Qualquer número positivo |

560| `arm` | não definido | `with-only` exclui o avaliador da pontuação em uma [execução de dois braços](#compare-against-a-no-plugin-baseline); `both` força um avaliador `tool_used: Skill` a ser pontuado em ambos os braços |

561 

562<h4 id="what-a-grader-can-look-at">

563 O que um avaliador pode ver

564</h4>

565 

566Avaliadores `regex` pegam um `target` e avaliadores `llm` pegam um `focus`. Ambos aceitam os mesmos valores:

567 

568| Valor | O que o avaliador vê |

569| :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

570| `last_message` | Texto da resposta final de Claude. Este é o padrão |

571| `trace` | A sessão inteira como JSON, uma mensagem por linha. Um avaliador `regex` vê cada mensagem; um juiz `llm` vê os primeiros 12 e os últimos 12. Aspas e quebras de linha dentro dela são escapadas em JSON, então uma regex corresponde a `\"` em vez de `"` |

572| `files` | A lista de caminhos que Claude criou durante a execução, um por linha. Não seus conteúdos e não arquivos que um scaffold criou ou que Claude apenas modificou |

573| `{ source: file, path: <path> }` | O conteúdo de um arquivo no espaço de trabalho após a execução. Use isso para classificar o que o plugin produziu. Um arquivo PNG, JPEG, GIF ou WebP é mostrado a um juiz `llm` como uma imagem. Um juiz `llm` recusa outros arquivos binários como `.pptx` ou PDF; renderize-os para uma imagem ou escreva-os como texto e classifique isso |

574| `mock_calls` | Cada chamada que Claude fez a uma [ferramenta MCP mockificada](#mock-mcp-servers), com sua entrada e a resposta do mock |

575 

576<h4 id="grader-types">

577 Tipos de avaliador

578</h4>

579 

580Cada tipo de avaliador abaixo lista suas opções e quando passa:

581 

582| Tipo | Opções | Passa quando |

583| :------------ | :------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

584| `regex` | `pattern`, `flags`, `match`, `target` | A regex JavaScript `pattern` é encontrada no destino. Defina `match: not_contains` para exigir ausência ou `match: "count:N"` para exigir exatamente N correspondências. Coloque insensibilidade a maiúsculas/minúsculas em `flags: i`; `(?i)` inline não é suportado |

585| `tool_used` | `tool`, `input_match`, `min`, `max` | O número de chamadas para `tool` cuja entrada codificada em JSON corresponde à regex `input_match` opcional está entre `min`, padrão 1, e `max`, padrão ilimitado. Para afirmar que uma ferramenta nunca foi chamada, defina ambos `min: 0` e `max: 0` |

586| `tool_order` | `before`, `after` | Ambas as ferramentas foram chamadas e a primeira chamada `before` correspondente precede a primeira chamada `after` correspondente. Cada um é um nome de ferramenta ou `{ tool, input_match }` |

587| `file_exists` | `path`, `exists` | Um arquivo que Claude criou corresponde ao glob `path`, ou nenhum com `exists: false`. Apenas arquivos criados durante a execução contam |

588| `llm` | `criteria`, `focus` | Um modelo de juiz vota PASS na rubrica em pelo menos dois de três votos. No layout `.md` o corpo do arquivo é os critérios |

589| `baseline` | `baseline_file`, `criteria` | Um juiz encontra a execução satisfaz os critérios pelo menos tão bem quanto a transcrição de referência em `baseline_file`, um `.jsonl` no diretório de caso |

590 

591<h3 id="mock-files">

592 Mock files

593</h3>

594 

595Um arquivo `<tool>.md` sob `mocks/<server>/` responde uma ferramenta. Seu corpo é o resultado da ferramenta, com substituições `{{input.<field>}}` e `{{file:fixtures/<name>}}`. Seu frontmatter aceita essas chaves:

596 

597| Chave | Padrão | Propósito |

598| :----------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

599| `type` | `fixed` | `fixed` retorna o corpo como escrito. `agent` trata o corpo como instruções para um modelo pequeno que joga o servidor para a execução e vê chamadas anteriores como histórico |

600| `expect` | não definido | Um mapa de caminhos de entrada com pontos para um nome de tipo como `string`, `number`, `boolean`, `array` ou `object`, um `/regex/`, um literal ou uma lista de literais permitidos. Uma chamada que viola aborta a execução com pontuação 0 e é relatada como `aborted` com o servidor, ferramenta e motivo |

601| `error` | `false` | `fixed` apenas. Retorne o corpo como um erro de ferramenta |

602| `abort_when` | não definido | `agent` apenas. Prosa listando as únicas condições sob as quais o agente pode abortar a execução |

603 

604Dois arquivos opcionais ficam ao lado dos arquivos de ferramenta no diretório de um servidor:

605 

606* **`_server.md`**: um único mock `type: agent` que responde várias ferramentas, listadas em sua chave frontmatter `tools:`. Um `<tool>.md` para a mesma ferramenta tem precedência. Coloque uma guarda `expect:` no `<tool>.md` individual, não aqui

607* **`_tools.json`**: uma resposta `tools/list` salva do servidor real, para que ferramentas mockificadas carreguem suas descrições reais e esquemas de entrada em vez de um espaço reservado permissivo

608 

609O diretório `mocks/` próprio de um caso usa o mesmo layout e substitui os arquivos de mocks do conjunto arquivo por arquivo.

610 

611<h2 id="troubleshooting">

612 Solução de problemas

613</h2>

614 

615Estes são os problemas que os autores mais frequentemente encontram, chaveados no que você vê.

616 

617<h3 id="plugin-eval-is-currently-in-early-access">

618 "plugin eval is currently in early access"

619</h3>

620 

621Sua compilação é anterior à disponibilidade geral do comando. Execute `claude update` e execute o comando novamente em uma sessão fresca.

622 

623<h3 id="plugin-eval-is-currently-unavailable">

624 "plugin eval is currently unavailable"

625</h3>

626 

627Anthropic desligou o comando do lado do servidor. Nada em sua máquina o liga novamente; execute `claude update` e tente novamente em uma sessão fresca mais tarde.

628 

629<h3 id="is-not-a-trusted-plugin-directory-and-this-run-cannot-stop-to-ask-you-about-it">

630 "is not a trusted plugin directory, and this run cannot stop to ask you about it"

631</h3>

632 

633Esta é a primeira execução contra um diretório que Claude Code ainda não confia, e não pode perguntar porque stdin ou stdout não é um terminal ou você passou `--json`. Execute `claude plugin eval <dir>` uma vez em um terminal e responda o prompt, ou passe `--trust-plugin` se você confia no código e conjunto do plugin. Veja [O que uma execução pode acessar](#security).

634 

635<h3 id="no-eval-cases-found">

636 "No eval cases found"

637</h3>

638 

639Nenhum `<case>/prompt.md` ou `<case>/case.yaml` existe sob o diretório de eval em vigor, ou seus filtros `--case` e `--tag` não corresponderam a nenhum caso. Execute a partir da raiz do plugin, ou execute `claude plugin eval init` para criar um conjunto.

640 

641<h3 id="the-baseline-arm-shows-no-plugin-or-delta-is-zero">

642 O braço de linha de base mostra nenhum plugin, ou delta é zero

643</h3>

644 

645Se o resumo não tem coluna `W/OUT`, ou o caso falha com "ablation requested but no plugin resolved", nenhum plugin foi encontrado para o caso. Adicione `plugins: ["../.."]` ao caso, dando o caminho do diretório de caso para o diretório de plugin.

646 

647Se o plugin carregou e `Δ` ainda está próximo a zero com seu avaliador `tool_used: Skill` falhando, isso é geralmente um achado real, significando que a `description` do skill não dispara no fraseado do prompt. Ajuste a descrição e re-execute o mesmo conjunto.

648 

649<h3 id="everything-scores-zero-although-the-right-files-were-produced">

650 Tudo marca zero embora os arquivos corretos tenham sido produzidos

651</h3>

652 

653Seus avaliadores visam `files`, a lista de caminhos criados, quando você quis o conteúdo do arquivo. Use `{ source: file, path: <path> }` como o `target` ou `focus`. Separadamente, `file_exists` conta apenas arquivos criados durante a execução, então um arquivo que o scaffold criou ou que Claude apenas editou é invisível para ele; classifique seu conteúdo ou use `tool_used` em `Edit`.

654 

655<h3 id="a-regex-over-the-trace-doesn’t-match-text-i-can-see">

656 Uma regex sobre o trace não corresponde ao texto que posso ver

657</h3>

658 

659O `target` padrão é `last_message`, não o trace. Quando você visa `trace`, é JSON por linha, então aspas aparecem como `\"`. Regexes usam sintaxe JavaScript, então coloque `i` em `flags` em vez de escrever `(?i)`.

660 

661<h3 id="tools-are-denied-mcp-tools-are-missing-or-bash-won’t-run">

662 Ferramentas são negadas, ferramentas MCP estão faltando ou Bash não será executado

663</h3>

664 

665Qualquer coisa além do conjunto somente leitura precisa de sua concessão, como `--allow-tools Bash Write`. Seus servidores MCP pessoais nunca carregam em uma execução. Os servidores próprios do plugin não começam a menos que você [opte por](#mock-mcp-servers), e suas ferramentas então também precisam de uma concessão `--allow-tools "mcp__plugin_<plugin>_<server>__*"`; uma ferramenta mockificada não precisa de nenhuma.

666 

667<h3 id="the-run-exits-1-but-the-results-look-fine">

668 A execução sai 1 mas os resultados parecem bons

669</h3>

670 

671O `--threshold` padrão é 1.0, então o comando sai 1 quando qualquer caso marca abaixo do perfeito. Defina um limite que corresponda à sua barra. Saída 1 também cobre um arquivo de caso que falhou ao carregar, que é relatado em stderr acima da tabela.

672 

673<h3 id="json-output-path-must-end-in-json">

674 "--json output path must end in .json"

675</h3>

676 

677Você colocou o destino após `--json`, então foi lido como o caminho de saída. Coloque o destino primeiro, como em `claude plugin eval . --json`, ou dê a `--json` um caminho `.json` explícito.

678 

679<h3 id="a-grader-shows-passed-false-under-a-run-that-scored-1-0">

680 Um avaliador mostra passed: false sob uma execução que marcou 1.0

681</h3>

682 

683Esse avaliador é excluído da pontuação por design em uma execução de dois braços, e seu campo `scored` é `false`. Veja [Comparar com uma linha de base sem plugin](#compare-against-a-no-plugin-baseline).

684 

685<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">

686 Execuções falham com um erro de limite de uso ou limite de taxa no meio

687</h3>

688 

689Se sua conta atinge o limite de uso do plano ou um limite de taxa de API enquanto um conjunto está em execução, cada execução posterior termina com esse erro, é classificada no que produziu e geralmente marca 0. O conjunto ainda termina e não é marcado `partial`, então o resultado pode parecer uma regressão. Verifique a coluna `NOTES` ou `cases[].arms.with[].error` no JSON para a mensagem de limite antes de confiar nas pontuações, então re-execute após o limite redefinir, com `--runs 1` ou um filtro `--case` se você precisar ficar abaixo dele.

690 

691<h3 id="runs-time-out-or-hit-the-turn-cap">

692 Execuções expiram ou atingem o limite de turno

693</h3>

694 

695Os padrões são 10 turnos e 300 segundos. Aumente `max_turns` e `timeout_seconds` no caso para tarefas que precisam de mais, e use `--max-cost-usd` como o teto de custo em vez de limites apertados por execução.

696 

697<h2 id="see-also">

698 Veja também

699</h2>

700 

701* [Criar plugins](/docs/pt/plugins): construa o plugin que você está testando e carregue-o com `--plugin-dir` durante o desenvolvimento

702* [Referência de plugins](/docs/pt/plugins-reference#plugin-eval): as entradas de comando `plugin eval` e `plugin eval init` e a chave `experimental.evals` do manifesto

703* [Skills](/docs/pt/skills): como a descrição de um skill decide quando Claude o invoca, que é o que um caso que verifica se o skill dispara está medindo

704* [Sandboxing](/docs/pt/sandboxing): a sandbox de nível do SO que se aplica quando você concede Bash a uma execução

705* [Criar e distribuir um marketplace de plugin](/docs/pt/plugin-marketplaces): publique o plugin uma vez que seu conjunto passa

plugin-hints.md +1 −1

Details

36Gate a emissão em uma variável de ambiente para que o marcador seja improvável de aparecer quando um humano executa seu CLI diretamente, depois escreva a tag para stderr em sua própria linha. Escolha qual variável verificar:36Gate a emissão em uma variável de ambiente para que o marcador seja improvável de aparecer quando um humano executa seu CLI diretamente, depois escreva a tag para stderr em sua própria linha. Escolha qual variável verificar:

37 37 

38* `CLAUDECODE`: definida em todas as versões do Claude Code, portanto atinge a maioria das sessões. Também é definida em sessões tmux e subprocessos do servidor MCP stdio que Claude Code inicia. Extensões IDE também a definem em seus terminais integrados, onde um humano pode estar executando seu CLI diretamente.38* `CLAUDECODE`: definida em todas as versões do Claude Code, portanto atinge a maioria das sessões. Também é definida em sessões tmux e subprocessos do servidor MCP stdio que Claude Code inicia. Extensões IDE também a definem em seus terminais integrados, onde um humano pode estar executando seu CLI diretamente.

39* `CLAUDE_CODE_CHILD_SESSION`: definida apenas em subprocessos que o próprio Claude Code gera, como chamadas de ferramenta, comandos hook e comandos da [linha de status](/docs/pt/statusline), portanto a tag normalmente não atinge um terminal humano. Um processo de longa duração que foi iniciado dentro de uma sessão, como um servidor tmux, captura a variável, portanto shells iniciados posteriormente a partir desse processo ainda mostram a tag bruta. Requer Claude Code v2.1.172 ou posterior, portanto sessões em versões mais antigas perdem a dica.39* `CLAUDE_CODE_CHILD_SESSION`: definida apenas em subprocessos que o próprio Claude Code gera, como chamadas de ferramenta, comandos hook e comandos da [linha de status](/docs/pt/statusline), portanto a tag normalmente não atinge um terminal humano. Um processo de longa duração que foi iniciado dentro de uma sessão, como um servidor tmux, captura a variável, portanto shells iniciados posteriormente a partir desse processo ainda mostram a tag bruta.

40 40 

41Os exemplos a seguir fazem gate em `CLAUDECODE` para máximo alcance e emitem uma dica para um plugin chamado `example-cli` no marketplace oficial:41Os exemplos a seguir fazem gate em `CLAUDECODE` para máximo alcance e emitem uma dica para um plugin chamado `example-cli` no marketplace oficial:

42 42 

Details

96 </Step>96 </Step>

97 97 

98 <Step title="Adicionar e instalar">98 <Step title="Adicionar e instalar">

99 A partir do diretório que contém `my-marketplace`, inicie Claude Code e execute os seguintes comandos. O comando install abre uma visualização de detalhes do plugin onde você seleciona um escopo de instalação para confirmar a instalação. Verifique o resumo da instalação: se ele relatar `Run /reload-plugins to activate.`, execute esse comando.99 A partir do diretório que contém `my-marketplace`, inicie Claude Code e execute os seguintes comandos. O comando install abre uma visualização de detalhes do plugin onde você seleciona um escopo de instalação para confirmar a instalação. Verifique o resumo da instalação: se ele relatar `Run /reload-plugins to activate.`, veja [Aplicar alterações de plugin sem reiniciar](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting).

100 100 

101 ```shell theme={null}101 ```shell theme={null}

102 /plugin marketplace add ./my-marketplace102 /plugin marketplace add ./my-marketplace


314}314}

315```315```

316 316 

317Os caminhos são resolvidos relativamente à raiz do marketplace, que é o diretório contendo `.claude-plugin/`. No exemplo acima, `./plugins/my-plugin` aponta para `<repo>/plugins/my-plugin`, mesmo que `marketplace.json` viva em `<repo>/.claude-plugin/marketplace.json`. Não use `../` para referenciar caminhos fora da raiz do marketplace.317Os caminhos são resolvidos relativamente à raiz do marketplace, que é o diretório contendo `.claude-plugin/`. No exemplo acima, `./plugins/my-plugin` aponta para `<repo>/plugins/my-plugin`, mesmo que `marketplace.json` viva em `<repo>/.claude-plugin/marketplace.json`. Não use `../` para referenciar caminhos fora da raiz do marketplace. Em macOS e Linux, Claude Code recusa uma entrada de caminho com uma barra invertida em qualquer lugar após o `./` inicial, então escreva os separadores como `/` em todas as plataformas.

318 318 

319Um nome simples é um único nome de diretório sem `/`, como `"formatter"`. Para escrever nomes simples em vez de caminhos `./`, defina [`metadata.pluginRoot`](#optional-fields) para o diretório sob o qual eles se resolvem. Com `"pluginRoot": "./plugins"`, Claude Code resolve `"source": "formatter"` para `./plugins/formatter`. Requer Claude Code v2.1.239 ou posterior.319Um nome simples é um único nome de diretório sem `/`, como `"formatter"`. Para escrever nomes simples em vez de caminhos `./`, defina [`metadata.pluginRoot`](#optional-fields) para o diretório sob o qual eles se resolvem. Com `"pluginRoot": "./plugins"`, Claude Code resolve `"source": "formatter"` para `./plugins/formatter`. Requer Claude Code v2.1.239 ou posterior.

320 320 


1277 Validação e testes1277 Validação e testes

1278</h2>1278</h2>

1279 1279 

1280Teste seu marketplace antes de compartilhar.1280Teste seu marketplace antes de compartilhar. A validação verifica a estrutura do arquivo; para testar se um plugin muda o que Claude faz em prompts realistas, execute seu conjunto de avaliação com [`claude plugin eval`](/docs/pt/plugin-evals) antes de publicar uma nova versão.

1281 1281 

1282Do seu diretório de marketplace, valide a sintaxe JSON:1282Do seu diretório de marketplace, valide a sintaxe JSON:

1283 1283 

plugins.md +10 −2

Details

179<Warning>179<Warning>

180 **Erro comum**: Não coloque `commands/`, `agents/`, `skills/` ou `hooks/` dentro do diretório `.claude-plugin/`. Apenas `plugin.json` vai dentro de `.claude-plugin/`. Todos os outros diretórios devem estar no nível raiz do plugin.180 **Erro comum**: Não coloque `commands/`, `agents/`, `skills/` ou `hooks/` dentro do diretório `.claude-plugin/`. Apenas `plugin.json` vai dentro de `.claude-plugin/`. Todos os outros diretórios devem estar no nível raiz do plugin.

181 181 

182 A raiz do plugin é o diretório individual do próprio plugin: aquele que você passa para `--plugin-dir` ou que contém `.claude-plugin/plugin.json`. Nunca é `~/.claude/`. Por exemplo, Claude Code não lê um `.mcp.json` colocado em `~/.claude/.mcp.json`.182 A raiz do plugin é o diretório individual do próprio plugin, como `my-first-plugin/` do [guia de início rápido](#quickstart). Nunca é `~/.claude/`. Por exemplo, Claude Code não lê um `.mcp.json` colocado em `~/.claude/.mcp.json`.

183</Warning>183</Warning>

184 184 

185| Diretório | Localização | Propósito |185| Diretório | Localização | Propósito |


2344. Test coverage2344. Test coverage

235```235```

236 236 

237Após instalar o plugin, verifique o resumo de instalação: se ele relatar `Run /reload-plugins to activate.`, execute esse comando para carregar os Skills. Para orientação completa de autoria de Skill incluindo divulgação progressiva e restrições de ferramentas, veja [Agent Skills](/docs/pt/skills).237Após instalar o plugin, verifique o resumo de instalação: se ele relatar `Run /reload-plugins to activate.`, veja [Aplicar mudanças de plugin sem reiniciar](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) para carregar os Skills em sua sessão atual. Para orientação completa de autoria de Skill incluindo divulgação progressiva e restrições de ferramentas, veja [Agent Skills](/docs/pt/skills).

238 238 

239<h3 id="add-lsp-servers-to-your-plugin">239<h3 id="add-lsp-servers-to-your-plugin">

240 Adicione LSP servers ao seu plugin240 Adicione LSP servers ao seu plugin


340 Para testar um plugin junto com um plugin do qual ele depende, veja [Teste um plugin e sua dependência localmente](/docs/pt/plugin-dependencies#test-a-plugin-and-its-dependency-locally).340 Para testar um plugin junto com um plugin do qual ele depende, veja [Teste um plugin e sua dependência localmente](/docs/pt/plugin-dependencies#test-a-plugin-and-its-dependency-locally).

341</Tip>341</Tip>

342 342 

343Tentar o plugin com `--plugin-dir` diz a você que ele pode funcionar. Para descobrir com que frequência Claude realmente o alcança e obtém o resultado correto, execute-o contra um conjunto de prompts de teste com [`claude plugin eval`](/docs/pt/plugin-evals). Cada prompt é executado várias vezes com e sem o plugin carregado, para que você possa ver o que o plugin contribui e detectar regressões quando você o altera ou um novo modelo é lançado.

344 

345Para carregar vários plugins de um único lugar, passe uma pasta que os contém, como `--plugin-dir ./plugins`. Carregar uma pasta de plugins requer Claude Code v2.1.265 ou posterior. Claude Code lê o nível superior da pasta para decidir quais plugins carregam, e em uma sessão interativa também observa a pasta para mudanças posteriores:

346 

347* **O que carrega**: se a pasta não tem um manifesto ou componentes de plugin em seu nível superior, Claude Code a trata como uma pasta de plugins. Cada subpasta imediata que tem um manifesto `.claude-plugin/plugin.json` carrega como um plugin separado. Claude Code ignora tudo mais na pasta sem relatar um erro, incluindo plugins que não têm um manifesto.

348* **Mudanças durante uma sessão interativa**: uma subpasta que você adiciona carrega como um novo plugin uma vez que seu manifesto está em lugar, e quando você remove uma subpasta, seu plugin descarrega. Claude Code imprime uma linha na sessão para cada mudança. Se aplicar uma mudança no meio da conversa [invalidaria o prompt cache](/docs/pt/prompt-caching#enabling-or-disabling-a-plugin), Claude Code a mantém, e a linha diz para executar `/reload-plugins` para aplicá-la.

349 

343Para testar um plugin que já está empacotado como um arquivo `.zip` e hospedado em uma URL, como um artefato de compilação de CI, use `--plugin-url` em vez disso. Claude Code busca o arquivo no início e o carrega apenas para essa sessão. Se Claude Code não conseguir buscar o arquivo, ou o arquivo for inválido, ele inicia sem o plugin e registra um erro de carregamento de plugin que você pode revisar na aba **Errors** do gerenciador `/plugin`. As mesmas [considerações de confiança](/docs/pt/discover-plugins#security) se aplicam como para qualquer fonte de plugin: apenas aponte esse flag para arquivos que você controla ou confia.350Para testar um plugin que já está empacotado como um arquivo `.zip` e hospedado em uma URL, como um artefato de compilação de CI, use `--plugin-url` em vez disso. Claude Code busca o arquivo no início e o carrega apenas para essa sessão. Se Claude Code não conseguir buscar o arquivo, ou o arquivo for inválido, ele inicia sem o plugin e registra um erro de carregamento de plugin que você pode revisar na aba **Errors** do gerenciador `/plugin`. As mesmas [considerações de confiança](/docs/pt/discover-plugins#security) se aplicam como para qualquer fonte de plugin: apenas aponte esse flag para arquivos que você controla ou confia.

344 351 

345Para carregar múltiplos plugins, repita a flag para cada URL:352Para carregar múltiplos plugins, repita a flag para cada URL:


510 Para desenvolvedores de plugins517 Para desenvolvedores de plugins

511</h3>518</h3>

512 519 

520* [Testar plugins com evals](/docs/pt/plugin-evals): meça o que seu plugin muda e gate CI nele

513* [Criar e distribuir um marketplace](/docs/pt/plugin-marketplaces): empacote e compartilhe seus plugins521* [Criar e distribuir um marketplace](/docs/pt/plugin-marketplaces): empacote e compartilhe seus plugins

514* [Referência de plugins](/docs/pt/plugins-reference): especificações técnicas completas522* [Referência de plugins](/docs/pt/plugins-reference): especificações técnicas completas

515* Mergulhe mais fundo em componentes específicos do plugin:523* Mergulhe mais fundo em componentes específicos do plugin:

Details

121 121 

122Plugin hooks respondem aos mesmos eventos de ciclo de vida que [hooks definidos pelo usuário](/docs/pt/hooks):122Plugin hooks respondem aos mesmos eventos de ciclo de vida que [hooks definidos pelo usuário](/docs/pt/hooks):

123 123 

124| Event | When it fires |124| Evento | Quando dispara |

125| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |125| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

126| `SessionStart` | When a session begins or resumes |126| `SessionStart` | Quando uma sessão começa ou é retomada |

127| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |127| `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 |

128| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |128| `UserPromptSubmit` | Quando você envia um prompt, antes de Claude processá-lo |

129| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |129| `UserPromptExpansion` | Quando um comando digitado pelo usuário se expande em um prompt, antes de chegar a Claude. Pode bloquear a expansão |

130| `PreToolUse` | Before a tool call executes. Can block it |130| `PreToolUse` | Antes de uma chamada de ferramenta ser executada. Pode bloqueá-la |

131| `PermissionRequest` | When a tool call needs a permission decision |131| `PermissionRequest` | Quando uma chamada de ferramenta precisa de uma decisão de permissão |

132| `PermissionDenied` | When auto mode denies a tool call, including denials without a classifier verdict. Use JSON `hookSpecificOutput.retry: true` to tell the model it may retry the denied tool call. Claude Code ignores `retry` when the classifier produced no verdict |132| `PermissionDenied` | Quando o modo automático nega uma chamada de ferramenta, incluindo negações sem um veredicto do classificador. Use JSON `hookSpecificOutput.retry: true` para informar ao modelo que ele pode tentar novamente a chamada de ferramenta negada. Claude Code ignora `retry` quando o classificador não produziu veredicto |

133| `PostToolUse` | After a tool call succeeds |133| `PostToolUse` | Depois que uma chamada de ferramenta é bem-sucedida |

134| `PostToolUseFailure` | After a tool call fails |134| `PostToolUseFailure` | Depois que uma chamada de ferramenta falha |

135| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |135| `PostToolBatch` | Depois que um lote completo de chamadas de ferramenta paralelas é resolvido, antes da próxima chamada do modelo |

136| `Notification` | When Claude Code sends a notification |136| `Notification` | Quando Claude Code envia uma notificação |

137| `MessageDisplay` | While assistant message text is displayed |137| `MessageDisplay` | Enquanto o texto da mensagem do assistente está sendo exibido |

138| `SubagentStart` | When a subagent is spawned |138| `SubagentStart` | Quando um subagente é criado |

139| `SubagentStop` | When a subagent finishes |139| `SubagentStop` | Quando um subagente termina |

140| `TaskCreated` | When a task is being created via `TaskCreate` |140| `TaskCreated` | Quando uma tarefa está sendo criada via `TaskCreate` |

141| `TaskCompleted` | When a task is being marked as completed |141| `TaskCompleted` | Quando uma tarefa está sendo marcada como concluída |

142| `Stop` | When Claude finishes responding |142| `Stop` | Quando Claude termina de responder |

143| `StopFailure` | When the turn ends due to an API error |143| `StopFailure` | Quando a rodada termina devido a um erro de API |

144| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |144| `TeammateIdle` | Quando um colega de [equipe de agentes](/docs/pt/agent-teams) está prestes a ficar ocioso |

145| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |145| `InstructionsLoaded` | Quando um arquivo CLAUDE.md ou `.claude/rules/*.md` é carregado no contexto. Dispara no início da sessão e quando os arquivos são carregados lentamente durante uma sessão |

146| `ConfigChange` | When a configuration file changes during a session |146| `ConfigChange` | Quando um arquivo de configuração muda durante uma sessão |

147| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |147| `CwdChanged` | Quando o diretório de trabalho muda, por exemplo quando Claude executa um comando `cd`. Útil para gerenciamento reativo do ambiente com ferramentas como direnv |

148| `DirectoryAdded` | When a working directory is added mid-session via `/add-dir` or the SDK `register_repo_root` control request |148| `DirectoryAdded` | Quando um diretório de trabalho é adicionado no meio da sessão via `/add-dir` ou a solicitação de controle SDK `register_repo_root` |

149| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |149| `FileChanged` | Quando um arquivo observado muda no disco. O campo `matcher` especifica quais nomes de arquivo observar |

150| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |150| `WorktreeCreate` | Quando um worktree está sendo criado via `--worktree`, `isolation: "worktree"`, ou para uma sessão em segundo plano. Substitui o comportamento padrão do git |

151| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |151| `WorktreeRemove` | Quando um worktree está sendo removido na saída da sessão, quando um subagente termina, ou quando você exclui uma sessão em segundo plano |

152| `PreCompact` | Before context compaction |152| `PreCompact` | Antes da compactação de contexto |

153| `PostCompact` | After context compaction completes |153| `PostCompact` | Depois que a compactação de contexto é concluída |

154| `PreModelSwitch` | Before Claude Code applies a model switch that you or a client requested. Can block the switch |154| `PreModelSwitch` | Antes de Claude Code aplicar uma mudança de modelo que você ou um cliente solicitou. Pode bloquear a mudança |

155| `PostModelSwitch` | After the session's model changes, including changes Claude Code makes on its own, such as restoring the model when you resume a session |155| `PostModelSwitch` | Depois que o modelo da sessão muda, incluindo mudanças que Claude Code faz por conta própria, como restaurar o modelo quando você retoma uma sessão |

156| `Elicitation` | When an MCP server requests user input during a tool call |156| `Elicitation` | Quando um servidor MCP solicita entrada do usuário durante uma chamada de ferramenta |

157| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |157| `ElicitationResult` | Depois que um usuário responde a uma elicitação MCP, antes da resposta ser enviada de volta ao servidor |

158| `SessionEnd` | When a session terminates |158| `SessionEnd` | Quando uma sessão é encerrada |

159 159 

160**Tipos de hook**:160**Tipos de hook**:

161 161 


488 "lspServers": "./.lsp.json",488 "lspServers": "./.lsp.json",

489 "experimental": {489 "experimental": {

490 "themes": "./themes/",490 "themes": "./themes/",

491 "monitors": "./monitors.json"491 "monitors": "./monitors.json",

492 "evals": "quality/evals"

492 },493 },

493 "dependencies": [494 "dependencies": [

494 "helper-lib",495 "helper-lib",


575| `lspServers` | string\|array\|object | Configurações do [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) para inteligência de código (ir para definição, encontrar referências, etc.) | `"./.lsp.json"` |576| `lspServers` | string\|array\|object | Configurações do [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) para inteligência de código (ir para definição, encontrar referências, etc.) | `"./.lsp.json"` |

576| `experimental.themes` | string\|array | Arquivos/diretórios de tema de cor (substitui padrão `themes/`). Veja [Temas](#themes) | `"./themes/"` |577| `experimental.themes` | string\|array | Arquivos/diretórios de tema de cor (substitui padrão `themes/`). Veja [Temas](#themes) | `"./themes/"` |

577| `experimental.monitors` | string\|array | Configurações de [Monitor](/docs/pt/tools-reference#monitor-tool) em segundo plano que iniciam automaticamente quando o plugin está ativo. Veja [Monitores](#monitors) | `"./monitors.json"` |578| `experimental.monitors` | string\|array | Configurações de [Monitor](/docs/pt/tools-reference#monitor-tool) em segundo plano que iniciam automaticamente quando o plugin está ativo. Veja [Monitores](#monitors) | `"./monitors.json"` |

579| `experimental.evals` | string\|array | Diretório abaixo da raiz do plugin que contém os [casos de eval](/docs/pt/plugin-evals#use-a-different-eval-directory) do plugin, quando não é o padrão `evals/`. `claude plugin eval --eval-dir` o substitui | `"quality/evals"` |

578| `userConfig` | object | Valores configuráveis pelo usuário solicitados em tempo de habilitação. Veja [Configuração do usuário](#user-configuration) | Veja abaixo |580| `userConfig` | object | Valores configuráveis pelo usuário solicitados em tempo de habilitação. Veja [Configuração do usuário](#user-configuration) | Veja abaixo |

579| `channels` | array | Declarações de canal para injeção de mensagens (estilo Telegram, Slack, Discord). Veja [Canais](#channels) | Veja abaixo |581| `channels` | array | Declarações de canal para injeção de mensagens (estilo Telegram, Slack, Discord). Veja [Canais](#channels) | Veja abaixo |

580| `dependencies` | array | Outros plugins que este plugin requer, opcionalmente com restrições de versão semver. Veja [Restringir versões de dependência de plugin](/docs/pt/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |582| `dependencies` | array | Outros plugins que este plugin requer, opcionalmente com restrições de versão semver. Veja [Restringir versões de dependência de plugin](/docs/pt/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |


998claude plugin init <name> [options]1000claude plugin init <name> [options]

999```1001```

1000 1002 

1001**Argumentos:**1003O comando toma estes argumentos:

1002 1004 

1003* `<name>`: Nome do plugin. Torna-se o namespace da skill e o nome do diretório em `~/.claude/skills/`, portanto não pode conter espaços ou separadores de caminho.1005* `<name>`: Nome do plugin. Torna-se o namespace da skill e o nome do diretório em `~/.claude/skills/`, portanto não pode conter espaços ou separadores de caminho.

1004 1006 

1005**Opções:**1007O comando aceita estas opções:

1006 1008 

1007| Opção | Descrição | Padrão |1009| Opção | Descrição | Padrão |

1008| :----------------------- | :----------------------------------------------------------------------------------------------------------------------- | :---------------------- |1010| :----------------------- | :----------------------------------------------------------------------------------------------------------------------- | :---------------------- |


1013| `-f, --force` | Sobrescreva um `.claude-plugin/` existente no destino | |1015| `-f, --force` | Sobrescreva um `.claude-plugin/` existente no destino | |

1014| `-h, --help` | Exiba ajuda para o comando | |1016| `-h, --help` | Exiba ajuda para o comando | |

1015 1017 

1016**Aliases:** `new`1018`claude plugin new` é um alias para este comando.

1017 1019 

1018Cada valor `--with` adiciona um arquivo inicial para esse componente, pronto para editar:1020Cada valor `--with` adiciona um arquivo inicial para esse componente, pronto para editar:

1019 1021 


1029 1031 

1030O plugin criado usa a fonte `@skills-dir` em vez de um marketplace. Administradores podem bloquear essa fonte com `strictKnownMarketplaces` ou adicionando `{"source": "skills-dir"}` a `blockedMarketplaces` em [managed settings](/docs/pt/plugin-marketplaces#managed-marketplace-restrictions). Quando bloqueado, `plugin init` falha antes de escrever.1032O plugin criado usa a fonte `@skills-dir` em vez de um marketplace. Administradores podem bloquear essa fonte com `strictKnownMarketplaces` ou adicionando `{"source": "skills-dir"}` a `blockedMarketplaces` em [managed settings](/docs/pt/plugin-marketplaces#managed-marketplace-restrictions). Quando bloqueado, `plugin init` falha antes de escrever.

1031 1033 

1032**Exemplos:**1034Estes exemplos mostram invocações comuns:

1033 1035 

1034```bash theme={null}1036```bash theme={null}

1035# Crie um plugin mínimo1037# Crie um plugin mínimo


1052claude plugin install <plugin> [options]1054claude plugin install <plugin> [options]

1053```1055```

1054 1056 

1055**Argumentos:**1057O comando toma estes argumentos:

1056 1058 

1057* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name` para um marketplace específico1059* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name` para um marketplace específico

1058 1060 

1059**Opções:**1061O comando aceita estas opções:

1060 1062 

1061| Opção | Descrição | Padrão |1063| Opção | Descrição | Padrão |

1062| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |1064| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |

1063| `-s, --scope <scope>` | Escopo de instalação: `user`, `project` ou `local` | `user` |1065| `-s, --scope <scope>` | Escopo de instalação: `user`, `project` ou `local` | `user` |

1064| `--config <key=value>` | Defina uma opção [`userConfig`](#user-configuration) declarada no manifesto do plugin. Repita a flag para definir múltiplas opções | |1066| `--config <key=value>` | Defina uma opção [`userConfig`](#user-configuration) declarada no manifesto do plugin. Repita a flag para definir múltiplas opções | |

1065| `-y, --yes` | Aceite um comando que o marketplace do plugin declara, sem o prompt de confirmação: o comando que produz um plugin com uma [`command` source](/docs/pt/plugin-marketplaces#command-sources), ou o [`headersHelper`](/docs/pt/plugin-marketplaces#authenticate-archive-downloads) que autentica um download de arquivo. Aceitar um `headersHelper` requer Claude Code v2.1.238 ou posterior. Claude Code ainda imprime o comando primeiro. Obrigatório quando stdin ou stdout não é um TTY. Não tem efeito dentro de uma sessão do Claude Code, portanto execute o comando do seu próprio terminal | |1067| `-y, --yes` | Aceite um comando que o marketplace do plugin declara, sem o prompt de confirmação: o comando que produz um plugin com uma [`command` source](/docs/pt/plugin-marketplaces#command-sources), ou o [`headersHelper`](/docs/pt/plugin-marketplaces#authenticate-archive-downloads) que autentica um download de arquivo. Aceitar um `headersHelper` requer Claude Code v2.1.238 ou posterior. Claude Code ainda imprime o comando primeiro. Obrigatório quando stdin ou stdout não é um TTY. Não tem efeito dentro de uma sessão do Claude Code, portanto execute o comando do seu próprio terminal | |

1068| `--json` | Imprima o resultado como um objeto JSON na última linha de stdout em vez da mensagem legível por humanos, para uso em scripts. Consulte [Formato de resultado JSON](#plugin-json-result). Requer Claude Code v2.1.268 ou posterior | |

1066| `-h, --help` | Exiba ajuda para o comando | |1069| `-h, --help` | Exiba ajuda para o comando | |

1067 1070 

1068O escopo determina qual arquivo de configurações o plugin instalado é adicionado. Por exemplo, `--scope project` escreve em `enabledPlugins` em .claude/settings.json, tornando o plugin disponível para todos que clonam o repositório do projeto.1071O escopo determina qual arquivo de configurações o plugin instalado é adicionado. Por exemplo, `--scope project` escreve em `enabledPlugins` em .claude/settings.json, tornando o plugin disponível para todos que clonam o repositório do projeto.

1069 1072 

1070**Exemplos:**1073<span id="plugin-json-result" />Com `--json`, a última linha de stdout é um objeto JSON. Analise apenas essa linha, porque Claude Code imprime qualquer comando que o marketplace declara antes dela. Três campos estão sempre presentes:

1074 

1075* `command`: o subcomando que foi executado, como `install`

1076* `outcome`: `ok` ou `failed`

1077* `message`: uma descrição legível por humanos do resultado

1078 

1079Outros campos, como `pluginId`, `scope` e `failureCode`, aparecem apenas quando se aplicam. A opção `--json` em `plugin uninstall`, `plugin update`, `plugin enable` e `plugin disable` imprime o mesmo objeto com os próprios campos desse subcomando. Um erro de uso, como um `--scope` inválido, não imprime nenhuma linha de resultado e sai com 1 com o motivo em stderr.

1080 

1081Estes exemplos mostram invocações comuns:

1071 1082 

1072```bash theme={null}1083```bash theme={null}

1073# Instale no escopo do usuário (padrão)1084# Instale no escopo do usuário (padrão)


1090claude plugin uninstall <plugin> [options]1101claude plugin uninstall <plugin> [options]

1091```1102```

1092 1103 

1093**Argumentos:**1104O comando toma estes argumentos:

1094 1105 

1095* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`1106* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`

1096 1107 

1097**Opções:**1108O comando aceita estas opções:

1098 1109 

1099| Opção | Descrição | Padrão |1110| Opção | Descrição | Padrão |

1100| :-------------------- | :---------------------------------------------------------------------------------------------------------------- | :----- |1111| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |

1101| `-s, --scope <scope>` | Desinstale do escopo: `user`, `project` ou `local` | `user` |1112| `-s, --scope <scope>` | Desinstale do escopo: `user`, `project` ou `local` | `user` |

1102| `--keep-data` | Preserve o diretório de [persistent data](#persistent-data-directory) do plugin | |1113| `--keep-data` | Preserve o diretório de [persistent data](#persistent-data-directory) do plugin | |

1103| `--prune` | Também remova dependências auto-instaladas que nenhum outro plugin requer. Consulte [plugin prune](#plugin-prune) | |1114| `--prune` | Também remova dependências auto-instaladas que nenhum outro plugin requer. Consulte [plugin prune](#plugin-prune) | |

1104| `-y, --yes` | Pule o prompt de confirmação `--prune`. Obrigatório quando stdin ou stdout não é um TTY | |1115| `-y, --yes` | Pule o prompt de confirmação `--prune`. Obrigatório quando stdin ou stdout não é um TTY | |

1116| `--json` | Imprima o resultado como um objeto JSON na última linha de stdout, no [mesmo formato que `plugin install --json`](#plugin-json-result). Não pode ser combinado com `--prune`. Requer Claude Code v2.1.268 ou posterior | |

1105| `-h, --help` | Exiba ajuda para o comando | |1117| `-h, --help` | Exiba ajuda para o comando | |

1106 1118 

1107**Aliases:** `remove`, `rm`1119`claude plugin remove` e `claude plugin rm` são aliases para este comando.

1108 1120 

1109Por padrão, desinstalar do último escopo restante também exclui o diretório `${CLAUDE_PLUGIN_DATA}` do plugin. Use `--keep-data` para preservá-lo, por exemplo ao reinstalar após testar uma nova versão.1121Por padrão, desinstalar do último escopo restante também exclui o diretório `${CLAUDE_PLUGIN_DATA}` do plugin. Use `--keep-data` para preservá-lo, por exemplo ao reinstalar após testar uma nova versão.

1110 1122 


1122claude plugin prune [options]1134claude plugin prune [options]

1123```1135```

1124 1136 

1125**Opções:**1137O comando aceita estas opções:

1126 1138 

1127| Opção | Descrição | Padrão |1139| Opção | Descrição | Padrão |

1128| :-------------------- | :---------------------------------------------------------------------------- | :----- |1140| :-------------------- | :---------------------------------------------------------------------------- | :----- |


1131| `-y, --yes` | Pule o prompt de confirmação. Obrigatório quando stdin ou stdout não é um TTY | |1143| `-y, --yes` | Pule o prompt de confirmação. Obrigatório quando stdin ou stdout não é um TTY | |

1132| `-h, --help` | Exiba ajuda para o comando | |1144| `-h, --help` | Exiba ajuda para o comando | |

1133 1145 

1134**Aliases:** `autoremove`1146`claude plugin autoremove` é um alias para este comando.

1135 1147 

1136O comando lista dependências órfãs e pede confirmação antes de removê-las. Para remover um plugin e limpar suas dependências em uma etapa, execute `claude plugin uninstall <plugin> --prune`.1148O comando lista dependências órfãs e pede confirmação antes de removê-las. Para remover um plugin e limpar suas dependências em uma etapa, execute `claude plugin uninstall <plugin> --prune`.

1137 1149 


1145claude plugin enable <plugin> [options]1157claude plugin enable <plugin> [options]

1146```1158```

1147 1159 

1148**Argumentos:**1160O comando toma estes argumentos:

1149 1161 

1150* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`1162* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`

1151 1163 

1152**Opções:**1164O comando aceita estas opções:

1153 1165 

1154| Opção | Descrição | Padrão |1166| Opção | Descrição | Padrão |

1155| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------- | :---------- |1167| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- |

1156| `-s, --scope <scope>` | Escopo para ativar: `user`, `project` ou `local`. Quando omitido, Claude Code detecta o escopo onde o plugin está instalado | Auto-detect |1168| `-s, --scope <scope>` | Escopo para ativar: `user`, `project` ou `local`. Quando omitido, Claude Code detecta o escopo onde o plugin está instalado | Auto-detect |

1169| `--json` | Imprima o resultado como um objeto JSON na última linha de stdout, no [mesmo formato que `plugin install --json`](#plugin-json-result). Requer Claude Code v2.1.268 ou posterior | |

1157| `-h, --help` | Exiba ajuda para o comando | |1170| `-h, --help` | Exiba ajuda para o comando | |

1158 1171 

1159<h3 id="plugin-disable">1172<h3 id="plugin-disable">


1166claude plugin disable [plugin] [options]1179claude plugin disable [plugin] [options]

1167```1180```

1168 1181 

1169**Argumentos:**1182O comando toma estes argumentos:

1170 1183 

1171* `[plugin]`: Nome do plugin ou `plugin-name@marketplace-name`. Opcional ao usar `--all`1184* `[plugin]`: Nome do plugin ou `plugin-name@marketplace-name`. Opcional ao usar `--all`

1172 1185 

1173**Opções:**1186O comando aceita estas opções:

1174 1187 

1175| Opção | Descrição | Padrão |1188| Opção | Descrição | Padrão |

1176| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------- | :---------- |1189| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- |

1177| `-a, --all` | Desative todos os plugins ativados. Não pode ser combinado com `--scope` | |1190| `-a, --all` | Desative todos os plugins ativados. Não pode ser combinado com `--scope` | |

1178| `-s, --scope <scope>` | Escopo para desativar: `user`, `project` ou `local`. Quando omitido, Claude Code detecta o escopo onde o plugin está instalado | Auto-detect |1191| `-s, --scope <scope>` | Escopo para desativar: `user`, `project` ou `local`. Quando omitido, Claude Code detecta o escopo onde o plugin está instalado | Auto-detect |

1192| `--json` | Imprima o resultado como um objeto JSON na última linha de stdout, no [mesmo formato que `plugin install --json`](#plugin-json-result). Requer Claude Code v2.1.268 ou posterior | |

1179| `-h, --help` | Exiba ajuda para o comando | |1193| `-h, --help` | Exiba ajuda para o comando | |

1180 1194 

1181<h3 id="plugin-update">1195<h3 id="plugin-update">


1188claude plugin update <plugin> [options]1202claude plugin update <plugin> [options]

1189```1203```

1190 1204 

1191**Argumentos:**1205O comando toma estes argumentos:

1192 1206 

1193* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`1207* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`

1194 1208 

1195**Opções:**1209O comando aceita estas opções:

1196 1210 

1197| Opção | Descrição | Padrão |1211| Opção | Descrição | Padrão |

1198| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |1212| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |

1199| `-s, --scope <scope>` | Escopo para atualizar: `user`, `project`, `local` ou `managed` | `user` |1213| `-s, --scope <scope>` | Escopo para atualizar: `user`, `project`, `local` ou `managed` | `user` |

1200| `-y, --yes` | Aceite um comando que o marketplace do plugin declara, sem o prompt de confirmação: o comando que produz um plugin com uma [`command` source](/docs/pt/plugin-marketplaces#command-sources), ou o [`headersHelper`](/docs/pt/plugin-marketplaces#authenticate-archive-downloads) que autentica um download de arquivo. Aceitar um `headersHelper` requer Claude Code v2.1.238 ou posterior. Claude Code ainda imprime o comando primeiro. Obrigatório quando stdin ou stdout não é um TTY. Não tem efeito dentro de uma sessão do Claude Code, portanto execute o comando do seu próprio terminal | |1214| `-y, --yes` | Aceite um comando que o marketplace do plugin declara, sem o prompt de confirmação: o comando que produz um plugin com uma [`command` source](/docs/pt/plugin-marketplaces#command-sources), ou o [`headersHelper`](/docs/pt/plugin-marketplaces#authenticate-archive-downloads) que autentica um download de arquivo. Aceitar um `headersHelper` requer Claude Code v2.1.238 ou posterior. Claude Code ainda imprime o comando primeiro. Obrigatório quando stdin ou stdout não é um TTY. Não tem efeito dentro de uma sessão do Claude Code, portanto execute o comando do seu próprio terminal | |

1215| `--json` | Imprima o resultado como um objeto JSON na última linha de stdout, no [mesmo formato que `plugin install --json`](#plugin-json-result). Requer Claude Code v2.1.268 ou posterior | |

1201| `-h, --help` | Exiba ajuda para o comando | |1216| `-h, --help` | Exiba ajuda para o comando | |

1202 1217 

1203<Note>1218<Note>


1216claude plugin list [options]1231claude plugin list [options]

1217```1232```

1218 1233 

1219**Opções:**1234O comando aceita estas opções:

1220 1235 

1221| Opção | Descrição | Padrão |1236| Opção | Descrição | Padrão |

1222| :------------ | :----------------------------------------------------------- | :----- |1237| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |

1223| `--json` | Saída como JSON | |1238| `--json` | Saída como JSON. Uma linha de plugin com problemas de carregamento ou avisos de autoria carrega arrays de strings `errors` ou `notes`. No Claude Code v2.1.268 ou posterior, arrays `errorDetails` e `noteDetails` paralelos fornecem a cada entrada seu `type` de diagnóstico e os nomes aos quais se refere, como o plugin, marketplace, servidor ou arquivo | |

1224| `--available` | Inclua plugins disponíveis dos marketplaces. Requer `--json` | |1239| `--available` | Inclua plugins disponíveis dos marketplaces. Requer `--json` | |

1225| `-h, --help` | Exiba ajuda para o comando | |1240| `-h, --help` | Exiba ajuda para o comando | |

1226 1241 


1242claude plugin details <name>1257claude plugin details <name>

1243```1258```

1244 1259 

1245**Argumentos:**1260O comando toma estes argumentos:

1246 1261 

1247* `<name>`: Nome do plugin ou `plugin-name@marketplace-name`1262* `<name>`: Nome do plugin ou `plugin-name@marketplace-name`

1248 1263 

1249**Opções:**1264O comando aceita estas opções:

1250 1265 

1251| Opção | Descrição | Padrão |1266| Opção | Descrição | Padrão |

1252| :----------- | :------------------------- | :----- |1267| :----------- | :------------------------- | :----- |


1297claude plugin validate <path> [options]1312claude plugin validate <path> [options]

1298```1313```

1299 1314 

1300**Argumentos:**1315O comando toma estes argumentos:

1301 1316 

1302* `<path>`: Caminho para um diretório de plugin ou um diretório de marketplace. Consulte [Validate a plugin or a directory without a manifest](/docs/pt/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) para quais arquivos uma execução de plugin cobre.1317* `<path>`: Caminho para um diretório de plugin ou um diretório de marketplace. Consulte [Validate a plugin or a directory without a manifest](/docs/pt/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) para quais arquivos uma execução de plugin cobre.

1303 1318 

1304**Opções:**1319O comando aceita estas opções:

1305 1320 

1306| Opção | Descrição | Padrão |1321| Opção | Descrição | Padrão |

1307| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |1322| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |


1321 1336 

1322Dentro de uma sessão interativa, `/plugin validate <path>` executa as mesmas verificações inline.1337Dentro de uma sessão interativa, `/plugin validate <path>` executa as mesmas verificações inline.

1323 1338 

1339<h3 id="plugin-eval">

1340 plugin eval

1341</h3>

1342 

1343Execute [eval cases](/docs/pt/plugin-evals) de um plugin e relate resultados pontuados. Requer Claude Code v2.1.269 ou posterior. Cada caso é um prompt mais avaliadores; Claude Code o executa várias vezes em uma sessão isolada com apenas o plugin alvo carregado, e por padrão também sem o plugin para que o relatório mostre a diferença. Consulte [Test plugins with evals](/docs/pt/plugin-evals) para o formato do caso, avaliadores, resultados e uso em CI.

1344 

1345```bash theme={null}

1346claude plugin eval [target] [options]

1347```

1348 

1349O `target` opcional é um diretório de plugin, um único arquivo `prompt.md` ou `case.yaml`, um plugin instalado como `name` ou `name@marketplace`, ou `name@skills-dir`, e padrão é o diretório atual. Coloque-o antes de `--tag`, `--allow-tools` e `--json`.

1350 

1351Esta tabela lista as opções que a maioria das execuções usa. Execute `claude plugin eval --help` para o conjunto completo, incluindo `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp` e `--verbose`.

1352 

1353| Opção | Descrição | Padrão |

1354| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------- |

1355| `--runs <n>` | Execuções por caso por braço | Cada `runs` do caso, senão 3 |

1356| `-j, --concurrency <n>` | Sessões de agent para executar de uma vez, 1 a 8. Elas compartilham seu limite de taxa | `1` |

1357| `--model <model>` | Modelo para o agent sob teste | Cada `model` do caso, senão `ANTHROPIC_MODEL` se definido, senão padrão do Claude Code |

1358| `--judge-model <model>` | Modelo para avaliadores `llm` e `baseline` | Um modelo pequeno e rápido |

1359| `--ablation <mode>` | `none` ou `with-without`. Consulte [Compare against a no-plugin baseline](/docs/pt/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` quando um plugin resolve, senão `none` |

1360| `--threshold <0..1>` | Saia com 1 se qualquer caso pontuar abaixo disso | `1.0` |

1361| `--max-cost-usd <usd>` | Pare antes da próxima execução uma vez que o gasto atinja isso, saia com 2 e relate resultados parciais | Sem limite |

1362| `--allow-tools <tools...>` | Conceda ferramentas além do conjunto somente leitura, como `Bash`, `Write`, `Edit` ou `"mcp__plugin_<plugin>_<server>__*"`. Consulte [Grant tools](/docs/pt/plugin-evals#grant-tools) | |

1363| `--scaffold` | Execute cada [`scaffold_script`](/docs/pt/plugin-evals#add-setup-or-history-with-case-yaml) do caso | Desligado |

1364| `--trust-plugin` | Pule o prompt de confiança de primeira execução, para CI. Consulte [What a run can access](/docs/pt/plugin-evals#security) | Desligado |

1365| `--mocks <mode>` | `record` ou `off`. Consulte [Mock MCP servers](/docs/pt/plugin-evals#mock-mcp-servers) | `record` |

1366| `--eval-dir <dir>` | Diretório abaixo do plugin que contém os casos | O `experimental.evals` do manifesto, senão `evals` |

1367| `--json [path]` | Imprima o [documento de resultado](/docs/pt/plugin-evals#json-result) para stdout, ou escreva-o em um caminho `.json` | |

1368| `--no-publish` | Mantenha o relatório HTML local | |

1369| `-h, --help` | Exiba ajuda para o comando | |

1370 

1371O comando sai com 0 quando cada caso atende ao limite, 1 em um caso falhando, um erro de carregamento ou um diretório de plugin não confiável, 2 em uma execução parcial, 130 quando interrompido e 143 quando terminado. Consulte [Run evals in CI](/docs/pt/plugin-evals#run-evals-in-ci).

1372 

1373<h3 id="plugin-eval-init">

1374 plugin eval init

1375</h3>

1376 

1377Crie um conjunto de eval para o plugin no diretório atual. Requer Claude Code v2.1.269 ou posterior. Em um terminal, isso inicia uma entrevista de autoria que lê o plugin, propõe casos e avaliadores, os testa e escreve os arquivos. Com `--bare`, ou sem um terminal, escreve um modelo de caso único em branco em vez disso. Execute de dentro de uma sessão interativa do Claude Code, imprime as instruções da entrevista para essa sessão seguir em vez de escrever um modelo. Consulte [Create your first eval suite](/docs/pt/plugin-evals#create-your-first-eval-suite).

1378 

1379```bash theme={null}

1380claude plugin eval init [name] [options]

1381```

1382 

1383O `name` opcional é um nome de caso: a entrevista não precisa de um, enquanto `--bare` e o caminho do modelo sem terminal o requerem. Aceita estas opções:

1384 

1385| Opção | Descrição | Padrão |

1386| :------------------ | :----------------------------------------------------------------------------------------------------- | :------------------------------------------------- |

1387| `--bare` | Escreva um `prompt.md` em branco e `graders/criteria.md` para `<name>` em vez de executar a entrevista | |

1388| `-i, --interactive` | Exija a entrevista. Falha sem um terminal em vez de escrever um modelo | |

1389| `--eval-dir <dir>` | Diretório abaixo do diretório atual para escrever casos em | O `experimental.evals` do manifesto, senão `evals` |

1390| `-h, --help` | Exiba ajuda para o comando | |

1391 

1324<h3 id="plugin-tag">1392<h3 id="plugin-tag">

1325 plugin tag1393 plugin tag

1326</h3>1394</h3>


1331claude plugin tag [path] [options]1399claude plugin tag [path] [options]

1332```1400```

1333 1401 

1334**Argumentos:**1402O comando toma estes argumentos:

1335 1403 

1336* `[path]`: Caminho para o diretório do plugin. Padrão é o diretório atual.1404* `[path]`: Caminho para o diretório do plugin. Padrão é o diretório atual.

1337 1405 

1338**Opções:**1406O comando aceita estas opções:

1339 1407 

1340| Opção | Descrição | Padrão |1408| Opção | Descrição | Padrão |

1341| :-------------------- | :----------------------------------------------------------------------- | :------- |1409| :-------------------- | :----------------------------------------------------------------------- | :------- |

prompt-caching.md +125 −115

Details

14 Como o cache é organizado14 Como o cache é organizado

15</h2>15</h2>

16 16 

17Cada vez que você envia uma mensagem em Claude Code, ele faz uma nova solicitação de API. O modelo não se lembra de nada entre solicitações, então Claude Code reenvia o contexto completo: o prompt do sistema, seu contexto de projeto, cada mensagem anterior e resultado de ferramenta, e sua nova mensagem. Novo conteúdo é anexado ao final, o que significa que a maior parte de cada solicitação é idêntica à anterior. Prompt caching é como a API evita reprocessar a parte que não mudou.17Cada vez que você envia uma mensagem no Claude Code, ele faz uma nova solicitação de API. O modelo não se lembra de nada entre solicitações, então Claude Code reenvia o contexto completo: o prompt do sistema, o contexto do seu projeto, todas as mensagens anteriores e resultados de ferramentas, e sua nova mensagem. O novo conteúdo é anexado no final, o que significa que a maior parte de cada solicitação é idêntica à anterior. O prompt caching é como a API evita reprocessar a parte que não mudou.

18 18 

19A API faz cache correspondendo ao início de cada solicitação, chamado de prefixo, contra conteúdo que processou recentemente. Em um turno normal, o prefixo é a solicitação anterior inteira e apenas a troca mais recente é nova. A correspondência é exata, então uma mudança em qualquer lugar no prefixo recomputa tudo depois dela. Não há caching por arquivo ou por segmento. Veja [como o prompt caching funciona](https://platform.claude.com/docs/pt/build-with-claude/prompt-caching#how-prompt-caching-works) na referência da API para o mecanismo subjacente.19A API faz cache correspondendo o início de cada solicitação, chamado de prefixo, contra o conteúdo que processou recentemente. Em um turno normal, o prefixo é toda a solicitação anterior e apenas a troca mais recente é nova. A correspondência é exata, então uma mudança em qualquer lugar no prefixo recomputa tudo depois dela. Não há cache por arquivo ou por segmento. Veja [como o prompt caching funciona](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#how-prompt-caching-works) na referência da API para o mecanismo subjacente.

20 20 

21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="Quatro turnos mostrados como barras horizontais crescentes. A solicitação de cada turno contém tudo do turno anterior mais a troca mais recente anexada ao final. Nos turnos dois e três, o prefixo inalterado é lido do cache e apenas a nova troca é processada. No turno quatro, o prompt do sistema mudou, então o prefixo não corresponde mais e toda a solicitação é reprocessada e escrita." width="720" height="454" data-path="images/prompt-caching-prefix.svg" />21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="Quatro turnos mostrados como barras horizontais crescentes. A solicitação de cada turno contém tudo do turno anterior mais a troca mais recente anexada no final. Nos turnos dois e três, o prefixo inalterado é lido do cache e apenas a nova troca é processada. No turno quatro, o prompt do sistema mudou, então o prefixo não corresponde mais e toda a solicitação é reprocessada e escrita." width="720" height="454" data-path="images/prompt-caching-prefix.svg" />

22 22 

23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="Quatro turnos mostrados como barras horizontais crescentes. A solicitação de cada turno contém tudo do turno anterior mais a troca mais recente anexada ao final. Nos turnos dois e três, o prefixo inalterado é lido do cache e apenas a nova troca é processada. No turno quatro, o prompt do sistema mudou, então o prefixo não corresponde mais e toda a solicitação é reprocessada e escrita." width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="Quatro turnos mostrados como barras horizontais crescentes. A solicitação de cada turno contém tudo do turno anterior mais a troca mais recente anexada no final. Nos turnos dois e três, o prefixo inalterado é lido do cache e apenas a nova troca é processada. No turno quatro, o prompt do sistema mudou, então o prefixo não corresponde mais e toda a solicitação é reprocessada e escrita." width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />

24 24 

25Para aproveitar ao máximo a correspondência de prefixo, Claude Code ordena cada solicitação para que o conteúdo que raramente muda entre turnos venha primeiro:25Para aproveitar ao máximo a correspondência de prefixo, Claude Code ordena cada solicitação para que o conteúdo que raramente muda entre turnos venha primeiro:

26 26 

27| Camada | Conteúdo | Muda quando |27| Camada | Conteúdo | Muda quando |

28| ------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |28| ------------------- | -------------------------------------------------------------- | ------------------------------------------------------- |

29| Prompt do sistema | Instruções principais, definições de ferramentas, estilo de saída | O conjunto de definições de ferramentas carregadas muda, você muda o estilo de saída, ou Claude Code é atualizado |29| Prompt do sistema | Instruções principais, definições de ferramentas | O conjunto de definições de ferramentas carregadas muda |

30| Contexto do projeto | CLAUDE.md, memória automática, regras sem escopo | A sessão começa, ou após `/clear` ou `/compact` |30| Contexto do projeto | CLAUDE.md, memória automática, regras sem escopo | A sessão começa, ou após `/clear` ou `/compact` |

31| Conversa | Suas mensagens, respostas de Claude, resultados de ferramentas | A cada turno |31| Conversa | Suas mensagens, respostas do Claude, resultados de ferramentas | A cada turno |

32 32 

33Uma mudança na camada de conversa deixa o prompt do sistema e o contexto do projeto em cache. Uma mudança no prompt do sistema invalida tudo, porque todo o conteúdo posterior agora fica atrás de um prefixo diferente. A terceira coluna fornece gatilhos comuns em vez de uma lista exaustiva, e as seções abaixo cobrem o conjunto completo.33Uma mudança na camada de conversa deixa o prompt do sistema e o contexto do projeto em cache. Uma mudança no prompt do sistema invalida tudo, porque todo o conteúdo posterior agora fica atrás de um prefixo diferente. A terceira coluna fornece gatilhos comuns em vez de uma lista exaustiva, e as seções abaixo cobrem o conjunto completo.

34 34 

35A regra de correspondência de prefixo explica a maioria dos comportamentos nesta página. [Plan mode](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode) e [carregamento de skills](/docs/pt/skills), por exemplo, anexam suas instruções como mensagens de conversa, então o prefixo em cache permanece intacto.35A regra de correspondência de prefixo explica a maioria dos comportamentos nesta página. [Plan mode](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode) e [skill loading](/docs/pt/skills), por exemplo, anexam suas instruções como mensagens de conversa, então o prefixo em cache permanece intacto.

36 36 

37Duas configurações não aparecem na tabela de camadas, mas ainda afetam o que fica em cache:37Duas configurações não aparecem na tabela de camadas, mas ainda afetam o que permanece em cache:

38 38 

39* **Model**: cada modelo tem seu próprio cache. Trocar modelos recomputa toda a solicitação mesmo quando o conteúdo é idêntico. Veja [Trocar modelos](#switching-models) abaixo.39* **Model**: cada modelo tem seu próprio cache. Trocar modelos recomputa toda a solicitação mesmo quando o conteúdo é idêntico. Veja [Switching models](#switching-models) abaixo.

40* **Effort level**: na maioria dos modelos, cada nível de esforço tem seu próprio cache, então alterar o esforço no meio da sessão recomputa toda a solicitação. No Fable 5.1 com uma chave de API ou uma assinatura Claude, o cache permanece intacto por padrão. Veja [Alterando nível de esforço](#changing-effort-level) abaixo.40* **Effort level**: na maioria dos modelos, cada nível de esforço tem seu próprio cache, então mudar o esforço no meio da sessão recomputa toda a solicitação. No Fable 5.1 com uma chave de API ou uma assinatura Claude, o cache permanece intacto por padrão. Veja [Changing effort level](#changing-effort-level) abaixo.

41 41 

42<Tip>42<Tip>

43 Escolha seu modelo e nível de esforço no início de uma sessão, depois salve `/compact` para pausas naturais entre tarefas. Quanto menos mudanças você fizer no meio da tarefa, maior será sua taxa de acerto de cache.43 Escolha seu modelo e nível de esforço no início de uma sessão, depois salve `/compact` para pausas naturais entre tarefas. Quanto menos mudanças você fizer no meio da tarefa, maior será sua taxa de acerto de cache.


47 Onde o cache reside47 Onde o cache reside

48</h3>48</h3>

49 49 

50O caching acontece no lado do servidor, na infraestrutura que serve seu modelo. Onde fica depende de como você se autentica:50O caching acontece no lado do servidor, na infraestrutura que serve seu modelo. Onde isso fica depende de como você se autentica:

51 51 

52* **Chave de API, assinatura Claude ou [Claude Platform on AWS](/docs/pt/claude-platform-on-aws)**: o cache reside na infraestrutura da Anthropic, acessado através da [Claude API](https://platform.claude.com/docs)52* **Chave de API, assinatura Claude, ou [Claude Platform on AWS](/docs/pt/claude-platform-on-aws)**: o cache reside na infraestrutura da Anthropic, acessado através da [Claude API](https://platform.claude.com/docs)

53* **Amazon Bedrock ou Google Cloud's Agent Platform**: o cache reside na infraestrutura de serviço do seu provedor de nuvem53* **Amazon Bedrock ou Google Cloud's Agent Platform**: o cache reside na infraestrutura de serviço do seu provedor de nuvem

54* **Microsoft Foundry**: depende da [opção de hospedagem](https://platform.claude.com/docs/pt/build-with-claude/claude-in-microsoft-foundry#hosting-options) da implantação. Implantações hospedadas no Azure são servidas na infraestrutura do Azure; implantações hospedadas na Anthropic são servidas na infraestrutura da Anthropic54* **Microsoft Foundry**: depende da [hosting option](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) da implantação. Implantações hospedadas no Azure são servidas na infraestrutura do Azure; implantações hospedadas na Anthropic são servidas na infraestrutura da Anthropic

55* **`ANTHROPIC_BASE_URL` personalizado ou [LLM gateway](/docs/pt/llm-gateway)**: o cache reside onde suas solicitações são encaminhadas, e se o caching funciona depende do gateway55* **Custom `ANTHROPIC_BASE_URL` ou [LLM gateway](/docs/pt/llm-gateway)**: o cache reside onde suas solicitações são encaminhadas, e se o caching funciona depende do gateway

56 56 

57Claude Code também anexa contexto do sistema no meio da conversa, como notificações de mudança de arquivo, e marca esse bloco para caching em todos os provedores e conexões.57Claude Code também anexa contexto do sistema no meio da conversa, como notificações de mudança de arquivo, e marca esse bloco para cache em todos os provedores e conexões, a menos que você defina [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/pt/llm-gateway-protocol#disable-pre-release-capabilities), caso em que esse bloco é enviado sem cache.

58 58 

59No endpoint próprio do provedor, Amazon Bedrock e seu [endpoint Mantle](/docs/pt/amazon-bedrock#use-the-mantle-endpoint), Google Cloud's Agent Platform e Microsoft Foundry fazem cache do bloco da mesma forma que a Claude API faz.59No endpoint próprio do provedor, Amazon Bedrock e seu [Mantle endpoint](/docs/pt/amazon-bedrock#use-the-mantle-endpoint), Google Cloud's Agent Platform, e Microsoft Foundry fazem cache do bloco da mesma forma que a Claude API faz.

60 60 

61Quando suas solicitações passam por um [LLM gateway](/docs/pt/llm-gateway), um `ANTHROPIC_BASE_URL` personalizado, ou uma substituição de URL base do provedor de nuvem como [`ANTHROPIC_BEDROCK_BASE_URL`](/docs/pt/env-vars), o que fica em cache depende de como o gateway lida com os [marcadores `cache_control`](https://platform.claude.com/docs/pt/build-with-claude/prompt-caching#explicit-cache-breakpoints) que Claude Code envia:61Quando suas solicitações passam por um [LLM gateway](/docs/pt/llm-gateway), um `ANTHROPIC_BASE_URL` customizado, ou uma substituição de URL base do provedor de nuvem como [`ANTHROPIC_BEDROCK_BASE_URL`](/docs/pt/env-vars), o que permanece em cache depende de como o gateway lida com os [marcadores `cache_control`](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#explicit-cache-breakpoints) que Claude Code envia:

62 62 

63* **Encaminha-os inalterados**: o bloco e sua conversa fazem cache da mesma forma que no endpoint próprio do provedor.63* **Encaminha-os inalterados**: o bloco e sua conversa fazem cache da mesma forma que no endpoint próprio do provedor.

64* **Rejeita a solicitação marcada com um erro `400` nomeando `cache_control`**: Claude Code reenvia a solicitação com o marcador movido do bloco para sua última mensagem de conversa, e o mantém lá pelo resto da conversa. O bloco é cobrado como entrada não armazenada em cache; sua conversa permanece em cache.64* **Rejeita a solicitação marcada com um erro `400` nomeando `cache_control`**: Claude Code reenvia a solicitação com o marcador movido do bloco para sua última mensagem de conversa, e o mantém lá pelo resto da conversa. O bloco é cobrado como entrada sem cache; sua conversa permanece em cache.

65* **Remove os marcadores enquanto retorna sucesso**: todo o seu histórico de conversa é cobrado como entrada não armazenada em cache a cada turno. Um gateway que converte conteúdo de sistema em forma de bloco para uma string simples remove o marcador da mesma forma.65* **Remove os marcadores enquanto retorna sucesso**: todo o histórico de conversa é cobrado como entrada sem cache a cada turno. Um gateway que converte conteúdo de sistema em forma de bloco para uma string simples remove o marcador da mesma forma.

66 66 

67Para o que cada provedor armazena e processa, veja [uso de dados](/docs/pt/data-usage). Onde quer que o cache resida, as entradas expiram após um período de inatividade, e [Cache lifetime](#cache-lifetime) abaixo cobre o TTL e como estendê-lo.67Para o que cada provedor armazena e processa, veja [data usage](/docs/pt/data-usage). Onde quer que o cache resida, as entradas expiram após um período de inatividade, e [Cache lifetime](#cache-lifetime) abaixo cobre o TTL e como estendê-lo.

68 68 

69<h2 id="actions-that-invalidate-the-cache">69<h2 id="actions-that-invalidate-the-cache">

70 Ações que invalidam o cache70 Ações que invalidam o cache

71</h2>71</h2>

72 72 

73Essas ações fazem com que a próxima solicitação perca parte ou todo o cache. Você vê um turno mais lento e mais caro uma única vez, após o qual o novo prefixo é armazenado em cache. A maioria delas é evitável no meio da tarefa uma vez que você sabe que têm um custo. Uma mudança de modelo pode parecer gratuita até você notar o turno mais lento que se segue.73Essas ações fazem com que a próxima solicitação perca parte ou todo o cache. Você vê um turno mais lento e mais caro uma única vez, após o qual o novo prefixo é armazenado em cache. A maioria delas é evitável durante a tarefa uma vez que você sabe que têm um custo. Uma mudança de modelo pode parecer gratuita até você notar o turno mais lento que se segue.

74 74 

75* [Trocar modelos](#switching-models)75* [Switching models](#switching-models)

76* [Alterar nível de esforço](#changing-effort-level)76* [Changing effort level](#changing-effort-level)

77* [Ativar modo rápido](#turning-on-fast-mode)77* [Turning on fast mode](#turning-on-fast-mode)

78* [Conectar ou desconectar um servidor MCP](#connecting-or-disconnecting-an-mcp-server)78* [Connecting or disconnecting an MCP server](#connecting-or-disconnecting-an-mcp-server)

79* [Ativar ou desativar um plugin](#enabling-or-disabling-a-plugin)79* [Enabling or disabling a plugin](#enabling-or-disabling-a-plugin)

80* [Negar uma ferramenta inteira](#denying-an-entire-tool)80* [Denying an entire tool](#denying-an-entire-tool)

81* [Alterar estilo de saída](#changing-output-style)81* [Compacting the conversation](#compacting-the-conversation)

82* [Compactar a conversa](#compacting-the-conversation)82* [Accumulating many images](#accumulating-many-images)

83* [Acumular muitas imagens](#accumulating-many-images)83* [Upgrading Claude Code](#upgrading-claude-code)

84* [Atualizar Claude Code](#upgrading-claude-code)

85 84 

86<h3 id="switching-models">85<h3 id="switching-models">

87 Trocar modelos86 Switching models

88</h3>87</h3>

89 88 

90Cada modelo tem seu próprio cache. Trocar com [`/model`](/docs/pt/model-config#setting-your-model) significa que a próxima solicitação lê todo o histórico de conversa sem acertos de cache, mesmo que o conteúdo seja idêntico.89Cada modelo tem seu próprio cache. Alternar com [`/model`](/docs/pt/model-config#setting-your-model) significa que a próxima solicitação lê todo o histórico de conversa sem acertos de cache, mesmo que o conteúdo seja idêntico.

91 90 

92Quando você executa `/model` no terminal, Claude Code pede que você confirme a mudança apenas enquanto o cache ainda está quente. O cache permanece quente por um [cache TTL](#cache-lifetime) após Claude Code enviar a última solicitação nesta conversa ou Claude responder. Depois que esse tempo passa, o cache expirou, então Claude Code muda sem perguntar.91Quando você executa `/model` no terminal, Claude Code pede que você confirme a mudança apenas enquanto o cache ainda está quente. O cache permanece quente por um [cache TTL](#cache-lifetime) após Claude Code ter enviado pela última vez uma solicitação nesta conversa ou Claude ter respondido. Depois que esse tempo passa, o cache expirou, então Claude Code muda sem perguntar.

93 92 

94Antes da v2.1.238, Claude Code não verificava o cache TTL e perguntava mesmo após o cache ter expirado.93Antes da v2.1.238, Claude Code não verificava o cache TTL e perguntava mesmo depois que o cache havia expirado.

95 94 

96Você também pode exigir essa confirmação ou ignorá-la com um [hook PreModelSwitch](/docs/pt/hooks#premodelswitch-decision-control).95Você também pode exigir essa confirmação ou ignorá-la com um [PreModelSwitch hook](/docs/pt/hooks#premodelswitch-decision-control).

97 96 

98A [configuração de modelo `opusplan`](/docs/pt/model-config#opusplan-model-setting) resolve para Opus durante o modo de plano e Sonnet durante a execução, então cada alternância de modo de plano é uma mudança de modelo e inicia um cache novo.97A [`opusplan` model setting](/docs/pt/model-config#opusplan-model-setting) resolve para Opus durante o modo de plano e Sonnet durante a execução, então cada alternância de modo de plano é uma mudança de modelo e inicia um cache novo.

99 98 

100[Fallback automático de modelo](/docs/pt/model-config#automatic-model-fallback) em modelos Fable e Opus 5 também é uma mudança de modelo. Quando um classificador de segurança sinaliza uma solicitação em uma categoria que tem um modelo de fallback, Claude Code executa a solicitação novamente naquele modelo e a sessão continua lá.99[Automatic model fallback](/docs/pt/model-config#automatic-model-fallback) em modelos Fable e Opus 5 também é uma mudança de modelo. Quando um classificador de segurança sinaliza uma solicitação em uma categoria que tem um modelo de fallback, Claude Code executa novamente a solicitação nesse modelo e a sessão continua lá.

101 100 

102Quando uma skill ou comando nomeia um [`model`](/docs/pt/skills#frontmatter-reference) diferente do modelo atual da sessão em seu frontmatter, esse turno também é uma mudança de modelo: a próxima solicitação lê todo o histórico de conversa sem acertos de cache. O modelo da sessão retoma no seu próximo prompt. Uma skill `context: fork` define o [modelo do subagente bifurcado](/docs/pt/skills#run-skills-in-a-subagent) em vez disso.101Quando a frontmatter de uma skill ou comando nomeia um [`model`](/docs/pt/skills#frontmatter-reference) diferente do modelo atual da sessão, esse turno também é uma mudança de modelo: a próxima solicitação lê todo o histórico de conversa sem acertos de cache. O modelo de sessão retoma no seu próximo prompt. Uma skill `context: fork` define o [modelo do subagente bifurcado](/docs/pt/skills#run-skills-in-a-subagent) em vez disso.

103 102 

104<h3 id="changing-effort-level">103<h3 id="changing-effort-level">

105 Alterar nível de esforço104 Changing effort level

106</h3>105</h3>

107 106 

108Na maioria dos modelos, alterar o [nível de esforço](/docs/pt/model-config#adjust-effort-level) no meio da sessão significa que a próxima solicitação lê todo o histórico de conversa sem acertos de cache. Enquanto o cache ainda está quente, Claude Code pede que você confirme a mudança primeiro.107Na maioria dos modelos, alterar o [effort level](/docs/pt/model-config#adjust-effort-level) no meio da sessão significa que a próxima solicitação lê todo o histórico de conversa sem acertos de cache. Enquanto o cache ainda está quente, Claude Code pede que você confirme a mudança primeiro.

109 108 

110No Fable 5.1 com uma chave de API ou uma assinatura Claude, alterar o esforço mantém o cache, e Claude Code aplica o novo nível sem perguntar. Isso não se aplica no Amazon Bedrock, na plataforma de agentes do Google Cloud, ou em um [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway), ou quando você define [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/pt/llm-gateway-protocol#disable-pre-release-capabilities) ou sua organização tem uma configuração HIPAA.109No Fable 5.1 com uma chave de API ou uma assinatura Claude, alterar o esforço mantém o cache, e Claude Code aplica o novo nível sem perguntar. Isso não se aplica no Amazon Bedrock, na plataforma de agentes do Google Cloud, ou em um [Claude apps gateway](/docs/pt/claude-apps-gateway), ou quando você define [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/pt/llm-gateway-protocol#disable-pre-release-capabilities) ou sua organização tem uma configuração HIPAA.

111 110 

112Antes da v2.1.260, alterar o esforço no Fable 5.1 com uma chave de API ou uma assinatura Claude também invalidava o cache.111Antes da v2.1.260, alterar o esforço no Fable 5.1 com uma chave de API ou uma assinatura Claude também invalidava o cache.

113 112 

114<h3 id="turning-on-fast-mode">113<h3 id="turning-on-fast-mode">

115 Ativar modo rápido114 Turning on fast mode

116</h3>115</h3>

117 116 

118Ativar [modo rápido](/docs/pt/fast-mode) adiciona um cabeçalho de solicitação que faz parte da chave de cache, então a primeira solicitação que Claude Code envia com modo rápido ativado lê todo o histórico de conversa sem acertos de cache. Claude Code define esse cabeçalho uma vez quando um turno começa e o mantém para o turno inteiro, então quando você ativa modo rápido enquanto Claude está trabalhando, a perda de cache do cabeçalho acontece na primeira solicitação do seu próximo turno. Esses tokens de entrada sem cache são cobrados com [taxas de modo rápido](/docs/pt/fast-mode#understand-the-cost-tradeoff), e é por isso que ativá-lo no início de uma sessão custa menos do que ativá-lo profundamente em uma longa. Se seu modelo atual não suportar modo rápido, ativar modo rápido também [muda seu modelo](#switching-models), e essa mudança inicia um cache novo por conta própria a partir da próxima solicitação no turno em execução.117Habilitar [fast mode](/docs/pt/fast-mode) adiciona um cabeçalho de solicitação que faz parte da chave de cache, então a primeira solicitação que Claude Code envia com fast mode ativado lê todo o histórico de conversa sem acertos de cache. Claude Code define esse cabeçalho uma vez quando um turno começa e o mantém durante todo o turno, então quando você ativa fast mode enquanto Claude está trabalhando, a falha de cache do cabeçalho acontece na primeira solicitação do seu próximo turno. Esses tokens de entrada não armazenados em cache são cobrados com [fast mode rates](/docs/pt/fast-mode#understand-the-cost-tradeoff), é por isso que ativar no início de uma sessão custa menos do que ativar profundamente em uma longa. Se seu modelo atual não suportar fast mode, habilitar fast mode também [muda seu modelo](#switching-models), e essa mudança inicia um cache novo por conta própria a partir da próxima solicitação no turno em execução.

119 118 

120O custo se aplica uma vez por conversa. Após o primeiro turno de modo rápido, Claude Code continua enviando o cabeçalho e varia apenas a configuração de velocidade da solicitação, que não faz parte da chave de cache. Desativar modo rápido, o [fallback automático para velocidade padrão](/docs/pt/fast-mode#handle-rate-limits) após um limite de taxa, e ativá-lo novamente mais tarde mantêm o cache. Se você [ficar sem créditos de uso](/docs/pt/fast-mode#handle-rate-limits) no meio da sessão, Claude Code tenta novamente cada solicitação de modo rápido rejeitada em velocidade padrão da mesma forma, então esse fallback também mantém o cache. `/clear` e `/compact` redefinem isso, já que reconstruem o cache nesses pontos de qualquer forma.119O custo se aplica uma vez por conversa. Após o primeiro turno de fast mode, Claude Code continua enviando o cabeçalho e varia apenas a configuração de velocidade da solicitação, que não faz parte da chave de cache. Desativar fast mode, o [fallback automático para velocidade padrão](/docs/pt/fast-mode#handle-rate-limits) após um limite de taxa, e ativá-lo novamente mais tarde mantêm o cache. Se você [ficar sem créditos de uso](/docs/pt/fast-mode#handle-rate-limits) no meio da sessão, Claude Code tenta novamente cada solicitação de fast mode rejeitada em velocidade padrão da mesma forma, então esse fallback também mantém o cache. `/clear` e `/compact` redefinem isso, já que reconstruem o cache nesses pontos de qualquer forma.

121 120 

122<h3 id="connecting-or-disconnecting-an-mcp-server">121<h3 id="connecting-or-disconnecting-an-mcp-server">

123 Conectar ou desconectar um servidor MCP122 Connecting or disconnecting an MCP server

124</h3>123</h3>

125 124 

126As definições de ferramentas ficam na camada de prompt do sistema, então o cache se invalida quando o conjunto de definições de ferramentas na solicitação muda entre turnos. Alternar a [ferramenta advisor](/docs/pt/advisor) é uma exceção: sua definição fica após o ponto de quebra do cache, então ativar ou desativar `/advisor` mantém o prefixo em cache intacto. Se uma mudança de [servidor MCP](/docs/pt/mcp) faz isso depende se suas ferramentas são adiadas por [busca de ferramentas](/docs/pt/mcp#scale-with-mcp-tool-search) ou carregadas no prefixo:125As definições de ferramentas ficam na camada de prompt do sistema, então o cache se invalida quando o conjunto de definições de ferramentas na solicitação muda entre turnos. Alternar a [advisor tool](/docs/pt/advisor) é uma exceção: sua definição fica após o ponto de interrupção do cache, então habilitar ou desabilitar `/advisor` mantém o prefixo armazenado em cache intacto. Se uma mudança de [MCP server](/docs/pt/mcp) faz isso depende se suas ferramentas são adiadas por [tool search](/docs/pt/mcp#scale-with-mcp-tool-search) ou carregadas no prefixo:

127 126 

128* **Ferramentas adiadas**, o padrão em modelos suportados: um servidor se conectando, desconectando ou alterando sua lista de ferramentas apenas anexa novo conteúdo e não perturba nada já armazenado em cache.127* **Deferred tools**, o padrão em modelos suportados: um servidor conectando, desconectando ou alterando sua lista de ferramentas apenas anexa novo conteúdo e não perturba nada já armazenado em cache.

129* **Ferramentas carregadas no prefixo**: qualquer mudança nelas invalida o cache. Isso acontece quando [a busca de ferramentas não está disponível ou está desativada](/docs/pt/mcp#configure-tool-search), como em modelos da plataforma de agentes do Google Cloud anteriores à geração Claude 4.5, com um gateway `ANTHROPIC_BASE_URL` customizado, ou em uma implantação do Microsoft Foundry [hospedada no Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) uma vez que Claude Code detecta que a implantação rejeita busca de ferramentas. Também acontece para um servidor ou ferramenta marcada [`alwaysLoad`](/docs/pt/mcp#exempt-a-server-from-deferral) e para definições mantidas na frente por [carregamento baseado em limite](/docs/pt/mcp#configure-tool-search).128* **Tools loaded into the prefix**: qualquer mudança nelas invalida o cache. Isso acontece quando [tool search está indisponível ou desabilitado](/docs/pt/mcp#configure-tool-search), como em modelos da plataforma de agentes do Google Cloud anteriores à geração Claude 4.5, com um gateway `ANTHROPIC_BASE_URL` personalizado, ou em uma implantação do Microsoft Foundry [hospedada no Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) uma vez que Claude Code detecta que a implantação rejeita tool search. Também acontece para um servidor ou ferramenta marcada [`alwaysLoad`](/docs/pt/mcp#exempt-a-server-from-deferral), e para definições mantidas na frente por [threshold-based loading](/docs/pt/mcp#configure-tool-search).

130 129 

131Quando as ferramentas carregam no prefixo, a causa mais comum de uma invalidação é um servidor se conectando ou desconectando no meio da sessão, o que pode acontecer sem nenhuma ação da sua parte: o processo de um servidor stdio sai, uma sessão HTTP expira ou um servidor [se reconecta automaticamente após uma falha transitória](/docs/pt/mcp#automatic-reconnection). Um servidor conectado também pode enviar uma [atualização de ferramenta dinâmica](/docs/pt/mcp#dynamic-tool-updates) que muda sua lista de ferramentas.130Quando as ferramentas são carregadas no prefixo, a causa mais comum de uma invalidação é um servidor conectando ou desconectando no meio da sessão, o que pode acontecer sem nenhuma ação da sua parte: o processo de um servidor stdio sai, uma sessão HTTP expira, ou um servidor [reconecta automaticamente após uma falha transitória](/docs/pt/mcp#automatic-reconnection). Um servidor conectado também pode enviar uma [dynamic tool update](/docs/pt/mcp#dynamic-tool-updates) que altera sua lista de ferramentas.

132 131 

133Editar sua configuração de MCP não muda o cache por si só. A nova configuração entra em vigor apenas após uma reinicialização, que é quando o servidor se conecta ou desconecta.132Editar sua configuração MCP não muda o cache por si só. A nova configuração entra em vigor apenas após uma reinicialização, que é quando o servidor conecta ou desconecta.

134 133 

135<h3 id="enabling-or-disabling-a-plugin">134<h3 id="enabling-or-disabling-a-plugin">

136 Ativar ou desativar um plugin135 Enabling or disabling a plugin

137</h3>136</h3>

138 137 

139Quando você ativa ou desativa um [plugin](/docs/pt/plugins), o que a mudança custa depende de quais tipos de componentes o plugin fornece. Os casos abaixo cobrem cada tipo de componente, quando Claude Code aplica a mudança e o que acontece quando você desativa um plugin novamente na mesma sessão.138Quando você habilita ou desabilita um [plugin](/docs/pt/plugins), o que a mudança custa depende de quais tipos de componentes o plugin fornece. Os casos abaixo cobrem cada tipo de componente, quando Claude Code aplica a mudança e o que acontece quando você desabilita um plugin novamente na mesma sessão.

140 139 

141<h4 id="plugin-components-that-keep-the-cache">140<h4 id="plugin-components-that-keep-the-cache">

142 Componentes de plugin que mantêm o cache141 Plugin components that keep the cache

143</h4>142</h4>

144 143 

145Claude Code nunca invalida o cache para skills, comandos, agentes, hooks, monitores ou temas de um plugin. Ele anexa seu conteúdo após a conversa existente, então a próxima solicitação paga por esse conteúdo e ainda lê tudo antes dele do cache.144Claude Code nunca invalida o cache para skills, commands, agents, hooks, monitors ou themes de um plugin. Ele anexa seu conteúdo após a conversa existente, então a próxima solicitação paga por esse conteúdo e ainda lê tudo antes dele do cache.

146 145 

147<h4 id="plugins-that-provide-mcp-servers">146<h4 id="plugins-that-provide-mcp-servers">

148 Plugins que fornecem servidores MCP147 Plugins that provide MCP servers

149</h4>148</h4>

150 149 

151Quando você ativa ou desativa um plugin que fornece [servidores MCP](/docs/pt/plugins-reference#mcp-servers), Claude Code segue as mesmas regras que quando você [conecta ou desconecta um servidor MCP](#connecting-or-disconnecting-an-mcp-server):150Quando você habilita ou desabilita um plugin que fornece [MCP servers](/docs/pt/plugins-reference#mcp-servers), Claude Code segue as mesmas regras de quando você [conecta ou desconecta um MCP server](#connecting-or-disconnecting-an-mcp-server):

152 151 

153* Se Claude Code adia as ferramentas do servidor, ele mantém o cache.152* Se Claude Code adia as ferramentas do servidor, ele mantém o cache.

154* Se Claude Code as carrega no prefixo, a próxima solicitação relê toda a conversa.153* Se Claude Code as carrega no prefixo, a próxima solicitação relê toda a conversa.

155 154 

156<h4 id="code-intelligence-plugins">155<h4 id="code-intelligence-plugins">

157 Plugins de inteligência de código156 Code intelligence plugins

158</h4>157</h4>

159 158 

160Quando você ativa um [plugin de inteligência de código](/docs/pt/discover-plugins#code-intelligence), Claude obtém a [ferramenta LSP](/docs/pt/tools-reference#lsp-tool-behavior).159Quando você habilita um [code intelligence plugin](/docs/pt/discover-plugins#code-intelligence), Claude obtém a [LSP tool](/docs/pt/tools-reference#lsp-tool-behavior).

161 160 

162<h4 id="when-plugin-changes-apply">161<h4 id="when-plugin-changes-apply">

163 Quando as mudanças de plugin se aplicam162 When plugin changes apply

164</h4>163</h4>

165 164 

166Claude Code aplica uma mudança de plugin quando você executa [`/reload-plugins`](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) ou inicia uma nova sessão. Você paga o custo, seja anúncios anexados ou uma releitura completa, no primeiro turno após a mudança se aplicar, não quando você executa `/plugin enable` ou `/plugin disable`. Claude Code também pode aplicar uma mudança por conta própria em três casos:165Uma mudança que você faz no menu `/plugin` passa por [`/reload-plugins`](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting), que Claude Code executa para você quando você fecha o menu. Você paga o custo, seja anúncios anexados ou uma releitura completa, no primeiro turno após a mudança ser aplicada. Claude Code também pode aplicar uma mudança por conta própria:

167 166 

168* Para um plugin com uma fonte `command`, Claude Code [pode recarregar o plugin em si](/docs/pt/plugin-marketplaces#when-claude-code-re-runs-the-command).167* Para um plugin com uma fonte `command`, Claude Code [pode recarregar o plugin em si](/docs/pt/plugin-marketplaces#when-claude-code-re-runs-the-command).

169* Quando você [instala um plugin da interface `/plugin`](/docs/pt/discover-plugins#install-plugins), Claude Code pode ativá-lo durante a instalação. Claude Code informa no resumo da instalação se fez isso ou se você deve executar `/reload-plugins`.168* Quando você [instala um plugin da interface `/plugin`](/docs/pt/discover-plugins#install-plugins), Claude Code pode ativá-lo durante a instalação. O resumo da instalação informa se fez isso.

170* Quando você [move a sessão com `/cd`](/docs/pt/permissions#move-the-session-to-another-directory) na v2.1.246 ou posterior, Claude Code aplica os plugins que as configurações do novo diretório habilitam como parte da mudança, sem o aviso de releitura completa que acompanha um `/reload-plugins`.169* Quando você [move a sessão com `/cd`](/docs/pt/permissions#move-the-session-to-another-directory) na v2.1.246 ou posterior, Claude Code aplica os plugins que as configurações do novo diretório habilitam como parte da mudança, sem o aviso de releitura completa que mantém um `/reload-plugins`.

170* Em sessões interativas, quando você adiciona ou remove um plugin em uma [folder of plugins](/docs/pt/plugins#test-your-plugins-locally) que você passou com `--plugin-dir`, a mudança se aplica imediatamente. Se aplicá-la acionaria uma releitura completa, Claude Code retém a mudança e mostra um aviso para executar `/reload-plugins`. Requer Claude Code v2.1.265 ou posterior.

171 171 

172Quando você executa `/reload-plugins` e o recarregamento acionaria uma releitura completa, Claude Code mostra um aviso e não aplica o recarregamento. Execute novamente com `--force` para aplicar o recarregamento mesmo assim.172Quando `/reload-plugins` é executado e o recarregamento acionaria uma releitura completa, Claude Code mostra um aviso e não aplica o recarregamento. Execute `/reload-plugins --force` para aplicá-lo de qualquer forma.

173 173 

174`/reload-plugins` também é executado em sessões sem um terminal interativo, como o aplicativo desktop, o Agent SDK e [modo não-interativo](/docs/pt/headless) com `-p`, quando você o digita diretamente na sessão. Requer Claude Code v2.1.260 ou posterior.174`/reload-plugins` também é executado em sessões sem um terminal interativo, como o aplicativo de desktop, o Agent SDK e [non-interactive mode](/docs/pt/headless) com `-p`, quando você o digita diretamente na sessão. Requer Claude Code v2.1.260 ou posterior.

175 175 

176Nessas sessões o recarregamento aplica tudo exceto mudanças de servidor MCP de plugin, que [entram em vigor na sua próxima sessão](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) e portanto nunca custam uma releitura completa no meio da sessão.176Nessas sessões, o recarregamento aplica tudo exceto mudanças de MCP server de plugin, que [entram em vigor em sua próxima sessão](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) e portanto nunca custam uma releitura completa no meio da sessão.

177 177 

178<h4 id="plugins-you-enable-and-then-disable-in-one-session">178<h4 id="plugins-you-enable-and-then-disable-in-one-session">

179 Plugins que você ativa e depois desativa em uma sessão179 Plugins you enable and then disable in one session

180</h4>180</h4>

181 181 

182Quando você desativa um plugin que ativou anteriormente na sessão, Claude Code restaura a forma de solicitação anterior. Se esse prefixo ainda estiver dentro de seu [tempo de vida do cache](#cache-lifetime), a próxima solicitação lê a entrada de cache mais antiga em vez de reconstruir.182Quando você desabilita um plugin que habilitou anteriormente na sessão, Claude Code restaura a forma de solicitação anterior. Se esse prefixo ainda estiver dentro de seu [cache lifetime](#cache-lifetime), a próxima solicitação lê a entrada de cache mais antiga em vez de reconstruir.

183 183 

184<h3 id="denying-an-entire-tool">184<h3 id="denying-an-entire-tool">

185 Negar uma ferramenta inteira185 Denying an entire tool

186</h3>186</h3>

187 187 

188Adicionar um nome de ferramenta simples como `Bash` ou `WebFetch` como uma [regra de negação](/docs/pt/permissions#manage-permissions) remove essa ferramenta do contexto de Claude completamente. Claude Code carrega definições de ferramentas integradas na camada de prompt do sistema, então adicionar ou remover uma dessas regras no meio da sessão invalida o cache. Claude Code aplica a mudança na próxima solicitação, quer você a adicione através de `/permissions` ou [editando um arquivo de configurações diretamente](/docs/pt/settings#when-edits-take-effect). Isso inclui uma regra que você adiciona através de `/permissions` no meio de um turno.188Adicionar um nome de ferramenta simples como `Bash` ou `WebFetch` como uma [deny rule](/docs/pt/permissions#manage-permissions) remove essa ferramenta do contexto de Claude inteiramente. Claude Code carrega definições de ferramentas integradas na camada de prompt do sistema, então adicionar ou remover uma dessas regras no meio da sessão invalida o cache. Claude Code aplica a mudança na próxima solicitação, seja você adicionar a regra através de `/permissions` ou [editando um arquivo de configurações diretamente](/docs/pt/settings#when-edits-take-effect). Isso inclui uma regra que você adiciona através de `/permissions` no meio de um turno.

189 189 

190Apenas uma regra de negação que corresponde na posição do nome da ferramenta tem esse efeito: um nome de ferramenta simples, a forma equivalente `Bash(*)`, ou um [glob de nome de ferramenta](/docs/pt/permissions#tool-name-wildcards) como `"*"`. Um glob que corresponde apenas a ferramentas MCP, como `"mcp__*"`, remove essas ferramentas da mesma forma mas deixa o cache intacto quando as ferramentas correspondidas são [adiadas](#connecting-or-disconnecting-an-mcp-server), o padrão, já que definições adiadas nunca estiveram no prefixo em cache. Regras de negação com escopo como `Bash(rm *)` e todas as regras de permissão e pergunta não mudam quais ferramentas Claude vê. Claude Code as verifica quando Claude tenta fazer uma chamada, deixando o prefixo intacto.190Apenas uma deny rule que corresponde na posição do nome da ferramenta tem esse efeito: um nome de ferramenta simples, a forma equivalente `Bash(*)`, ou um [tool-name glob](/docs/pt/permissions#tool-name-wildcards) como `"*"`. Um glob que corresponde apenas a ferramentas MCP, como `"mcp__*"`, remove essas ferramentas da mesma forma, mas deixa o cache intacto quando as ferramentas correspondidas são [adiadas](#connecting-or-disconnecting-an-mcp-server), o padrão, já que definições adiadas nunca estiveram no prefixo armazenado em cache. Deny rules com escopo como `Bash(rm *)`, e todas as regras allow e ask, não mudam quais ferramentas Claude vê. Claude Code as verifica quando Claude tenta uma chamada, deixando o prefixo intacto.

191 

192<h3 id="changing-output-style">

193 Alterar estilo de saída

194</h3>

195 

196[Estilo de saída](/docs/pt/output-styles) faz parte do prompt do sistema. Quando você muda de estilos no meio da sessão com `/config` ou a configuração `outputStyle`, Claude usa o novo estilo começando com sua próxima mensagem, e essa solicitação lê todo o histórico de conversa sem acertos de cache. Para manter esse custo pequeno, mude de estilos antes de sua primeira mensagem em uma sessão ou logo após `/clear` ou `/compact`, quando há pouco ou nenhum histórico de conversa para releitura.

197 

198Antes da v2.1.251, uma mudança de estilo no meio da sessão mantinha o cache mas não se aplicava até você executar `/clear` ou iniciar uma nova sessão.

199 191 

200<h3 id="compacting-the-conversation">192<h3 id="compacting-the-conversation">

201 Compactar a conversa193 Compacting the conversation

202</h3>194</h3>

203 195 

204[Compactação](/docs/pt/context-window#what-survives-compaction) substitui seu histórico de mensagens por um resumo. Por design, isso invalida a camada de conversa, já que a próxima solicitação tem um histórico novo e mais curto que não compartilha um prefixo com o antigo. Claude Code reutiliza a camada de prompt do sistema e recarrega o contexto do projeto do disco, que acerta o cache apenas se CLAUDE.md e memória não mudaram desde o início da sessão.196[Compaction](/docs/pt/context-window#what-survives-compaction) substitui seu histórico de mensagens por um resumo. Por design, isso invalida a camada de conversa, já que a próxima solicitação tem um histórico novo e mais curto que não compartilha um prefixo com o antigo. Claude Code reutiliza a camada de prompt do sistema a menos que a conversa tenha sido [retomada mantendo um prompt do sistema que teria mudado de outra forma](#resuming-a-session); nesse caso, a primeira compactação muda para o prompt atual e essa camada é reconstruída uma vez. Ele recarrega o contexto do projeto do disco, que cache-hits apenas se CLAUDE.md e memory não tiverem mudado desde o início da sessão.

205 197 

206Para produzir o resumo, Claude Code envia uma solicitação separada com o mesmo prompt do sistema, ferramentas e histórico que sua conversa, mais uma instrução de resumo anexada como uma mensagem de usuário final. Enquanto o cache está quente, essa solicitação lê seu prefixo do cache, então um `/compact` no meio da sessão custa uma fração do que o tamanho do contexto sugere e gasta a maior parte de seu tempo gerando o resumo.198Para produzir o resumo, Claude Code envia uma solicitação separada com o mesmo prompt do sistema, ferramentas e histórico que sua conversa, mais uma instrução de sumarização anexada como uma mensagem de usuário final. Enquanto o cache está quente, essa solicitação lê seu prefixo do cache, então um `/compact` no meio da sessão custa uma fração do que o tamanho do contexto sugere e gasta a maior parte do tempo gerando o resumo.

207 199 

208Após uma pausa mais longa que o [tempo de vida do cache](#cache-lifetime), não há cache deixado para ler, então a solicitação de resumo reprocessa o histórico completo como entrada sem cache. É por isso que `/compact` custa mais quando você [retoma uma sessão antiga](/docs/pt/sessions#resume-from-a-summary). Em ambos os casos quente e frio, o turno após compactação reconstrói o cache de conversa apenas para o resumo muito mais curto, então esse turno não é a parte lenta.200Após uma pausa mais longa que o [cache lifetime](#cache-lifetime), não há cache deixado para ler, então a solicitação de sumarização reprocessa o histórico completo como entrada não armazenada em cache. É por isso que `/compact` custa mais quando você [retoma uma sessão antiga](/docs/pt/sessions#resume-from-a-summary). Em ambos os casos quente e frio, o turno após compactação reconstrói o cache de conversa apenas para o resumo muito mais curto, então esse turno não é a parte lenta.

209 201 

210<Tip>202<Tip>

211 A compactação funciona a seu favor quando o contexto que você descarta é conteúdo que não precisa mais. Para escolher quando sua sobrecarga acontece, execute `/compact` em uma pausa natural em seu trabalho, como entre tarefas, em vez de esperar que a compactação automática seja acionada no meio da tarefa. Se você seguiu um caminho que deseja abandonar completamente, use [`/rewind`](#rewinding-the-conversation) para um turno anterior. Rewind trunca de volta para um prefixo que já está em cache, em vez de construir um novo como a compactação faz.203 Compaction funciona a seu favor quando o contexto que você descarta é conteúdo que você não precisa mais. Para escolher quando sua sobrecarga acontece, execute `/compact` em uma pausa natural em seu trabalho, como entre tarefas, em vez de esperar que a auto-compactação seja acionada no meio da tarefa. Se você seguiu um caminho que deseja abandonar inteiramente, [`/rewind`](#rewinding-the-conversation) para um turno anterior em vez disso. Rewind trunca de volta para um prefixo que já está armazenado em cache, em vez de construir um novo como compaction faz.

212</Tip>204</Tip>

213 205 

214<h3 id="accumulating-many-images">206<h3 id="accumulating-many-images">

215 Acumular muitas imagens207 Accumulating many images

216</h3>208</h3>

217 209 

218A API limita quantas imagens e PDFs cada solicitação pode carregar. Para os números atuais, veja [Limites de solicitação](https://platform.claude.com/docs/en/build-with-claude/vision#request-limits) na documentação da API. Claude Code também limita o tamanho total das imagens e PDFs em uma solicitação, então capturas de tela grandes atingem o limite com menos imagens do que pequenas.210A API limita quantas imagens e PDFs cada solicitação pode carregar. Para os números atuais, veja [Request limits](https://platform.claude.com/docs/en/build-with-claude/vision#request-limits) na documentação da API. Claude Code também limita o tamanho total das imagens e PDFs em uma solicitação, então capturas de tela grandes atingem o limite com menos imagens do que pequenas.

219 211 

220Quando a próxima solicitação passaria de qualquer limite, Claude Code remove um lote das imagens e PDFs mais antigas do que envia, o que deixa espaço para mais antes de precisar remover novamente. Claude não pode mais ver as imagens removidas. Se Claude precisar de uma delas novamente, compartilhe-a novamente.212Quando a próxima solicitação passaria por qualquer limite, Claude Code remove um lote das imagens e PDFs mais antigas do que envia, o que deixa espaço para mais antes de precisar remover novamente. Claude não pode mais ver as imagens removidas. Se Claude precisar de uma delas novamente, compartilhe-a novamente.

221 213 

222Remover imagens muda as mensagens que as continham, então a próxima solicitação reprocessa a conversa a partir da mais antiga dessas mensagens em diante. Como Claude Code remove um lote por vez, você vê um turno mais lento por lote em vez de um com cada nova captura de tela.214Remover imagens muda as mensagens que as continham, então a próxima solicitação reprocessa a conversa a partir da mais antiga dessas mensagens em diante. Como Claude Code remove um lote por vez, você vê um turno mais lento por lote em vez de um com cada nova captura de tela.

223 215 

224<h3 id="upgrading-claude-code">216<h3 id="upgrading-claude-code">

225 Atualizar Claude Code217 Upgrading Claude Code

226</h3>218</h3>

227 219 

228Uma nova versão de Claude Code normalmente atualiza o prompt do sistema ou definições de ferramentas, então a primeira solicitação após uma atualização reconstrói o cache do início. [Auto-update](/docs/pt/setup#auto-updates) baixa novas versões em segundo plano mas as aplica no próximo lançamento, nunca no meio da sessão, então você vê isso como um primeiro turno sem cache após reiniciar em vez de uma surpresa durante uma sessão. Defina `DISABLE_AUTOUPDATER=1` para controlar quando as atualizações se aplicam.220Uma nova versão de Claude Code normalmente atualiza o prompt do sistema ou definições de ferramentas, então a primeira conversa que você inicia após uma atualização constrói seu cache do topo. [Auto-update](/docs/pt/setup#auto-updates) baixa novas versões em segundo plano, mas as aplica no próximo lançamento, nunca no meio da sessão, então você vê isso como um primeiro turno não armazenado em cache após reiniciar em vez de uma surpresa durante uma sessão. Defina `DISABLE_AUTOUPDATER=1` para controlar quando as atualizações se aplicam.

229 221 

230<Note>222<Note>

231 [Retomar uma sessão](/docs/pt/sessions#resume-a-session) após uma atualização reprocessa todo o histórico de conversa sem acertos de cache, já que o histórico agora fica atrás de um prompt do sistema diferente. O custo escala com o comprimento da conversa retomada, então o primeiro turno de volta para uma sessão longa pode ser a solicitação mais cara que você envia.223 Para o que custa retomar uma conversa que você iniciou antes da atualização, veja [Resuming a session](#resuming-a-session).

232</Note>224</Note>

233 225 

234<h2 id="actions-that-keep-the-cache">226<h2 id="actions-that-keep-the-cache">

235 Ações que mantêm o cache227 Ações que mantêm o cache

236</h2>228</h2>

237 229 

238Essas ações ou anexam ao final da conversa ou não tocam a solicitação. Algumas delas, como editar CLAUDE.md, mantêm o cache pela mesma razão pela qual a mudança não chega à sessão em execução até `/clear`, `/compact` ou uma reinicialização.230Essas ações ou anexam ao final da conversa ou não tocam na solicitação. Algumas delas, como editar CLAUDE.md, mantêm o cache pela mesma razão que a mudança não chega à sessão em execução até `/clear`, `/compact` ou uma reinicialização.

239 231 

240* [Editar arquivos em seu repositório](#editing-files-in-your-repository)232* [Editando arquivos em seu repositório](#editing-files-in-your-repository)

241* [Editar CLAUDE.md no meio da sessão](#editing-claude-md-mid-session)233* [Editando CLAUDE.md durante a sessão](#editing-claude-md-mid-session)

242* [Alterar modo de permissão](#changing-permission-mode)234* [Alterando modo de permissão](#changing-permission-mode)

243* [Invocar skills e comandos](#invoking-skills-and-commands)235* [Alterando estilo de saída](#changing-output-style)

244* [Executar `/recap`](#running-%2Frecap)236* [Invocando skills e comandos](#invoking-skills-and-commands)

245* [Rewind da conversa](#rewinding-the-conversation)237* [Executando `/recap`](#running-%2Frecap)

246* [Spawning de um subagent](#subagents-and-the-cache)238* [Revertendo a conversa](#rewinding-the-conversation)

239* [Gerando um subagente](#subagents-and-the-cache)

247 240 

248<h3 id="editing-files-in-your-repository">241<h3 id="editing-files-in-your-repository">

249 Editar arquivos em seu repositório242 Editando arquivos em seu repositório

250</h3>243</h3>

251 244 

252O conteúdo do arquivo entra em contexto apenas quando Claude o lê, e as leituras se anexam à conversa. Editar um arquivo que Claude leu anteriormente não muda retroativamente a leitura anterior no histórico. Em vez disso, Claude Code anexa um `<system-reminder>` observando que o arquivo mudou, e Claude o relê se necessário.245O conteúdo dos arquivos entra no contexto apenas quando Claude os lê, e as leituras se anexam à conversa. Editar um arquivo que Claude leu anteriormente não muda retroativamente a leitura anterior no histórico. Em vez disso, Claude Code anexa um `<system-reminder>` observando que o arquivo mudou, e Claude o relê se necessário.

253 246 

254<h3 id="editing-claude-md-mid-session">247<h3 id="editing-claude-md-mid-session">

255 Editar CLAUDE.md no meio da sessão248 Editando CLAUDE.md durante a sessão

256</h3>249</h3>

257 250 

258Seus arquivos CLAUDE.md de raiz de projeto e nível de usuário são lidos uma vez no início da sessão e mantidos na memória. Editá-los no meio da sessão não invalida o cache, mas a edição também não se aplica. Claude continua trabalhando com a versão que foi carregada no início da sessão. O novo conteúdo carrega no próximo `/clear`, `/compact` ou reinicialização.251Seus arquivos CLAUDE.md no nível do projeto-raiz e do usuário são lidos uma vez no início da sessão e mantidos na memória. Editá-los durante a sessão não invalida o cache, mas a edição também não se aplica. Claude continua trabalhando com a versão que foi carregada no início da sessão. O novo conteúdo é carregado na próxima `/clear`, `/compact` ou reinicialização.

259 252 

260[Arquivos CLAUDE.md aninhados em subdiretórios](/docs/pt/memory) e [regras com frontmatter `paths:`](/docs/pt/memory#path-specific-rules) carregam depois, quando Claude primeiro lê um arquivo correspondente. Editar um antes de carregar tem efeito. Depois de carregar, o conteúdo faz parte do histórico de conversa, então uma edição no meio da sessão não muda retroativamente.253[Arquivos CLAUDE.md aninhados em subdiretórios](/docs/pt/memory) e [regras com frontmatter `paths:`](/docs/pt/memory#path-specific-rules) são carregados depois, quando Claude lê um arquivo correspondente pela primeira vez. Editar um antes de ser carregado tem efeito. Depois de carregado, o conteúdo faz parte do histórico da conversa, então uma edição durante a sessão não muda retroativamente.

261 254 

262<h3 id="changing-permission-mode">255<h3 id="changing-permission-mode">

263 Alterar modo de permissão256 Alterando modo de permissão

257</h3>

258 

259Alternar entre [modos de permissão](/docs/pt/permission-modes), como de Manual para aceitar edições, não muda o prompt do sistema ou as definições de ferramentas, então as mudanças de modo são seguras para o cache. A exceção é o modo de plano com a configuração de modelo [`opusplan`](/docs/pt/model-config#opusplan-model-setting), que alterna o modelo entre Opus e Sonnet conforme você entra ou sai do modo de plano. Isso torna a alternância de modo uma [mudança de modelo](#switching-models).

260 

261<h3 id="changing-output-style">

262 Alterando estilo de saída

264</h3>263</h3>

265 264 

266Alternar entre [modos de permissão](/docs/pt/permission-modes), como de Manual para aceitar edições, não muda o prompt do sistema ou definições de ferramentas, então mudanças de modo são seguras para cache. A exceção é o modo de plano com a configuração de modelo [`opusplan`](/docs/pt/model-config#opusplan-model-setting), que alterna o modelo entre Opus e Sonnet conforme você entra ou sai do modo de plano. Isso torna a alternância de modo uma [mudança de modelo](#switching-models).265Quando você alterna [estilos de saída](/docs/pt/output-styles) durante a sessão com `/config` ou a configuração `outputStyle`, Claude usa o novo estilo a partir da sua próxima mensagem. Claude Code entrega as instruções do novo estilo como uma mensagem na conversa, então essa solicitação ainda lê o prompt do sistema e a conversa anterior do cache.

266 

267Antes da v2.1.251, uma mudança de estilo durante a sessão mantinha o cache mas não se aplicava até você executar `/clear` ou iniciar uma nova sessão.

267 268 

268<h3 id="invoking-skills-and-commands">269<h3 id="invoking-skills-and-commands">

269 Invocar skills e comandos270 Invocando skills e comandos

270</h3>271</h3>

271 272 

272[Skills](/docs/pt/skills) e [comandos](/docs/pt/commands) injetam suas instruções como mensagens de usuário no ponto de invocação. Nada anterior na conversa muda. Uma skill ou comando cujo frontmatter nomeia um `model` pode ser uma [mudança de modelo](#switching-models) para aquele turno.273[Skills](/docs/pt/skills) e [comandos](/docs/pt/commands) injetam suas instruções como mensagens do usuário no ponto de invocação. Nada anterior na conversa muda. Uma skill ou comando cujo frontmatter nomeia um `model` pode ser uma [mudança de modelo](#switching-models) para esse turno.

273 274 

274<h3 id="running-/recap">275<h3 id="running-/recap">

275 Executar `/recap`276 Executando `/recap`

276</h3>277</h3>

277 278 

278[`/recap`](/docs/pt/interactive-mode#session-recap) gera um resumo para exibição em seu terminal. Ao contrário de `/compact`, ele anexa o resumo como saída de comando em vez de substituir seu histórico de mensagens, então o prefixo em cache permanece intacto.279[`/recap`](/docs/pt/interactive-mode#session-recap) gera um resumo para exibição em seu terminal. Diferentemente de `/compact`, ele anexa o resumo como saída de comando em vez de substituir seu histórico de mensagens, então o prefixo em cache permanece intacto.

279 280 

280<h3 id="rewinding-the-conversation">281<h3 id="rewinding-the-conversation">

281 Rewind da conversa282 Revertendo a conversa

282</h3>283</h3>

283 284 

284[`/rewind`](/docs/pt/checkpointing) trunca sua conversa de volta para um turno anterior. O histórico restante é o mesmo conteúdo do qual o cache foi construído naquele ponto, e as camadas de prompt do sistema e contexto do projeto não mudam, então a próxima solicitação acerta a entrada de cache anterior. Cada turno desde então leu através desse prefixo, que manteve a entrada aquecida mesmo se o turno original foi há mais tempo do que o TTL.285[`/rewind`](/docs/pt/checkpointing) trunca sua conversa de volta a um turno anterior. O histórico restante é o mesmo conteúdo do qual o cache foi construído naquele ponto, e o prompt do sistema e as camadas de contexto do projeto não mudam, então a próxima solicitação atinge a entrada de cache anterior. Cada turno desde então leu através desse prefixo, o que manteve a entrada ativa mesmo se o turno original foi há mais tempo do que o TTL.

286 

287Restaurar checkpoints de arquivo junto com a conversa não tem efeito separado no cache. O conteúdo dos arquivos entra no contexto apenas quando Claude os lê, o mesmo que [editar arquivos em seu repositório](#editing-files-in-your-repository).

288 

289<h2 id="resuming-a-session">

290 Retomando uma sessão

291</h2>

292 

293Quando você [retoma uma sessão](/docs/pt/sessions#resume-a-session), Claude Code envia toda a conversa novamente, e a solicitação lê do cache qualquer parte de seu prefixo que não tenha sido alterada e ainda esteja dentro do [tempo de vida do cache](#cache-lifetime). A tabela de camadas no topo desta página diz quais mudanças cada camada.

285 294 

286Restaurar checkpoints de arquivo junto com a conversa não tem efeito separado no cache. O conteúdo do arquivo entra em contexto apenas quando Claude o lê, o mesmo que [editar arquivos em seu repositório](#editing-files-in-your-repository).295O prompt do sistema mudaria após uma [atualização do Claude Code](#upgrading-claude-code) ou com texto [`--append-system-prompt`](/docs/pt/cli-reference#system-prompt-flags) diferente na retomada. Por padrão, a conversa retomada mantém o prompt do sistema com o qual começou, portanto seu histórico ainda fica atrás do mesmo prompt, e a mudança entra em vigor assim que a conversa é compactada ou em uma nova conversa. [Sinalizadores de prompt do sistema em conversas retomadas](/docs/pt/cli-reference#system-prompt-flags-in-resumed-conversations) aborda `--system-prompt-snapshot off` e modo bare, onde isso não se aplica.

287 296 

288<h2 id="cache-lifetime">297<h2 id="cache-lifetime">

289 Tempo de vida do cache298 Tempo de vida do cache


343 Escopo do cache352 Escopo do cache

344</h2>353</h2>

345 354 

346Em Claude Code, o cache é efetivamente limitado a uma máquina e diretório. O prompt do sistema incorpora o diretório de trabalho, plataforma, shell, versão do SO e caminhos de memória automática, então duas sessões em diretórios diferentes constroem prefixos diferentes e perdem o cache uma da outra. Isso inclui worktrees do mesmo repositório, já que cada worktree tem seu próprio diretório de trabalho.355Em Claude Code, o cache é efetivamente limitado a uma máquina e diretório. Cada conversa carrega o diretório de trabalho, plataforma, shell e versão do SO, e o prompt do sistema nomeia seus caminhos de memória automática, então duas sessões em diretórios diferentes constroem prefixos diferentes e perdem o cache uma da outra. Isso inclui worktrees do mesmo repositório, já que cada worktree tem seu próprio diretório de trabalho.

347 356 

348Sessões que você executa em paralelo no mesmo diretório constroem prefixos correspondentes e leem o cache uma da outra. Sessões sequenciais compartilham o prefixo apenas quando o snapshot de status git na inicialização corresponde, já que o prompt do sistema também captura branch e commits recentes.357Sessões que você executa em paralelo no mesmo diretório constroem prefixos correspondentes e leem o cache uma da outra. Sessões sequenciais compartilham o prefixo apenas quando o snapshot de status git na inicialização corresponde, já que cada conversa também carrega a branch e commits recentes desse snapshot.

349 358 

350O cache de API subjacente é mais amplo. Os caches são isolados entre organizações e, em alguns provedores, [entre workspaces dentro de uma organização](https://platform.claude.com/docs/pt/build-with-claude/prompt-caching#cache-storage-and-sharing). Dentro desses limites, quaisquer duas solicitações com o mesmo modelo e prefixo leem o mesmo cache. Para chamadores do Agent SDK executando frotas de processos automatizados, veja [melhorar prompt caching entre usuários e máquinas](/docs/pt/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) para suprimir as seções por máquina do prompt do sistema e compartilhar o cache entre máquinas.359O cache de API subjacente é mais amplo. Os caches são isolados entre organizações e, em alguns provedores, [entre workspaces dentro de uma organização](https://platform.claude.com/docs/pt/build-with-claude/prompt-caching#cache-storage-and-sharing). Dentro desses limites, quaisquer duas solicitações com o mesmo modelo e prefixo leem o mesmo cache. Para chamadores do Agent SDK executando frotas de processos automatizados, veja [melhorar prompt caching entre usuários e máquinas](/docs/pt/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) para suprimir as seções por máquina do prompt do sistema e compartilhar o cache entre máquinas.

351 360 


382 391 

383* **Cópias de sessão**: uma sessão que você [copia com `/fork`](/docs/pt/agent-view#copy-the-session-with-%2Ffork) recebe sua instrução de isolamento como uma mensagem no final da conversa copiada, então o cache que a conversa original construiu permanece intacto.392* **Cópias de sessão**: uma sessão que você [copia com `/fork`](/docs/pt/agent-view#copy-the-session-with-%2Ffork) recebe sua instrução de isolamento como uma mensagem no final da conversa copiada, então o cache que a conversa original construiu permanece intacto.

384* **Compactação**: a chamada de resumo descrita em [Compactando a conversa](#compacting-the-conversation) usa a mesma abordagem de compartilhamento de prefixo.393* **Compactação**: a chamada de resumo descrita em [Compactando a conversa](#compacting-the-conversation) usa a mesma abordagem de compartilhamento de prefixo.

394* **Subagents retomados**: quando Claude [retoma um subagent](/docs/pt/sub-agents#resume-subagents), a primeira solicitação da execução retomada pode ler o cache que a execução original aqueceu.

385* **Workflow fan-outs**: em um [workflow fan-out](/docs/pt/workflows#prompt-caching-in-a-fan-out) de agentes com o mesmo prefixo, Claude Code mantém todos exceto o primeiro por até 5 segundos por padrão, então suas primeiras solicitações podem ler o prefixo que o primeiro agente armazenou em cache.395* **Workflow fan-outs**: em um [workflow fan-out](/docs/pt/workflows#prompt-caching-in-a-fan-out) de agentes com o mesmo prefixo, Claude Code mantém todos exceto o primeiro por até 5 segundos por padrão, então suas primeiras solicitações podem ler o prefixo que o primeiro agente armazenou em cache.

386 396 

387<h2 id="disable-prompt-caching">397<h2 id="disable-prompt-caching">

quickstart.md +10 −10

Details

27 Passo 1: Instale Claude Code27 Passo 1: Instale Claude Code

28</h2>28</h2>

29 29 

30To install Claude Code, use one of the following methods:30Para instalar Claude Code, use um dos seguintes métodos:

31 31 

32<Tabs>32<Tabs>

33 <Tab title="Native Install (Recommended)">33 <Tab title="Instalação Nativa (Recomendado)">

34 **macOS, Linux, WSL:**34 **macOS, Linux, WSL:**

35 35 

36 ```bash theme={null}36 ```bash theme={null}


49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

50 ```50 ```

51 51 

52 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.52 Se você vir `The token '&&' is not a valid statement separator`, você está no PowerShell, não no CMD. Se você vir `'irm' is not recognized as an internal or external command`, você está no CMD, não no PowerShell. Seu prompt mostra `PS C:\` quando você está no PowerShell e `C:\` sem o `PS` quando você está no CMD.

53 53 

54 If the install command fails with `syntax error near unexpected token '<'`, a `403`, or another curl error, see [Troubleshoot installation](/docs/en/troubleshoot-install#find-your-error) to match the error to a fix and for alternative install methods.54 Se o comando de instalação falhar com `syntax error near unexpected token '<'`, um `403`, ou outro erro de curl, consulte [Solucionar problemas de instalação](/docs/pt/troubleshoot-install#find-your-error) para corresponder o erro a uma correção e para métodos alternativos de instalação.

55 55 

56 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.56 [Git for Windows](https://git-scm.com/downloads/win) é recomendado no Windows nativo para que Claude Code possa usar a ferramenta Bash. Se Git for Windows não estiver instalado, Claude Code usa PowerShell como ferramenta de shell. Configurações WSL não precisam de Git for Windows.

57 57 

58 <Info>58 <Info>

59 Native installations automatically update in the background to keep you on the latest version.59 As instalações nativas são atualizadas automaticamente em segundo plano para mantê-lo na versão mais recente.

60 </Info>60 </Info>

61 </Tab>61 </Tab>

62 62 


65 brew install --cask claude-code65 brew install --cask claude-code

66 ```66 ```

67 67 

68 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.68 Homebrew oferece dois casks. `claude-code` rastreia o canal de versão estável, que normalmente fica cerca de uma semana atrás e pula versões com regressões importantes. `claude-code@latest` rastreia o canal mais recente e recebe novas versões assim que são lançadas.

69 69 

70 <Info>70 <Info>

71 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.71 As instalações do Homebrew não são atualizadas automaticamente. Execute `brew upgrade claude-code` ou `brew upgrade claude-code@latest`, dependendo de qual cask você instalou, para obter os recursos mais recentes e correções de segurança.

72 </Info>72 </Info>

73 </Tab>73 </Tab>

74 74 


78 ```78 ```

79 79 

80 <Info>80 <Info>

81 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.81 As instalações do WinGet não são atualizadas automaticamente. Execute `winget upgrade Anthropic.ClaudeCode` periodicamente para obter os recursos mais recentes e correções de segurança.

82 </Info>82 </Info>

83 </Tab>83 </Tab>

84</Tabs>84</Tabs>

85 85 

86You can also install with [apt, dnf, or apk](/docs/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.86Você também pode instalar com [apt, dnf, ou apk](/docs/pt/setup#install-with-linux-package-managers) no Debian, Fedora, RHEL e Alpine.

87 87 

88Para confirmar que a instalação funcionou, execute:88Para confirmar que a instalação funcionou, execute:

89 89 

remote-control.md +19 −20

Details

132 Verificar status da conexão132 Verificar status da conexão

133</h3>133</h3>

134 134 

135Em uma sessão de terminal interativa, um indicador `/rc active` fica no rodapé abaixo da caixa de entrada enquanto a conexão está ativa, e fica oculto se o terminal for muito estreito para ajustá-lo. O texto do indicador é um link para a sessão em claude.ai. Selecione-o com a tecla de seta para baixo e pressione Enter, ou execute `/remote-control` novamente, para abrir um painel de status com a URL da sessão e um código QR que você pode usar para [conectar de outro dispositivo](#connect-from-another-device). O painel de status também oferece uma opção de desconexão. Selecione-a para desativar Remote Control; sua sessão local continua em execução no terminal.135Em uma sessão de terminal interativa, um indicador `/rc active` fica visível enquanto a conexão está ativa, e fica oculto se o terminal for muito estreito para ajustá-lo. Com [renderização em tela cheia](/docs/pt/fullscreen), ele fica no final da linha do diretório de trabalho no cabeçalho de inicialização, e sem ela, no rodapé abaixo da caixa de entrada.

136 136 

137Se a conexão falhar, Claude Code mostra uma notificação com o motivo da falha e muda o indicador para um estado de falha que permanece no rodapé. Para ler o motivo novamente, selecione o indicador com a tecla de seta para baixo e pressione Enter. Para reconectar, execute `/remote-control`, a menos que o [motivo diga que a sessão foi assumida ou encerrada em outro lugar, ou que o servidor não consegue encontrá-la](#session-ended-elsewhere).137O texto do indicador é um link para a sessão em claude.ai. Execute `/remote-control` novamente para abrir um painel de status com a URL da sessão e um código QR para [conectar de outro dispositivo](#connect-from-another-device). Quando o indicador está no rodapé, você também pode abrir o painel selecionando o indicador com a tecla de seta para baixo e pressionando Enter. O painel também oferece uma opção de desconexão, que desativa Remote Control enquanto sua sessão local continua em execução no terminal.

138 

139Se a conexão falhar, Claude Code mostra uma notificação com o motivo da falha, adiciona uma linha de aviso com o motivo à conversa, e muda o indicador para um estado de falha que permanece no lugar. Para reconectar, execute `/remote-control`, a menos que o [motivo diga que a sessão foi assumida ou encerrada em outro lugar, ou que o servidor não consegue encontrá-la](#session-ended-elsewhere).

138 140 

139<span id="session-ended-elsewhere" />Leia o motivo antes de reconectar. Quando a sessão foi assumida ou encerrada de outro dispositivo, aplicativo ou sessão do Claude Code, ou o servidor não consegue encontrá-la, o motivo diz qual, e Claude Code omite seu conselho usual para executar `/remote-control`:141<span id="session-ended-elsewhere" />Leia o motivo antes de reconectar. Quando a sessão foi assumida ou encerrada de outro dispositivo, aplicativo ou sessão do Claude Code, ou o servidor não consegue encontrá-la, o motivo diz qual, e Claude Code omite seu conselho usual para executar `/remote-control`:

140 142 


241 243 

242Sua sessão local do Claude Code faz apenas solicitações HTTPS de saída e nunca abre portas de entrada na sua máquina. Quando você inicia Remote Control, ele se registra na API Anthropic e faz polling para trabalho. Quando você conecta de outro dispositivo, o servidor roteia mensagens entre o cliente web ou móvel e sua sessão local através de uma conexão de streaming.244Sua sessão local do Claude Code faz apenas solicitações HTTPS de saída e nunca abre portas de entrada na sua máquina. Quando você inicia Remote Control, ele se registra na API Anthropic e faz polling para trabalho. Quando você conecta de outro dispositivo, o servidor roteia mensagens entre o cliente web ou móvel e sua sessão local através de uma conexão de streaming.

243 245 

244Todo o tráfego viaja através da API Anthropic sobre TLS, o mesmo transporte de segurança que qualquer sessão do Claude Code. A conexão usa múltiplas credenciais de curta duração, cada uma com escopo para um único propósito e expirando independentemente.246Todo o tráfego viaja através da API Anthropic sobre TLS, o mesmo transporte de segurança que qualquer sessão do Claude Code. A conexão usa múltiplas credenciais de curta duração, cada uma com escopo para um único propósito e expirando independentemente. Quando a credencial de registro de um servidor `claude remote-control` expira, o servidor se registra novamente na API Anthropic e continua servindo suas sessões.

245 247 

246Enquanto Remote Control está conectado, a transcrição da sessão, incluindo suas mensagens, respostas do Claude e atividade de ferramentas, é armazenada nos servidores Anthropic. A transcrição armazenada mantém a conversa sincronizada em seus dispositivos e permite que a sessão se reconecte após uma queda de rede. A execução e o acesso ao sistema de arquivos permanecem na sua máquina, e as transcrições armazenadas são retidas sob a política de [Uso de dados](/docs/pt/data-usage).248Enquanto Remote Control está conectado, a transcrição da sessão, incluindo suas mensagens, respostas do Claude e atividade de ferramentas, é armazenada nos servidores Anthropic. A transcrição armazenada mantém a conversa sincronizada em seus dispositivos e permite que a sessão se reconecte após uma queda de rede. A execução e o acesso ao sistema de arquivos permanecem na sua máquina, e as transcrições armazenadas são retidas sob a política de [Uso de dados](/docs/pt/data-usage).

247 249 


366 * **Modo servidor**: Claude Code desiste após aproximadamente 10 minutos e o processo `claude remote-control` sai. Execute `claude remote-control` novamente para iniciar uma nova sessão.368 * **Modo servidor**: Claude Code desiste após aproximadamente 10 minutos e o processo `claude remote-control` sai. Execute `claude remote-control` novamente para iniciar uma nova sessão.

367 * **Sessão interativa**: continue trabalhando localmente. Claude Code tenta novamente enquanto a interrupção durar e se reconecta automaticamente quando a rede retorna.369 * **Sessão interativa**: continue trabalhando localmente. Claude Code tenta novamente enquanto a interrupção durar e se reconecta automaticamente quando a rede retorna.

368* **Falhas de heartbeat de presença**: se uma sessão interativa desconectar com `could not reach the Remote Control server for about 30 minutes`, execute `/remote-control` para se reconectar. Claude Code mostra esta mensagem apenas quando os heartbeats de presença da sessão falharam enquanto o resto da conexão permaneceu ativo; ele registra novamente a sessão por aproximadamente 30 minutos antes de desconectar.370* **Falhas de heartbeat de presença**: se uma sessão interativa desconectar com `could not reach the Remote Control server for about 30 minutes`, execute `/remote-control` para se reconectar. Claude Code mostra esta mensagem apenas quando os heartbeats de presença da sessão falharam enquanto o resto da conexão permaneceu ativo; ele registra novamente a sessão por aproximadamente 30 minutos antes de desconectar.

369* **Diálogos encaminhados expiram**: Claude Code mantém prompts de permissão e perguntas `AskUserQuestion` abertas até que você as responda. Quando Claude Code encaminha outro tipo de diálogo para a sessão remota, como o prompt de escolha de modelo mostrado após uma recusa de segurança, ele aguarda cinco minutos por padrão, depois fecha o diálogo e continua com o padrão sem ação do diálogo. O prompt de consentimento de créditos de uso [Fable](/docs/pt/model-config#fable-and-usage-credits) no meio da sessão segue o mesmo prazo, mas não é encaminhado: Claude Code o mostra apenas no terminal onde a sessão é executada, e se ninguém tiver respondido lá até o prazo, ele encerra a volta sem enviar a solicitação. Sua seleção de modelo permanece inalterada e Claude Code pergunta novamente na sua próxima mensagem. Defina [`dialogExpiry`](/docs/pt/settings-reference#dialogexpiry) para ajustar ou desabilitar o prazo. Requer Claude Code v2.1.224 ou posterior. Claude Code aplica o mesmo prazo ao diálogo de aprovação para uma mensagem entre sessões retida. [As regras de expiração de mensagens retidas](/docs/pt/cross-session-messaging#control-inbound-messages) cobrem os casos em que Claude Code mantém o diálogo aberto além disso.371* **Diálogos encaminhados expiram**: Claude Code mantém prompts de permissão e perguntas `AskUserQuestion` abertas até que você as responda. Quando Claude Code encaminha outro tipo de diálogo para a sessão remota, como o prompt de escolha de modelo mostrado após uma recusa de segurança, ele aguarda cinco minutos por padrão, depois fecha o diálogo e continua com o padrão sem ação do diálogo. Defina [`dialogExpiry`](/docs/pt/settings-reference#dialogexpiry) para ajustar ou desabilitar o prazo. Requer Claude Code v2.1.224 ou posterior.

372* **O prompt de consentimento de créditos de uso Fable não é encaminhado**: Claude Code mostra o prompt de consentimento de créditos de uso [Fable](/docs/pt/model-config#fable-and-usage-credits) no meio da sessão apenas onde a sessão é executada, não no seu dispositivo. Quando a sessão é executada em um terminal e ninguém lá responde antes de Claude Code fechar o prompt, a volta termina sem enviar a solicitação; veja [O prompt para confirmar não foi respondido](/docs/pt/errors#the-prompt-to-confirm-went-unanswered).

370* **Alguns comandos são apenas locais**: comandos que funcionam apenas na interface do terminal, como `/plugin` ou `/resume`, funcionam apenas a partir da CLI local, independentemente de você passar um argumento ou não. Os seguintes funcionam a partir de dispositivos móveis e web:373* **Alguns comandos são apenas locais**: comandos que funcionam apenas na interface do terminal, como `/plugin` ou `/resume`, funcionam apenas a partir da CLI local, independentemente de você passar um argumento ou não. Os seguintes funcionam a partir de dispositivos móveis e web:

371 * Comandos de saída de texto: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` e `/reload-plugins`. `/usage-credits` imprime a URL de faturamento em vez de abrir um navegador. `/reload-plugins` funciona apenas quando a sessão é executada em um terminal interativo; uma sessão sem um recusa.374 * Comandos de saída de texto: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` e `/reload-plugins`. `/usage-credits` imprime a URL de faturamento em vez de abrir um navegador. `/reload-plugins` funciona apenas quando a sessão é executada em um terminal interativo; uma sessão sem um recusa.

372 * `/model`, `/effort`, `/fast`, `/color` e `/rename`: passe o valor como um argumento, por exemplo `/model sonnet` ou `/effort high`. A partir de dispositivos móveis e web, `/model` e `/effort` recebem o argumento no lugar do seletor do terminal ou controle deslizante.375 * `/model`, `/effort`, `/fast`, `/color` e `/rename`: passe o valor como um argumento, por exemplo `/model sonnet` ou `/effort high`. A partir de dispositivos móveis e web, `/model` e `/effort` recebem o argumento no lugar do seletor do terminal ou controle deslizante.


374 * `/config`, a partir da v2.1.181: a partir do aplicativo móvel, passe `key=value` para definir uma configuração, ou execute sem argumentos para listar as chaves que você pode definir. Na web, `/config` abre a seção Claude Code das suas configurações e ignora o texto após o comando.377 * `/config`, a partir da v2.1.181: a partir do aplicativo móvel, passe `key=value` para definir uma configuração, ou execute sem argumentos para listar as chaves que você pode definir. Na web, `/config` abre a seção Claude Code das suas configurações e ignora o texto após o comando.

375 * No Team e Enterprise, `/usage-credits` a partir de dispositivos móveis ou web não envia uma [solicitação de créditos de uso para seu administrador](/docs/pt/costs#add-usage-credits-to-your-subscription). O envio requer uma confirmação que aparece apenas na CLI interativa, então o comando diz para você executá-lo lá. Antes da v2.1.211, o formulário de texto enviava a solicitação sem confirmação.378 * No Team e Enterprise, `/usage-credits` a partir de dispositivos móveis ou web não envia uma [solicitação de créditos de uso para seu administrador](/docs/pt/costs#add-usage-credits-to-your-subscription). O envio requer uma confirmação que aparece apenas na CLI interativa, então o comando diz para você executá-lo lá. Antes da v2.1.211, o formulário de texto enviava a solicitação sem confirmação.

376 * `/autocompact`, a partir da v2.1.221: passe o tamanho da janela como um argumento, por exemplo `/autocompact 500k`. Sem argumento, ele imprime o tamanho da janela atual como texto em vez de abrir o diálogo que o comando mostra em uma sessão de terminal.379 * `/autocompact`, a partir da v2.1.221: passe o tamanho da janela como um argumento, por exemplo `/autocompact 500k`. Sem argumento, ele imprime o tamanho da janela atual como texto em vez de abrir o diálogo que o comando mostra em uma sessão de terminal.

380 * `/advisor`, a partir da v2.1.260: passe o modelo como um argumento, por exemplo `/advisor opus`, ou passe `off` para desativar o advisor. Ambas as formas se aplicam apenas à sessão atual e deixam seu padrão salvo inalterado. Sem argumento, ele imprime o advisor atual como texto em vez de abrir o seletor.

377 381 

378<h2 id="troubleshooting">382<h2 id="troubleshooting">

379 Solução de problemas383 Solução de problemas


444* **O erro menciona `disableRemoteControl`**: seu administrador de TI desativou Remote Control neste dispositivo através de [configurações gerenciadas](/docs/pt/managed-settings), independentemente do toggle em toda a organização e de como você está autenticado.448* **O erro menciona `disableRemoteControl`**: seu administrador de TI desativou Remote Control neste dispositivo através de [configurações gerenciadas](/docs/pt/managed-settings), independentemente do toggle em toda a organização e de como você está autenticado.

445* **Seu plano claude.ai é Pro ou Max**: Claude Code ainda está autenticado sob uma organização Team ou Enterprise de um login anterior, então verifica a política de Remote Control dessa organização. Execute `/status` para ver qual plano e organização seu login usa. Execute `claude auth logout` e depois `claude auth login` para entrar novamente sob seu plano atual.449* **Seu plano claude.ai é Pro ou Max**: Claude Code ainda está autenticado sob uma organização Team ou Enterprise de um login anterior, então verifica a política de Remote Control dessa organização. Execute `/status` para ver qual plano e organização seu login usa. Execute `claude auth logout` e depois `claude auth login` para entrar novamente sob seu plano atual.

446* **A política da organização não foi carregada nesta máquina**: execute `claude doctor` e leia a linha `Organization policy`. Se a linha mostrar que a política não está carregada, é isso que está mantendo Remote Control desativado. Antes da v2.1.261, `claude doctor` não imprimia esta linha.450* **A política da organização não foi carregada nesta máquina**: execute `claude doctor` e leia a linha `Organization policy`. Se a linha mostrar que a política não está carregada, é isso que está mantendo Remote Control desativado. Antes da v2.1.261, `claude doctor` não imprimia esta linha.

451* **A mensagem não diz para entrar em contato com seu administrador da organização**: sua organização tem uma configuração HIPAA que é incompatível com Remote Control, e `/status` lista `HIPAA` em sua linha `Compliance`. Neste estado, o toggle de Remote Control do painel de administração fica acinzentado, então um Proprietário não pode alterá-lo lá. Entre em contato com o suporte da Anthropic para discutir opções. Antes da v2.1.267, este caso mostrava "Remote Control isn't available for your organization due to its compliance policy" em vez disso.

447* **Caso contrário, um Proprietário não ativou para sua organização**: Remote Control fica desativado por padrão nos planos Team e Enterprise. Um Proprietário pode ativá-lo em [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) ativando o toggle **Remote Control**. Este toggle é uma configuração de organização no lado do servidor.452* **Caso contrário, um Proprietário não ativou para sua organização**: Remote Control fica desativado por padrão nos planos Team e Enterprise. Um Proprietário pode ativá-lo em [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) ativando o toggle **Remote Control**. Este toggle é uma configuração de organização no lado do servidor.

448 453 

449<h3 id="remote-control-isn’t-available-for-your-organization-due-to-its-compliance-policy">

450 "Remote Control isn't available for your organization due to its compliance policy"

451</h3>

452 

453Sua organização tem uma configuração de retenção de dados ou conformidade que é incompatível com Remote Control; o parêntese no final da mensagem a nomeia. Neste estado, o toggle de Remote Control do painel de administração fica acinzentado, então um Proprietário não pode alterá-lo lá. Entre em contato com o suporte da Anthropic para discutir opções.

454 

455<h3 id="remote-credentials-fetch-failed">454<h3 id="remote-credentials-fetch-failed">

456 "Remote credentials fetch failed"455 "Remote credentials fetch failed"

457</h3>456</h3>


484 * **O registro nomeia sua conta autenticada**: Claude Code inicia uma sessão de substituição com um nome gerado automaticamente e deixa as mensagens anteriores da conversa fora dela. Você obtém isso depois de deletar a sessão de claude.ai ou do aplicativo Claude, por exemplo.483 * **O registro nomeia sua conta autenticada**: Claude Code inicia uma sessão de substituição com um nome gerado automaticamente e deixa as mensagens anteriores da conversa fora dela. Você obtém isso depois de deletar a sessão de claude.ai ou do aplicativo Claude, por exemplo.

485 * **O registro nomeia uma conta diferente**: Claude Code inicia uma nova sessão sem as mensagens anteriores da conversa e sem mostrar uma mensagem, independentemente de a sessão registrada ainda existir.484 * **O registro nomeia uma conta diferente**: Claude Code inicia uma nova sessão sem as mensagens anteriores da conversa e sem mostrar uma mensagem, independentemente de a sessão registrada ainda existir.

486 * **O registro não diz qual conta possuía a sessão, ou Claude Code não consegue ler seu login salvo**: Claude Code mostra [`Previous session is unavailable — run /remote-control to start a new one`](#previous-session-is-unavailable) em vez desta mensagem, não inicia nada, e remove o registro da conversa.485 * **O registro não diz qual conta possuía a sessão, ou Claude Code não consegue ler seu login salvo**: Claude Code mostra [`Previous session is unavailable — run /remote-control to start a new one`](#previous-session-is-unavailable) em vez desta mensagem, não inicia nada, e remove o registro da conversa.

487* **Você desativou Remote Control antes de retomar**: a menos que o aplicativo hospedando Claude Code tivesse dito a ele que o aplicativo possui a sessão claude.ai, Claude Code removeu o registro de reconexão quando você desativou Remote Control do painel de status do CLI]\(#check-connection-status), da extensão VS Code, ou de um host construído no [Agent SDK](/docs/pt/agent-sdk/overview), então não se reconecta. Quando um aplicativo proprietário desativou, Claude Code manteve o registro e se reconecta.486* **Você desativou Remote Control antes de retomar**: a menos que o aplicativo hospedando Claude Code tivesse dito a ele que o aplicativo possui a sessão claude.ai, Claude Code removeu o registro de reconexão quando você desativou Remote Control do [painel de status do CLI](#check-connection-status), da extensão VS Code, ou de um host construído no [Agent SDK](/docs/pt/agent-sdk/overview), então não se reconecta. Quando um aplicativo proprietário desativou, Claude Code manteve o registro e se reconecta.

488* **Outro Claude Code nesta máquina ainda tem a sessão**: você vê um aviso que começa com `Remote Control not started here`, e Claude Code [deixa Remote Control desativado na sessão retomada](#resume-sessions-after-stopping-the-server). Execute `/remote-control` lá para movê-lo.487* **Outro Claude Code nesta máquina ainda tem a sessão**: você vê um aviso que começa com `Remote Control not started here`, e Claude Code [deixa Remote Control desativado na sessão retomada](#resume-sessions-after-stopping-the-server). Execute `/remote-control` lá para movê-lo.

489 488 

490<span id="reconnect-history" />Antes da v2.1.232, Claude Code respondeu diferentemente quando o servidor relatou a sessão registrada desaparecida. De v2.1.227 até v2.1.231, Claude Code recusou iniciar uma substituição mesmo quando o registro correspondia à sua conta. Até v2.1.226, Claude Code iniciou uma substituição independentemente de o registro corresponder à sua conta, e em v2.1.224 até v2.1.226 a criou sob a conta autenticada naquela máquina, nunca de outra conta, sem fazer upload das mensagens anteriores da conversa para ela. Antes da v2.1.200, Claude Code criava uma nova sessão após qualquer falha de reconexão.489<span id="reconnect-history" />Antes da v2.1.232, Claude Code respondeu diferentemente quando o servidor relatou a sessão registrada desaparecida. De v2.1.227 até v2.1.231, Claude Code recusou iniciar uma substituição mesmo quando o registro correspondia à sua conta. Até v2.1.226, Claude Code iniciou uma substituição independentemente de o registro corresponder à sua conta, e em v2.1.224 até v2.1.226 a criou sob a conta autenticada naquela máquina, nunca de outra conta, sem fazer upload das mensagens anteriores da conversa para ela. Antes da v2.1.200, Claude Code criava uma nova sessão após qualquer falha de reconexão.


521 Escolha a abordagem correta520 Escolha a abordagem correta

522</h2>521</h2>

523 522 

524Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.523Claude Code oferece várias maneiras de trabalhar quando você não está no seu terminal. Elas diferem no que dispara o trabalho, onde Claude é executado e quanto você precisa configurar.

525 524 

526| | Trigger | Claude runs on | Setup | Best for |525| | Gatilho | Claude é executado em | Configuração | Melhor para |

527| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |526| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- |

528| [Dispatch](/docs/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |527| [Dispatch](/docs/pt/desktop#sessions-from-dispatch) | Envie uma tarefa a partir do aplicativo móvel Claude | Sua máquina (Desktop) | [Emparelhe o aplicativo móvel com Desktop](https://support.claude.com/en/articles/13947068) | Delegar trabalho enquanto você está ausente, configuração mínima |

529| [Remote Control](/docs/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |528| [Remote Control](/docs/pt/remote-control) | Dirija uma sessão em execução a partir de [claude.ai/code](https://claude.ai/code) ou do aplicativo móvel Claude | Sua máquina (CLI ou VS Code) | Execute `claude remote-control` | Orientar trabalho em andamento de outro dispositivo |

530| [Channels](/docs/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/docs/en/channels#quickstart) or [build your own](/docs/en/channels-reference) | Reacting to external events like CI failures or chat messages |529| [Channels](/docs/pt/channels) | Envie eventos de um aplicativo de chat como Telegram ou Discord, ou seu próprio servidor | Sua máquina (CLI) | [Instale um plugin de canal](/docs/pt/channels#quickstart) ou [crie o seu próprio](/docs/pt/channels-reference) | Reagir a eventos externos como falhas de CI ou mensagens de chat |

531| [Slack](/docs/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/docs/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/docs/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |530| [Slack](/docs/pt/slack) | Mencione `@Claude` em um canal de equipe | Nuvem Anthropic | [Instale o aplicativo Slack](/docs/pt/slack#setting-up-claude-code-in-slack) com [Claude Code na web](/docs/pt/claude-code-on-the-web) ativado | PRs e revisões do chat da equipe |

532| [Self-hosted environments](/docs/en/self-hosted-environments) | Start a [cloud session](/docs/en/claude-code-on-the-web) and pick your organization's environment | Your organization's infrastructure | [Deploy runners](/docs/en/self-hosted-environments-quickstart), on Team and Enterprise plans | Cloud sessions that must run inside your network |531| [Self-hosted environments](/docs/pt/self-hosted-environments) | Inicie uma [sessão na nuvem](/docs/pt/claude-code-on-the-web) e escolha o ambiente da sua organização | Infraestrutura da sua organização | [Implante runners](/docs/pt/self-hosted-environments-quickstart), em planos Team e Enterprise | Sessões na nuvem que devem ser executadas dentro da sua rede |

533| [Scheduled tasks](/docs/en/scheduled-tasks) | Set a schedule | [CLI](/docs/en/scheduled-tasks), [Desktop](/docs/en/desktop-scheduled-tasks), or [cloud](/docs/en/routines) | Pick a frequency | Recurring automation like daily reviews |532| [Scheduled tasks](/docs/pt/scheduled-tasks) | Defina um cronograma | [CLI](/docs/pt/scheduled-tasks), [Desktop](/docs/pt/desktop-scheduled-tasks), ou [nuvem](/docs/pt/routines) | Escolha uma frequência | Automação recorrente como revisões diárias |

534 533 

535<h2 id="related-resources">534<h2 id="related-resources">

536 Recursos relacionados535 Recursos relacionados

Details

181 181 

182[Claude Code on the web](/docs/pt/claude-code-on-the-web) executa cada sessão em uma máquina virtual isolada e gerenciada pela Anthropic. Um proxy de rede impõe uma lista de permissões padrão, e um proxy separado mantém seu token GitHub fora do sandbox enquanto emite credenciais com escopo para acesso ao repositório dentro dele. As sessões que sua organização roteia para um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) são executadas na infraestrutura que você provisiona, onde isolamento, controle de saída e credenciais git são responsabilidade da sua implantação.182[Claude Code on the web](/docs/pt/claude-code-on-the-web) executa cada sessão em uma máquina virtual isolada e gerenciada pela Anthropic. Um proxy de rede impõe uma lista de permissões padrão, e um proxy separado mantém seu token GitHub fora do sandbox enquanto emite credenciais com escopo para acesso ao repositório dentro dele. As sessões que sua organização roteia para um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) são executadas na infraestrutura que você provisiona, onde isolamento, controle de saída e credenciais git são responsabilidade da sua implantação.

183 183 

184Use esta abordagem quando você quer isolamento completo de VM sem provisionar infraestrutura você mesmo, ou quando você está delegando tarefas de um dispositivo que não tem um ambiente de desenvolvimento local. Requer uma assinatura Claude. Quando você inicia uma sessão a partir da interface web, você também precisa de uma conta GitHub conectada para que o sandbox possa clonar seu repositório. Quando você inicia a partir da CLI com `--cloud`, Claude Code pode [agrupar e fazer upload do seu repositório local](/docs/pt/claude-code-on-the-web#send-local-repositories-without-github) em vez disso, se GitHub não estiver conectado. Consulte [Claude Code on the web](/docs/pt/claude-code-on-the-web) para disponibilidade de plano e opções de autenticação GitHub.184Use esta abordagem quando você quer isolamento completo de VM sem provisionar infraestrutura você mesmo, ou quando você está delegando tarefas de um dispositivo que não tem um ambiente de desenvolvimento local. Requer uma assinatura Claude. Quando você inicia uma sessão a partir da interface web, você também precisa de uma conta GitHub conectada para que o sandbox possa clonar seu repositório. Quando você inicia a partir da CLI com `--cloud`, Claude Code pode [agrupar e fazer upload do seu repositório local](/docs/pt/claude-code-on-the-web#send-local-repositories-without-github) em vez disso. Consulte [Claude Code on the web](/docs/pt/claude-code-on-the-web) para disponibilidade de plano e opções de autenticação GitHub.

185 185 

186<h2 id="enforce-isolation-across-an-organization">186<h2 id="enforce-isolation-across-an-organization">

187 Enforce isolation across an organization187 Enforce isolation across an organization

sandboxing.md +6 −0

Details

52 52 

53Quando você seleciona um modo no painel, Claude Code o salva nas configurações locais do seu projeto em `.claude/settings.local.json`, que se aplicam ao projeto atual. Claude Code adiciona esse arquivo ao seu gitignore global quando salva uma configuração lá. Para habilitar o sandbox em todos os seus projetos, defina [`sandbox.enabled`](/docs/pt/settings-reference#sandbox-enabled) como `true` em suas configurações de usuário em `~/.claude/settings.json`. Para impor sandboxing para cada desenvolvedor em uma organização, use [managed settings](#enforce-sandboxing-with-managed-settings).53Quando você seleciona um modo no painel, Claude Code o salva nas configurações locais do seu projeto em `.claude/settings.local.json`, que se aplicam ao projeto atual. Claude Code adiciona esse arquivo ao seu gitignore global quando salva uma configuração lá. Para habilitar o sandbox em todos os seus projetos, defina [`sandbox.enabled`](/docs/pt/settings-reference#sandbox-enabled) como `true` em suas configurações de usuário em `~/.claude/settings.json`. Para impor sandboxing para cada desenvolvedor em uma organização, use [managed settings](#enforce-sandboxing-with-managed-settings).

54 54 

55Para alterar o sandbox para uma sessão sem escrever em um arquivo de configurações, inicie Claude Code com [`--settings`](/docs/pt/settings#change-a-setting-for-one-session). Por exemplo, este comando inicia uma sessão em sandbox na qual Claude não pode tentar novamente um comando bloqueado fora do sandbox:

56 

57```bash theme={null}

58claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'

59```

60 

55<Warning>61<Warning>

56 Por padrão, se o sandbox não conseguir iniciar porque as dependências estão faltando ou a plataforma não é suportada, Claude Code mostra um aviso e executa comandos sem sandboxing. Para tornar isso uma falha difícil em vez disso, defina [`sandbox.failIfUnavailable`](/docs/pt/settings-reference#sandbox-failifunavailable) como `true`. Isso é destinado a implantações gerenciadas que exigem sandboxing como um portão de segurança.62 Por padrão, se o sandbox não conseguir iniciar porque as dependências estão faltando ou a plataforma não é suportada, Claude Code mostra um aviso e executa comandos sem sandboxing. Para tornar isso uma falha difícil em vez disso, defina [`sandbox.failIfUnavailable`](/docs/pt/settings-reference#sandbox-failifunavailable) como `true`. Isso é destinado a implantações gerenciadas que exigem sandboxing como um portão de segurança.

57</Warning>63</Warning>

scheduled-tasks.md +15 −15

Details

8 8 

9Tarefas agendadas permitem que Claude execute novamente um prompt automaticamente em um intervalo. Use-as para pesquisar uma implantação, cuidar de um PR, verificar uma compilação de longa duração ou lembrar-se de fazer algo mais tarde na sessão. Para reagir a eventos conforme eles acontecem em vez de pesquisar, consulte [Channels](/docs/pt/channels): seu CI pode enviar a falha para a sessão diretamente. Para manter a sessão funcionando turno após turno até que uma condição seja atendida em vez de em um intervalo, consulte [`/goal`](/docs/pt/goal).9Tarefas agendadas permitem que Claude execute novamente um prompt automaticamente em um intervalo. Use-as para pesquisar uma implantação, cuidar de um PR, verificar uma compilação de longa duração ou lembrar-se de fazer algo mais tarde na sessão. Para reagir a eventos conforme eles acontecem em vez de pesquisar, consulte [Channels](/docs/pt/channels): seu CI pode enviar a falha para a sessão diretamente. Para manter a sessão funcionando turno após turno até que uma condição seja atendida em vez de em um intervalo, consulte [`/goal`](/docs/pt/goal).

10 10 

11As tarefas têm escopo de sessão: elas vivem na conversa atual e param quando você inicia uma nova. Retomar com `--resume` ou `--continue` traz de volta qualquer tarefa que não tenha [expirado](#seven-day-expiry): uma tarefa recorrente criada nos últimos 7 dias, ou uma única cujo tempo agendado ainda não passou. Para agendamento que sobreviva independentemente de qualquer sessão, use [Routines](/docs/pt/routines) para criar uma rotina na infraestrutura gerenciada pela Anthropic, configure uma [tarefa agendada do Desktop](/docs/pt/desktop-scheduled-tasks) ou use [GitHub Actions](/docs/pt/github-actions).11As tarefas têm escopo de sessão: elas vivem na conversa atual e param quando você inicia uma nova. Quando você retoma com `--resume` ou `--continue`, Claude Code restaura tarefas que não tenham [expirado](#seven-day-expiry), exceto aquelas listadas em [Limitações](#limitations). Para agendamento que sobreviva independentemente de qualquer sessão, use [Routines](/docs/pt/routines) para criar uma rotina na nuvem, configure uma [tarefa agendada do Desktop](/docs/pt/desktop-scheduled-tasks) ou use [GitHub Actions](/docs/pt/github-actions).

12 12 

13<h2 id="compare-scheduling-options">13<h2 id="compare-scheduling-options">

14 Comparar opções de agendamento14 Comparar opções de agendamento

15</h2>15</h2>

16 16 

17Claude Code offers three ways to schedule recurring or one-off work:17Claude Code oferece três maneiras de agendar trabalho recorrente ou único:

18 18 

19| | [Cloud](/docs/en/routines) | [Desktop](/docs/en/desktop-scheduled-tasks) | [`/loop`](/docs/en/scheduled-tasks) |19| | [Cloud](/docs/pt/routines) | [Desktop](/docs/pt/desktop-scheduled-tasks) | [`/loop`](/docs/pt/scheduled-tasks) |

20| :------------------------- | :---------------------------------- | :------------------------------------- | :------------------------------------------------------------------------- |20| :--------------------------------- | :------------------------------------------ | :----------------------------------------------- | :------------------------------------------------------------------------ |

21| Runs on | Cloud, Anthropic-managed by default | Your machine | Your machine |21| Executa em | Cloud, gerenciado pela Anthropic por padrão | Sua máquina | Sua máquina |

22| Requires machine on | No | Yes | Yes |22| Requer máquina ligada | Não | Sim | Sim |

23| Requires open session | No | No | Yes |23| Requer sessão aberta | Não | Não | Sim |

24| Persistent across restarts | Yes | Yes | Restored on `--resume`, with [exceptions](/docs/en/scheduled-tasks#limitations) |24| Persistente entre reinicializações | Sim | Sim | Restaurado em `--resume`, com [exceções](/docs/pt/scheduled-tasks#limitations) |

25| Access to local files | No (fresh clone) | Yes | Yes |25| Acesso a arquivos locais | Não (clone fresco) | Sim | Sim |

26| MCP servers | Connectors configured per task | [Config files](/docs/en/mcp) and connectors | Inherits from session |26| Servidores MCP | Conectores configurados por tarefa | [Arquivos de configuração](/docs/pt/mcp) e conectores | Herda da sessão |

27| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |27| Prompts de permissão | Não (executa autonomamente) | Configurável por tarefa | Herda da sessão |

28| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |28| Agendamento personalizável | Via `/schedule` na CLI | Sim | Sim |

29| Minimum interval | 1 hour | 1 minute | 1 minute |29| Intervalo mínimo | 1 hora | 1 minuto | 1 minuto |

30 30 

31<Tip>31<Tip>

32 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.32 Use **tarefas em cloud** para trabalho que deve ser executado de forma confiável sem sua máquina. Use **tarefas Desktop** quando você precisa de acesso a arquivos e ferramentas locais. Use **`/loop`** para polling rápido durante uma sessão.

33</Tip>33</Tip>

34 34 

35<h2 id="run-a-prompt-repeatedly-with-/loop">35<h2 id="run-a-prompt-repeatedly-with-/loop">


237 237 

238* As tarefas só são acionadas enquanto Claude Code está em execução e ocioso. Fechar o terminal ou deixar a sessão sair para tudo. [Colocar a sessão em segundo plano](/docs/pt/agent-view#from-inside-a-session) leva tarefas `/loop` para uma sessão em segundo plano, que continua em execução sem um terminal.238* As tarefas só são acionadas enquanto Claude Code está em execução e ocioso. Fechar o terminal ou deixar a sessão sair para tudo. [Colocar a sessão em segundo plano](/docs/pt/agent-view#from-inside-a-session) leva tarefas `/loop` para uma sessão em segundo plano, que continua em execução sem um terminal.

239* Sem recuperação para disparos perdidos. Se o tempo agendado de uma tarefa passar enquanto Claude está ocupado em uma solicitação de longa duração, ela dispara uma vez quando Claude fica ocioso, não uma vez por intervalo perdido.239* Sem recuperação para disparos perdidos. Se o tempo agendado de uma tarefa passar enquanto Claude está ocupado em uma solicitação de longa duração, ela dispara uma vez quando Claude fica ocioso, não uma vez por intervalo perdido.

240* Iniciar uma conversa nova limpa todas as tarefas com escopo de sessão. Retomar com `claude --resume` ou `claude --continue` restaura tarefas recorrentes que não [expiraram](#seven-day-expiry) e tarefas únicas cujo tempo agendado ainda não passou. Tarefas de Bash em segundo plano e tarefas de monitor nunca são restauradas ao retomar.240* Iniciar uma conversa nova limpa todas as tarefas com escopo de sessão. Quando você retoma uma sessão com `claude --resume` ou `claude --continue`, Claude Code restaura as tarefas agendadas com `CronCreate`, exceto tarefas recorrentes que [expiraram](#seven-day-expiry) e tarefas únicas cujo tempo agendado já passou. Um `/loop` [auto-paced](#let-claude-choose-the-interval) não é restaurado, então execute `/loop` novamente para reiniciá-lo. Tarefas de Bash em segundo plano e tarefas de monitor nunca são restauradas ao retomar.

241* Com [busca de feature flag desativada](/docs/pt/env-vars#features-that-need-feature-flag-fetching), Claude Code armazena uma tarefa que você pediu para manter entre sessões no diretório `.claude` do projeto. Quando esse diretório ou o arquivo de tarefa nele é um symlink, Claude Code retorna um erro em vez de agendar a tarefa.241* Com [busca de feature flag desativada](/docs/pt/env-vars#features-that-need-feature-flag-fetching), Claude Code armazena uma tarefa que você pediu para manter entre sessões no diretório `.claude` do projeto. Quando esse diretório ou o arquivo de tarefa nele é um symlink, Claude Code retorna um erro em vez de agendar a tarefa.

242 242 

243Para automação orientada por cron que precisa ser executada sem supervisão:243Para automação orientada por cron que precisa ser executada sem supervisão:

Details

43* `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.43* `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.

44* O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.44* O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.

45 45 

46Verifique o resumo da instalação. Se relatar `Run /reload-plugins to activate.`, aplique a alteração pendente sem uma reinicialização:46Verifique o resumo da instalação. Se relatar `Run /reload-plugins to activate.`, consulte [Aplicar alterações de plugin sem reiniciar](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) para ativar o plugin em sua sessão atual.

47 

48```text theme={null}

49/reload-plugins

50```

51 47 

52<h3 id="enable-in-cloud-sessions-and-shared-repositories">48<h3 id="enable-in-cloud-sessions-and-shared-repositories">

53 Ativar em sessões na nuvem e repositórios compartilhados49 Ativar em sessões na nuvem e repositórios compartilhados

self-hosted-environments.md +164 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Ambientes auto-hospedados

6 

7> Execute sessões de Claude Code na nuvem em infraestrutura que você controla: configure um ambiente auto-hospedado, implante runners e roteie sessões para sua própria computação.

8 

9<Note>

10 Ambientes auto-hospedados estão em beta pública nos planos Team e Enterprise e estão desativados por padrão. Consulte [Disponibilidade e limitações](#availability-and-limitations) para o caminho de habilitação e o que está excluído.

11</Note>

12 

13Um ambiente auto-hospedado executa sessões de Claude Code na nuvem em infraestrutura que sua organização opera. Uma [sessão na nuvem](/docs/pt/claude-code-on-the-web) é qualquer sessão que é executada em algum lugar que não seja a máquina do desenvolvedor: os desenvolvedores as iniciam a partir de claude.ai, dos aplicativos móvel e desktop, do terminal com [`claude --cloud`](/docs/pt/claude-code-on-the-web#from-terminal-to-web) e [rotinas agendadas](/docs/pt/routines), e por padrão são executadas na infraestrutura da Anthropic. Em um ambiente auto-hospedado, essas mesmas sessões são executadas dentro de sua rede, e a experiência do desenvolvedor é a mesma, exceto pelas diferenças em [Disponibilidade e limitações](#availability-and-limitations) e os [problemas conhecidos](/docs/pt/self-hosted-environments-deploy#known-issues-and-limitations) da página de implantação.

14 

15Se sua equipe não usa sessões na nuvem, não há nada para configurar aqui: sessões em um terminal ou IDE sempre são executadas na máquina do próprio desenvolvedor. Se você deseja executar Claude Code em sua própria máquina sempre ativa e controlá-la a partir de outros dispositivos, use [Controle Remoto](/docs/pt/remote-control), que também está disponível nos planos Pro e Max. Quando estiver pronto para configurar, vá direto para o [guia de início rápido](/docs/pt/self-hosted-environments-quickstart); para revisar a postura de segurança primeiro, comece com [Implantar em produção](/docs/pt/self-hosted-environments-deploy). O resto desta página explica como funciona a auto-hospedagem e quando escolhê-la.

16 

17<h2 id="how-self-hosted-environments-work">

18 Como funcionam os ambientes auto-hospedados

19</h2>

20 

21A auto-hospedagem tem três partes:

22 

23* **Ambiente**: um destino nomeado para o qual as sessões na nuvem podem ser enviadas. Sua organização cria ambientes nas configurações de administrador de claude.ai, e cada um agrupa um conjunto de runners.

24* **Runner**: um programa em execução em hosts dentro de sua rede. Os runners executam as sessões; a ideia é a mesma de um runner de CI auto-hospedado.

25* **Sessão**: uma tarefa de Claude Code que um desenvolvedor iniciou.

26 

27Quando um desenvolvedor inicia uma sessão na nuvem, a interface de início de sessão mostra um seletor de ambiente listando ambientes hospedados pela Anthropic ao lado de qualquer um que sua organização tenha criado. Se escolherem o seu, o plano de controle da Anthropic coloca a sessão na fila do seu ambiente, onde um runner a reclama, clona o repositório que o desenvolvedor escolheu e inicia um processo de Claude Code em seu host para executá-lo. O runner se autentica em seu host git com credenciais que você configura; [Configurar git](/docs/pt/self-hosted-environments-deploy#configure-git) cobre as opções. As sessões alcançam seus serviços internos de dentro de sua rede, e seu host git da mesma forma quando é interno; o tráfego para Anthropic, sondagem de fila, o fluxo de eventos da sessão e inferência de modelo, é HTTPS de saída para `api.anthropic.com`, com a lista curta de hosts adicionais que as sessões podem alcançar em [Requisitos de rede](/docs/pt/self-hosted-environments-deploy#network-requirements). A Anthropic nunca se conecta em sua rede.

28 

29<div style={{maxWidth: "640px", margin: "0 auto"}}>

30 <Frame>

31 <img src="https://mintcdn.com/claude-code/Y0sJ2uDoOVbOVZrQ/images/self-hosted-network-paths.svg?fit=max&auto=format&n=Y0sJ2uDoOVbOVZrQ&q=85&s=8056103fc1c5564c7f0ef219d260b99d" className="dark:hidden" alt="Diagrama de arquitetura de um ambiente auto-hospedado: o limite de sua rede contém um runner, dois processos de sessão de Claude Code dentro dele e seu host git, com api.anthropic.com fora contendo fila, fluxo de sessão e inferência. O runner sonda a fila e alcança o host git, cada processo de sessão abre suas próprias conexões de fluxo, inferência e git, e cada conexão é de saída de sua rede, sem nenhuma de entrada." width="680" height="320" data-path="images/self-hosted-network-paths.svg" />

32 

33 <img src="https://mintcdn.com/claude-code/Y0sJ2uDoOVbOVZrQ/images/self-hosted-network-paths-dark.svg?fit=max&auto=format&n=Y0sJ2uDoOVbOVZrQ&q=85&s=fec6aef3b0740d80eaf6d6a7000a2233" className="hidden dark:block" alt="Diagrama de arquitetura de um ambiente auto-hospedado: o limite de sua rede contém um runner, dois processos de sessão de Claude Code dentro dele e seu host git, com api.anthropic.com fora contendo fila, fluxo de sessão e inferência. O runner sonda a fila e alcança o host git, cada processo de sessão abre suas próprias conexões de fluxo, inferência e git, e cada conexão é de saída de sua rede, sem nenhuma de entrada." width="680" height="320" data-path="images/self-hosted-network-paths-dark.svg" />

34 </Frame>

35</div>

36 

37As duas caixas de Claude Code no diagrama são processos de sessão: um runner executando duas sessões ao mesmo tempo, até sua capacidade configurada. Um runner serve um [proprietário](#key-concepts) por vez e se bloqueia para esse proprietário quando reclama sua primeira sessão, portanto o código verificado nunca se mistura entre proprietários; [Ciclo de vida do runner](#runner-lifecycle) cobre a regra.

38 

39Você pode iniciar runners você mesmo e mantê-los em execução, ou executar o [orquestrador de dimensionamento automático](/docs/pt/self-hosted-environments-configuration#on-demand-runners), um segundo processo que você hospeda, que inicia runners conforme as sessões são enfileiradas; cada runner sai por conta própria quando seu trabalho termina. De qualquer forma, você configura o ambiente uma vez, e ele aparece no seletor em todas as superfícies suportadas.

40 

41<h2 id="availability-and-limitations">

42 Disponibilidade e limitações

43</h2>

44 

45Verifique estas antes de planejar um lançamento:

46 

47* **Planos**: beta pública para organizações Team e Enterprise. Ambientes auto-hospedados estão desativados por padrão; um [Proprietário](/docs/pt/cloud-environments#organization-shared-environments) ativa **Permitir ambientes auto-hospedados** na [página de administrador **Ambientes na nuvem**](https://claude.ai/admin-settings/cloud-environments), que requer que [Claude Code na web](/docs/pt/claude-code-on-the-web) esteja habilitado para a organização.

48* **Zero Data Retention**: indisponível para organizações com [Zero Data Retention](/docs/pt/zero-data-retention) habilitado.

49* **Inferência de modelo**: as sessões usam a API Anthropic, e a inferência não pode ser roteada através de [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/pt/third-party-integrations) ou um [gateway LLM](/docs/pt/llm-gateway).

50* **Superfícies**: sessões iniciadas a partir de [Claude Code na web](/docs/pt/claude-code-on-the-web), dos aplicativos móvel e desktop, [rotinas agendadas](/docs/pt/routines) e do terminal, com [`claude --cloud`](/docs/pt/claude-code-on-the-web#from-terminal-to-web) ou um [despacho `--environment`](/docs/pt/self-hosted-environments-testing#run-the-test-loop), podem ser executadas em ambientes auto-hospedados. Sessões de [Claude Tag](https://claude.com/docs/claude-tag/overview) também podem ser executadas neles, mas Claude ainda não pode usar [Pacotes de acesso](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle) nessas sessões. Sessões de [Claude Security](/docs/pt/claude-security) e [Code Review](/docs/pt/code-review) ainda não são roteadas para eles. O suporte para essas duas superfícies segue separadamente.

51* **Repositórios**: as sessões verificam repositórios do GitHub; consulte [Opções de autenticação do GitHub](/docs/pt/claude-code-on-the-web#github-authentication-options).

52* **Faturamento**: as sessões em um ambiente auto-hospedado consomem o uso de Claude Code de sua organização da mesma forma que as sessões em ambientes hospedados pela Anthropic.

53 

54<h2 id="why-self-host">

55 Por que auto-hospedar

56</h2>

57 

58A maioria das equipes é melhor servida por ambientes hospedados pela Anthropic, que não precisam de infraestrutura para executar ou manter. A auto-hospedagem é para equipes cujos requisitos de rede, ferramentas ou conformidade exigem manter a execução da sessão em infraestrutura que controlam. Se esse for o seu caso, planeje pela propriedade operacional que ela carrega: você constrói e mantém a imagem do runner, opera a frota e controla sua rede.

59 

60Em troca, a auto-hospedagem oferece acesso à rede, ferramentas personalizadas e controle de conformidade:

61 

62* **Acesso à rede**: as sessões são executadas dentro de sua rede e podem alcançar serviços internos, bancos de dados e registros sem expô-los à internet pública

63* **Ferramentas personalizadas**: pré-instale compiladores, SDKs e CLIs internos em sua imagem de runner para que cada sessão comece pronta para compilar

64* **Conformidade**: as verificações de repositório e artefatos de compilação permanecem em infraestrutura que você controla. O conteúdo da sessão ainda vai para `api.anthropic.com` para inferência de modelo.

65 

66<h2 id="environments-runners-and-sessions">

67 Ambientes, runners e sessões

68</h2>

69 

70Os ambientes são gerenciados na página **Ambientes na nuvem** nas configurações de administrador de claude.ai; os runners são processos que você inicia e gerencia em sua própria infraestrutura.

71 

72<h3 id="key-concepts">

73 Conceitos-chave

74</h3>

75 

76Estes termos aparecem em todas as páginas auto-hospedadas:

77 

78| Termo | O que é |

79| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

80| Ambiente | Um grupo nomeado de seus runners, criado nas configurações de claude.ai. As sessões são roteadas para um ambiente, não para um runner individual. |

81| Segredo do ambiente | A credencial compartilhada única que os runners usam para se autenticar e registrar no ambiente. Mostrado uma vez na criação do ambiente, rotulado como **chave de ambiente** na interface de administrador. |

82| Runner | O processo de longa duração que você implanta. Um runner se registra no ambiente, recebe um token de runner e sonda por sessões. |

83| Sessão | Uma tarefa de Claude Code, iniciada a partir de claude.ai, do aplicativo móvel ou de outra superfície Anthropic, como uma rotina agendada ou um agente. Cada sessão é executada como um processo filho de Claude Code que o runner gera. |

84 

85Em campos de API, reivindicações de token e nomes de métrica, o ambiente aparece como `pool`, e o ID do ambiente é o `pool_id`. A [referência](/docs/pt/self-hosted-environments-reference) mapeia as duas grafias, incluindo os nomes de flag `pool` descontinuados.

86 

87Um runner serve um proprietário por vez. A primeira sessão que um runner pega bloqueia o runner para o proprietário dessa sessão, e o runner então executa sessões apenas para esse proprietário, até uma capacidade configurada. Quem é o proprietário depende de como a sessão foi iniciada:

88 

89* **Sessões que um usuário inicia**: o proprietário é a conta desse usuário.

90* **Sessões de canal Claude Tag**: Claude as executa sem nenhuma conta de usuário anexada, portanto o proprietário é o [agente Claude Tag](https://claude.com/docs/claude-tag/concepts/glossary#agent-identity) que iniciou a sessão. Cada sessão de canal que esse agente inicia tem o mesmo proprietário, quem quer que tenha enviado a mensagem do Slack, portanto um runner bloqueado para ela serve sessões que diferentes pessoas iniciaram quando você a executa em um `--capacity` acima de um ou com um `--drain-grace-sec` positivo. Um runner bloqueado para um usuário nunca pega estes, e um runner bloqueado para um agente Claude Tag nunca pega as sessões de um usuário.

91 

92O tamanho mínimo da frota é, portanto, o número de proprietários que você espera estar ativos de uma vez, contando usuários e agentes Claude Tag.

93 

94<h3 id="session-lifecycle">

95 Ciclo de vida da sessão

96</h3>

97 

98Quando um desenvolvedor inicia uma sessão e seleciona seu ambiente, o plano de controle da Anthropic coloca a sessão na fila do ambiente. De lá:

99 

1001. Um runner com capacidade livre reclama a sessão e mantém uma concessão sobre ela.

1012. O runner clona o repositório em seu diretório de trabalho e gera um processo filho de Claude Code.

1023. O filho transmite eventos de volta por HTTPS enquanto o runner continua sondando; cada sondagem atualiza a concessão e funciona como o batimento cardíaco.

1034. Se o runner parar de sondar por cerca de 60 segundos, o servidor recoloca a sessão na fila para outro runner.

104 

105O runner dá a cada solicitação de sondagem 10 segundos. Quando uma solicitação expira, é perdida ou recebe uma resposta que o runner não consegue analisar, o runner continua servindo suas sessões ativas e tenta novamente após um segundo ou dois em vez de esperar pela próxima sondagem agendada. Por exemplo, um proxy interceptador que responde à sondagem com sua própria página produz uma resposta que o runner não consegue analisar. Cada vez que outra solicitação falha de uma dessas maneiras, o runner dobra a lacuna antes da próxima tentativa, até 20 segundos, e encurta a lacuna sempre que a concessão está próxima de expirar.

106 

107<h3 id="runner-lifecycle">

108 Ciclo de vida do runner

109</h3>

110 

111A primeira sessão que um runner pega bloqueia o runner para o proprietário dessa sessão, e o runner executa até `--capacity` sessões simultâneas para esse proprietário. Enquanto o runner tem sessões ativas e não recebeu um sinal de desligamento ou atingiu seu tempo de aposentadoria, o runner continua reivindicando o trabalho enfileirado do proprietário bloqueado. O que acontece depois que terminam depende de [`--drain-grace-sec`](/docs/pt/self-hosted-environments-reference#runner-cli-flags):

112 

113* **No padrão de `0`**: o runner sai assim que suas sessões ativas terminam, sem sondar mais, portanto o orquestrador em que você o implanta, como Kubernetes, pode reiniciá-lo com um disco fresco, pronto para servir qualquer proprietário.

114* **Em um valor positivo**: o runner continua sondando a fila do proprietário bloqueado por esse número de segundos antes de sair.

115 

116Este ciclo de vida isola o código verificado de cada proprietário sem exigir que o runner exclua o estado do disco entre proprietários.

117 

118Como sua infraestrutura para um runner decide se você precisa de `--retire-at`. Uma morte que entrega `SIGTERM` não precisa de flag: o runner drena conforme [Tempo de desligamento](/docs/pt/self-hosted-environments-deploy#shutdown-timing) descreve, ou continua servindo as sessões que já mantém quando você define [`--defer-shutdown-max-min`](/docs/pt/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal). Se sua infraestrutura em vez disso destrói hosts em um tempo de relógio de parede conhecido sem um sinal, ou com um período de carência muito curto para drenar, como um limite de tempo de vida de sandbox ou reclamação de instância spot, passe `--retire-at <epoch-seconds>` definido para alguns minutos antes desse tempo. No tempo de aposentadoria:

119 

1201. O runner para de aceitar novo trabalho.

1212. O runner libera cada sessão ativa através do mesmo caminho de liberação que o flag [`--release-idle-session-min`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) usa, portanto a sessão retoma em um runner fresco quando o usuário envia sua próxima mensagem. Quando o runner libera cada sessão depende de seu estado:

122 * O runner libera uma sessão que está no meio de uma volta assim que essa volta termina.

123 * Quando uma volta termina e deixa tarefas em segundo plano em execução, o runner espera até 60 segundos por elas, depois libera a sessão mesmo que ainda estejam em execução. Se as tarefas terminaram mas a volta de acompanhamento que lê seus resultados ainda não foi executada, o runner mantém a sessão até que essa volta termine, e não espera mais do que [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](/docs/pt/self-hosted-environments-reference#environment-variable-only-settings) para que essa volta comece.

1243. O runner sai 0 assim que todas as suas sessões são liberadas.

125 

126Uma volta que sobrevive à morte ainda é perdida; [Tempo de desligamento](/docs/pt/self-hosted-environments-deploy#shutdown-timing) cobre o dimensionamento da margem. Sem `--retire-at`, uma morte de host sem sinal é indistinguível de um crash: o plano de controle registra um worker perdido em vez de uma liberação limpa, e a sessão recoloca na fila para outro runner.

127 

128<h3 id="network-paths">

129 Caminhos de rede

130</h3>

131 

132O runner e suas sessões fazem vários tipos de conexão de saída, e nenhuma conectividade de entrada de Anthropic é necessária:

133 

134* **Plano de controle**: o runner sonda `api.anthropic.com` para trabalho e publica eventos de progresso de configuração e falha, tudo HTTPS de saída. A sondagem funciona como o batimento cardíaco do runner.

135* **Conector SCM**: o orquestrador opcional [conector SCM](/docs/pt/self-hosted-environments-reference#scm-connector-flags) tunnel é a única conexão WebSocket.

136* **Git**: o runner clona de e envia para seu host git por HTTPS ou SSH, autenticado com credenciais que sua implantação fornece; [Configurar git](/docs/pt/self-hosted-environments-deploy#configure-git) cobre as opções, incluindo credenciais cunhadas por sessão e o [proxy git Anthropic](/docs/pt/self-hosted-environments-deploy#use-the-anthropic-git-proxy), que roteia git através de `api.anthropic.com` em vez disso.

137* **Filho da sessão**: o processo filho de Claude Code mantém o fluxo de eventos da sessão para `api.anthropic.com` e faz suas próprias chamadas de saída para inferência de modelo e para comandos git executados durante a sessão. Consulte [Requisitos de rede](/docs/pt/self-hosted-environments-deploy#network-requirements) para a lista completa de saída. O [diagrama acima](#how-self-hosted-environments-work) mostra esses caminhos, além do conector SCM opcional.

138 

139A inferência de modelo usa a API Anthropic. O plano de controle entrega o endpoint da API para cada sessão, e a sessão se autentica com um token OAuth emitido pela Anthropic, com escopo de sessão, portanto a inferência não pode ser roteada através de [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/pt/third-party-integrations) ou um [gateway LLM](/docs/pt/llm-gateway) em ambientes auto-hospedados.

140 

141Proxies de saída corporativos são suportados. O runner e o [orquestrador de dimensionamento automático](/docs/pt/self-hosted-environments-configuration#on-demand-runners) opcional honram o proxy e as variáveis de ambiente mTLS descritas em [Configuração de rede](/docs/pt/network-config), como `HTTPS_PROXY` e `NO_PROXY`; defina-as no ambiente de cada processo. As variáveis cobrem chamadas de plano de controle, o WebSocket [conector SCM](/docs/pt/self-hosted-environments-reference#scm-connector-flags) do orquestrador e o clone integrado para remotes HTTPS, e as sessões as herdam do runner. O streaming de sessão usa eventos enviados pelo servidor por HTTPS, portanto um proxy no caminho não deve armazenar em buffer as respostas.

142 

143Se seu proxy também exigir um cabeçalho `Proxy-Authorization`, o runner pode adicioná-lo a cada conexão que abre para o proxy; consulte [Autenticar em um proxy de saída](/docs/pt/self-hosted-environments-deploy#authenticate-to-an-egress-proxy).

144 

145<h2 id="what-stays-on-your-infrastructure">

146 O que permanece em sua infraestrutura

147</h2>

148 

149Verificações de repositório, artefatos de compilação, segredos e quaisquer arquivos que uma sessão cria ou modifica permanecem nas máquinas que você provisiona. A conversa em si, incluindo prompts, respostas e resultados de ferramentas, vai para `api.anthropic.com` para inferência de modelo, e Anthropic armazena a transcrição da sessão para que você possa retomar a sessão de outra [superfície suportada](#availability-and-limitations).

150 

151Um ambiente auto-hospedado move a execução da sessão para sua rede. O plano de controle permanece hospedado pela Anthropic: orquestração de sessão, enfileiramento e a interface de claude.ai continuam a ser executados na infraestrutura da Anthropic.

152 

153<h2 id="get-started">

154 Comece

155</h2>

156 

157As páginas de ambientes auto-hospedados são organizadas pelo que você está fazendo:

158 

159* [Guia de início rápido](/docs/pt/self-hosted-environments-quickstart): instale Claude Code, crie um ambiente, inicie um runner e roteie sua primeira sessão

160* [Implantar em produção](/docs/pt/self-hosted-environments-deploy): endurecimento de segurança, saída de rede, credenciais git, receitas Kubernetes e Compose, problemas conhecidos e solução de problemas

161* [Personalizar sessões](/docs/pt/self-hosted-environments-configuration): scripts de wrapper para credenciais por sessão, hooks de ciclo de vida, runners sob demanda, servidores MCP e permissões

162* [Testar de ponta a ponta](/docs/pt/self-hosted-environments-testing): um teste de fumaça de CI que verifica uma imagem de runner antes de promovê-la

163* [Referência](/docs/pt/self-hosted-environments-reference): cada flag de CLI, variável de ambiente, métrica e o endpoint de saúde

164* [Verificar identidade da sessão](/docs/pt/self-hosted-environments-identity): valide o token de sessão de seus próprios serviços antes de conceder acesso

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Personalizar sessões em ambientes auto-hospedados

6 

7> Personalize sessões de ambientes auto-hospedados com scripts wrapper para credenciais por sessão, hooks de ciclo de vida e geração de runners sob demanda.

8 

9<Note>

10 Ambientes auto-hospedados estão em beta pública em planos Team e Enterprise; um [Owner](/docs/pt/cloud-environments#organization-shared-environments) os habilita ativando **Allow self-hosted environments** na [página de administração **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). Esta página assume um runner funcionando; consulte o [guia de início rápido](/docs/pt/self-hosted-environments-quickstart) para configuração e [Deploy to production](/docs/pt/self-hosted-environments-deploy) para as receitas de frota.

11</Note>

12 

13Um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) executa [sessões na nuvem](/docs/pt/claude-code-on-the-web) do Claude Code em sua própria infraestrutura, executadas por um processo runner que você implanta. Sem configuração, esse runner clona o repositório da sessão, gera Claude Code e limpa. Esta página é para o engenheiro de plataforma operando os runners: ela cobre os pontos de extensão para quando esses padrões não se encaixam, desde provisionamento de credenciais por sessão até substituição completa do checkout. Wrappers e hooks são executados como arquivos executáveis no host do runner, que é Linux ou macOS, e os exemplos nesta página assumem um shell POSIX.

14 

15Algumas variáveis de ambiente de hook nesta página ainda usam `pool`, como `CLAUDE_RUNNER_POOL_ID`; os nomes de flag CLI e variável de ambiente usam `environment`, como `--environment-secret-file`.

16 

17<h2 id="wrapper-scripts">

18 Wrapper scripts

19</h2>

20 

21Use um script wrapper quando cada sessão precisar de configuração que o runner não consegue fazer por conta própria: provisionamento de credenciais de curta duração com escopo para o criador da sessão, exportação de segredos específicos do ambiente, preparação de cadeias de ferramentas de linguagem ou aplicação de limites de recursos ao redor do processo filho. O runner inicia seu wrapper no lugar do binário Claude Code, uma vez por sessão. Termine o wrapper com `exec` em `$CLAUDE_RUNNER_CLAUDE_BIN`, o binário próprio do runner, para que sinais e códigos de saída se propaguem corretamente.

22 

23Aponte `--exec-path`, ou `SELF_HOSTED_RUNNER_EXEC_PATH`, para o wrapper quando você inicia o runner:

24 

25```bash theme={null}

26claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret --exec-path /etc/claude/session-wrapper.sh

27```

28 

29O runner define o seguinte no ambiente do wrapper:

30 

31| Variável | Descrição |

32| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | O JWT da sessão, prefixado com `sk-ant-cc-`. Sua reivindicação `act` identifica o criador da sessão, com o email do criador e o assunto do provedor de identidade upstream quando a superfície criadora os registrou. O valor é o token no momento do spawn; atualizações chegam pela stdin do filho, então um wrapper vê apenas o valor inicial. Consulte [Verify session identity](/docs/pt/self-hosted-environments-identity). |

34| `CCR_SESSION_ACCOUNT_EMAIL` | O email do criador da sessão, pré-extraído pelo runner da reivindicação `act.email` do token sem verificação de assinatura. Adequado para rotulagem, como trailers de commit. Quando o email controla a emissão de credenciais, verifique o token e leia a reivindicação dele em vez disso; consulte [Provision credentials scoped to the session creator](#provision-credentials-scoped-to-the-session-creator). Não definido quando o token não carrega email do criador. Trate como informação de identificação pessoal. |

35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | A superfície do cliente que criou a sessão, como `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli` ou `scheduled_trigger`. Anthropic registra o valor uma vez na criação da sessão, então o wrapper e cada hook de ciclo de vida veem o mesmo valor. Use-o apenas para análise de adoção e rotulagem, não como sinal de autorização. Não definido quando a sessão não tem superfície registrada ou reconhecida, então referencie-o como `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` sob `set -u`. Requer Claude Code v2.1.229 ou posterior. |

36| `CLAUDE_RUNNER_CLAUDE_BIN` | Caminho absoluto para o binário Claude Code próprio do runner. Termine seu wrapper com `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` para passar para o binário fixado sem codificar um caminho de instalação. |

37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID da sessão na forma marcada `cse_...`. Esta é a mesma sessão que os [lifecycle hooks](#lifecycle-hooks) veem como `CLAUDE_RUNNER_SESSION_ID` na forma `session_...`; as variáveis UUID correspondem em ambos, e substituir o prefixo `cse_` por `session_` produz o ID mostrado na URL da sessão. |

38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | O mesmo ID da sessão na forma UUID canônica, para sistemas que usam UUIDs como chave. |

39| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Caminho absoluto para um arquivo por sessão contendo o JWT da sessão atual, mantido atualizado em atualizações de token. Subprocessos shell o leem para seu cabeçalho `Authorization` ao baixar anexos que o usuário adicionou à sessão. `exec` preserva a variável automaticamente; um wrapper que reconstrói o ambiente do filho deve levar a variável, ou downloads de anexos param silenciosamente de funcionar. |

40| `CLAUDE_CONFIG_DIR` | Diretório de configuração Claude por sessão, escrito no início da sessão a partir do snapshot da configuração do host do runner que o runner captura na inicialização; consulte [Permissions and tool approval](#permissions-and-tool-approval). Escritas aqui são isoladas para esta sessão. |

41| `ANTHROPIC_BASE_URL` | A URL base da API que o filho usará, entregue pelo plano de controle por sessão e normalmente `https://api.anthropic.com`. Não a substitua: a credencial de inferência da sessão é um token OAuth emitido pela Anthropic que outros provedores não aceitam, então a inferência em ambientes auto-hospedados não é roteável para outro lugar. |

42| `CLAUDE_CODE_OAUTH_TOKEN` | O token de acesso OAuth de curta duração que o filho usa para inferência de modelo, com escopo apenas para inferência de modelo e upload de arquivo, com uma vida útil de cerca de 30 minutos. O runner o re-emite antes da expiração e entrega a rotação pela stdin do filho, então um wrapper que não [mantém stdin anexado](#keep-stdin-and-file-descriptor-3-attached) vê apenas o valor inicial. Não confie na lista de permissões de IP da sua organização para limitar o uso deste token: trate-o como uma credencial de portador que permanece utilizável por aproximadamente 30 minutos se vazar, e não o registre, escreva em disco ou encaminhe para fora do contêiner da sessão. |

43 

44O wrapper também herda o resto do ambiente gerenciado do filho, incluindo quaisquer variáveis de ambiente fornecidas pelo servidor. `exec` propaga tudo automaticamente; se seu wrapper gera o filho de outra forma, encaminhe o ambiente completo.

45 

46<h3 id="keep-stdin-and-file-descriptor-3-attached">

47 Keep stdin and file descriptor 3 attached

48</h3>

49 

50A stdin do filho é o canal de controle do runner. Rotações de token e sinais de fim de sessão chegam nela. O runner também abre um pipe no descritor de arquivo 3 e lê sinais de atividade do filho dele para conduzir timeouts de inatividade e inicialização. Um simples `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` preserva ambos automaticamente.

51 

52Se seu wrapper coloca o filho em background com um simples `&`, ele sever a stdin do filho: a sessão parece saudável até a vida útil do token OAuth inicial de aproximadamente 30 minutos expirar, então cada chamada de API falha com `401 authentication_error`. Se seu wrapper deve colocar o filho em background, por exemplo para manter uma trap de teardown viva, salve stdin no descritor de arquivo 4 ou superior e re-anexe-a explicitamente:

53 

54```bash theme={null}

55exec 4<&0

56"$CLAUDE_RUNNER_CLAUDE_BIN" "$@" <&4 4<&- &

57CHILD=$!

58trap 'teardown' EXIT

59wait "$CHILD"

60```

61 

62Não feche ou reutilize o descritor de arquivo 3 no wrapper. Redirecionar stdout e stderr do filho é aceitável.

63 

64<h3 id="provision-credentials-scoped-to-the-session-creator">

65 Provision credentials scoped to the session creator

66</h3>

67 

68Use o subcomando `decode-token` para ler reivindicações do JWT da sessão. Ele lê o token de um argumento, de `CLAUDE_CODE_SESSION_ACCESS_TOKEN` ou de stdin, nessa ordem; consulte [Verify the token inside the session](/docs/pt/self-hosted-environments-identity#verify-the-token-inside-the-session) para o que ele verifica. O exemplo abaixo decodifica a identidade do criador, a troca por credenciais AWS de curta duração e faz exec em Claude Code:

69 

70```bash theme={null}

71#!/bin/bash

72# Key on the stable Anthropic user ID and require a human creator.

73CREATOR_SUB=$("$CLAUDE_RUNNER_CLAUDE_BIN" self-hosted-runner decode-token \

74 | jq -re '.act.sub // "" | select(startswith("user:"))') \

75 || { echo "decode-token: verification failed or no human creator" >&2; exit 1; }

76 

77creds=$(your-sts-helper assume-role --subject "$CREATOR_SUB") \

78 || { echo "credential exchange failed" >&2; exit 1; }

79eval "$creds"

80 

81exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"

82```

83 

84Use `jq -re` em vez de `jq -r` quando a reivindicação extraída controla uma decisão de autenticação, para que uma reivindicação ausente saia com código diferente de zero em vez de passar a string literal `null` para downstream. Sessões criadas por uma identidade de serviço da organização, como sessões de bot e agente, carregam um assunto `agent:` em vez de `user:`, então este exemplo as recusa; se seu ambiente serve essas sessões, decida explicitamente se o wrapper volta para uma credencial padrão para elas em vez de sair. Quando sua troca de credenciais precisa do assunto SSO ou email em vez disso, leia `.act.attested_by.sub` ou `.act.email` e trate sua ausência: o token os carrega apenas quando a superfície criadora os registrou, e uma [sessão despachada por CLI](/docs/pt/self-hosted-environments-testing#run-the-test-loop) pode carecer de ambos. Para a referência de reivindicação completa e verificação de serviços fora do runner, consulte [Verify session identity](/docs/pt/self-hosted-environments-identity).

85 

86<h2 id="lifecycle-hooks">

87 Lifecycle hooks

88</h2>

89 

90Lifecycle hooks substituem estágios do pipeline por sessão do runner com seus próprios scripts. Aponte o runner para um diretório de hooks com `--hooks-dir <path>`, ou `SELF_HOSTED_RUNNER_HOOKS_DIR`. O runner procura por arquivos executáveis com nomes bem conhecidos; qualquer hook que não esteja presente cai para o comportamento integrado, então você só escreve os que precisa. Hooks são executados com os privilégios próprios do runner, e filhos de sessão compartilham esse UID, então monte o diretório de hooks como somente leitura, ou coloque-o na imagem, para que o código da sessão não possa modificá-lo; consulte a [seção de hardening](/docs/pt/self-hosted-environments-deploy#harden-your-deployment).

91 

92Esses hooks são distintos dos [Claude Code hooks](/docs/pt/hooks), que são executados dentro da sessão; lifecycle hooks são executados no runner, ao redor da sessão.

93 

94<h3 id="checkout">

95 checkout

96</h3>

97 

98Executado uma vez por repositório, no lugar do clone e fetch integrados do runner. Use o hook para clonar de um espelho de leitura, semear uma árvore de trabalho de um arquivo ou aplicar autenticação git por sessão. O runner define:

99 

100| Variável | Descrição |

101| :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

102| `CLAUDE_RUNNER_REPO_URL` | URL do repositório para clonar, após qualquer `--git-host-rewrite` e `--git-ssh-rewrite` terem sido aplicados |

103| `CLAUDE_RUNNER_REPO_REF` | Revisão para fazer checkout: branch, tag ou commit SHA conforme a sessão o solicitou. Vazio significa o branch padrão do repositório. |

104| `CLAUDE_RUNNER_CHECKOUT_PATH` | Caminho absoluto onde a árvore de trabalho deve ser deixada |

105| `CLAUDE_RUNNER_SESSION_ID` | ID da sessão na forma marcada `session_...`, para logging e correlação |

106| `CLAUDE_RUNNER_SESSION_UUID` | O mesmo ID da sessão na forma UUID canônica |

107| `CLAUDE_RUNNER_API_BASE_URL` | URL base da API Anthropic para chamadas com escopo de sessão |

108| `CLAUDE_RUNNER_CLIENT_PLATFORM` | A superfície do cliente que criou a sessão, como `web_claude_ai`, `desktop_app` ou `ios`. Não definido quando a sessão não tem superfície registrada ou reconhecida. |

109| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | O token de acesso da sessão, para chamadas de API com escopo de sessão |

110 

111O script deve deixar uma árvore de trabalho em `CLAUDE_RUNNER_CHECKOUT_PATH` com checkout na revisão solicitada. HEAD desanexado é aceitável; o runner cria o branch de trabalho da sessão em cima. O runner verifica se o caminho contém um `.git` depois; se seu hook materializa uma fonte não-git como Perforce ou um tarball desempacotado, defina `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` no ambiente do runner para pular essa verificação. Fluxos baseados em Git como criação de branch de trabalho e push de resultados requerem um checkout git, então exporte resultados de árvores não-git com um hook [`post-session`](#post-session).

112 

113O runner não passa uma credencial git para o hook. Em vez disso, emita uma credencial de clone por sessão a partir da identidade da sessão: verifique `CLAUDE_CODE_SESSION_ACCESS_TOKEN` com uma biblioteca JWT padrão contra o endpoint JWKS sob `CLAUDE_RUNNER_API_BASE_URL`, conforme descrito em [Verify the token from your service](/docs/pt/self-hosted-environments-identity#verify-the-token-from-your-service), então faça seu serviço de credencial emitir uma credencial de clone de curta duração para a identidade na reivindicação `act` do token. `CLAUDE_RUNNER_CLAUDE_BIN` não está definido no ambiente do checkout-hook, então o subcomando `decode-token` não está disponível aqui. Voltar para qualquer autenticação git que o host já tenha, como um agente SSH, credential helper ou `.netrc`, também é uma opção.

114 

115Quando o hook sai com código diferente de zero, ou sai com 0 sem deixar um checkout utilizável atrás, o que o runner faz depende do repositório:

116 

117* **Um repositório para o qual a sessão faz push de resultados**: o runner falha a sessão, e em uma saída diferente de zero exibe a cauda do stderr do script para o usuário.

118* **Um repositório que a sessão apenas lê**, como um repositório adicionado a uma sessão em execução: o runner registra uma linha `[runner:warn]` com o detalhe da falha, publica um passo `Skipped` para a sessão, remove o que o hook deixou no caminho de checkout e continua com os repositórios restantes. Quando o runner não consegue remover o caminho imediatamente, ele tenta novamente a remoção no fim da sessão. Se pular deixa a sessão sem nenhum repositório, o runner falha a sessão mesmo assim.

119 

120Antes da v2.1.228, o runner falhava a sessão em uma falha de hook para qualquer repositório, então um repositório somente leitura que o hook não conseguia servir falhava a sessão novamente em cada novo runner fresco em que a sessão retomava.

121 

122O runner remove o caminho de checkout após a sessão terminar.

123 

124<h3 id="post-session">

125 post-session

126</h3>

127 

128Executado uma vez por sessão, após o filho Claude Code ter saído e antes do runner desmontar o workspace. Este hook é sua única chance de salvar trabalho não confirmado: em `--capacity` acima de um, o runner deleta worktrees por sessão logo após o hook retornar, e em `--capacity 1` o [clone canônico](/docs/pt/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) reutilizado é hard-reset quando a próxima sessão começa, então mudanças rastreadas não confirmadas não sobrevivem em nenhum caminho. Usos típicos são fazer push de um branch de snapshot de mudanças não confirmadas, arquivar logs ou emitir um evento de fim de sessão para seus próprios sistemas.

129 

130O hook dispara em cada fim de sessão onde um processo filho foi gerado, qualquer que seja a causa; os valores `CLAUDE_RUNNER_EXIT_REASON` abaixo enumeram os casos. Não pode disparar quando o runner termina abruptamente, como uma preempção de VM ou perda de energia; se você precisa de garantias contra terminação abrupta, faça snapshot periodicamente de dentro da sessão com um hook Claude Code `PostToolUse` em vez disso. O runner define:

131 

132| Variável | Descrição |

133| :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

134| `CLAUDE_RUNNER_SESSION_ID` | ID da sessão na forma marcada `session_...` |

135| `CLAUDE_RUNNER_SESSION_UUID` | O mesmo ID da sessão na forma UUID canônica |

136| `CLAUDE_RUNNER_EXIT_REASON` | Como a sessão terminou; consulte os valores abaixo da tabela |

137| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Caminhos absolutos separados por dois-pontos das árvores de trabalho da sessão. Vazio para sessões sem repositório. |

138| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Caminho para o log de debug da sessão, ainda em disco enquanto o hook é executado |

139| `CLAUDE_RUNNER_API_BASE_URL` | URL base da API Anthropic para chamadas com escopo de sessão |

140| `CLAUDE_RUNNER_CLIENT_PLATFORM` | A superfície do cliente que criou a sessão, como `web_claude_ai`, `desktop_app` ou `ios`. Não definido quando a sessão não tem superfície registrada ou reconhecida. Requer Claude Code v2.1.229 ou posterior. |

141| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | O token de acesso da sessão, para chamadas de API com escopo de sessão |

142 

143`CLAUDE_RUNNER_EXIT_REASON` toma um de quatro valores:

144 

145* `completed`: a sessão terminou de forma limpa. O processo Claude Code saiu normalmente, ou a sessão foi arquivada ou deletada enquanto ainda estava em execução.

146* `failed`: o processo Claude Code travou, ou a configuração falhou após ele ter iniciado.

147* `interrupted`: o runner parou a sessão. Ele liberou a sessão para liberar o slot, a sessão expirou na inicialização, o servidor moveu a sessão para fora deste runner, o runner estava drenando, ou a sessão ultrapassou seu limite [`--kill-session-after-min`](/docs/pt/self-hosted-environments-reference#runner-cli-flags).

148* `abandoned`: reservado para uma sessão que outro runner reivindicou. O hook não dispara atualmente nesse caso.

149 

150Os [contadores de ciclo de vida da sessão](/docs/pt/self-hosted-environments-reference#session-lifecycle-counter-semantics) contam uma liberação, um timeout de inicialização e uma movimentação de servidor como `completed` em vez de `interrupted`, porque o runner devolveu o slot de forma limpa. Espere essa diferença se você comparar recibos de hook com os contadores.

151 

152O status de saída do hook nunca afeta o resultado da sessão; uma falha é registrada e ignorada. O runner aguarda até `--post-session-hook-timeout-sec`, 60 segundos por padrão, em cada fim de sessão incluindo shutdown do runner. Este exemplo salva trabalho não confirmado para um branch de resgate:

153 

154```bash theme={null}

155#!/usr/bin/env bash

156set -u

157IFS=':'

158# Pin config the session could have planted in the checkout's .git/config:

159# -c overrides beat repo-local settings, blocking session-written fsmonitor,

160# hook-path, and gpg-program config from executing code with the hook's

161# privileges. Repo-local credential.helper, core.sshCommand, and pushurl

162# still apply; if the hook holds credentials the session didn't, pin the

163# push URL and helper too (see the note below the script).

164g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \

165 -c commit.gpgsign=false "$@"; }

166for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do

167 cd "$ws" 2>/dev/null || continue

168 [ -z "$(g status --porcelain 2>/dev/null)" ] && continue

169 g add -A

170 g commit -q -m "runner snapshot: $CLAUDE_RUNNER_SESSION_ID ($CLAUDE_RUNNER_EXIT_REASON)" || continue

171 g push -q origin "HEAD:refs/heads/rescue/$CLAUDE_RUNNER_SESSION_ID" || true

172done

173```

174 

175O hook faz push com quaisquer credenciais git disponíveis em seu próprio ambiente no host do runner. Sob a [postura de sem-credenciais-na-imagem](/docs/pt/self-hosted-environments-deploy#configure-git), incluindo quando o clone integrado passa pelo proxy git Anthropic, não há nenhuma, então emita uma credencial de push de curta duração dentro do hook antes de fazer push: troque o token de sessão que o hook recebe em `CLAUDE_CODE_SESSION_ACCESS_TOKEN` com seu próprio serviço de token, verificando-o conforme [Verify session identity](/docs/pt/self-hosted-environments-identity) descreve. Quando o hook mantém uma credencial que a sessão não tinha, também fixe para onde ele faz push: substitua `origin` por uma URL fornecida pelo operador e passe `-c credential.helper=` mais seu próprio helper, para que a configuração local do repo que a sessão escreveu não possa redirecionar o push credenciado.

176 

177<h4 id="hook-timing-when-the-runner-releases-a-session">

178 Hook timing when the runner releases a session

179</h4>

180 

181Uma sessão liberada pode retomar em outro runner. Em um runner na v2.1.236 ou posterior, o que a sessão estava fazendo na liberação decide se ela pode retomar antes deste hook terminar:

182 

183* **Inativo após uma volta, ou expirado na inicialização**: o runner para o filho e executa este hook até a conclusão. Apenas então ele libera a sessão. Uma mensagem do usuário enviada enquanto o hook é executado não pode retomar a sessão em outro runner antes do hook terminar.

184* **Aguardando o usuário responder a um prompt, como um prompt de permissão**: o runner libera a sessão primeiro, então executa este hook. Uma mensagem do usuário enviada enquanto o hook é executado pode retomar a sessão em outro runner antes do hook terminar.

185 

186Isso se aplica sempre que o runner libera uma sessão: no timeout de inatividade, no tempo [`--retire-at`](/docs/pt/self-hosted-environments-reference#runner-cli-flags), e, em um runner na v2.1.260 ou posterior, no limite [`--kill-session-after-min`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) de uma sessão. Uma sessão cuja volta terminou e que mantém apenas tarefas em background conta como inativa aqui. Antes da v2.1.236, o runner liberava a sessão primeiro e então executava este hook em ambos os casos.

187 

188Durante uma drenagem `SIGTERM`, o runner mantém a concessão da sessão até o hook terminar; consulte [Shutdown timing](/docs/pt/self-hosted-environments-deploy#shutdown-timing).

189 

190<h3 id="command">

191 command

192</h3>

193 

194Executado uma vez por sessão após checkout, no lugar do spawn do filho integrado. O hook recebe o mesmo ambiente que um [wrapper script](#wrapper-scripts) e deve fazer `exec` em `"$CLAUDE_RUNNER_CLAUDE_BIN"` da mesma forma. Use o hook `command` para manter toda a customização em um diretório de hooks; use `--exec-path` quando o wrapper vive em outro lugar. Se `--exec-path` também está definido, a flag tem precedência e o hook `command` é ignorado.

195 

196Sempre faça `exec` do binário próprio do runner em vez de um `claude` resolvido por PATH; caso contrário você derrota o [pinning de versão](/docs/pt/self-hosted-environments-deploy#pin-the-version).

197 

198<h2 id="on-demand-runners">

199 On-demand runners

200</h2>

201 

202Em vez de executar uma frota fixa, você pode inicializar um runner por sessão. O orquestrador é um subcomando separado e sem estado que faz polling na Anthropic para solicitações de spawn, uma por sessão que está enfileirada sem runner disponível, e executa seu hook `spawn-runner` para cada uma. Seu hook submete uma carga de trabalho para sua plataforma: um Kubernetes Job, uma instância EC2, um Nomad dispatch.

203 

204Runners sob demanda melhoram a higiene de credenciais. Em uma frota fixa, o segredo do ambiente vive em cada host do runner, que é o mesmo host que executa sessões do usuário. Com o orquestrador, o segredo do ambiente fica apenas no host do orquestrador, que nunca executa código do usuário; cada runner gerado recebe uma ordem de trabalho de uso único que registra exatamente um runner e depois expira.

205 

206Para iniciar o orquestrador, passe o segredo do ambiente e um diretório de hooks contendo um script `spawn-runner` executável:

207 

208```bash theme={null}

209claude self-hosted-runner orchestrator \

210 --environment-secret-file /etc/claude/environment-secret \

211 --hooks-dir /etc/claude/hooks

212```

213 

214O orquestrador não mantém estado entre polls, então você pode executar duas ou mais réplicas contra o mesmo ambiente para disponibilidade. Cada solicitação de spawn é reivindicada no lado do servidor por exatamente uma réplica. Todas as réplicas devem usar o mesmo valor `--expected-spawn-seconds`; consulte o [contrato do hook](#the-spawn-runner-hook).

215 

216<h3 id="the-spawn-runner-hook">

217 The spawn-runner hook

218</h3>

219 

220O orquestrador executa `${hooks-dir}/spawn-runner` uma vez por solicitação de spawn. O hook deve submeter trabalho de forma assíncrona, sem aguardar o boot do runner, e retornar dentro de `--hook-timeout`, 60 segundos por padrão. O hook recebe:

221 

222| Variável | Descrição |

223| :------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

224| `CLAUDE_RUNNER_WORK_ORDER_FILE` | Caminho para um arquivo temporário contendo o JWT da ordem de trabalho assinada que o novo runner se registra. Deletado após o hook sair. Não registre o conteúdo do arquivo. |

225| `CLAUDE_RUNNER_ORDER_ID` | Chave de idempotência opaca, única por solicitação de spawn e segura para nomes de recursos Kubernetes. Use-a como sua chave de dedup do provisionador. |

226| `CLAUDE_RUNNER_SESSION_ID` | A sessão para a qual esta solicitação é. Vazio para solicitações de pré-aquecimento, que inicializam um runner em standby antes de qualquer sessão específica quando [`--min-idle`](/docs/pt/self-hosted-environments-reference#orchestrator-cli-flags) está definido, então não assuma que a variável está definida. |

227| `CLAUDE_RUNNER_SESSION_UUID` | O mesmo ID da sessão na forma UUID canônica. Vazio para solicitações de pré-aquecimento. |

228| `CLAUDE_RUNNER_ATTEMPT` | Quantas solicitações de spawn esta sessão teve. `0` para solicitações de pré-aquecimento. |

229| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Hora do servidor do cabeçalho HTTP `Date` da resposta de poll. Quando o hook verifica o `exp` do JWT da ordem de trabalho, compare contra este valor em vez do relógio local para tolerar skew. Vazio quando o gateway omitiu o cabeçalho. |

230| `CLAUDE_RUNNER_POOL_ID` | O ID do ambiente que o novo runner deve se juntar, na forma `ccpool_...` |

231| `CLAUDE_RUNNER_ACCOUNT_ID` | ID marcado da conta que enfileirou a sessão, para roteamento por conta, quota ou chargeback. Vazio quando indisponível, e sempre vazio para sessões do canal Claude Tag, que nenhuma conta enfileira. |

232| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Email da conta que enfileirou a sessão. Vazio quando indisponível. Trate o email como informação de identificação pessoal e não o registre. |

233| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL da primeira fonte git da sessão, para roteamento para um runner com esse repositório pré-aquecido. Vazio quando a sessão não tem fontes git. |

234| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Revisão da primeira fonte git da sessão: branch, SHA ou tag. Vazio quando não especificado. |

235| `CLAUDE_RUNNER_REPO_SOURCES` | Array JSON de `{url, revision}` para todas as fontes git da sessão, para hooks que roteiam em um repositório secundário. Vazio quando não há fontes. |

236| `CLAUDE_RUNNER_CORRELATION_ID` | O ID de correlação fornecido na criação da sessão, ecoado de volta para que o hook possa mapear esta ordem de trabalho para a solicitação que criou a sessão. Vazio quando a sessão não tem nenhum. |

237| `CLAUDE_RUNNER_CLIENT_PLATFORM` | A superfície do cliente que criou a sessão, como `web_claude_ai`, `desktop_app`, `ios` ou `scheduled_trigger`, para análise de adoção. Não definido quando a sessão não tem superfície registrada ou reconhecida, e para solicitações de pré-aquecimento; verifique-o com `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, que permanece seguro sob `set -u`. |

238 

239O runner gerado se registra com a ordem de trabalho no lugar do segredo do ambiente:

240 

241* **Inicie-o com a ordem de trabalho**: aponte [`--environment-secret-file`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) para um arquivo contendo o JWT da ordem de trabalho, ou defina `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` para o valor JWT.

242* **Copie o JWT antes do hook sair**: o orquestrador deleta o arquivo da ordem de trabalho após o hook sair, então copie o JWT para a carga de trabalho que você submete, como um Kubernetes Secret no Job gerado, em vez de passar o caminho do arquivo.

243* **Use `--capacity 1` em runners gerados**: uma ordem de trabalho vinculada a sessão registra exatamente um runner vinculado a essa sessão, então uma capacidade maior adiciona slots que nunca recebem trabalho, e o runner registra um aviso na inicialização.

244* **Ordens de trabalho de pré-aquecimento registram desvinculadas**: o runner em standby não está vinculado a uma sessão e reclama trabalho enfileirado como um runner de frota fixa.

245 

246O contrato tem quatro regras agnósticas do provisionador:

247 

2481. **Seja idempotente em `CLAUDE_RUNNER_ORDER_ID`.** Reentrega da mesma solicitação deve gerar no máximo um runner. Derive um nome de recurso determinístico do ID e deixe sua plataforma rejeitar a duplicata.

2492. **Não tente novamente a carga de trabalho.** Um ID de ordem significa no máximo uma carga de trabalho criada. Se o runner nunca se registra, Anthropic re-solicita com um ID de ordem fresco após `--expected-spawn-seconds`.

2503. **Use o contrato de código de saída.** Saída 0 significa submetido. Saída 1 significa falha retentável; a sessão recua e é re-oferecida. Saída 2 ou superior significa não-retentável; a sessão é bloqueada de gerar novamente até um [Owner](/docs/pt/cloud-environments#organization-shared-environments) selecionar **Retry** nela na aba **Activity** do ambiente. Em saída diferente de zero, a cauda do stderr do hook aparece lá como o motivo da falha, então escreva o erro acionável para stderr e nunca segredos. Para uma solicitação de pré-aquecimento não há sessão para falhar: o orquestrador registra uma saída diferente de zero localmente apenas, e o servidor re-solicita o spawn após a concessão.

2514. **Defina `--expected-spawn-seconds` para pelo menos seu tempo de boot p99.** Esta é a concessão no lado do servidor. Todas as réplicas do orquestrador devem usar o mesmo valor.

252 

253Tudo que o hook escreve para stdout ou stderr aparece no log do orquestrador com credenciais automaticamente redatadas. Se sessões ficarem enfileiradas, verifique o corpo `/healthz` do orquestrador para contagens de fila, então abra a aba **Activity** do seu ambiente na [página de administração **Cloud environments**](https://claude.ai/admin-settings/cloud-environments): expanda uma sessão falhada lá para seu erro de spawn e selecione **Retry** para re-solicitá-la.

254 

255<h2 id="mcp-servers">

256 MCP servers

257</h2>

258 

259Para disponibilizar [MCP servers](/docs/pt/mcp) em cada sessão, adicione-os no tempo de construção da imagem com o mesmo comando `claude mcp add` usado em uma instalação desktop. Se seu runner é um processo bare em vez de um contêiner, execute o mesmo comando como o usuário do runner no host, então reinicie o runner: ele lê configuração do host uma vez na inicialização. A flag `--scope user` é obrigatória; o escopo local padrão escreve sob uma chave por diretório que o runner não semeia em sessões. Por exemplo, em seu Dockerfile:

260 

261```dockerfile theme={null}

262RUN claude mcp add --scope user sidecar -- /usr/local/bin/mcp-sidecar

263RUN claude mcp add --scope user --transport http internal http://mcp-gateway.svc.cluster.local:8080

264```

265 

266O runner faz um snapshot da configuração do host uma vez na inicialização. O snapshot captura a chave `mcpServers` do `.claude.json` do host, que vive ao lado em vez de dentro de `~/.claude/`, e o runner semeia apenas essa chave em cada configuração isolada da sessão; estado da conta e histórico de projeto são descartados. Para confirmar que os servidores chegaram às sessões, inicie uma sessão no ambiente e peça a Claude para listar suas ferramentas MCP; o runner também registra um aviso de inicialização para qualquer entrada capturada cujo `type` ele não reconhece e descarta a entrada, então você pode ver por que esse servidor está faltando nas sessões. Quando `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` está definido, o runner lê `.claude.json` desse diretório em vez disso, então apontar a variável para um diretório vazio também desabilita a semeadura de MCP.

267 

268Claude Code também carrega MCP servers de outras fontes:

269 

270* O [arquivo MCP gerenciado](/docs/pt/managed-mcp) de escopo empresarial em seu caminho de sistema padrão: `/etc/claude-code/managed-mcp.json` em hosts do runner Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` em hosts macOS. Use-o para frotas bloqueadas onde apenas servidores listados pelo administrador podem carregar. Consulte [exclusive control with managed-mcp.json](/docs/pt/managed-mcp#exclusive-control-with-managed-mcp-json) para as regras de precedência. Quando este arquivo está no host do runner, Claude Code pula os MCP servers que o plano de controle da Anthropic entrega a uma sessão, incluindo conectores claude.ai, e os nomeia em um aviso no stderr do filho da sessão, que o runner registra no nível de log `debug`. Antes da v2.1.229, essas sessões saíam na inicialização com `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

271* A chave [`managedMcpServers`](/docs/pt/settings-reference#managedmcpservers) em [managed settings](/docs/pt/managed-settings) no host do runner: fornece servidores HTTP e SSE sem tomar controle exclusivo, então servidores das outras fontes ainda carregam. Requer Claude Code v2.1.259 ou posterior.

272* `<repo>/.mcp.json`: escopo de projeto. Confirme o arquivo no repositório; seus servidores são pré-aprovados em sessões na nuvem.

273 

274Quando a entrega de conectores está habilitada para sua organização, o plano de controle da Anthropic entrega os conectores que você configurou em claude.ai para sessões criadas interativamente através de configuração MCP fornecida pelo servidor, roteada através de `api.anthropic.com`. Sessões criadas programaticamente, como [CLI dispatches](/docs/pt/self-hosted-environments-testing#run-the-test-loop), não recebem entrega de conectores; dê-lhes MCP servers através de qualquer uma das outras fontes que esta seção lista em vez disso. O token OAuth do filho não carrega um escopo para buscar conectores diretamente, então o filho não tenta essa busca em si; a entrega é orientada pelo servidor.

275 

276`settings.json` não carrega definições de MCP server, e não há campo `mcpServers` de nível superior no esquema de configurações. Em managed settings, forneça servidores com a chave [`managedMcpServers`](/docs/pt/settings-reference#managedmcpservers) em vez disso.

277 

278Sessões herdam o ambiente do runner, então defina [`ENABLE_TOOL_SEARCH`](/docs/pt/mcp#scale-with-mcp-tool-search) lá para controlar a busca de ferramentas MCP para cada sessão que um runner gera; a página MCP cobre os valores.

279 

280<h2 id="prompt-sessions-to-push-their-work">

281 Prompt sessions to push their work

282</h2>

283 

284Sessões hospedadas pela Anthropic executam um hook [`Stop`](/docs/pt/hooks#stop), o hook Claude Code que é executado quando Claude termina de responder, que solicita a Claude fazer commit e push de seu trabalho. O runner não instala um. Sem ele, uma sessão que termina com mudanças não confirmadas deixa esse trabalho apenas no disco do runner, e o botão **Create PR** em claude.ai/code fica inativo até o branch existir no remoto.

285 

286A implementação de referência abaixo tem duas partes. Mescle o bloco de configurações em `~/.claude/settings.json` no host do runner, que o runner semeia em cada sessão, e salve o script como `~/.claude/hooks/stop-hook-nudge.sh` no host do runner e torne-o executável:

287 

288```json theme={null}

289{

290 "hooks": {

291 "Stop": [

292 {

293 "hooks": [

294 {

295 "type": "command",

296 "timeout": 10,

297 "command": "\"$CLAUDE_CONFIG_DIR/hooks/stop-hook-nudge.sh\""

298 }

299 ]

300 }

301 ]

302 }

303}

304```

305 

306```sh theme={null}

307#!/bin/sh

308# Stop-hook reference implementation for self-hosted runners.

309#

310# Nudges Claude once per turn if the project directory has uncommitted

311# changes OR unpushed commits, so work isn't lost when an idle session

312# is released and so the "Create PR" button on claude.ai/code lights up.

313#

314# Runner-level (no repo changes): drop this file at ~/.claude/hooks/ on

315# the runner host and merge the accompanying Stop-hook settings block

316# into ~/.claude/settings.json — the runner seeds both into every session.

317# Repo-level alternative: commit to <repo>/.claude/hooks/ and change the

318# settings.json command path to $CLAUDE_PROJECT_DIR/.claude/hooks/.

319#

320# stdin: hook JSON payload (see https://code.claude.com/docs/en/hooks)

321# stdout: {"decision":"block","reason":"..."} to nudge, or nothing to allow stop.

322 

323# Re-entry guard: the harness sets stop_hook_active=true when re-invoking

324# the Stop hook after a block. Bail so we only nudge once per turn. The

325# harness emits compact JSON (no space after the colon), which this

326# pattern relies on; use jq if you need a whitespace-tolerant check.

327in=$(cat)

328case "$in" in *'"stop_hook_active":true'*) exit 0 ;; esac

329 

330d="$CLAUDE_PROJECT_DIR"

331 

332# Not a git repo → nothing to nudge.

333git -C "$d" rev-parse --git-dir >/dev/null 2>&1 || exit 0

334 

335# No remote → "push to the remote" is unsatisfiable; bail.

336[ -z "$(git -C "$d" remote 2>/dev/null)" ] && exit 0

337 

338# Uncommitted changes (staged, unstaged, or untracked). Exclude .claude/

339# entirely — operator-seeded settings and CLI-written runtime state

340# (scheduler lock, worktrees, routine state) live there and neither is

341# "uncommitted work" the model needs to push.

342s=$(git -C "$d" status --porcelain -- . ':(exclude).claude/' 2>/dev/null)

343if [ -n "$s" ]; then

344 printf '{"decision":"block","reason":"There are uncommitted changes in the repository. Please commit and push these changes to the remote branch."}'

345 exit 0

346fi

347 

348# Unpushed commits. Count commits on HEAD not reachable from any

349# remote-tracking ref or FETCH_HEAD. This works uniformly for:

350# - init+fetch checkouts (runner default: only FETCH_HEAD exists)

351# - clone-based checkouts (origin/* exist)

352# - the runner default: the child starts on the session's outcome

353# branch, which the runner creates after checkout

354# - detached HEAD, when a custom setup skips that branch creation

355# With no reference point at all (never fetched), stay silent rather

356# than false-positive on a read-only turn.

357base=""

358git -C "$d" rev-parse --verify -q FETCH_HEAD >/dev/null && base="FETCH_HEAD"

359if [ -z "$base" ] && [ -z "$(git -C "$d" for-each-ref --count=1 refs/remotes/origin 2>/dev/null)" ]; then

360 exit 0

361fi

362# shellcheck disable=SC2086 # $base is either "" or "FETCH_HEAD", intentional word-split

363unpushed=$(git -C "$d" rev-list HEAD --not $base --remotes=origin --count 2>/dev/null) || unpushed=0

364if [ "$unpushed" -gt 0 ]; then

365 branch=$(git -C "$d" symbolic-ref --short -q HEAD)

366 if [ -n "$branch" ]; then

367 # $branch is attacker-influenced — git-check-ref-format(1) allows `"`

368 # in ref names. `\` is forbidden (rule 10) but escaped anyway as cheap

369 # defense-in-depth.

370 # Escape JSON metacharacters before interpolating into the hand-built

371 # payload so a branch like x","continue":false can't inject keys into

372 # the hook-output JSON the harness parses. $unpushed is safe — the

373 # -gt guard above rejects anything that isn't a plain integer.

374 branch_esc=$(printf '%s' "$branch" | sed 's/\\/\\\\/g; s/"/\\"/g')

375 printf '{"decision":"block","reason":"There are %s unpushed commit(s) on branch '\''%s'\''. Please push these changes to the remote repository."}' "$unpushed" "$branch_esc"

376 else

377 printf '{"decision":"block","reason":"There are %s unpushed commit(s) on a detached HEAD. Please create a branch and push it to the remote repository."}' "$unpushed"

378 fi

379 exit 0

380fi

381 

382exit 0

383```

384 

385O hook solicita a Claude fazer commit e push antes da sessão terminar, e fica silencioso quando o diretório não é um repositório git ou não tem remoto.

386 

387<h2 id="permissions-and-tool-approval">

388 Permissions and tool approval

389</h2>

390 

391Uma sessão auto-hospedada não tem terminal anexado, então um prompt de permissão não respondido paralisa a volta até o usuário responder na UI. O plano de controle da Anthropic envia a lista de ferramentas de cada sessão e regras de permissão com a carga de trabalho; a configuração padrão pré-aprova chamadas de ferramentas rotineiras, incluindo `Bash`, e sessões na nuvem [pré-aprovam edições de arquivo independentemente do modo](/docs/pt/permission-modes#switch-permission-modes). Uma chamada que nada pré-aprova solicita através da UI da sessão.

392 

393<Note>

394 Apenas fixe auto mode em um ambiente cujos contêineres de sessão são executados com [default-deny network egress](/docs/pt/self-hosted-environments-deploy#default-deny-egress) e o resto da [seção de hardening](/docs/pt/self-hosted-environments-deploy#harden-your-deployment) em vigor. Chamadas de ferramentas rotineiras, incluindo solicitações de rede `Bash`, são executadas sem um humano no loop tanto no conjunto de ferramentas pré-aprovadas padrão quanto em auto mode, então o limite de rede é o que limita para onde essas chamadas podem alcançar.

395</Note>

396 

397Para manter prompts ao mínimo independentemente do que o plano de controle envia, fixe [auto mode](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) de seu script wrapper ou hook [`command`](#command). Auto mode permite que sessões sejam executadas sem prompts de permissão rotineiros: um modelo classificador separado revisa ações antes de serem executadas e bloqueia as que rejeita, e regras de ask explícitas ainda forçam um prompt; a página de modos de permissão cobre o que o classificador verifica. O runner anexa flags computadas pelo servidor antes de invocar o wrapper, e para flags de valor único como `--permission-mode` o parser honra a última ocorrência, então uma flag que você anexa após `"$@"` substitui o valor enviado pelo servidor:

398 

399```bash theme={null}

400#!/bin/bash

401exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --permission-mode auto

402```

403 

404Para pré-aprovar ferramentas específicas em vez disso, anexe `--allowed-tools` com suas regras, por exemplo `--allowed-tools "Bash(bazel *) Bash(yarn *) mcp__internal__*"`. Flags de lista como `--allowed-tools` e `--disallowed-tools` acumulam em ocorrências em vez de substituir, então suas regras se aplicam em cima de quaisquer regras que o plano de controle envia. Para estreitar, anexe `--disallowed-tools`, que nega ferramentas mesmo se outra regra as permite.

405 

406<h3 id="how-each-session’s-config-is-assembled">

407 How each session's config is assembled

408</h3>

409 

410O runner dá a cada sessão seu próprio diretório de configuração, semeado de um snapshot em memória do `~/.claude/` do host que o runner captura uma vez na inicialização: `settings.json`, `CLAUDE.md`, hooks, agentes, comandos e skills em sua imagem do runner se aplicam a cada sessão como a linha de base de nível de usuário. Como o snapshot é tirado na inicialização, mudanças de configuração em um host em execução têm efeito apenas após uma reinicialização do runner. Defina `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` para semear de um caminho diferente, ou aponte-o para um diretório vazio para desabilitar a semeadura.

411 

412`.claude/settings.json` confirmado no repositório se sobrepõe como configurações de projeto. Sessões também leem [`managed-settings.json`](/docs/pt/settings#where-settings-live) do caminho de sistema padrão em sua imagem do runner. Se suas chaves se aplicam ao lado de [server-managed settings](/docs/pt/server-managed-settings) segue [como Claude Code combina fontes gerenciadas](/docs/pt/managed-settings#how-claude-code-combines-managed-sources): por padrão, quando sua organização entrega quaisquer chaves gerenciadas pelo servidor, sessões ignoram o arquivo da imagem do runner além das [chaves que Claude Code lê de cada fonte de administrador](/docs/pt/managed-settings#keys-read-from-every-admin-source), como o bloco `env`, os locks de sandbox, os caminhos binários de sandbox e `forceRemoteSettingsRefresh`. Consulte [settings precedence](/docs/pt/settings#settings-precedence).

413 

414Quando o plano de controle da Anthropic fornece uma sessão com [Claude Code hooks](/docs/pt/hooks), o runner os instala ao lado, não sobre, sua própria configuração. Requer Claude Code v2.1.229 ou posterior.

415 

416* **Onde eles pousam**: o runner escreve cada script de hook fornecido para um subdiretório reservado `hooks/.ccr-launcher/` do diretório de configuração da sessão e registra os scripts em um arquivo de configurações separado que passa para a sessão com `--settings`, deixando o `settings.json` semeado e seus próprios scripts em `hooks/<name>` intocados. O runner recria o subdiretório reservado para cada sessão e não semeia conteúdo do host em `~/.claude/hooks/.ccr-launcher/` em sessões.

417* **Quem os autora**: o plano de controle popula os scripts de constantes fixas em sua própria implantação, nunca de entrada por sessão ou de terceiros.

418* **O que ainda os governa**: hooks entregues através de `--settings` entram na configuração de hook mesclada ordinária, não na camada gerenciada, então suas configurações gerenciadas ainda se aplicam. `disableAllHooks` os desabilita, e eles não estão entre as categorias que [`allowManagedHooksOnly`](/docs/pt/settings-reference#allowmanagedhooksonly) mantém carregadas.

419 

420<h3 id="repository-committed-permission-rules">

421 Repository-committed permission rules

422</h3>

423 

424Não coloque uma entrada `"Edit"`, `"Write"` ou `"NotebookEdit"` nua em um `permissions.allow` confirmado no repositório. Uma regra de ferramenta de arquivo nua corresponde à ferramenta independentemente do caminho, concedendo escritas em qualquer lugar no host em vez de apenas o workspace, então a guarda de confinamento de escopo de escrita do runner sinaliza a sessão; com [`--confine-repo-settings enforce`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) ela recusa gerar a sessão em vez de registrar e continuar. Consulte a [seção de hardening](/docs/pt/self-hosted-environments-deploy#harden-your-deployment).

425 

426Um repositório não precisa de nenhuma regra de ferramenta de arquivo: sessões na nuvem [pré-aprovam edições de arquivo independentemente do modo](/docs/pt/permission-modes#switch-permission-modes). Se você fizer uma regra, escope-a para o workspace, como `"Edit(/**)"`; uma barra inicial única é relativa à raiz do projeto, que é o workspace da sessão. Regras de ferramenta de arquivo nuas são aceitáveis no `settings.json` de nível de host do operador, já que esse arquivo não é confirmado no repositório.

427 

428Um `defaultMode` de `auto` é apenas honrado do arquivo de configurações de nível de imagem ou de nível de usuário, então um repositório verificado não pode se conceder auto mode. Para quais modos sessões na nuvem aceitam e a sintaxe de regra completa, consulte [permission modes](/docs/pt/permission-modes).

429 

430<h2 id="what’s-next">

431 What's next

432</h2>

433 

434* [Reference](/docs/pt/self-hosted-environments-reference): cada flag CLI, variável de ambiente e métrica

435* [Verify session identity](/docs/pt/self-hosted-environments-identity): valide o token de sessão de serviços fora do runner

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Implantar ambientes auto-hospedados em produção

6 

7> Execute runners auto-hospedados em produção: endurecimento de segurança, controle de saída de rede, credenciais git, receitas Kubernetes e Compose, e solução de problemas.

8 

9<Note>

10 Ambientes auto-hospedados estão em beta pública em planos Team e Enterprise; [Disponibilidade e limitações](/docs/pt/self-hosted-environments#availability-and-limitations) cobre o caminho de habilitação. Esta página cobre a execução da frota em produção; consulte o [guia de início rápido](/docs/pt/self-hosted-environments-quickstart) para seu primeiro runner e sessão.

11</Note>

12 

13Um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) executa [sessões na nuvem](/docs/pt/claude-code-on-the-web) do Claude Code em runners que você implanta dentro de sua rede, e em produção essas sessões executam código direcionado pelo modelo em nome de todos que podem enviar uma sessão para o ambiente. Esta página é para o operador que leva um ambiente funcionando para produção. Ela funciona através da implantação em ordem: o que bloquear antes de conectar sistemas reais, a saída que a frota precisa, como as sessões se autenticam no seu host git, as receitas de implantação em si, e o que verificar quando as sessões se comportam mal.

14 

15<h2 id="harden-your-deployment">

16 Endurecimento de sua implantação

17</h2>

18 

19Um runner auto-hospedado executa código arbitrário direcionado pelo modelo em sua infraestrutura em nome de todos que podem enviar uma sessão para seu ambiente. Isso é qualquer membro de sua organização Anthropic, e qualquer pessoa que possa iniciar uma sessão de canal [Claude Tag](https://claude.com/docs/claude-tag/overview) em um escopo que um Owner roteou para o ambiente. Trabalhe através de cada item antes de conectar um ambiente a sistemas de produção:

20 

21* **Contêineres efêmeros por sessão**: execute cada processo runner em um contêiner ou VM fresco que é destruído quando o processo sai, com `--capacity 1` e o padrão `--drain-grace-sec 0` para que cada contêiner sirva exatamente uma sessão. Em uma capacidade mais alta, ou com uma graça de drenagem positiva, um contêiner serve múltiplas sessões do mesmo [owner bloqueado](/docs/pt/self-hosted-environments#key-concepts); consulte [Ciclo de vida do Runner](/docs/pt/self-hosted-environments#runner-lifecycle). Não reutilize um sistema de arquivos entre reinicializações do runner, exceto na configuração deliberada de [checkout pré-aquecido](#reuse-a-pre-warmed-checkout), e nunca entre owners.

22* **Sem credenciais amplas na imagem**: não inclua chaves SSH de longa duração, credenciais de provedor de nuvem ou tokens de acesso pessoal que concedem mais do que uma sessão precisa. Crie credenciais usadas durante uma sessão, como tokens de push ou API, por sessão a partir de seu [script wrapper](/docs/pt/self-hosted-environments-configuration#wrapper-scripts). Para o clone inicial, que acontece antes do wrapper ser executado, use um [hook de ciclo de vida `checkout`](/docs/pt/self-hosted-environments-configuration#checkout) ou [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy); consulte [Configurar git](#configure-git).

23* **Mantenha o segredo do ambiente fora dos hosts que executam sessões**: o segredo do ambiente pode registrar runners e pegar qualquer sessão enfileirada no ambiente. Em uma frota fixa, ele vive em cada host runner, onde o código de qualquer sessão pode ler o arquivo secreto. Prefira [runners sob demanda](/docs/pt/self-hosted-environments-configuration#on-demand-runners), onde o segredo fica no host do orquestrador, que nunca executa código do usuário, e cada runner recebe uma ordem de trabalho de uso único que registra exatamente um runner. Em uma frota fixa, trate o arquivo environment-secret como legível por cada sessão e gire o segredo após qualquer suspeita de comprometimento de sessão.

24* **Saída de rede padrão-negar**: restrinja o tráfego de saída do contêiner runner e sessão no seu próprio limite de rede em cada ambiente; [Saída padrão-negar](#default-deny-egress) cobre o que permitir e por quê.

25* **IAM de host com privilégio mínimo**: a identidade de computação anexada ao host runner, como um perfil de instância ou conta de serviço de nó, deve conceder apenas o que o próprio runner precisa. As sessões devem obter suas próprias credenciais através de seu script wrapper em vez de herdar a do host.

26* **Bloqueie o endpoint de metadados da nuvem das sessões**: manter as sessões fora da identidade do host requer bloquear seu acesso ao endpoint de metadados, e as políticas de saída no nível de sub-rede não interceptam o tráfego de metadados link-local, então bloqueie-o no próprio contêiner:

27 

28 * IMDSv2 com um limite de salto de um

29 * GKE Workload Identity com ocultação de metadados

30 * Uma negação explícita para `169.254.169.254` no namespace de rede do contêiner da sessão

31 

32 O bloqueio se aplica ao seu script wrapper e hooks de ciclo de vida também, já que compartilham o contêiner. Autentique qualquer troca de token com o [JWT da sessão](/docs/pt/self-hosted-environments-identity) contra seu próprio serviço de token sobre saída na lista de permissões, ou use uma identidade web baseada em arquivo, como IAM Roles for Service Accounts (IRSA) no Amazon EKS.

33* **Isolamento de sistema de arquivos por runner**: cada processo runner obtém seu próprio diretório de trabalho que nenhum outro processo no host pode ler ou escrever. Faça `--hooks-dir`, o script wrapper, e o `~/.claude/` do host somente leitura para a sessão, seja construído na imagem ou montado como somente leitura.

34* **Dispatch não tem controle de acesso por ambiente**: qualquer membro de sua organização Anthropic pode enviar uma sessão para qualquer um de seus ambientes. Se um Owner [rotear canais Claude Tag para o ambiente](/docs/pt/cloud-environments#set-the-environment-a-claude-tag-channel-uses), qualquer pessoa que a [configuração de acesso Claude Tag](https://claude.com/docs/claude-tag/admins/restrict-access#restrict-who-can-use-claude) admita pode iniciar sessões de canal que são executadas lá. Por padrão, isso é qualquer pessoa no workspace Slack conectado, com ou sem uma conta Claude. Trate cada host runner como alcançável para execução de código por todos que podem enviar para ele, e coloque no host runner apenas dados e credenciais que todas essas pessoas têm permissão para ler. [`--lock-to-account`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) limita qual conta as sessões de um determinado host executam, mas não reduz quem pode enviar para o ambiente. Para tornar ambientes auto-hospedados a única opção de seletor, um [Owner](/docs/pt/cloud-environments#organization-shared-environments) pode ocultar ambientes hospedados pela Anthropic para toda a organização na página [**Cloud environments**](https://claude.ai/admin-settings/cloud-environments).

35* **Enforce the repo-settings guard**: escolha o modo de guard com [`--confine-repo-settings`](/docs/pt/self-hosted-environments-reference#runner-cli-flags). O padrão `warn` registra uma violação e ainda assim gera a sessão, `enforce` recusa a sessão, e `off` desabilita a varredura. O runner verifica as configurações confirmadas de cada repositório para:

36 

37 * Uma concessão que se resolve fora do workspace da própria sessão: uma entrada `additionalDirectories`, uma regra `Edit`, `Write`, ou `NotebookEdit` em `permissions.allow`, ou uma entrada `sandbox.filesystem.allowWrite` ou `allowRead`

38 * Um bloco `env` não vazio

39 * Uma substituição de postura do operador, como `sandbox.enabled: false`

40 

41 O guard é executado independentemente de [`--trust-workspace`](/docs/pt/self-hosted-environments-reference#runner-cli-flags), e não cobre hooks de repositório, `.mcp.json`, ou regras Bash; consulte [Permissões e aprovação de ferramentas](/docs/pt/self-hosted-environments-configuration#permissions-and-tool-approval) para onde essas concessões pertencem.

42 

43<Note>

44 A lista de permissões de IP de sua organização não cobre o tráfego do runner auto-hospedado por padrão. Não confie nela como um controle de rede para tráfego de runner ou sessão; aplique saída padrão-negar no seu próprio limite de rede em vez disso, e entre em contato com sua equipe de conta Anthropic se você quiser aplicação de lista de permissões de IP para sua organização.

45</Note>

46 

47<h2 id="network-requirements">

48 Requisitos de rede

49</h2>

50 

51O runner e os filhos da sessão que ele gera fazem conexões de saída para os hosts abaixo. Restrinja a saída do contêiner de sessão a esses hosts e aos serviços internos específicos que as sessões precisam alcançar; [Saída padrão-negar](#default-deny-egress) cobre como e por quê.

52 

53Estes hosts são sempre necessários:

54 

55| Host | Porta | Usado para |

56| :------------------------------------------------------------ | :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

57| `api.anthropic.com` | 443, HTTPS; WSS apenas para o conector SCM | Plano de controle do runner e streaming de sessão, inferência de modelo, sinalizadores de recursos, análise de produtos, buscas de chave [JWKS](/docs/pt/self-hosted-environments-identity), assinatura de commit, o proxy git quando `--use-anthropic-git-proxy` está definido, e o túnel [conector SCM](/docs/pt/self-hosted-environments-reference#scm-connector-flags) do orquestrador quando `--scm-connector-host` está definido |

58| Seu host git, como `github.com` ou seu host GitHub Enterprise | 443 ou 22 | Clonagem e push de repositórios. Não necessário se o runner usar `--use-anthropic-git-proxy`, que roteia o tráfego git através de `api.anthropic.com`. |

59 

60Se esses hosts são necessários depende de sua configuração:

61 

62| Host | Porta | Quando necessário |

63| :----------------------------------- | :---- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

64| `downloads.claude.ai` | 443 | No tempo de instalação, quando você instala ou atualiza Claude Code no host com o instalador nativo; o próprio script `install.sh` é servido de `claude.ai`. No tempo de execução da sessão, apenas quando as sessões instalam plugins do marketplace oficial da Anthropic. |

65| `storage.googleapis.com` | 443 | No tempo de execução da sessão, para as contagens de instalação de plugin e metadados mostrados em `/plugin`. |

66| `code.claude.com` e `claude.com` | 443 | Buscas de documentação pelo agente claude-code-guide integrado e solicitações WebFetch pré-aprovadas durante sessões. Bloquear esses hosts apenas afeta buscas de documentação. |

67| `*.frame.claudeusercontent.com` | 443 | Apenas quando a [ferramenta Artifact](/docs/pt/artifacts#availability) está disponível para sessões em sua organização; os padrões variam por plano, de acordo com a tabela de disponibilidade lá. Defina `CLAUDE_CODE_DISABLE_ARTIFACT=1` no runner para manter a ferramenta desabilitada independentemente da configuração da organização. |

68| `registry.npmjs.org` | 443 | Quando uma sessão instala um plugin, tanto para buscar pacotes de plugin de origem npm quanto para instalar dependências Node.js de um plugin, ou quando um servidor MCP lançado por `npx` é executado |

69| `http-intake.logs.us5.datadoghq.com` | 443 | Métricas operacionais da Anthropic. Apenas quando `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` está definido; desativado por padrão em ambientes auto-hospedados. |

70| `browser-intake-us5-datadoghq.com` | 443 | Uploads de relatório de erro da Anthropic, enviados apenas quando [relatório de erro](/docs/pt/data-usage#telemetry-services) está habilitado para a conta da sessão. Suprimido por `DISABLE_ERROR_REPORTING=1` ou `DISABLE_TELEMETRY=1`. |

71 

72O runner não alcança `statsig.anthropic.com`, `*.sentry.io`, `claude.ai`, ou `platform.claude.com`. Esses hosts aparecem em algumas listas de verificação de rede corporativa mais antigas, mas você não precisa colocá-los na lista de permissões para tráfego de runner ou sessão: as buscas de sinalizador de recurso vão para `api.anthropic.com`, e o runner se autentica com o segredo do ambiente em vez de OAuth interativo. Dois fluxos do lado do host alcançam `claude.ai`, então execute-os a partir de um host cuja saída permite, em vez de ampliar a saída do contêiner de sessão: o instalador de uma linha busca `install.sh` de `claude.ai` no tempo de instalação, e `claude auth login` interativo, que a [configuração guiada](/docs/pt/self-hosted-environments-quickstart#set-up-an-environment-and-runner), modo assinado do `doctor`, e [dispatch de CI](/docs/pt/self-hosted-environments-testing#authenticate-from-ci) usam, faz login através de `claude.ai`, `claude.com`, e `platform.claude.com`. `mcp-proxy.anthropic.com` também não é necessário: sessões auto-hospedadas não o usam, e a entrega dos conectores claude.ai de sua organização para sessões, quando habilitada para sua organização, roteia através de `api.anthropic.com`. Consulte [Servidores MCP](/docs/pt/self-hosted-environments-configuration#mcp-servers).

73 

74<h3 id="default-deny-egress">

75 Saída padrão-negar

76</h3>

77 

78Implante contêineres de runner e sessão em um segmento de rede ou namespace cuja saída é limitada aos hosts na [tabela de requisitos de rede](#network-requirements), seu host git, e os serviços internos específicos que as sessões precisam alcançar. O produto não pode verificar ou aplicar isso, então aplique-o no seu próprio limite de rede em cada ambiente. O código da sessão é direcionado pelo modelo e pode tentar conexões com hosts arbitrários; a saída padrão-negar no nível de rede limita onde essas tentativas podem chegar. Isso se aplica independentemente do modo de permissão: o conjunto de ferramentas pré-aprovado padrão já inclui `Bash`, então a saída do shell é executada sem um prompt mesmo sem [modo automático](/docs/pt/self-hosted-environments-configuration#permissions-and-tool-approval).

79 

80Para detalhes sobre qual telemetria cada sessão emite e como desativá-la, consulte [Telemetria](/docs/pt/self-hosted-environments-reference#telemetry).

81 

82<h3 id="authenticate-to-an-egress-proxy">

83 Autenticar em um proxy de saída

84</h3>

85 

86Alguns proxies de saída corporativos exigem um cabeçalho `Proxy-Authorization` em cada conexão. O token nesse cabeçalho geralmente gira muito rápido para ser escrito na URL do proxy que você define em `HTTPS_PROXY`. Defina `HTTPS_PROXY` ou `HTTP_PROXY` para a URL do seu proxy como de costume, então defina `--proxy-authorization-command` ou `--proxy-authorization-file` para dizer ao runner onde ler o valor do cabeçalho. Ambos os sinalizadores exigem Claude Code v2.1.238 ou posterior.

87 

88<h4 id="choose-where-the-proxy-authorization-value-comes-from">

89 Escolha de onde o valor `Proxy-Authorization` vem

90</h4>

91 

92Escolha o sinalizador que corresponde a como você produz o token `Proxy-Authorization`:

93 

94* **[`--proxy-authorization-command <command>`](/docs/pt/self-hosted-environments-reference#runner-cli-flags)**: escolha isso para um token que você gera sob demanda. O runner executa o comando shell e usa sua stdout aparada como o valor do cabeçalho, por exemplo `Bearer <token>`.

95* **[`--proxy-authorization-file <path>`](/docs/pt/self-hosted-environments-reference#runner-cli-flags)**: escolha isso para um token que outro processo gira no lugar. O runner lê o arquivo e usa seu conteúdo aparado como o valor do cabeçalho.

96 

97<h4 id="configurations-the-runner-refuses-to-start-with">

98 Configurações que o runner se recusa a iniciar com

99</h4>

100 

101Cada sinalizador também tem uma forma de variável de ambiente, listada ao lado dele na [referência de sinalizadores CLI do runner](/docs/pt/self-hosted-environments-reference#runner-cli-flags). Antes do runner entrar em contato com seu proxy ou o plano de controle, ele verifica os sinalizadores e suas variáveis, e se recusa a iniciar em três casos:

102 

103* **Ambos os sinalizadores definidos**: um sinalizador mais a variável de ambiente do outro sinalizador conta como definir ambos.

104* **Nenhuma URL de proxy**: nem `HTTPS_PROXY` nem `HTTP_PROXY` contém uma URL `http://` ou `https://`. O runner lê ambas as variáveis em maiúsculas ou minúsculas, e não consulta `ALL_PROXY`.

105* **Qualquer sinalizador passado para o subcomando orquestrador**: `self-hosted-runner orchestrator` não aceita os sinalizadores ou suas variáveis de ambiente. Passe o sinalizador para cada runner que o orquestrador inicia em vez disso.

106 

107<h4 id="what-the-runner-changes-while-a-proxy-authorization-flag-is-set">

108 O que o runner muda enquanto um sinalizador de autorização de proxy está definido

109</h4>

110 

111Com qualquer sinalizador definido, o runner inicia um listener próprio e envia tráfego de proxy de si mesmo, seus hooks de ciclo de vida, e suas sessões através desse listener. O listener adiciona o cabeçalho `Proxy-Authorization` no caminho para seu proxy.

112 

113* **Listener**: o listener é um proxy direto em `127.0.0.1`. O runner inicia o listener antes de se registrar no plano de controle, e sai na inicialização se o listener não puder iniciar.

114* **Variáveis de proxy**: o runner reescreve qual de `HTTPS_PROXY` e `HTTP_PROXY` você definiu para que aponte para o listener. Esse valor reescrito alcança o próprio runner, seus hooks de ciclo de vida, e cada sessão que ele executa.

115* **Rotação de token**: um token girado entra em vigor sem uma reinicialização. Para cada conexão que o listener abre para seu proxy, o runner executa seu comando ou lê seu arquivo novamente e adiciona o resultado como o cabeçalho.

116* **Ambiente da sessão**: uma sessão alcança seu proxy apenas através do listener. No ambiente de cada sessão, o runner remove `ALL_PROXY`, remove qualquer grafia de `HTTPS_PROXY` ou `HTTP_PROXY` que você não definiu, e fixa `NO_PROXY` ao próprio valor do runner.

117* **Logs**: o runner nunca registra o valor do cabeçalho.

118 

119<h2 id="configure-git">

120 Configurar git

121</h2>

122 

123O runner gerencia checkouts de repositório, mas não configura identidade git ou credenciais por padrão. Você controla a imagem e o ambiente de processo do runner, então você controla a configuração git. Escolha uma de duas abordagens:

124 

125* **Deixe o runner configurar git**: inicie o runner com `--configure-git` para que ele escreva a mesma identidade e configuração de assinatura de commit que as sessões hospedadas pela Anthropic usam

126* **Envie configuração git em sua imagem**: defina identidade e credenciais de push você mesmo, por exemplo para fazer commit sob sua própria identidade de bot

127 

128Pisos de versão Git no host runner: [`--configure-git`](#let-the-runner-configure-git) a assinatura de commit SSH requer Git 2.34 ou mais recente, [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) requer 2.32 ou mais recente, e retomar sessões de branches enviados por [`--push-outcome-on-release`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) requer 2.29 ou mais recente. Git 2.24 é suficiente se você omitir todos os três e gerenciar a identidade git você mesmo.

129 

130<h3 id="let-the-runner-configure-git">

131 Deixe o runner configurar git

132</h3>

133 

134Inicie o runner com `--configure-git`, ou defina `SELF_HOSTED_RUNNER_CONFIGURE_GIT=1`, para que ele escreva configuração git global na inicialização:

135 

136* `user.name = Claude` e `user.email = noreply@anthropic.com`, correspondendo às sessões hospedadas pela Anthropic

137* Assinatura de commit e tag em formato SSH, roteada através de um shim gerenciado pelo runner que assina cada commit através do serviço de assinatura da Anthropic usando as credenciais da própria sessão. As assinaturas são verificáveis no GitHub contra a chave de assinatura SSH publicada da Anthropic.

138* `push.negotiate = true`, para que git pergunte ao seu host git quais commits ele já possui antes de empacotar um push. Requer Claude Code v2.1.257 ou posterior.

139* `core.hooksPath` apontando para um diretório de hooks gerenciado pelo runner. Seus hooks `commit-msg` e `prepare-commit-msg` adicionam um trailer `Co-authored-by:` para o criador da sessão a cada commit, construído a partir do email em [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/pt/self-hosted-environments-configuration#wrapper-scripts) e omitido quando essa variável não está definida. Se sua imagem já define `core.hooksPath`, o runner deixa sua configuração no lugar, pula a instalação desses hooks e imprime um aviso `[runner:git]`.

140 

141A assinatura de commit requer git 2.34 ou mais recente; o runner verifica na inicialização e sai com um erro se seu git for mais antigo. Este sinalizador não configura credenciais de push, que você ainda fornece na imagem.

142 

143<h3 id="ship-git-config-in-your-image">

144 Envie configuração git em sua imagem

145</h3>

146 

147A identidade Git é necessária para qualquer commit. Defina-a em todo o sistema em seu Dockerfile para que a configuração se aplique independentemente de qual usuário o processo runner é executado como:

148 

149```dockerfile theme={null}

150RUN git config --system user.name "Claude" && \

151 git config --system user.email "noreply@anthropic.com"

152```

153 

154Sem uma identidade, `git commit` falha com `Please tell me who you are` e as sessões não podem fazer progresso. Você pode usar sua própria identidade de bot em vez disso; o runner não substitui esses valores.

155 

156Não cozinhe credenciais de push de longa duração ou amplamente escopo em uma imagem de runner compartilhada: uma credencial na imagem está disponível para cada sessão que a imagem executa, quem quer que a tenha iniciado. Em vez disso, crie um token de curta duração e escopo mínimo por sessão a partir de seu [script wrapper](/docs/pt/self-hosted-environments-configuration#wrapper-scripts), usando a identidade do criador da sessão decodificada do JWT da sessão. Emparelhe-o com um contêiner por sessão efêmero, que requer `--capacity 1`, para que nenhuma credencial sobreviva à sessão que a criou; consulte a [seção de endurecimento](#harden-your-deployment).

157 

158Se você deve configurar credenciais de push no nível de imagem, por exemplo para uma chave de implantação somente leitura, escopo-as tão bem quanto seu host git permite:

159 

160* Uma chave de implantação SSH limitada a um repositório com uma reescrita `url.<base>.insteadOf`

161* Um `credential.helper` que retorna um token minimamente escopo

162* `GIT_SSH_COMMAND` apontando para uma chave estreitamente escopo

163 

164Qualquer mecanismo que você configure deve funcionar sem um prompt, porque o clone integrado do runner e fetch desabilitam os prompts que git, SSH, e Git Credential Manager mostrariam de outra forma:

165 

166* O runner define `GIT_TERMINAL_PROMPT=0`, para que git não peça um nome de usuário ou senha.

167* O runner executa SSH com `BatchMode=yes`, anexado ao seu `GIT_SSH_COMMAND` se você definir um, para que SSH não peça uma frase-passe ou confirmação de host.

168* O runner define `GCM_INTERACTIVE=never`, para que Git Credential Manager não abra um diálogo de login.

169* O runner limpa `core.askPass`, então se você usar um helper askpass, defina-o através da variável de ambiente `GIT_ASKPASS` em vez disso.

170 

171Se seu host git rejeitar a credencial, ou você não configurou uma, o runner tenta novamente algumas vezes e depois falha na preparação do repositório. O runner não passa essas configurações para o ambiente da sessão.

172 

173Se os diretórios de checkout são possuídos por um uid diferente do processo runner, git se recusa a operar neles; adicione `safe.directory`:

174 

175```dockerfile theme={null}

176RUN git config --system --add safe.directory '*'

177```

178 

179<h3 id="use-the-anthropic-git-proxy">

180 Use o proxy git da Anthropic

181</h3>

182 

183Inicie o runner com `--use-anthropic-git-proxy`, ou defina `CLAUDE_RUNNER_USE_GIT_PROXY=1`, para que ele clone através do proxy git da Anthropic, autenticado com o token de curta duração da própria sessão. Para sessões de usuário comum, o proxy usa o token OAuth do GitHub ou GitHub Enterprise armazenado para o criador da sessão; para sessões de bot e agente, ele usa o token de instalação do GitHub App de sua organização. De qualquer forma, a imagem do runner não precisa de nenhuma credencial git: sem chaves SSH, sem credential helper, sem `.netrc`. Este é o mesmo caminho de autenticação que os ambientes hospedados pela Anthropic usam.

184 

185O proxy requer `--capacity 1` porque a URL do proxy é por sessão, e git 2.32 ou mais recente porque git mais antigo ignora o mecanismo de configuração que o proxy usa para isolar sessões uma da outra. O runner se recusa a iniciar se qualquer requisito não for atendido. Como o proxy busca do lado da Anthropic, seu host git deve ser alcançável a partir da infraestrutura da Anthropic, o mesmo requisito que as sessões hospedadas pela Anthropic têm; para um host git que é apenas roteável dentro de sua rede, use um [hook de ciclo de vida `checkout`](/docs/pt/self-hosted-environments-configuration#checkout) em vez disso. Cada processo runner lida com uma sessão por vez, então execute mais réplicas para paralelismo. Quando o proxy está habilitado, `--git-host-rewrite` e `--git-ssh-rewrite` não têm efeito: a URL do proxy aponta para `api.anthropic.com`, não seu host git.

186 

187O runner também relata a aceitação à Anthropic quando se registra, imprimindo `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)` na inicialização. Cada sessão em um runner aceito usa a git gerenciada pela Anthropic ou a URL do proxy por sessão. Quando uma sessão usa a URL do proxy por sessão, o runner registra uma linha `[runner:warn]` dizendo isso.

188 

189<h3 id="rewrite-git-urls-for-private-networks">

190 Reescrever URLs git para redes privadas

191</h3>

192 

193URLs de repositório chegam do plano de controle como HTTPS, com o nome do host do seu host git; para GitHub Enterprise, esse é o nome do host que você configurou para a [integração GitHub Enterprise](/docs/pt/github-enterprise-server) nas configurações de admin do Claude Code em claude.ai. Dois sinalizadores repetíveis reescrevem essas URLs antes do clone:

194 

195* `--git-host-rewrite <from>=<to>`: para DNS de horizonte dividido, onde a Anthropic alcança seu host git através de um nome do host externo, mas runners devem usar um interno

196* `--git-ssh-rewrite <host>`: para hosts git que apenas aceitam SSH, reescrevendo `https://<host>/owner/repo` para `git@<host>:owner/repo`

197 

198A reescrita de host é executada primeiro, então liste o nome do host interno em `--git-ssh-rewrite` se você precisar de ambos. Para controle total sobre checkout, use um [hook de ciclo de vida `checkout`](/docs/pt/self-hosted-environments-configuration#checkout).

199 

200<h2 id="build-the-runner-image">

201 Construir a imagem do runner

202</h2>

203 

204A Anthropic não publica uma imagem de runner pré-construída. Construa a sua própria em torno do binário `claude`, camadas em qualquer toolchain que seus repositórios precisem: runtimes de linguagem, compiladores, gerenciadores de pacotes, e sidecars [MCP](/docs/pt/mcp).

205 

206As receitas abaixo usam `--capacity 4`, para que um contêiner sirva até quatro sessões simultâneas do mesmo owner bloqueado. Isso não fornece o isolamento de contêiner por sessão na [seção de endurecimento](#harden-your-deployment): antes de conectar um ambiente a sistemas de produção, execute as receitas em `--capacity 1` com um contêiner por sessão, ou use [runners sob demanda](/docs/pt/self-hosted-environments-configuration#on-demand-runners), que também mantêm o segredo do ambiente fora dos hosts que executam sessões.

207 

208Este Dockerfile é um ponto de partida mínimo:

209 

210```dockerfile theme={null}

211FROM debian:bookworm-slim

212ARG CLAUDE_CODE_VERSION

213RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client \

214 && rm -rf /var/lib/apt/lists/*

215RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

216 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude

217RUN git config --system user.name "Claude" \

218 && git config --system user.email "noreply@anthropic.com" \

219 && git config --system --add safe.directory '*'

220ENTRYPOINT ["claude"]

221```

222 

223Troque `linux-x64` por `linux-arm64` se seus nós forem ARM, ou por `linux-x64-musl` ou `linux-arm64-musl` em uma imagem baseada em musl, como Alpine; consulte [Configuração Alpine Linux](/docs/pt/setup#alpine-linux-and-musl-based-distributions) para os pacotes extras que imagens musl precisam. A URL é o local de lançamento padrão do Claude Code, para que você possa verificar o binário baixado contra o manifesto assinado do lançamento conforme descrito em [Integridade binária e assinatura de código](/docs/pt/setup#binary-integrity-and-code-signing). Construa a imagem com Claude Code versão 2.1.224 ou posterior, depois envie-a para seu registro e a referencie nas receitas abaixo:

224 

225```bash theme={null}

226docker build --build-arg CLAUDE_CODE_VERSION=2.1.224 -t <your-registry>/claude-runner:latest .

227```

228 

229<h2 id="size-cpu-and-memory-for-sessions">

230 Dimensionar CPU e memória para sessões

231</h2>

232 

233Dimensione o contêiner ou host de um runner para as sessões que ele executa em vez de para o próprio processo runner. O runner em si faz polling para trabalho, prepara o checkout de cada sessão, executa seus [hooks de ciclo de vida](/docs/pt/self-hosted-environments-configuration#lifecycle-hooks), e inicia e supervisiona os processos da sessão. A carga vem das sessões: cada uma é um processo Claude Code mais o que ela inicia, como builds, suites de teste, instalações de pacotes, e [servidores MCP](/docs/pt/mcp).

234 

235Para uma sessão, comece com os seguintes valores, declarados como requisições e limites do Kubernetes ou o equivalente de sua plataforma, e trate-os como um ponto de partida em vez de um requisito:

236 

237* **Memória**: uma requisição e um limite de 4 GiB cada, que atende ao mínimo de 4 GB nos [requisitos do sistema](/docs/pt/setup#system-requirements) do Claude Code. Mantenha os dois iguais para que o agendador contabilize a memória completa do contêiner. Quando o contêiner atinge seu limite de memória, o kernel mata processos dentro dele, o que pode encerrar uma sessão no meio da tarefa.

238* **CPU**: uma requisição de 2 CPUs e um limite de 4 CPUs, para que uma sessão possa explodir acima da requisição durante builds. O kernel limita um contêiner em seu limite de CPU em vez de matar processos nele, então sessões no limite são executadas mais lentamente, mas continuam sendo executadas.

239 

240Em uma especificação de contêiner Kubernetes, defina esses valores iniciais com o seguinte bloco `resources`:

241 

242```yaml theme={null}

243resources:

244 requests:

245 cpu: "2"

246 memory: 4Gi

247 limits:

248 cpu: "4"

249 memory: 4Gi

250```

251 

252Builds e testes são geralmente a maior e mais variável parte da carga de uma sessão, então execute um build representativo de seu repositório, meça seu pico de CPU e memória, e aumente qualquer valor inicial que deixe sem espaço para o processo Claude Code no topo desse pico.

253 

254O runner usa `--capacity` para limitar quantas sessões ele executa de uma vez. Ele não divide CPU ou memória entre elas, então as sessões em um runner compartilham a CPU e memória do contêiner. Para limitar a participação de uma sessão, aplique limites a partir de seu [script wrapper](/docs/pt/self-hosted-environments-configuration#wrapper-scripts). O que dar a um contêiner, portanto, depende de quantas sessões ele serve de uma vez:

255 

256* **Uma sessão por runner**: dê a cada contêiner os valores de uma sessão. Use este dimensionamento em `--capacity 1`, que a [seção de endurecimento](#harden-your-deployment) recomenda, e para [runners sob demanda](/docs/pt/self-hosted-environments-configuration#on-demand-runners), onde você define os valores na carga de trabalho que seu [hook `spawn-runner`](/docs/pt/self-hosted-environments-configuration#the-spawn-runner-hook) submete, como um modelo de pod de um Kubernetes Job.

257* **Várias sessões por runner**: em um `--capacity` acima de um, multiplique os valores de uma sessão pela capacidade, porque até muitas sessões podem ser executadas no contêiner ao mesmo tempo. As receitas [Kubernetes](#kubernetes) e [Docker Compose](#docker-compose) executam `--capacity 4` sem limites de CPU ou memória, então adicione limites dimensionados para a capacidade que você executa.

258 

259<h2 id="kubernetes">

260 Kubernetes

261</h2>

262 

263O runner serve `GET /healthz` na porta 8080 por padrão, configurável com `--health-port`, então as sondas Kubernetes funcionam sem configuração extra. O endpoint retorna `200` sempre que o processo está vivo, então as sondas abaixo detectam um processo morto, não um preso; para pegar um runner que parou de fazer polling, alerte na série `last_poll_age_seconds` de [`/metrics`](/docs/pt/self-hosted-environments-reference#prometheus-metrics). O Deployment abaixo monta o segredo do ambiente a partir de um Secret Kubernetes, aponta as sondas de vivacidade e prontidão para `/healthz`, e define um período de graça de encerramento de 90 segundos. Consulte [Tempo de encerramento](#shutdown-timing) para entender por que o período de graça importa.

264 

265O manifesto não define `resources` de CPU ou memória no contêiner runner. Adicione um bloco dimensionado para a capacidade que você executa, conforme [Dimensionar CPU e memória para sessões](#size-cpu-and-memory-for-sessions) descreve.

266 

267```yaml theme={null}

268apiVersion: apps/v1

269kind: Deployment

270metadata:

271 name: claude-runner

272 namespace: claude-runners

273spec:

274 replicas: 3

275 selector:

276 matchLabels:

277 app: claude-runner

278 template:

279 metadata:

280 labels:

281 app: claude-runner

282 app.kubernetes.io/part-of: claude-code-self-hosted-runner

283 spec:

284 terminationGracePeriodSeconds: 90

285 containers:

286 - name: runner

287 image: <your-registry>/claude-runner:latest

288 args:

289 - self-hosted-runner

290 - --environment-secret-file

291 - /etc/claude/environment-secret

292 - --capacity

293 - "4"

294 volumeMounts:

295 - name: environment-secret

296 mountPath: /etc/claude

297 readOnly: true

298 ports:

299 - name: health

300 containerPort: 8080

301 readinessProbe:

302 httpGet:

303 path: /healthz

304 port: 8080

305 initialDelaySeconds: 5

306 periodSeconds: 10

307 livenessProbe:

308 httpGet:

309 path: /healthz

310 port: 8080

311 initialDelaySeconds: 30

312 periodSeconds: 30

313 volumes:

314 - name: environment-secret

315 secret:

316 secretName: claude-runner-environment-secret

317```

318 

319O Deployment acima vive em um namespace `claude-runners`. Crie o namespace primeiro:

320 

321```bash theme={null}

322kubectl create namespace claude-runners

323```

324 

325Crie o Secret de suporte a partir de um arquivo local contendo o valor que você copiou na etapa [**Copy environment key**](/docs/pt/self-hosted-environments-quickstart#set-up-an-environment-and-runner) da UI de admin, para que o segredo nunca apareça no histórico do shell. Execute `(umask 077 && cat > ./environment-secret)`, cole o segredo, pressione Enter, depois Ctrl-D. Depois crie o Secret e delete o arquivo:

326 

327```bash theme={null}

328kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret

329```

330 

331<h2 id="docker-compose">

332 Docker Compose

333</h2>

334 

335O serviço Compose abaixo reinicia o runner sempre que ele sai, o que cobre tanto crashes quanto a saída normal após drenagem. Uma política de reinicialização Docker reinicia o mesmo contêiner com sua camada gravável intacta, então o runner volta em um sistema de arquivos reutilizado em vez do fresco que a [postura de endurecimento](#harden-your-deployment) recomenda; use esta receita para avaliação, e para produção recrie o contêiner por execução ou use um orquestrador que faça.

336 

337```yaml theme={null}

338services:

339 claude-runner:

340 image: <your-registry>/claude-runner:latest

341 command:

342 - self-hosted-runner

343 - --environment-secret-file

344 - /run/secrets/environment-secret

345 - --capacity

346 - "4"

347 secrets:

348 - environment-secret

349 restart: always

350 stop_grace_period: 90s

351 

352secrets:

353 environment-secret:

354 file: ./environment-secret

355```

356 

357<h2 id="shutdown-timing">

358 Tempo de encerramento

359</h2>

360 

361Em `SIGTERM`, o runner para de aceitar novo trabalho e, a menos que você defina [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal), aguarda até `--drain-wait-sec`, zero por padrão, para que os turnos em andamento sejam concluídos, encerra a árvore de processos de cada sessão e executa o hook de ciclo de vida [`post-session`](/docs/pt/self-hosted-environments-configuration#post-session). Essa árvore de processos inclui comandos que Claude ainda estava executando na sessão.

362 

363O caminho de drenagem completo precisa de até `--session-stop-grace-sec` + `--drain-wait-sec` + `--post-session-hook-timeout-sec`, mais 15 segundos de sobrecarga fixa para limpeza de processos, mais 30 segundos adicionais quando [`--push-outcome-on-release`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) está definido. Isso é 80 segundos nos padrões, e o runner registra o total na inicialização. As sessões são drenadas em paralelo sob esse orçamento único, portanto o total não cresce com `--capacity`.

364 

365No padrão `--drain-wait-sec 0`, uma reinicialização contínua interrompe os turnos em andamento; cada sessão é retomada em outro runner, perdendo trabalho não enviado conforme descrito em [Problemas conhecidos](#additional-limitations). Defina `--drain-wait-sec` e aumente o período de carência para corresponder, para permitir que os turnos sejam concluídos primeiro.

366 

367Durante todo esse caminho, o runner continua enviando heartbeat para o plano de controle com capacidade zero, portanto a concessão de sessão não expira e não é recolocada na fila para outro runner enquanto o hook `post-session` ainda está escrevendo trabalho não confirmado. O heartbeat para logo antes do runner se desregistrar.

368 

369Dê ao runner pelo menos o total que ele registra na inicialização antes do host pará-lo. Onde você define isso depende de como seus hosts param:

370 

371* **Com um período de carência `SIGTERM`**: defina `terminationGracePeriodSeconds` no Kubernetes, `stop_grace_period` no Docker Compose, ou o equivalente do seu orquestrador para pelo menos esse total. O padrão do Kubernetes de 30 segundos é mais curto que o caminho de drenagem do runner, portanto o Kubernetes para o pod antes do runner terminar a drenagem.

372* **Com [`--retire-at`](/docs/pt/self-hosted-environments-reference#runner-cli-flags)**: dimensione a margem entre o tempo de aposentadoria e o tempo de parada do host para cobrir turnos típicos, mais a retenção de tarefa de fundo que [Ciclo de vida do Runner](/docs/pt/self-hosted-environments#runner-lifecycle) descreve, mais esse mesmo total. Calcule o tempo de aposentadoria em cada inicialização, por exemplo `date +%s` mais o tempo de vida pretendido do runner.

373* **Com [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal)**: adicione duas partes adicionais ao total do caminho de drenagem. A primeira é os minutos que você configura. A segunda é a carência pós-lançamento que [Adiar a drenagem após o primeiro sinal](#defer-the-drain-past-the-first-signal) descreve, 75 segundos nos padrões. Com a flag definida, o runner também imprime a figura combinada na inicialização, após o total do caminho de drenagem.

374 

375<h3 id="defer-the-drain-past-the-first-signal">

376 Adiar a drenagem após o primeiro sinal

377</h3>

378 

379Defina [`--defer-shutdown-max-min <n>`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) se você quiser que um runner que está reiniciando continue servindo as sessões que ele mantém por até `n` minutos, em vez de drenálas no primeiro sinal. No primeiro `SIGTERM` ou `SIGINT`, o runner para de aceitar novo trabalho e continua servindo as sessões que ele mantém. Ele continua sondando para que o plano de controle não recoloque essas sessões na fila. Requer Claude Code v2.1.238 ou posterior.

380 

381<h4 id="what-happens-to-the-sessions-the-runner-holds-after-the-first-signal">

382 O que acontece com as sessões que o runner mantém após o primeiro sinal

383</h4>

384 

385Nos primeiros dois estágios que seguem o sinal, o runner libera sessões, e uma sessão liberada é retomada em um runner novo quando seu usuário envia sua próxima mensagem. Contando a partir do primeiro sinal, o runner passa por três estágios:

386 

387* **Pelos primeiros `n` minutos**: o runner serve suas sessões normalmente e continua aplicando `--startup-timeout-min` e `--kill-session-after-min`. Se você também definir [`--release-idle-session-min`](/docs/pt/self-hosted-environments-reference#runner-cli-flags), o runner libera qualquer sessão cujo usuário tenha estado ocioso por esse tempo; sem isso, as sessões ociosas permanecem no runner.

388* **Quando os `n` minutos se esgotam**: o runner libera todas as sessões que ainda mantém, ociosas ou não. O runner aguarda o término do turno de uma sessão no meio do turno e até 60 segundos adicionais para as tarefas de fundo de um turno, antes de liberar essa sessão.

389* **Quando a carência pós-lançamento se esgota**: o runner drena todas as sessões que ainda mantém, e o plano de controle recoloca cada sessão drenada na fila para outro runner imediatamente. A carência pós-lançamento começa quando os `n` minutos se esgotam e é 75 segundos nos padrões. Se você definir `--drain-wait-sec` acima de 60 segundos, a carência pós-lançamento será `--drain-wait-sec` mais 15 segundos.

390 

391Em qualquer estágio, o runner sai com 0 assim que não mantém mais sessões. Um segundo sinal encurta os estágios: o runner drena imediatamente, como faz no primeiro sinal sem `--defer-shutdown-max-min`. Uma vez que uma drenagem está em andamento, o próximo sinal força a saída do runner. Isso vale se um segundo sinal ou a carência pós-lançamento se esgotando iniciou a drenagem.

392 

393<h4 id="size-the-stop-timeout">

394 Dimensionar o tempo limite de parada

395</h4>

396 

397Dê ao tempo limite de parada do seu host pelo menos a soma de três partes: os `n` minutos que você configura, a carência pós-lançamento e o caminho de drenagem completo que [Tempo de encerramento](#shutdown-timing) descreve. Com as configurações padrão, a carência pós-lançamento é 75 segundos e o caminho de drenagem é 80 segundos, portanto permita `n` minutos mais 155 segundos. O runner imprime essa soma na inicialização sempre que `--defer-shutdown-max-min` está definido.

398 

399Se o tempo limite de parada se esgotar antes do runner terminar, o host mata o runner. As sessões que ele ainda mantém não recebem nenhum hook `post-session`. O runner não se desregistra, e o plano de controle recoloca as sessões na fila cerca de um minuto depois. Se você não puder dar ao tempo limite de parada essa soma, deixe `--defer-shutdown-max-min` indefinido para que o runner drene no primeiro sinal.

400 

401<h3 id="what-reaches-a-running-post-session-hook">

402 O que atinge um hook post-session em execução

403</h3>

404 

405O hook `post-session` e o filho da sessão Claude cada um executam em seu próprio grupo de processos POSIX, separado do runner, portanto os mecanismos de parada os alcançam de forma diferente:

406 

407* **Um `SIGTERM` enquanto o runner já está drenando**: força a saída do runner imediatamente, pulando o que resta do caminho de drenagem. Sem [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal), esse é o segundo `SIGTERM` que o runner recebe. Nada sinaliza um hook `post-session` em execução no meio, portanto em um host simples onde um processo init adota órfãos, ele termina por conta própria, mas sem supervisão: seu orçamento de tempo limite não se aplica mais, e uma escrita no pipe de log fechado pode matá-lo com `SIGPIPE`, portanto um hook que precisa sobreviver a uma saída forçada lá deve redirecionar sua própria saída para um arquivo. Nas receitas de contêiner nesta página, o runner é o PID 1 do contêiner e sua saída encerra o contêiner, e sob o padrão `KillMode=control-group` do systemd, a morte em nível de cgroup atinge o hook também, conforme a entrada **Cgroup-wide kills** descreve; em ambos, trate uma saída forçada como fatal para o hook e confie no período de carência.

408* **Sinais em nível de grupo de processos**, como `kill -- -<pid>` em um script wrapper, controle de trabalho de shell ou um watchdog em nível de grupo: alcançam o runner e um subprocesso de hook `checkout` no meio, que permanece anexado ao grupo deliberadamente, mas não um hook `post-session` em execução no meio ou o filho da sessão.

409* **Mortes em nível de cgroup**, como o padrão `KillMode=control-group` do systemd ou o `SIGKILL` que o Kubernetes entrega para todo o contêiner quando `terminationGracePeriodSeconds` expira: alcançam tudo, incluindo o hook. O isolamento de grupo de processos não protege contra esses, razão pela qual o período de carência deve cobrir o caminho de drenagem completo.

410* **O tempo limite próprio do hook**: quando um hook excede `--post-session-hook-timeout-sec`, o runner envia `SIGTERM` para todo o grupo de processos do hook, depois `SIGKILL` dois segundos depois, portanto um worker que o hook bifurcou, como tar, rsync ou git, termina com o shell wrapper em vez de sobreviver como um órfão. A supervisão do runner termina uma vez que o stdio do hook fecha: um worker que redirecionou sua própria saída para um arquivo e sobrevive ao estágio `SIGTERM` está além do alcance do runner.

411 

412Quando a drenagem começa, e novamente em uma saída forçada, o runner registra quantos hooks `post-session` ainda estão em execução, portanto você pode distinguir uma drenagem silenciosa de uma que está no meio de um snapshot.

413 

414<h2 id="keep-the-base-directory-and-capacity-identical-across-runners">

415 Mantenha o diretório base e a capacidade idênticos entre runners

416</h2>

417 

418Se um runner morre no meio de uma sessão, o servidor refileira a sessão e outro runner no ambiente a pega. Esse runner deriva o caminho de checkout de seu próprio `--base-dir` e `--capacity`: `--capacity 1` faz checkout diretamente sob `--base-dir`, e um `--capacity` acima de `1` usa worktrees por sessão em vez disso. Quando runners no mesmo ambiente usam valores diferentes para qualquer sinalizador, o diretório de trabalho da sessão retomada muda, e caminhos absolutos que o agente registrou anteriormente, em edições, chamadas de ferramentas, ou suas próprias notas, apontam para um local que não existe mais.

419 

420Use o mesmo `--base-dir` e `--capacity` em cada runner em um ambiente, e não use um valor por host, como um ID de instância ou nome do host.

421 

422O diretório base padrão é `/workspace`, com a exceção que a linha de referência [`--base-dir`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) registra. O runner precisa de acesso de escrita a ele. Na inicialização, antes de se registrar, o runner cria o diretório e confirma que pode escrever nele, e sai com `cannot create or write to base directory` quando não pode. Um runner iniciado como root cria o `/workspace` padrão em si. Para um runner não-root, crie o diretório e dê ao usuário do runner a propriedade antes de iniciar o runner, ou aponte `--base-dir` para um diretório que esse usuário já possui.

423 

424<h2 id="reuse-a-pre-warmed-checkout">

425 Reuse a pre-warmed checkout

426</h2>

427 

428Para repositórios grandes, o clone pode dominar a inicialização da sessão. Em `--capacity 1` sem um [hook `checkout`](/docs/pt/self-hosted-environments-configuration#checkout), o runner mantém um clone canônico por repositório em `<base-dir>/<repo-owner>/<repo>` e o reutiliza entre sessões: ele busca a ref solicitada, destaca `HEAD`, e redefine duramente para ela, o que é quase instantâneo quando pouco mudou. Para pular o clone frio, forneça o clone de uma de duas maneiras:

429 

430* **Clone na imagem**: construa o clone em sua imagem de runner naquele caminho. Cada contêiner fresco então começa com o clone quente sem reutilizar um disco.

431* **Clone em um volume persistente**: em runners que você pré-bloqueia para a conta de um usuário com [`--lock-to-account`](/docs/pt/self-hosted-environments-reference#runner-cli-flags), aponte `--base-dir` para um volume persistente, para que o disco apenas sirva essa conta. Um runner pré-bloqueado nunca pega sessões de canal Claude Tag, então essa opção não se aplica a runners que as servem.

432 

433O que o caminho de reutilização faz e não garante:

434 

435* **Qualquer forma de clone funciona**: um clone completo, raso, ou de um único branch no caminho é usado como está. O runner nunca passa `--depth` ao buscar em um clone existente, então um pré-aquecimento completo mantém seu histórico completo e um raso permanece raso. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, ou um número; padrão 50) controla apenas o clone frio que o runner faz quando nenhum clone existe ainda.

436* **Mudanças rastreadas redefinem, arquivos não rastreados persistem**: cada sessão começa a partir de uma redefinição dura que limpa as modificações rastreadas da sessão anterior, mas o runner nunca executa `git clean`, então arquivos não rastreados das sessões anteriores do owner bloqueado permanecem na árvore.

437* **Com o proxy git, a redefinição se torna um checkout**: com [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), o runner sanitiza o `.git/` do clone antes de cada sessão, mantendo o armazenamento de objetos, refs, e estado raso, mas deletando o índice, então cada sessão paga um checkout de árvore de trabalho completo em vez de uma redefinição quase instantânea; ainda nunca re-clona. Pré-aquecimentos de submódulo não são suportados sob o proxy.

438* **Clones longos não precisam de workaround**: o runner limita cada operação git com um watchdog de 120 segundos sem progresso e um limite duro de 30 minutos, não um tempo limite fixo, então um clone frio lento que continua relatando progresso é concluído.

439 

440<h2 id="pin-the-version">

441 Pin the version

442</h2>

443 

444Cada processo filho Claude Code da sessão executa o próprio binário do runner, e o runner desativa auto-update dentro das sessões que gera, então cada sessão executa a versão que você instalou no host ou construiu na imagem. Uma atualização no nível do host entra em vigor na próxima vez que o runner inicia.

445 

446* **Para manter uma frota em uma versão**: construa a imagem com uma versão fixada, ou em um host nu instale uma versão específica e [desabilite auto-updates](/docs/pt/setup#disable-auto-updates)

447* **Para atualizar**: instale a versão mais recente ou reconstrua a imagem, depois reinicie os runners

448* **Plugins**: marketplaces de plugin também não auto-atualizam; defina `FORCE_AUTOUPDATE_PLUGINS=1` no ambiente do runner para deixar plugins auto-atualizarem enquanto o binário permanece fixado

449 

450<h2 id="scale-the-fleet">

451 Scale the fleet

452</h2>

453 

454Seu orquestrador decide quando adicionar ou remover runners. Por causa do [bloqueio de um owner por runner](/docs/pt/self-hosted-environments#runner-lifecycle), a contagem mínima de réplicas é o número de usuários e agentes Claude Tag que você espera estar ativos simultaneamente; `--capacity` controla paralelismo dentro das sessões de um owner, não entre owners.

455 

456Duas abordagens de dimensionamento estão disponíveis:

457 

458* **Frota fixa**: execute um conjunto estático de réplicas de runner e dimensione nas [métricas Prometheus](/docs/pt/self-hosted-environments-reference#prometheus-metrics) que cada runner serve

459* **Runners sob demanda**: execute o subcomando `claude self-hosted-runner orchestrator`, que faz polling na Anthropic para sessões que estão enfileiradas sem runner disponível e invoca seu hook `spawn-runner` para iniciar um por sessão. Consulte [Runners sob demanda](/docs/pt/self-hosted-environments-configuration#on-demand-runners).

460 

461<h2 id="known-issues-and-limitations">

462 Problemas conhecidos e limitações

463</h2>

464 

465As seguintes são as limitações nesta versão, com workarounds onde um existe.

466 

467<h3 id="connector-traffic-leaves-your-network">

468 Tráfego de conector sai de sua rede

469</h3>

470 

471A Anthropic chama ferramentas de conector a partir de sua própria infraestrutura em vez de seu runner. Ferramentas de conector são os conectores claude.ai, como GitHub, Slack e Linear. Quando Claude usa um conector em uma sessão auto-hospedada, esse tráfego passa por `api.anthropic.com` em vez de originar dentro do seu limite de rede.

472 

473Para manter um conector fora de sessões auto-hospedadas, filtre-o com as [configurações de política `allowedMcpServers` e `deniedMcpServers`](/docs/pt/managed-mcp#policy-based-control-with-allowlists-and-denylists). Claude Code aplica essas configurações aos conectores que a Anthropic entrega bem como aos servidores que você configura a partir do host do runner e aos servidores que os usuários adicionam, então se você implantar uma lista de permissões para outros servidores, Claude Code bloqueia conectores entregues também. Para manter conectores disponíveis ao lado de uma lista de permissões baseada em URL, adicione entradas que correspondam aos caminhos de proxy da Anthropic para conectores entregues:

474 

475* `https://api.anthropic.com/v2/ccr-sessions/*`

476* `https://api.anthropic.com/v1/code/sessions/*`

477* `https://api.anthropic.com/v1/code/mcp/*`

478 

479Se o tráfego de ferramentas deve permanecer dentro de sua rede, execute as ferramentas equivalentes como servidores MCP locais na imagem do runner em vez disso. Consulte [Servidores MCP](/docs/pt/self-hosted-environments-configuration#mcp-servers).

480 

481<h3 id="some-sessions-don’t-count-as-idle">

482 Algumas sessões não contam como ociosas

483</h3>

484 

485Uma sessão mantendo uma tarefa de fundo que nunca termina não conta como ociosa, então `--release-idle-session-min` não liberará o slot dessa sessão. Uma sessão que está aguardando uma aprovação solicitada de dentro de uma chamada de ferramenta em execução também não conta como ociosa. Sempre defina `--kill-session-after-min` ao lado dela como um backstop duro para que nenhuma sessão possa manter um slot indefinidamente.

486 

487`--kill-session-after-min` é um backstop para sessões descontroladas. Em um runner na v2.1.260 ou posterior, uma sessão que atinge o limite não é encerrada imediatamente. O runner oferece uma janela de graça, 15 minutos por padrão, que você pode alterar com [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](/docs/pt/self-hosted-environments-reference#environment-variable-only-settings):

488 

489* Se a sessão está aguardando seu usuário, ou sua vez terminou e ela mantém apenas tarefas de fundo, o runner a libera imediatamente. A sessão retoma quando seu usuário envia sua próxima mensagem.

490* Se uma vez ainda está em execução, o runner aguarda a vez terminar, ou para a sessão aguardar seu usuário em seguida, e então a libera.

491* Se a sessão ainda estiver no runner quando a janela de graça terminar, o runner a encerra, e qualquer trabalho de uma vez em execução é perdido. Uma vez aguardando uma aprovação solicitada de dentro de uma chamada de ferramenta em execução é uma maneira de uma sessão ultrapassar a janela.

492 

493Uma sessão liberada retoma de um clone fresco, então o trabalho que ela não tinha enviado se foi de qualquer forma; consulte [Sessões retomadas perdem trabalho não enviado](#additional-limitations). Antes da v2.1.260, o runner encerrava cada sessão no limite, após aguardar no máximo a janela de graça para uma vez em execução terminar.

494 

495Defina o sinalizador acima de sua sessão mais longa esperada, como `--kill-session-after-min 480` para 8 horas. Para liberar slots de conversas que ficam ociosas, use `--release-idle-session-min` em vez disso.

496 

497<h3 id="additional-limitations">

498 Limitações adicionais

499</h3>

500 

501* **Sessões retomadas perdem trabalho não enviado**: quando uma sessão é liberada ou seu runner é reiniciado, e o usuário envia outra mensagem, a sessão retoma em um runner fresco que clona o repositório novamente de seu branch inicial, então o trabalho que a sessão não tinha enviado se foi. Defina [`--push-outcome-on-release`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) para que o runner faça um push de melhor esforço dos branches de resultado da sessão antes de liberá-la, para que a sessão retomada comece a partir desses commits em vez disso; isso preserva trabalho confirmado, não uma árvore de trabalho suja. Antes de habilitá-lo, restrinja quem pode fazer push para refs `claude/*` no remoto de origem, por exemplo com um ruleset de branch: na retomada, o runner busca o branch previamente enviado sem verificar quem o enviou, então qualquer pessoa com acesso de push para essas refs pode colocar conteúdo no workspace retomado. O runner também descarta configuração por sessão na retomada, significando o diretório de configuração Claude da sessão e qualquer estado de shell que a sessão escreveu; `--push-outcome-on-release` não cobre esses.

502* **Repositórios privados não podem ser adicionados no meio da sessão**: um repositório adicionado a uma sessão após ela ter iniciado não é clonado com credenciais em um runner auto-hospedado, então a adição falha. Selecione cada repositório que a sessão precisa quando você a cria.

503* **Alguns conectores não aparecem em sessões auto-hospedadas**: um conector que você ainda não conectou nas Configurações do claude.ai não está listado em uma sessão auto-hospedada, e a sessão não o solicitará para conectar. Conecte-o nas Configurações primeiro, depois inicie uma sessão fresca. Adicionar um conector a uma sessão já em execução também não torna suas ferramentas disponíveis para Claude; inicie uma sessão fresca para pegar um conector recém-adicionado.

504 

505<h3 id="report-an-issue">

506 Relatar um problema

507</h3>

508 

509Para problemas com ambientes auto-hospedados, entre em contato com sua equipe de conta Anthropic.

510 

511<h2 id="troubleshooting">

512 Troubleshooting

513</h2>

514 

515Para diagnóstico orientado, execute o subcomando doctor no host do runner. O subcomando doctor inicia uma sessão interativa do Claude Code com os logs e o estado do runner anexados. Faça login com `claude auth login` nesse host primeiro para que a sessão possa consultar seu ambiente, seus runners e suas sessões enfileiradas. Sem esse login, por exemplo quando o host se autentica com uma chave de API, fica limitado ao endpoint de saúde local, métricas e ao log do runner, e lê o log apenas se você iniciou o runner com `--log-file`.

516 

517```bash theme={null}

518claude self-hosted-runner doctor

519```

520 

521Problemas comuns:

522 

523* **Runner não aparece no ambiente**: confirme que o host pode alcançar `api.anthropic.com` via HTTPS, o segredo do ambiente está atual e o relógio do host está dentro de cinco minutos da hora real; desvios maiores causam falha na autenticação. O runner registra `[runner:fatal]` com o motivo da rejeição em caso de falha de autenticação.

524* **Runner sai na inicialização com `cannot create or write to base directory`**: o runner não consegue criar ou escrever em `--base-dir`, que padrão é `/workspace`. Corrija a propriedade do diretório ou aponte `--base-dir` para um caminho gravável, conforme descrito em [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Se o runner registrar `[runner:fatal]` dizendo que a verificação do diretório base expirou, o diretório está em uma montagem NFS ou CSI travada. Verifique a saúde da montagem em vez de permissões. O runner imprime ambas essas falhas de inicialização para stderr antes de abrir `--log-file`, então procure por elas no terminal ou nos logs do contêiner da sua plataforma em vez do arquivo de log. Antes da v2.1.225, o runner não verificava o diretório base na inicialização, e essa configuração incorreta falhava nas sessões após a coleta.

525* **Sessions stay queued**: cada runner online pode estar bloqueado para um proprietário diferente. Verifique a métrica `claude_code_self_hosted_runner_locked_account` [metric](/docs/pt/self-hosted-environments-reference#prometheus-metrics) de cada runner ou o campo `locked_account` de sua linha de log `[runner:health]` para ver quem a mantém. Ambos mostram o email do proprietário apenas depois que o runner recebeu um token de sessão com uma reivindicação `act.email`, que as sessões de um agente Claude Tag nunca fazem. Sem a reivindicação, o runner não emite nenhuma série `locked_account` e registra `locked_account=yes`, o que informa que o runner está bloqueado, mas não para qual proprietário. Adicione réplicas ou aguarde um runner existente drenar e reiniciar. Se o ambiente usar runners sob demanda, verifique o orquestrador; consulte [On-demand runners](/docs/pt/self-hosted-environments-configuration#on-demand-runners).

526* **Sessions fail immediately after pickup**: abra a sessão em claude.ai/code para ver o erro. As causas mais comuns são [git credentials](#configure-git) ausentes na imagem do runner e ferramentas de compilação que não estão instaladas. Um diretório base não gravável interrompe o runner na inicialização em vez de falhar nas sessões. Consulte a entrada **Runner sai na inicialização com `cannot create or write to base directory`** nesta lista.

527* **Sessions can't reach the network through an authenticating egress proxy**: quando a fonte que você definiu com [`--proxy-authorization-command` ou `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) falha, expira após 30 segundos ou produz um valor vazio, o runner responde essa conexão com `502 Bad Gateway` e registra o motivo. O runner redige o stderr do comando nesse log e nunca registra o valor do cabeçalho. Com `--proxy-authorization-command`, execute o comando você mesmo no host para confirmar que ele imprime o valor do cabeçalho inteiro em stdout. Se o runner sair na inicialização com `could not start the proxy-authorization listener`, ele não conseguiu abrir seu listener de loopback.

528* **Runner logs `Poll failed` lines containing `rejecting the malformed poll response`**: o runner recebeu uma resposta de work-poll cujo corpo não é o JSON esperado da fila, na maioria das vezes porque algo entre o runner e `api.anthropic.com`, como um proxy interceptador ou um portal cativo, respondeu com sua própria página. O runner rejeita a resposta, a conta sob o tipo `transport` da métrica `claude_code_self_hosted_runner_poll_errors_total` [metric](/docs/pt/self-hosted-environments-reference#prometheus-metrics), e tenta novamente no cronograma de falha de pesquisa descrito em [Session lifecycle](/docs/pt/self-hosted-environments#session-lifecycle). O runner continua servindo suas sessões ativas. Configure o proxy para passar respostas de `api.anthropic.com` inalteradas. Antes da v2.1.246, o runner lia tal resposta como uma fila de trabalho vazia, o que poderia encerrar suas sessões ativas ou fazer com que saísse.

529* **A session's branch no longer exists on the remote**: para uma fonte git que a sessão apenas lê, o runner pula essa fonte e continua nas restantes. Para a fonte para a qual a sessão envia resultados, uma ramificação excluída, normalmente porque foi mesclada e auto-excluída, falha na sessão com um erro nomeando o repositório e a ramificação e pedindo que você restaure a ramificação e tente novamente. O runner falha na sessão com o mesmo erro quando pular deixaria sem nenhum repositório. Antes da v2.1.228, tal sessão começava em um diretório vazio.

530* **Sessions take minutes to start**: o clone inicial geralmente domina. Observe a métrica `claude_code_self_hosted_runner_session_init_duration_seconds` [metric](/docs/pt/self-hosted-environments-reference#prometheus-metrics) para confirmar e corte o clone com um [pre-warmed checkout](#reuse-a-pre-warmed-checkout) ou um `CLAUDE_RUNNER_FETCH_DEPTH` menor.

531* **Pod is killed mid-drain**: aumente `terminationGracePeriodSeconds` para pelo menos o valor que o runner registra na inicialização. Consulte [Shutdown timing](#shutdown-timing).

532 

533Depois que o logging é inicializado, o runner escreve seu log de ciclo de vida, incluindo linhas `[runner:fatal]`, para stdout, e saída de depuração para stderr, tudo como linhas de texto simples em vez de JSON. As falhas de inicialização descritas nas entradas de troubleshooting acima são impressas em stderr antes desse ponto. Capture ambos os fluxos com `--log-file`, que também permite que `self-hosted-runner doctor` os acompanhe, ou com a coleta de logs da sua plataforma. O processo filho de cada sessão escreve um log de depuração separado. Em caso de falha, o runner preserva o log, imprime o caminho do log no log do runner e exibe a cauda do log junto com a sessão em claude.ai/code.

534 

535<h2 id="what’s-next">

536 O que vem a seguir

537</h2>

538 

539* [Customize sessions](/docs/pt/self-hosted-environments-configuration): wrapper scripts, lifecycle hooks, on-demand runners, MCP servers, and permissions

540* [Test end to end](/docs/pt/self-hosted-environments-testing): verify a new runner image from CI before promoting it

541* [Reference](/docs/pt/self-hosted-environments-reference): every CLI flag, environment variable, and metric

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Verificar identidade de sessão em ambientes auto-hospedados

6 

7> Verifique o JWT CLAUDE_CODE_SESSION_ACCESS_TOKEN para que os serviços em sua rede possam confiar em solicitações de sessões em seu ambiente auto-hospedado.

8 

9<Note>

10 Ambientes auto-hospedados estão em beta pública em planos Team e Enterprise; um [Owner](/docs/pt/cloud-environments#organization-shared-environments) os habilita ativando **Allow self-hosted environments** na [página de administração **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). Esta página aborda verificação de identidade de sessão; consulte o [quickstart](/docs/pt/self-hosted-environments-quickstart) para configuração e [Deploy to production](/docs/pt/self-hosted-environments-deploy) para as receitas de frota.

11</Note>

12 

13Um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) permite que sessões do [Claude Code na web](/docs/pt/claude-code-on-the-web) sejam executadas em infraestrutura que você opera em vez de na Anthropic. Como a sessão é executada dentro de sua rede, Claude pode chamar seus serviços internos diretamente. Esses serviços precisam de uma forma de confirmar que uma solicitação veio de uma sessão Claude Code em seu ambiente e de identificar a identidade do usuário ou serviço que criou essa sessão.

14 

15Cada sessão em um ambiente auto-hospedado recebe um JSON Web Token (JWT) assinado na variável de ambiente `CLAUDE_CODE_SESSION_ACCESS_TOKEN`. Uma sessão apresenta o token como qualquer credencial de portador; por exemplo, um script que Claude executa pode chamar seu serviço com `curl -H "Authorization: Bearer $CLAUDE_CODE_SESSION_ACCESS_TOKEN"`. Anthropic assina o token e publica as chaves de verificação em um endpoint JWKS público. Seus serviços buscam essas chaves, verificam a assinatura e leem as declarações para decidir qual acesso conceder.

16 

17<h2 id="the-session-token">

18 O token de sessão

19</h2>

20 

21Antes de escrever código de verificação, saiba o que o token estabelece e a forma que sua biblioteca JWT verá.

22 

23<h3 id="what-the-token-proves">

24 O que o token prova

25</h3>

26 

27Um token válido estabelece alguns fatos e deliberadamente não estabelece outros:

28 

29* **Prova**: Anthropic emitiu o token para uma sessão específica em um ambiente específico, e como a sessão foi criada: por um usuário em sua organização, ou pela identidade de serviço de sua organização, que é como [sessões de canal Claude Tag](https://claude.com/docs/claude-tag/concepts/agent-identity) começam

30* **Não prova**: qual processo no host do runner o apresenta. O token fica em uma variável de ambiente dentro da sessão, portanto qualquer código que Claude executa e qualquer ferramenta ou servidor MCP que a sessão inicia pode lê-lo e apresentá-lo.

31 

32Duas consequências para seus serviços:

33 

34* Verifique a declaração `aud` contra seu ID de ambiente, o valor `ccpool_...` mostrado com seu ambiente na [página de administração **Cloud environments**](https://claude.ai/admin-settings/cloud-environments), para rejeitar tokens emitidos para o ambiente de qualquer outra organização.

35* Escope as credenciais que você deriva do token para o que uma única sessão de codificação deve ser capaz de fazer, não para tudo que o criador da sessão pode fazer. Consulte [Escopo de credenciais derivadas](#scope-derived-credentials).

36 

37<h3 id="token-format">

38 Formato do token

39</h3>

40 

41O valor de `CLAUDE_CODE_SESSION_ACCESS_TOKEN` tem um prefixo `sk-ant-cc-` seguido por um JWT padrão de três partes:

42 

43```text theme={null}

44sk-ant-cc-<base64url header>.<base64url payload>.<base64url signature>

45```

46 

47Remova o prefixo antes de passar o valor para uma biblioteca JWT. Tokens emitidos para sessões de nuvem hospedadas pela Anthropic carregam um prefixo `sk-ant-si-` em vez disso e são assinados por um conjunto de chaves diferente, portanto rejeite qualquer valor que não comece com `sk-ant-cc-`.

48 

49O algoritmo de assinatura é `ES256`, que é ECDSA na curva P-256 com SHA-256. O cabeçalho do token carrega um `kid` que identifica qual chave no JWKS o assinou.

50 

51<h2 id="verify-the-token">

52 Verificar o token

53</h2>

54 

55A verificação é executada em um de dois lugares. Serviços em sua rede verificam o token criptograficamente contra as chaves publicadas pela Anthropic, e scripts de wrapper dentro da sessão podem usar o decodificador integrado do binário do runner.

56 

57<h3 id="verify-the-token-from-your-service">

58 Verificar o token de seu serviço

59</h3>

60 

61Anthropic publica as chaves de verificação em um endpoint público e não autenticado:

62 

63```text theme={null}

64https://api.anthropic.com/v1/code/.well-known/jwks.json

65```

66 

67A resposta é um [JSON Web Key Set](https://www.rfc-editor.org/rfc/rfc7517) padrão. Anthropic rotaciona as chaves de assinatura periodicamente, e as chaves anteriores a uma rotação permanecem no conjunto tempo suficiente para que os tokens que assinaram continuem a verificar, portanto não fixe uma única chave. O endpoint define `Cache-Control: public, max-age=300`, portanto armazenar em cache o conjunto de chaves e refazer a busca a cada cinco minutos é seguro.

68 

69Verifique cada token de entrada contra estas verificações:

70 

71<Steps>

72 <Step title="Verificar o prefixo">

73 Rejeite o valor se não começar com `sk-ant-cc-`, depois remova esse prefixo. O restante é um JWT compacto padrão.

74 </Step>

75 

76 <Step title="Verificar a assinatura">

77 Busque o JWKS, selecione a chave cujo `kid` corresponde ao cabeçalho do token e verifique a assinatura `ES256`. Rejeite tokens cujo cabeçalho `alg` não é `ES256`. Se um token chegar com um `kid` que não está em seu conjunto de chaves em cache, refaça a busca do JWKS uma vez antes de rejeitá-lo: após uma rotação, novos tokens são assinados com uma chave que seu conjunto em cache ainda não possui.

78 </Step>

79 

80 <Step title="Verificar o emissor">

81 Rejeite o token se `iss` não for exatamente `ccr`.

82 </Step>

83 

84 <Step title="Verificar a audiência contra seu ambiente">

85 A declaração `aud` é uma matriz. Rejeite o token a menos que contenha seu ID de ambiente, que tem a forma `ccpool_...`. O ID do ambiente é mostrado no diálogo de detalhes do seu ambiente na [página de administração **Cloud environments**](https://claude.ai/admin-settings/cloud-environments), e aparece como a declaração `ccr:pool_id` em qualquer um dos tokens de sessão do ambiente. Esta verificação é o que escopa o token para seu ambiente e rejeita tokens emitidos para outras organizações.

86 </Step>

87 

88 <Step title="Verificar a função">

89 Rejeite o token se `ccr:role` não for exatamente `session_worker`. Outros tokens emitidos para ambientes auto-hospedados, como segredos de ambiente, tokens de runner e ordens de trabalho, são assinados pelo mesmo conjunto de chaves, mas carregam funções diferentes.

90 </Step>

91 

92 <Step title="Verificar expiração">

93 Rejeite o token se `exp` estiver no passado. Anthropic emite tokens de sessão com um tempo de vida padrão de quatro horas e um máximo de oito horas. O runner atualiza o token antes da expiração e envia o novo valor para a sessão, portanto os subprocessos que Claude inicia após uma atualização o herdam. Uma sessão pode, portanto, apresentar vários tokens válidos distintos ao seu serviço ao longo de sua vida útil.

94 </Step>

95 

96 <Step title="Ler a identidade">

97 A identidade do usuário criador está na declaração `act`: `act.sub` é seu ID de usuário Anthropic no formulário prefixado `user:<id>`, e `act.email`, quando a superfície criadora registrou um, é seu endereço de email. Sessões que a identidade de serviço de sua organização cria, incluindo sessões de canal Claude Tag, carregam um assunto `agent:` em vez disso, portanto trate uma sessão como criada pelo usuário apenas quando `act.sub` carrega o prefixo `user:`, em vez de testar se as declarações de identidade estão ausentes. Consulte a [referência de declarações](#claims-reference) para a estrutura completa e as declarações duplicadas simples.

98 </Step>

99</Steps>

100 

101As verificações mapeiam diretamente para bibliotecas JWT padrão. Os exemplos abaixo implementam a sequência completa em Node.js com [`jose`](https://www.npmjs.com/package/jose), que lida com busca de JWKS, armazenamento em cache e seleção de `kid`, e em Python com [`PyJWT`](https://pyjwt.readthedocs.io/) e seu cliente JWKS integrado.

102 

103<Tabs>

104 <Tab title="Node.js (jose)">

105 ```typescript theme={null}

106 import { createRemoteJWKSet, jwtVerify } from "jose";

107 

108 const JWKS = createRemoteJWKSet(

109 new URL("https://api.anthropic.com/v1/code/.well-known/jwks.json")

110 );

111 

112 const PREFIX = "sk-ant-cc-";

113 const EXPECTED_POOL_ID = "ccpool_...";

114 

115 export async function verifySessionToken(raw: string) {

116 if (!raw.startsWith(PREFIX)) {

117 throw new Error("not a self-hosted runner session token");

118 }

119 const jwt = raw.slice(PREFIX.length);

120 

121 const { payload } = await jwtVerify(jwt, JWKS, {

122 issuer: "ccr",

123 audience: EXPECTED_POOL_ID,

124 algorithms: ["ES256"],

125 });

126 

127 if (payload["ccr:role"] !== "session_worker") {

128 throw new Error("token is not a session_worker token");

129 }

130 

131 const act = payload.act as { email?: string; sub?: string };

132 return {

133 sessionId: payload["ccr:session_id"] as string,

134 poolId: payload["ccr:pool_id"] as string,

135 orgId: payload["ccr:org_id"] as string,

136 creatorEmail: act?.email,

137 creatorSub: act?.sub,

138 };

139 }

140 ```

141 </Tab>

142 

143 <Tab title="Python (PyJWT)">

144 ```python theme={null}

145 import jwt

146 from jwt import PyJWKClient

147 

148 JWKS_URL = "https://api.anthropic.com/v1/code/.well-known/jwks.json"

149 PREFIX = "sk-ant-cc-"

150 EXPECTED_POOL_ID = "ccpool_..."

151 

152 jwks = PyJWKClient(JWKS_URL)

153 

154 

155 def verify_session_token(raw: str) -> dict:

156 if not raw.startswith(PREFIX):

157 raise ValueError("not a self-hosted runner session token")

158 token = raw.removeprefix(PREFIX)

159 

160 signing_key = jwks.get_signing_key_from_jwt(token)

161 payload = jwt.decode(

162 token,

163 signing_key.key,

164 algorithms=["ES256"],

165 issuer="ccr",

166 audience=EXPECTED_POOL_ID,

167 )

168 

169 if payload.get("ccr:role") != "session_worker":

170 raise ValueError("token is not a session_worker token")

171 

172 act = payload.get("act") or {}

173 return {

174 "session_id": payload["ccr:session_id"],

175 "pool_id": payload["ccr:pool_id"],

176 "org_id": payload["ccr:org_id"],

177 "creator_email": act.get("email"),

178 "creator_sub": act.get("sub"),

179 }

180 ```

181 </Tab>

182</Tabs>

183 

184<h3 id="verify-the-token-inside-the-session">

185 Verificar o token dentro da sessão

186</h3>

187 

188[Scripts de wrapper](/docs/pt/self-hosted-environments-configuration#wrapper-scripts) são executados dentro da sessão, antes de Claude começar. Em vez de chamar uma biblioteca JWT, eles podem executar o subcomando `self-hosted-runner decode-token` do binário do runner. O subcomando lê o token de um argumento posicional, de `CLAUDE_CODE_SESSION_ACCESS_TOKEN` ou de stdin canalizado, nessa ordem, depois remove o prefixo, verifica a assinatura contra o endpoint JWKS, verifica expiração e imprime as declarações como JSON. O subcomando executa apenas as verificações de assinatura e expiração; não verifica `iss`, `aud` ou `ccr:role`. Quando a decisão de autenticação do seu wrapper depende dessas declarações, leia-as do JSON impresso e compare-as explicitamente.

189 

190Este comando extrai a identidade do criador, preferindo o assunto do provedor SSO, depois o endereço de email, depois o assunto `act.sub` do criador, `user:<id>` ou `agent:<id>`:

191 

192```bash theme={null}

193"$CLAUDE_RUNNER_CLAUDE_BIN" self-hosted-runner decode-token | jq -re '.act.attested_by.sub // .act.email // .act.sub'

194```

195 

196Wrappers recebem o caminho absoluto para o binário do próprio runner em `CLAUDE_RUNNER_CLAUDE_BIN`; use esse caminho em vez de um `claude` resolvido por PATH para que a decodificação seja executada no mesmo binário que o runner usa.

197 

198Use `jq -re` em vez de `jq -r` para que uma declaração ausente cause uma saída diferente de zero. Com apenas `-r`, uma declaração ausente imprime a string literal `null` e sai com zero, o que silenciosamente passa um valor ruim para jusante. Passe `--no-verify` para `decode-token` apenas para inspeção offline onde o endpoint JWKS está inacessível.

199 

200<h2 id="claims-reference">

201 Referência de declarações

202</h2>

203 

204A tabela abaixo lista as declarações de token de sessão relevantes para verificação. Leia a identidade do namespace `ccr:*` e da cadeia `act`; as declarações simples `account_email`, `organization_uuid` e `account_uuid` são duplicatas de compatibilidade com versões anteriores que podem ser removidas. Sessões que a identidade de serviço de sua organização cria, incluindo sessões de canal Claude Tag, carregam um assunto `agent:` em `act.sub` e omitem `act.email`, `ccr:account_id`, `account_email` e `account_uuid`. As duas declarações de email também são opcionais para sessões criadas pelo usuário: Anthropic as registra na criação da sessão apenas quando as credenciais da solicitação criadora carregam um email, e uma sessão despachada da CLI pode carecer de ambas, portanto baseie a identidade em `act.sub` ou `ccr:account_id` em vez de email. Tokens também podem carregar declarações adicionais além desta tabela; ignore declarações que você não reconheça.

205 

206| Declaração | Tipo | Descrição |

207| :------------------ | :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

208| `iss` | string | Sempre `ccr`. |

209| `sub` | string | `ccr:session:<session_id>`. |

210| `aud` | matriz de strings | Sempre contém `anthropic-api`. Para sessões em ambientes auto-hospedados, a matriz também contém seu ID de ambiente, como `ccpool_...`. Verifique o ID do ambiente, não `anthropic-api`. |

211| `exp` | número | Expiração como um timestamp Unix. Tempo de vida padrão de quatro horas, máximo de oito horas. |

212| `iat` | número | Emitido em como um timestamp Unix. |

213| `jti` | string | Identificador de token único. |

214| `ccr:role` | string | Sempre `session_worker` para tokens de sessão. |

215| `ccr:session_id` | string | O ID da sessão. Mesmo valor que o sufixo de `sub`. |

216| `ccr:pool_id` | string | Seu ID de ambiente. Mesmo valor que aparece em `aud`. |

217| `ccr:org_id` | string | Seu ID de organização Anthropic. |

218| `ccr:account_id` | string | O ID de conta Anthropic do usuário criador: o valor de `act.sub` sem o prefixo `user:`, um ID marcado `user_...`. O mesmo valor que o [`spawn-runner` hook](/docs/pt/self-hosted-environments-configuration#the-spawn-runner-hook) carrega em `CLAUDE_RUNNER_ACCOUNT_ID` e [`--lock-to-account`](/docs/pt/self-hosted-environments-reference#runner-cli-flags) aceita, portanto os três se comparam como strings iguais. |

219| `account_email` | string | Duplicata de `act.email`; ausente sempre que `act.email` está. |

220| `organization_uuid` | string | Seu UUID de organização Anthropic. |

221| `account_uuid` | string | O UUID de conta Anthropic do usuário criador. |

222| `act` | objeto | Cadeia de delegação [RFC 8693](https://www.rfc-editor.org/rfc/rfc8693). Consulte [A cadeia `act`](#the-act-chain). |

223 

224<h3 id="the-act-chain">

225 A cadeia `act`

226</h3>

227 

228A declaração `act` registra o caminho de delegação completo da identidade do usuário ou serviço que criou a sessão até o [ambiente](/docs/pt/self-hosted-environments#key-concepts) cujo segredo admitiu o runner, e a identidade que criou esse segredo. O criador é o ator mais externo, portanto `act.sub` os identifica diretamente.

229 

230| Caminho | Descrição |

231| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

232| `act.sub` | O ID de usuário Anthropic do usuário criador, na forma `user:<id>`, ou `agent:<id>` quando a identidade de serviço de sua organização criou a sessão, como faz para sessões de canal Claude Tag. |

233| `act.email` | O endereço de email do usuário criador, quando um foi registrado na criação da sessão. Não o exija; baseie-se em `act.sub`. |

234| `act.attested_by` | O atestado do provedor de identidade upstream para o usuário criador, quando disponível. `act.attested_by.sub` é o assunto que seu provedor SSO, como Google ou Okta, emitiu. Prefira isso em vez de `act.email` ao mapear para identidades em seus próprios sistemas. |

235| `act.act` | O runner que gerou a sessão. `act.act.sub` é `ccr:runner:<runner_id>`. |

236| `act.act.act` | O ambiente. `act.act.act.sub` é `ccr:pool:<pool_id>`. |

237| `act.act.act.act` | A identidade que criou o segredo do ambiente com o qual o runner se registrou. A cadeia termina aqui. |

238 

239<h2 id="scope-derived-credentials">

240 Escopo de credenciais derivadas

241</h2>

242 

243O token de sessão identifica a identidade do usuário ou serviço que criou a sessão, mas não o trate como equivalente a esse criador fazendo login diretamente. O token fica em uma variável de ambiente dentro da sessão, portanto qualquer código que Claude executa e qualquer ferramenta ou servidor MCP que a sessão inicia pode lê-lo e apresentá-lo.

244 

245A verificação também é offline: um token que verifica contra o JWKS permanece válido até seu `exp`, seja o que for que tenha acontecido com a sessão desde então, e Anthropic não publica um feed de revogação para tokens de sessão. Vincule qualquer coisa que você derive do token de acordo.

246 

247Quando seu serviço troca o token por credenciais internas, emita credenciais escopadas para o que uma sessão de codificação deve alcançar:

248 

249* **Limitar capacidades**: conceda acesso de leitura e escrita aos recursos que a sessão precisa para tarefas de codificação, não às capacidades administrativas que o criador possui em outro lugar.

250* **Limitar tempo de vida**: vincule credenciais derivadas ao `exp` do token, ou mais curto.

251* **Auditar como a sessão**: registre `ccr:session_id` e `jti` junto com a identidade do criador para que você possa rastrear ações de volta a uma sessão específica.

252 

253<h2 id="related-environment-variables">

254 Variáveis de ambiente relacionadas

255</h2>

256 

257A identidade do criador também aparece em variáveis de ambiente simples em duas superfícies que nunca verificam o token:

258 

259* **O [hook `spawn-runner`](/docs/pt/self-hosted-environments-configuration#the-spawn-runner-hook), no orquestrador**: o hook é executado antes de qualquer runner existir para uma sessão enfileirada e recebe a identidade do criador em variáveis como `CLAUDE_RUNNER_ACCOUNT_EMAIL` e `CLAUDE_RUNNER_ACCOUNT_ID`. O orquestrador as lê da ordem de trabalho, o token de uso único assinado que autoriza a geração de um runner, sem verificar a assinatura da ordem de trabalho em si; as declarações são confiáveis porque a ordem de trabalho chega pela conexão do orquestrador com Anthropic, que o segredo do ambiente autentica.

260* **[Scripts de wrapper](/docs/pt/self-hosted-environments-configuration#wrapper-scripts), dentro da sessão**: wrappers recebem `CCR_SESSION_ACCOUNT_EMAIL`, o email do criador pré-extraído do token sem verificação de assinatura. A variável é adequada para rotulagem, como trailers de commit, não para decisões de autenticação.

261 

262Use as variáveis simples para decisões do lado do orquestrador, como selecionar uma imagem de máquina. Use `CLAUDE_CODE_SESSION_ACCESS_TOKEN` quando um serviço downstream precisa de prova criptográfica independente em vez de confiar no ambiente do runner.

263 

264<h2 id="what’s-next">

265 Próximas etapas

266</h2>

267 

268* [Ambientes auto-hospedados](/docs/pt/self-hosted-environments): o ambiente, runner e modelo de sessão; o [quickstart](/docs/pt/self-hosted-environments-quickstart) e [Deploy to production](/docs/pt/self-hosted-environments-deploy) contêm configuração e operações

269* [Personalizar sessões](/docs/pt/self-hosted-environments-configuration): scripts de wrapper que consomem o token e o hook `spawn-runner`

270* [Referência](/docs/pt/self-hosted-environments-reference): sinalizadores CLI, variáveis de ambiente e métricas

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Guia de início rápido de ambientes auto-hospedados

6 

7> Configure seu primeiro ambiente auto-hospedado: instale Claude Code, crie o ambiente, inicie um runner e roteie uma sessão para ele.

8 

9<Note>

10 Ambientes auto-hospedados estão em beta público em planos Team e Enterprise; [Disponibilidade e limitações](/docs/pt/self-hosted-environments#availability-and-limitations) cobre o caminho de habilitação. Esta página coloca sua primeira sessão em execução; consulte [Ambientes auto-hospedados](/docs/pt/self-hosted-environments) para saber o que são e [Implantar em produção](/docs/pt/self-hosted-environments-deploy) para endurecimento e receitas de frota.

11</Note>

12 

13Um [ambiente auto-hospedado](/docs/pt/self-hosted-environments) executa [sessões na nuvem](/docs/pt/claude-code-on-the-web) do Claude Code em infraestrutura que sua organização opera, executado por processos runner que você implanta. Este guia de início rápido configura seu primeiro, o menor que funciona: um runner em um único host, executando uma sessão de teste. Há duas etapas: [criar o ambiente, iniciar um runner e rotear uma sessão para ele](#set-up-an-environment-and-runner), depois [enviar uma mensagem para essa sessão a partir do seu terminal](#send-a-follow-up-message-to-a-running-session). Você se moverá entre duas superfícies: claude.ai para criar o ambiente, verificar seu status e rotear uma sessão, e um terminal no host para tudo o que o runner faz.

14 

15Ao final, você terá um ambiente na [página de administração **Cloud environments**](https://claude.ai/admin-settings/cloud-environments), um runner pesquisando por trabalho e uma sessão em execução no seu host. Antes de conectar repositórios reais ou sistemas internos, trabalhe através de [Implantar em produção](/docs/pt/self-hosted-environments-deploy), que cobre a postura de segurança, controle de egresso, credenciais git e orquestração.

16 

17<h2 id="prerequisites">

18 Pré-requisitos

19</h2>

20 

21<h3 id="organization-and-roles">

22 Organização e funções

23</h3>

24 

25O lado claude.ai precisa de:

26 

27* **Permitir ambientes auto-hospedados** ativado por um [Proprietário](/docs/pt/cloud-environments#organization-shared-environments) na [página de administração **Cloud environments**](https://claude.ai/admin-settings/cloud-environments); o botão **Novo** não aparece até que esteja. Se você não tiver a função, alguém que tiver pode criar o ambiente e passar seu segredo para você; as etapas de runner e terminal nesta página não precisam de nenhuma função claude.ai, e onde uma etapa verifica o status na interface de administração, as próprias linhas de log do runner fornecem o mesmo sinal.

28* Uma [conexão GitHub](/docs/pt/claude-code-on-the-web#github-authentication-options) para sua organização, para que os desenvolvedores possam escolher repositórios quando iniciarem sessões.

29 

30<h3 id="host-and-network">

31 Host e rede

32</h3>

33 

34O host do runner precisa de:

35 

36* Um host ou container Linux ou macOS com HTTPS de saída para `api.anthropic.com`, para `claude.ai` e os hosts de download para os quais ele redireciona para a etapa de instalação abaixo, e para seu host git para o clone; a [tabela de requisitos de rede](/docs/pt/self-hosted-environments-deploy#network-requirements) tem a lista completa. Windows não é suportado como host de runner; execute o runner em um container Linux. Estações de trabalho de desenvolvedores não são afetadas, pois as sessões começam a partir de claude.ai em um navegador.

37* Um relógio sincronizado com a hora real, por exemplo com NTP. A autenticação falha quando o relógio está mais de cinco minutos atrasado; consulte [Troubleshooting](/docs/pt/self-hosted-environments-deploy#troubleshooting).

38 

39<h3 id="software-on-the-runner-host">

40 Software no host do runner

41</h3>

42 

43Instale no host antes de começar:

44 

45* **Claude Code v2.1.224 ou posterior**, com qualquer um dos [métodos de instalação padrão](/docs/pt/setup). O runner faz parte do binário `claude` padrão, e versões anteriores não reconhecem o subcomando `self-hosted-runner`. O canal `latest` do instalador nativo padrão carrega cada versão assim que é publicada; o canal `stable`, o cask Homebrew `claude-code` e os repositórios apt, dnf e apk estáveis ficam para trás em cerca de uma semana. Para fixar a versão exata que sua frota executa, consulte [Instalar uma versão específica](/docs/pt/setup#install-a-specific-version). Para imagens de container, consulte o Dockerfile em [Implantar em produção](/docs/pt/self-hosted-environments-deploy#build-the-runner-image).

46* **Git 2.24 ou mais recente**. Algumas opções git na página de implantação precisam de versões mais recentes; [Configurar git](/docs/pt/self-hosted-environments-deploy#configure-git) declara cada limite.

47 

48Confirme que o host está pronto:

49 

50```bash theme={null}

51claude self-hosted-runner --help

52```

53 

54Um host pronto imprime o texto de uso do runner, listando sinalizadores como `--environment-secret-file`. Em versões anteriores a 2.1.224, o comando imprime a saída geral `claude --help`; atualize com `claude update` ou reinstale do canal `latest`.

55 

56<h2 id="set-up-an-environment-and-runner">

57 Configurar um ambiente e runner

58</h2>

59 

60Claude Code inclui uma configuração guiada: uma sessão Claude Code interativa que o orienta na criação do ambiente na interface de administração, inicia um runner local com o arquivo de segredo que você salva, confirma que o runner se registra e escreve uma folha de dicas em `./runner-setup/CHEAT-SHEET.md`. Execute-o em uma máquina onde você se conectou com `claude auth login` usando uma conta que possui uma função de Proprietário; não está disponível com chaves de API ou provedores de modelo de terceiros. Em hosts onde uma sessão interativa não é possível, use as etapas manuais abaixo. Confirme que a [verificação de versão](#software-on-the-runner-host) passou primeiro: em versões anteriores a 2.1.224, este comando inicia uma sessão Claude comum com as palavras como o prompt em vez da configuração guiada. Para iniciar a configuração guiada, execute o subcomando setup e siga os prompts:

61 

62```bash theme={null}

63claude self-hosted-runner setup

64```

65 

66Para configurar manualmente:

67 

68<Steps>

69 <Step title="Criar um ambiente">

70 Vá para a [página **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) nas configurações de administração. Em **Ambientes auto-hospedados**, selecione **Novo**, nomeie o ambiente e selecione **Criar**. Na segunda etapa do assistente, selecione **Copiar chave de ambiente** para copiar o segredo do ambiente, que a interface de administração rotula como uma chave de ambiente. claude.ai mostra o segredo uma vez, e você não pode recuperá-lo depois; ele expira 365 dias após a criação. O ID `ccpool_...` do ambiente permanece visível em seu diálogo de detalhes; você precisará dele para a verificação `aud` em [verificação de token](/docs/pt/self-hosted-environments-identity) e para despachar [sessões de teste a partir de CI](/docs/pt/self-hosted-environments-testing#run-the-test-loop).

71 

72 Se você perder o segredo ou precisar rotacioná-lo, crie um novo segredo na guia **Configuração** do ambiente, implante o novo segredo em seus runners e revogue o antigo. Runners que possuem um segredo revogado falham em sua próxima pesquisa autenticada e saem, registrando `poll auth failed`, e seu orquestrador os reinicia com o novo segredo.

73 </Step>

74 

75 <Step title="Iniciar um runner">

76 Crie o diretório de segredo. Esta etapa e a próxima precisam de root para o caminho `/etc/claude`; qualquer caminho que o processo runner possa ler funciona, então ajuste ambos os comandos e o valor `--environment-secret-file` juntos se você usar um diferente.

77 

78 ```bash theme={null}

79 mkdir -p /etc/claude

80 ```

81 

82 Escreva o segredo do ambiente em um arquivo. O comando abaixo lê do seu terminal para que o segredo fique fora do histórico do shell: cole o valor que você copiou, pressione Enter, depois Ctrl-D, e o `umask` do subshell torna o arquivo legível apenas por seu proprietário.

83 

84 ```bash theme={null}

85 (umask 077 && cat > /etc/claude/environment-secret)

86 ```

87 

88 Escolha um diretório base, substituindo `<writable-dir>` no comando runner abaixo por um caminho absoluto que o runner possa escrever ou criar. O runner cria o diretório na inicialização, depois verifica repositórios e cria diretórios por sessão sob ele. Sem `--base-dir` ele usa `/workspace`, que só funciona se esse diretório já existe e é gravável ou você inicia o runner como root.

89 

90 Se o runner não conseguir criar ou escrever no caminho, ele sai na inicialização com um erro nomeando o diretório em vez de se registrar. Consulte [Troubleshooting](/docs/pt/self-hosted-environments-deploy#troubleshooting).

91 

92 Depois inicie o runner com `--environment-secret-file` e `--base-dir`. O runner se registra com seu ambiente e começa a pesquisar por trabalho. Se o runner sair, reinicie-o manualmente. Implantações de produção executam o runner sob um orquestrador que reinicia runners que saíram, normalmente com um sistema de arquivos fresco por reinicialização; [Reutilizar um checkout pré-aquecido](/docs/pt/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) cobre a configuração de disco persistente suportada.

93 

94 ```bash theme={null}

95 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

96 ```

97 </Step>

98 

99 <Step title="Verificar se o runner aparece">

100 Retorne à [página **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). O status do seu ambiente muda de **Nenhum runner implantado** para **Saudável** em alguns segundos após o runner iniciar; abra o ambiente e selecione **Atividade** para ver o runner em si.

101 </Step>

102 

103 <Step title="Rotear uma sessão para o ambiente">

104 Inicie uma sessão em claude.ai/code e selecione seu ambiente no seletor de ambiente, onde ambientes auto-hospedados aparecem ao lado dos hospedados pela Anthropic. O runner clona com quaisquer credenciais git que o host já tenha, então escolha um repositório que este host já possa clonar, ou um público; as opções de credencial para repositórios privados em produção estão em [Configurar git](/docs/pt/self-hosted-environments-deploy#configure-git). O próximo runner disponível pega a sessão enfileirada e registra `Picked up session <session-id>` junto com sua contagem ativa e capacidade, para que você possa confirmar a partir da própria saída do runner qual host pegou a sessão. Observe a sessão funcionar e leia as respostas do Claude em [claude.ai/code](https://claude.ai/code). Se a sessão ficar enfileirada, consulte [Troubleshooting](/docs/pt/self-hosted-environments-deploy#troubleshooting).

105 </Step>

106</Steps>

107 

108O runner sai por design uma vez que suas sessões ativas terminam; consulte [Ciclo de vida do runner](/docs/pt/self-hosted-environments#runner-lifecycle). Para produção, implante-o sob um orquestrador que o reinicia na saída. Consulte [Implantar em produção](/docs/pt/self-hosted-environments-deploy).

109 

110<h2 id="send-a-follow-up-message-to-a-running-session">

111 Enviar uma mensagem de acompanhamento para uma sessão em execução

112</h2>

113 

114Depois que uma sessão está em execução no seu ambiente, envie um acompanhamento a partir do CLI `claude` em qualquer máquina onde você esteja conectado com `claude auth login`; o comando não precisa ser executado a partir da máquina que iniciou a sessão. O comando publica uma mensagem:

115 

116```bash theme={null}

117claude -p "your message" --cloud <session-id>

118```

119 

120Para `<session-id>`, passe o ID `session_...` ou `cse_...` simples ou a URL claude.ai/code da sessão. Um envio bem-sucedido imprime `Sent to cloud session.` com o ID da sessão e um link de visualização. Formas de ID aceitas, saída JSON, requisitos de conta e política e a referência de erro estão em [Enviar acompanhamentos a partir do CLI](/docs/pt/claude-code-on-the-web#send-follow-ups-from-the-cli), pois o comando funciona da mesma forma contra sessões hospedadas pela Anthropic.

121 

122<h2 id="what’s-next">

123 Próximos passos

124</h2>

125 

126* [Implantar em produção](/docs/pt/self-hosted-environments-deploy): endureça a implantação, controle o egresso, configure credenciais git e execute a frota sob Kubernetes ou Compose

127* [Personalizar sessões](/docs/pt/self-hosted-environments-configuration): scripts wrapper, hooks de ciclo de vida, runners sob demanda, servidores MCP e permissões

128* [Testar de ponta a ponta](/docs/pt/self-hosted-environments-testing): um teste de fumaça de CI que despacha uma sessão e lê as respostas do Claude

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Referência de ambientes auto-hospedados

6 

7> Referência completa para o executor e orquestrador auto-hospedados: sinalizadores CLI, variáveis de ambiente e métricas Prometheus.

8 

9<Note>

10 Ambientes auto-hospedados estão em beta pública em planos Team e Enterprise; um [Proprietário](/docs/pt/cloud-environments#organization-shared-environments) os habilita ativando **Permitir ambientes auto-hospedados** na [página de administração **Ambientes na nuvem**](https://claude.ai/admin-settings/cloud-environments). Esta página é a referência de sinalizadores e métricas; consulte o [guia de início rápido](/docs/pt/self-hosted-environments-quickstart) para configuração e [Implantar em produção](/docs/pt/self-hosted-environments-deploy) para as receitas de frota.

11</Note>

12 

13Esta página é a referência para os dois processos que você executa em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments): o executor, que executa [sessões na nuvem](/docs/pt/claude-code-on-the-web) do Claude Code em seus hosts, e o orquestrador de dimensionamento automático opcional, que inicia executores conforme as sessões são enfileiradas. Cada um tem sua própria tabela de sinalizadores. Ambos são executados em hosts Linux ou macOS, que os padrões como `/workspace` e `~/.claude` assumem. Execute `claude self-hosted-runner --help` para a lista autoritativa em sua versão instalada.

14 

15Séries de métricas e alguns campos de API ainda usam `pool` para o que estas páginas chamam de ambiente; ambos os termos nomeiam a mesma coisa. O ID do ambiente é o campo `pool_id`, com a forma `ccpool_...`: onde quer que estas páginas mostrem um identificador `pool`, ele nomeia o ambiente. Sinalizadores CLI e variáveis de ambiente o escrevem como `environment`, como `--environment-secret-file`; as grafias `pool` descontinuadas ainda funcionam, como a linha [`--environment-secret-file`](#runner-cli-flags) descreve.

16 

17<h2 id="runner-cli-flags">

18 Sinalizadores CLI do executor

19</h2>

20 

21A maioria dos sinalizadores tem uma variável de ambiente correspondente. Quando ambos estão definidos, o sinalizador tem precedência. Sinalizadores de duração usam minutos ou segundos na CLI, mas a variável de ambiente emparelhada está sempre em milissegundos, indicada pelo sufixo `_MS`, e a coluna Padrão mostra a unidade do sinalizador: `--exit-if-unused-min 10` é equivalente a `SELF_HOSTED_RUNNER_IDLE_SHUTDOWN_MS=600000`, e um valor Helm como `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS: "15"` significa 15 milissegundos, não o padrão de 15 minutos.

22 

23| Sinalizador | Var de ambiente | Padrão | Descrição |

24| :---------------------------------------- | :------------------------------------------------ | :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

25| `--api-url <url>` | nenhum | `https://api.anthropic.com` | URL base da API. Substitua apenas para testes. |

26| `--base-dir <path>` | `SELF_HOSTED_RUNNER_BASE_DIR` | `/workspace`; nenhum no Windows | Diretório para checkouts de repositório e diretórios de trabalho por sessão. O executor precisa de acesso de escrita a este caminho ou seu pai. O executor cria o diretório na inicialização e sai com `cannot create or write to base directory` quando não consegue criar ou escrever nele. Antes da v2.1.225, o executor criava o diretório quando a primeira sessão começava, então um caminho inutilizável falhava nas sessões em vez da inicialização. No Windows, que não é um host executor suportado, não há padrão: o executor sai na inicialização a menos que você passe o sinalizador ou defina a variável. Use o mesmo valor em cada executor em um ambiente. Consulte [Keep the base directory and capacity identical across runners](/docs/pt/self-hosted-environments-deploy#keep-the-base-directory-and-capacity-identical-across-runners). |

27| `--capacity <n>` | nenhum | `1` | Máximo de sessões simultâneas que este executor manipula. Todas as sessões pertencem ao mesmo [proprietário](/docs/pt/self-hosted-environments#key-concepts) bloqueado. Use o mesmo valor em cada executor em um ambiente; consulte [Keep the base directory and capacity identical across runners](/docs/pt/self-hosted-environments-deploy#keep-the-base-directory-and-capacity-identical-across-runners). |

28| `--client-label <label>` | `SELF_HOSTED_RUNNER_CLIENT_LABEL` | nome do host | Rotule o executor que envia quando se registra. O executor também o relata como o rótulo `client_label` de [`claude_code_self_hosted_runner_info`](#prometheus-metrics). Requer Claude Code v2.1.248 ou posterior. |

29| `--configure-git` | `SELF_HOSTED_RUNNER_CONFIGURE_GIT=1` | desligado | Na inicialização, escreva identidade git global, habilite assinatura de commit Anthropic, ative negociação de push git e instale hooks de commit que anexam um trailer `Co-authored-by:`. A negociação de push requer Claude Code v2.1.257 ou posterior. Consulte [Configure git](/docs/pt/self-hosted-environments-deploy#configure-git). |

30| `--confine-repo-settings <mode>` | `SELF_HOSTED_RUNNER_CONFINE_REPO_SETTINGS` | `warn` | Define o modo da proteção que sinaliza uma sessão quando as configurações confirmadas de um repositório tentam conceder acesso de escrita ou leitura fora do próprio workspace dessa sessão, definir variáveis de ambiente ou substituir a postura de sandbox ou hooks do operador, como `sandbox.enabled: false` ou `disableAllHooks`. O padrão `warn` registra a violação e ainda inicia a sessão, `enforce` recusa a sessão, e `off` desabilita a verificação. Consulte [Harden your deployment](/docs/pt/self-hosted-environments-deploy#harden-your-deployment). |

31| `--debug-token-dir <path>` | `SELF_HOSTED_RUNNER_DEBUG_TOKEN_DIR` | não definido | Escreva tokens ao vivo em disco para inspeção. Apenas depuração; não use em produção. |

32| `--defer-shutdown-max-min <n>` | `SELF_HOSTED_RUNNER_DEFER_SHUTDOWN_MAX_MS` | `0` | No primeiro `SIGTERM` ou `SIGINT`, continue servindo as sessões já anexadas em vez de drená-las, depois libere o que ainda estiver anexado N minutos depois e saia. Aumente o tempo limite de parada do seu host antes de definir isso. Consulte [Defer the drain past the first signal](/docs/pt/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal). `0` desabilita. Requer Claude Code v2.1.238 ou posterior. |

33| `--drain-grace-sec <n>` | `SELF_HOSTED_RUNNER_DRAIN_GRACE_MS` | `0` | Até o executor receber um sinal de desligamento ou atingir seu tempo de aposentadoria, controla quando o executor sai após suas sessões ativas terminarem: `0` sai imediatamente sem pesquisar mais, e um valor positivo mantém o executor vivo e re-pesquisando a fila do proprietário bloqueado por muitos segundos primeiro, ao custo do isolamento de contêiner por sessão descrito na [seção de endurecimento](/docs/pt/self-hosted-environments-deploy#harden-your-deployment). Após um primeiro sinal que você adiou com [`--defer-shutdown-max-min`](/docs/pt/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), o executor sai assim que não mantém sessões, seja qual for o que você definir aqui. |

34| `--drain-wait-sec <n>` | `SELF_HOSTED_RUNNER_DRAIN_WAIT_MS` | `0` | Uma vez que a drenagem começa, que é em `SIGTERM` a menos que você defina [`--defer-shutdown-max-min`](/docs/pt/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), aguarde até N segundos para que cada turno em voo da sessão e tarefas em segundo plano terminem antes de encerrar o filho. Durante esta espera, o executor conta uma tarefa em segundo plano que acabou de terminar como ainda em execução até o turno de acompanhamento que lê seu resultado começar, por no máximo a janela [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). |

35| `--environment-secret-file <path>` | `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` | obrigatório | Caminho para um arquivo contendo o segredo do ambiente, ou, para executores gerados pelo [orquestrador](/docs/pt/self-hosted-environments-configuration#on-demand-runners), o JWT de ordem de trabalho de uso único. `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` carrega o valor secreto diretamente, não um caminho de arquivo. O sinalizador `--pool-secret-file` mais antigo e a variável `SELF_HOSTED_RUNNER_POOL_SECRET` ainda funcionam e imprimem um aviso de descontinuação para stderr; compilações de executor do programa de visualização mais antigas que 2.1.216 reconhecem apenas esses nomes mais antigos. |

36| `--exec-path <path>` | `SELF_HOSTED_RUNNER_EXEC_PATH` | binário próprio | Binário ou script wrapper para gerar para cada sessão. Consulte [Wrapper scripts](/docs/pt/self-hosted-environments-configuration#wrapper-scripts). |

37| `--exit-if-unused-min <n>` | `SELF_HOSTED_RUNNER_IDLE_SHUTDOWN_MS` | `0` | Saia após N minutos de pesquisa sem trabalho nunca atribuído, para redução de escala do autoscaler. `0` desabilita. |

38| `--git-host-rewrite <from>=<to>` | nenhum | não definido | Reescreva URLs de origem `https://<from>/...` para `https://<to>/...` antes de clonar, para DNS de horizonte dividido. Repetível; apenas sinalizador. |

39| `--git-ssh-rewrite <host>` | nenhum | não definido | Reescreva URLs de origem `https://<host>/...` para `git@<host>:...` antes de clonar, para hosts git somente SSH. Repetível; apenas sinalizador. |

40| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Porta para o ouvinte `/healthz` e `/metrics`. Defina `0` para desabilitar. |

41| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | não definido | Diretório de scripts de hook de ciclo de vida. Consulte [Lifecycle hooks](/docs/pt/self-hosted-environments-configuration#lifecycle-hooks). |

42| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limite uma sessão a N minutos de tempo real, como um limite de segurança para sessões presas. Na v2.1.260 ou posterior, o executor libera uma sessão que atinge o limite para que possa retomar na próxima mensagem do usuário, e a encerra apenas se ainda estiver no executor quando a janela de graça [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) terminar. Antes da v2.1.260, o executor encerrava a sessão no limite. Consulte [Some sessions don't count as idle](/docs/pt/self-hosted-environments-deploy#some-sessions-don%E2%80%99t-count-as-idle) para os detalhes e como escolher um valor. `0` desabilita. |

43| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | não definido | Pré-bloqueie o executor para uma conta específica na inicialização em vez de bloquear na primeira sessão. Aceita um endereço de email ou ID `user_...` na organização do ambiente. Um executor pré-bloqueado nunca pega sessões de canal Claude Tag, que não têm conta. |

44| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | não definido | Espelhe logs do executor para um arquivo além de stdout e stderr, criado com permissões `0600`. Obrigatório para `self-hosted-runner doctor` rastrear logs localmente. |

45| `--log-level <level>` | nenhum | `info` | `info` ou `debug` |

46| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Orçamento para o hook [`post-session`](/docs/pt/self-hosted-environments-configuration#post-session) no final de cada sessão, incluindo desligamento do executor |

47| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | não definido | Comando shell que o executor executa para cada conexão com seu proxy de saída, usando seu stdout aparado como o valor do cabeçalho `Proxy-Authorization`. Requer `HTTPS_PROXY` ou `HTTP_PROXY`, e não pode ser combinado com `--proxy-authorization-file`. Consulte [Authenticate to an egress proxy](/docs/pt/self-hosted-environments-deploy#authenticate-to-an-egress-proxy). Requer Claude Code v2.1.238 ou posterior. |

48| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | não definido | Arquivo que o executor lê para cada conexão com seu proxy de saída, usando seu conteúdo aparado como o valor do cabeçalho `Proxy-Authorization`. Use este sinalizador para um token que outro processo rotaciona no lugar. Carrega os mesmos requisitos que `--proxy-authorization-command`, e não pode ser combinado com ele. Consulte [Authenticate to an egress proxy](/docs/pt/self-hosted-environments-deploy#authenticate-to-an-egress-proxy). Requer Claude Code v2.1.238 ou posterior. |

49| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | desligado | No final de uma sessão iniciada pelo executor, como uma drenagem ou liberação ociosa, envie branches de resultado rastreados para `origin` antes de excluir o workspace, para que commits em voo sobrevivam a um reinício. Melhor esforço; adiciona 30 segundos ao orçamento de desligamento, e requer git 2.29 ou mais recente para retomar do branch enviado. Restrinja o acesso de envio para refs `claude/*` antes de habilitar; consulte [Resumed sessions lose unpushed work](/docs/pt/self-hosted-environments-deploy#additional-limitations). Repositórios verificados via um hook de ciclo de vida `checkout` não são enviados; faça snapshot deles do hook [`post-session`](/docs/pt/self-hosted-environments-configuration#post-session) em vez disso. |

50| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libere um slot de sessão após N minutos de inatividade uma vez que um turno termine ou a sessão aguarde a ação do usuário. Uma sessão que ainda está no meio de um turno, incluindo uma que mantém uma tarefa em segundo plano que nunca termina ou uma aprovação solicitada de dentro de uma chamada de ferramenta em execução, não conta como ociosa; emparelhe com `--kill-session-after-min` como o backstop duro. Após a tarefa em segundo plano de uma sessão terminar, o executor considera a sessão ocupada até o turno de acompanhamento que lê o resultado começar, por no máximo a janela [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Até o executor receber um sinal de desligamento ou atingir seu tempo de aposentadoria, uma liberação que deixa o executor sem sessões ativas inicia o mesmo caminho de saída que uma drenagem normal, governada por `--drain-grace-sec`. Após um primeiro sinal que você adiou com [`--defer-shutdown-max-min`](/docs/pt/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), o executor sai assim que uma liberação o deixa sem sessões. `0` desabilita. |

51| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | não definido | Aposentar o executor em um timestamp Unix absoluto em segundos, para infraestrutura que mata o executor em um tempo conhecido; [Runner lifecycle](/docs/pt/self-hosted-environments#runner-lifecycle) descreve a sequência de liberação e como dimensionar a margem. Valores antes de 2001 ou após o ano 5138 são rejeitados pelo sinalizador e ignorados pela variável de ambiente. |

52| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Quanto tempo aguardar para que o processo Claude saia limpo após uma sessão terminar, antes de forçar o encerramento. Aumente o valor se os hooks `SessionEnd` do próprio filho precisarem de mais tempo. |

53| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Libere um slot de sessão se o filho não tiver sinalizado que inicializou dentro de N minutos de geração. Limpo pelo sinal de inicialização do filho no [canal de atividade](/docs/pt/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), não por saída ordinária, após o qual `--release-idle-session-min` assume. `0` desabilita. |

54| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | ativado | Semeie confiança persistida para cada caminho de repositório de sessão para que `permissions.allow` e `additionalDirectories` confirmados no repo sejam honrados. Defina `false` para descartar concessões de permissão confirmadas no repo e configure regras de permissão no `settings.json` da configuração do host em vez disso; configurações `sandbox.*` confirmadas no repositório ainda se aplicam de qualquer forma, é por isso que a [proteção de configurações do repo](/docs/pt/self-hosted-environments-deploy#harden-your-deployment) as verifica independentemente deste sinalizador. |

55| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | desligado | Clone via [proxy git da Anthropic](/docs/pt/self-hosted-environments-deploy#use-the-anthropic-git-proxy) em vez de autenticação git gerenciada pelo cliente. Requer `--capacity 1` e git 2.32 ou mais recente; o executor recusa iniciar caso contrário. Substitui os sinalizadores de reescrita. |

56 

57A maioria dos sinalizadores de duração tem um máximo, escolhido para manter cada tempo limite dentro do teto do temporizador de 32 bits do tempo de execução de aproximadamente 24,85 dias. Os sinalizadores `--*-min` limitam a 10080 minutos, 7 dias; `--drain-grace-sec` a 604800 segundos, também 7 dias; e `--drain-wait-sec` a 86400 segundos, 24 horas. `--session-stop-grace-sec` e `--post-session-hook-timeout-sec` não têm limite. Exceder um limite se comporta diferentemente por superfície:

58 

59* **Sinalizador**: a inicialização falha com um erro.

60* **Variável de ambiente**: o executor fixa o valor ao teto do temporizador em vez de rejeitá-lo.

61 

62<h2 id="orchestrator-cli-flags">

63 Sinalizadores CLI do orquestrador

64</h2>

65 

66O subcomando `self-hosted-runner orchestrator`, que gera [executores sob demanda](/docs/pt/self-hosted-environments-configuration#on-demand-runners), aceita `--api-url`, `--environment-secret-file`, `--hooks-dir`, `--health-port` e `--log-level` com os mesmos padrões que o executor e, onde o sinalizador do executor tem um, a mesma variável de ambiente, exceto que `--hooks-dir` é obrigatório e deve conter um hook `spawn-runner`. Também usa seus próprios sinalizadores:

67 

68| Sinalizador | Padrão | Descrição |

69| :------------------------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

70| `--hook-concurrency <n>` | `4` | Máximo de hooks `spawn-runner` em execução em paralelo. Também limita quantas solicitações de geração são reivindicadas por pesquisa. |

71| `--hook-timeout <sec>` | `60` | Encerre a árvore de processos do hook após muitos segundos. O tempo limite mais sua graça de morte de 5 segundos deve ficar abaixo de `--expected-spawn-seconds`; o orquestrador impõe isso na inicialização. |

72| `--expected-spawn-seconds <sec>` | `120` | Tempo de inicialização p99 esperado para executores gerados, no intervalo imposto pelo servidor de 10 a 3600. Enviado em cada pesquisa como a concessão do lado do servidor; se nenhum executor se registrar antes de decorrido, a sessão é re-oferecida com um novo ID de pedido. Todas as réplicas devem compartilhar este valor. |

73| `--min-idle <n>` | `0` | Mantenha pelo menos N slots de sessão ociosos livres gerando executores de espera de forma proativa. `0` desabilita pré-aquecimento. Emparelhe com o `--exit-if-unused-min` do executor para que executores de espera em excesso se recuperem. |

74| `--debug-dir <path>` | não definido | Escreva a ordem de trabalho de cada solicitação de geração e stderr do hook em disco. Apenas depuração; nunca defina em produção. |

75 

76<h3 id="scm-connector-flags">

77 Sinalizadores do conector SCM

78</h3>

79 

80O orquestrador pode manter uma conexão WebSocket permanente com o plano de controle da Anthropic para que fluxos pré-sessão hospedados, como o seletor de repositório e o resolvedor de branch ou ref, possam alcançar um host GitHub Enterprise Server que é apenas roteável de dentro de sua rede. O conector fica desligado a menos que você defina `--scm-connector-host`.

81 

82| Sinalizador | Padrão | Descrição |

83| :------------------------------------------------------ | :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

84| `--scm-connector-host <host[:port]>` | não definido | Nome do host GitHub Enterprise Server para encaminhar solicitações. A porta padrão é `443`. Definir este sinalizador habilita o conector. |

85| `--scm-connector-id <n>` | obrigatório com `--scm-connector-host` | O ID numérico da conexão GitHub Enterprise Server da sua organização. Entre em contato com sua equipe de conta Anthropic para o valor quando você habilitar o conector. |

86| `--scm-connector-provider <slug>` | `ghe` | Segmento de caminho identificando o provedor, correspondendo a `^[a-z0-9-]{1,32}$`. |

87| `--scm-connector-ca-file <path>` | não definido | Pacote CA extra, em formato PEM, para conexões TLS com o host GitHub Enterprise Server. |

88| `--scm-connector-host-rewrite <from>=<to_host:to_port>` | não definido | Apenas para testes de ponta a ponta: redireciona a conexão TCP mantendo o cabeçalho Host e TLS SNI como `--scm-connector-host`. |

89 

90O conector autentica com o segredo de ambiente existente do orquestrador e se reconecta automaticamente: com backoff exponencial em uma conexão descartada, ou um atraso fixo de 30 segundos quando o plano de controle fecha a conexão porque outra réplica do orquestrador já a mantém.

91 

92<h2 id="environment-variable-only-settings">

93 Configurações somente de variável de ambiente

94</h2>

95 

96Essas configurações do executor são lidas apenas do ambiente e cobrem comportamento que a maioria das implantações deixa no padrão:

97 

98| Var de ambiente | Padrão | Descrição |

99| :----------------------------------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

100| `SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS` | `30000` | Quanto tempo o executor considera uma sessão ocupada após uma tarefa em segundo plano terminar enquanto o turno de acompanhamento que lê o resultado não começou. As linhas [`--drain-wait-sec` e `--release-idle-session-min`](#runner-cli-flags) descrevem onde a retenção se aplica na drenagem e liberação ociosa, e [Runner lifecycle](/docs/pt/self-hosted-environments#runner-lifecycle) descreve onde se aplica na aposentadoria `--retire-at`. `0` ou um valor inutilizável volta ao padrão, para que a retenção não possa ser desligada. Requer Claude Code v2.1.228 ou posterior. |

101| `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` | `~/.claude` | Diretório capturado no snapshot de inicialização do executor e semeado no `CLAUDE_CONFIG_DIR` de cada sessão; mudanças em disco se aplicam após um reinício do executor. Definir a variável também move onde o executor lê `.claude.json` para [seeding MCP](/docs/pt/self-hosted-environments-configuration#mcp-servers), então defini-la, incluindo seu próprio padrão, realoca essa pesquisa; aponte para um diretório vazio para desabilitar o seeding inteiramente. |

102| `SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS` | `900000` | Quanto tempo o executor aguarda após uma sessão atingir seu limite `--kill-session-after-min`, para um turno em execução terminar ou a liberação ser concluída, antes de encerrar a sessão |

103| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Quanto tempo o executor aguarda o SO entregar `SIGKILL` para um filho preso em I/O não interruptível antes de sair ele mesmo. Limitado a `--post-session-hook-timeout-sec` mais 15 segundos, e 30 mais quando `--push-outcome-on-release` está definido, então o mínimo efetivo é 75 segundos nos padrões. |

104| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Profundidade de busca git para clones frescos. Defina um inteiro positivo, ou `full` ou `0` para uma busca completa. Repositórios já presentes no workspace mantêm sua profundidade existente. |

105| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | não definido | Quando `1`, pule a verificação de presença `.git` após um hook `checkout` ser executado. Defina isso quando seu hook materializa uma fonte não-git. |

106| `FORCE_AUTOUPDATE_PLUGINS` | não definido | Quando `1`, deixe marketplaces de plugin se atualizarem automaticamente mesmo que o binário esteja fixado |

107| `CLAUDE_CODE_DISABLE_ARTIFACT` | não definido | Quando `1`, desabilite a ferramenta Artifact em sessões independentemente da configuração de administrador da organização, e solte o requisito de saída `*.frame.claudeusercontent.com` |

108 

109<h2 id="telemetry">

110 Telemetria

111</h2>

112 

113Filhos de sessão enviam telemetria operacional para Anthropic a menos que você a desative. Nenhum código ou conteúdo de repositório é enviado. Defina variáveis de telemetria no processo do executor; o executor as re-afirma após aplicar variáveis de ambiente fornecidas pelo servidor, então a configuração do operador sempre tem precedência.

114 

115Um controle é específico para ambientes auto-hospedados: `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` opta por métricas operacionais Datadog, que estão desligadas por padrão em ambientes auto-hospedados. Os controles gerais de telemetria Claude Code, `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_ERROR_REPORTING` e `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, se aplicam a filhos de sessão conforme documentado na [referência de variável de ambiente](/docs/pt/env-vars). `DISABLE_GROWTHBOOK` é relacionado mas diferente: definir `DISABLE_GROWTHBOOK=1` desabilita a busca de sinalizador de recurso, e a telemetria permanece ativada a menos que `DISABLE_TELEMETRY` também esteja definido.

116 

117`CLAUDE_CODE_ENABLE_TELEMETRY` não está relacionado: habilita a exportação OpenTelemetry para seu próprio coletor, conforme descrito em [Monitoring](/docs/pt/monitoring-usage), e não controla a análise da Anthropic.

118 

119<h2 id="health-endpoint">

120 Ponto de extremidade de saúde

121</h2>

122 

123O executor serve `GET /healthz` na porta de saúde configurada. A resposta é `200 OK` sempre que o processo está vivo, seja qual for o estado do loop de pesquisa, então uma sonda HTTP neste ponto de extremidade detecta apenas um processo morto. O corpo JSON descreve o estado atual:

124 

125```json theme={null}

126{

127 "status": "ok",

128 "runner_id": "ccrunner_...",

129 "active_sessions": 2,

130 "last_poll_at": "2026-03-31T18:04:11.220Z",

131 "last_poll_age_ms": 842

132}

133```

134 

135Use `last_poll_age_ms` como um sinal de vivacidade em sondas personalizadas; um valor que cresce sem limite indica que o loop de pesquisa está preso. Tanto `last_poll_at` quanto `last_poll_age_ms` são `null` até a primeira pesquisa ser concluída.

136 

137O orquestrador serve seu próprio `/healthz` em sua porta de saúde. Seu ponto de extremidade sempre retorna `200`, e o corpo carrega um campo `connected` relatando se a pesquisa mais recente foi bem-sucedida, mais contagens de fila de geração por estado em `queue_counts`. Controle prontidão e alertas em `connected` em vez do código de status.

138 

139Quando o [conector SCM](#scm-connector-flags) está configurado, o corpo `/healthz` do orquestrador também carrega `scm_connector_connected` e um objeto `scm_connector` com `connected`, `last_connected_at`, `last_error`, `reconnects` e `requests_forwarded`. Ambos os campos são `null` quando `--scm-connector-host` não está definido.

140 

141<h2 id="prometheus-metrics">

142 Métricas Prometheus

143</h2>

144 

145Cada executor serve métricas Prometheus em `GET /metrics` na mesma porta que `/healthz`. Séries principais:

146 

147| Série | Notas |

148| :-------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

149| `claude_code_self_hosted_runner_info{runner_id,version,client_label}` | Sempre `1`; útil para inventário de frota e detecção de desvio de versão |

150| `claude_code_self_hosted_runner_capacity` | `--capacity` configurado |

151| `claude_code_self_hosted_runner_active_sessions` | Sessões em execução no momento |

152| `claude_code_self_hosted_runner_locked_account{email}` | Presente uma vez que o executor tenha bloqueado para um usuário e um token de sessão carregando uma reivindicação `act.email` tenha sido emitido. A série está ausente em um executor bloqueado para um agente Claude Tag, cujos tokens de sessão não carregam `act.email`. O valor do rótulo é o email da conta; se sua loja de métricas for amplamente legível, solte ou hash o rótulo no tempo de raspagem, por exemplo com `metric_relabel_configs` do Prometheus. |

153| `claude_code_self_hosted_runner_last_poll_age_seconds` | Segundos desde a última pesquisa bem-sucedida. Alerte se acima de 60. |

154| `claude_code_self_hosted_runner_poll_errors_total{error_kind}` | Falhas cumulativas de PollWork por tipo: `transport`, `timeout`, `5xx`, `429` ou `4xx`. Todas as cinco séries estão presentes desde o início do processo; alerte em `rate(...[5m]) > 0`. |

155| `claude_code_self_hosted_runner_sessions_started_total{client_platform}` | Processos filhos de sessão gerados durante a vida útil do executor, uma série por origem de sessão como `web_claude_ai`, `ios`, `android`, `desktop_app` ou `claude_code_cli`, ou `unknown` quando o servidor não enviou um. Sessões Slack carregam `claude_in_slack` ou `claude-in-slack` dependendo de qual integração Slack as criou, então combine ambas com um seletor regex como `{client_platform=~"claude[-_]in[-_]slack"}`. Use `sum()` para o total da frota. |

156| `claude_code_self_hosted_runner_sessions_completed_total{client_platform}` | Sessões que terminaram limpo, rotuladas da mesma forma. Mais amplo que uma saída limpa simples: consulte [semântica do contador de ciclo de vida da sessão](#session-lifecycle-counter-semantics) para o que conta. |

157| `claude_code_self_hosted_runner_sessions_failed_total{client_platform}` | Sessões que terminaram em falha, rotuladas da mesma forma. Mesma ressalva: consulte [semântica do contador de ciclo de vida da sessão](#session-lifecycle-counter-semantics). |

158| `claude_code_self_hosted_runner_sessions_interrupted_total{client_platform}` | Sessões que o executor encerrou por um motivo operacional em vez de um resultado de sessão, rotuladas da mesma forma. Consulte [semântica do contador de ciclo de vida da sessão](#session-lifecycle-counter-semantics). |

159| `claude_code_self_hosted_runner_initializing_sessions` | Sessões atualmente na fase de inicialização, da atribuição até o evento de inicialização do filho |

160| `claude_code_self_hosted_runner_session_init_duration_seconds` | Histograma de durações de inicialização de sessão |

161| `claude_code_self_hosted_runner_session_init_errors_total` | Sessões que falharam antes de atingir a inicialização: falha de hook de checkout, preparação git, problema de token ou falha de filho pré-inicialização |

162| `claude_code_self_hosted_runner_session_start_hook_errors_total` | Hooks `SessionStart` que relataram um resultado de erro, um por execução de hook falhando |

163| `claude_code_self_hosted_runner_session_idle_seconds{session_id,client_platform}` | Medidor por sessão de segundos desde que a sessão ficou ociosa. Útil para encerrar sessões presas em um prompt de permissão sem resposta. |

164 

165O orquestrador serve suas próprias séries em `GET /metrics` na mesma porta que seu `/healthz`:

166 

167| Série | Notas |

168| :-------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

169| `claude_code_self_hosted_orchestrator_info{version,pool_id,orchestrator_uuid,hostname}` | Sempre `1` |

170| `claude_code_self_hosted_orchestrator_connected` | `1` quando a pesquisa mais recente foi bem-sucedida; cai para `0` após qualquer pesquisa falhada, seja qual for o tipo de falha |

171| `claude_code_self_hosted_orchestrator_last_poll_age_seconds` | Segundos desde a última tentativa de pesquisa, sucesso ou falha, diferentemente da métrica identicamente nomeada do executor, que mede desde o último sucesso; emparelhe com `connected` para capturar pesquisas falhadas. O loop de pesquisa do orquestrador aguarda a execução do hook, então alerte acima de `--hook-timeout` mais uma margem, cerca de 90 segundos nos padrões, em vez de um 60 fixo. |

172| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Falhas cumulativas de PollSpawnHints por tipo: `transport`, `timeout`, `5xx`, `429` ou `4xx`. Todas as cinco séries estão presentes desde o início do processo; alerte em `rate(...[5m]) > 0`. |

173| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Solicitações de geração reivindicáveis agora |

174| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Solicitações de geração em backoff de repetição após uma falha de hook retentável |

175| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Solicitações de geração bloqueadas até que um Owner as tente novamente na aba **Activity** do ambiente; alerte se acima de zero |

176| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Total de sessões aguardando um executor para este ambiente. Agregado em toda a organização, idêntico em cada instância do orquestrador: use `MAX` em vez de `SUM` entre instâncias. |

177| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Sessões atualmente atribuídas a um executor vivo neste ambiente. Agregado em toda a organização, idêntico em cada instância do orquestrador: use `MAX` em vez de `SUM` entre instâncias. |

178| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Resultados cumulativos de hook `spawn-runner`: `ok`, `retryable`, `non_retryable`. Conta invocações de hook do orquestrador, não filhos de sessão que os executores geram: não comparável a `sessions_started_total`, já que capacidade acima de um, pools quentes e executores gerados novamente para a mesma sessão divergem os dois. |

179| `claude_code_self_hosted_orchestrator_spawn_hook_duration_seconds` | Histograma de durações de hook |

180| `claude_code_self_hosted_orchestrator_warm_hints_dispatched_total` | Solicitações de geração de espera despachadas desde o início do processo |

181| `claude_code_self_hosted_orchestrator_session_queue_wait_seconds` | Histograma de segundos que cada sessão aguardou na fila antes do orquestrador reivindicá-la para geração, registrado do timestamp de espera de fila que o plano de controle envia com cada solicitação de geração de sessão. Use para alertas de tempo de fila p50/p99. Gerações de pré-aquecimento não são amostradas. |

182| `claude_code_self_hosted_orchestrator_clock_skew_seconds` | Desvio de relógio local menos servidor; diagnóstico, presente uma vez medido |

183| `claude_code_self_hosted_orchestrator_scm_connector_connected` | `1` quando o WebSocket do [conector SCM](#scm-connector-flags) está aberto; `0` enquanto disca ou faz backoff. Ausente quando `--scm-connector-host` não está definido. |

184| `claude_code_self_hosted_orchestrator_scm_connector_requests_forwarded_total` | Solicitações HTTP cumulativas proxied para o host SCM configurado desde o início do processo. Ausente quando `--scm-connector-host` não está definido. |

185 

186Para dimensionamento automático, escolha a série que corresponde ao seu estilo de dimensionamento e controle-a antes de alimentar o escalador:

187 

188* **Dimensionamento de profundidade de fila**: alimente `claude_code_self_hosted_orchestrator_pool_pending_sessions` em seu escalador HPA ou KEDA, não `queue_pending_sessions`.

189* **Dimensionamento de capacidade**: dimensione na proporção de `active_sessions` do executor para `capacity`.

190* **Controle em `connected`**: filtre a consulta com `claude_code_self_hosted_orchestrator_connected == 1` por instância, para que o valor obsoleto de uma réplica desconectada não alimente o escalador.

191 

192Durante uma interrupção completa de pesquisa, cada réplica desconectada, a consulta controlada não retorna dados. HPA mantém a contagem de réplica atual em uma métrica ausente, mas o escalador Prometheus do KEDA em seu padrão `ignoreNullValues: "true"` lê o resultado vazio como zero e reduz; defina `ignoreNullValues: "false"` no ScaledObject, opcionalmente com um piso de réplica `fallback`.

193 

194O seguinte `PodMonitor` do Prometheus Operator cobre ambos os processos. Ele seleciona pods pelo rótulo `app.kubernetes.io/part-of: claude-code-self-hosted-runner` e a porta nomeada `health` que a [receita Kubernetes](/docs/pt/self-hosted-environments-deploy#kubernetes) define; ajuste os namespaces para corresponder à sua implantação:

195 

196```yaml theme={null}

197# Exemplo de PodMonitor do Prometheus Operator para o executor +

198# orquestrador auto-hospedado Claude Code. Ajuste o namespace e os seletores

199# de rótulo para corresponder à sua implantação. Tanto o executor quanto o

200# orquestrador servem /metrics em seu --health-port (padrão 8080).

201apiVersion: monitoring.coreos.com/v1

202kind: PodMonitor

203metadata:

204 name: claude-code-self-hosted-runner

205 namespace: monitoring

206spec:

207 namespaceSelector:

208 matchNames:

209 - claude-runners

210 selector:

211 matchExpressions:

212 # Corresponde ao Deployment do executor da receita Kubernetes, mais

213 # qualquer Job de executor sob demanda e pods do orquestrador que você

214 # rotula da mesma forma e dá uma containerPort 'health' nomeada.

215 - key: app.kubernetes.io/part-of

216 operator: In

217 values: [claude-code-self-hosted-runner]

218 podMetricsEndpoints:

219 - port: health

220 path: /metrics

221 interval: 30s

222```

223 

224Essas regras de alerta de exemplo são um ponto de partida; ajuste os limites para o tamanho da sua frota:

225 

226```yaml theme={null}

227# Exemplo de regras de alerta Prometheus para o executor + orquestrador

228# auto-hospedado Claude Code. Ajuste os limites para o tamanho da sua frota

229# e SLOs.

230groups:

231 - name: claude-code-self-hosted-runner

232 rules:

233 - alert: ClaudeRunnerPollStale

234 expr: claude_code_self_hosted_runner_last_poll_age_seconds > 60

235 for: 2m

236 labels: {severity: warning}

237 annotations:

238 summary: "Executor {{ $labels.pod }} não pesquisou em >60s"

239 - alert: ClaudeRunnerVersionDrift

240 expr: count(count by (version) (claude_code_self_hosted_runner_info)) > 1

241 for: 30m

242 labels: {severity: info}

243 annotations:

244 summary: "Executores estão executando versões mistas"

245 - alert: ClaudeRunnerInitErrorsHigh

246 expr: increase(claude_code_self_hosted_runner_session_init_errors_total[10m]) > 3

247 for: 5m

248 labels: {severity: warning}

249 annotations:

250 summary: "Executor {{ $labels.pod }}: >3 falhas de inicialização de sessão em 10m (hook de checkout / git / token / falha pré-inicialização)"

251 - alert: ClaudeRunnerPollErrors

252 expr: sum by (pod) (rate(claude_code_self_hosted_runner_poll_errors_total[5m])) > 0

253 for: 2m

254 labels: {severity: warning}

255 annotations:

256 summary: "Executor {{ $labels.pod }}: PollWork falhando ({{ $value | humanize }}/s em 5m)"

257 - alert: ClaudeRunnerSessionStartHookErrors

258 expr: increase(claude_code_self_hosted_runner_session_start_hook_errors_total[10m]) > 3

259 for: 5m

260 labels: {severity: warning}

261 annotations:

262 summary: "Executor {{ $labels.pod }}: >3 falhas de hook SessionStart em 10m"

263 

264 - name: claude-code-self-hosted-orchestrator

265 rules:

266 - alert: ClaudeOrchestratorDisconnected

267 expr: claude_code_self_hosted_orchestrator_connected == 0

268 for: 2m

269 labels: {severity: critical}

270 annotations:

271 summary: "Orquestrador {{ $labels.pod }} não consegue alcançar o plano de controle Anthropic"

272 - alert: ClaudeOrchestratorPollStale

273 expr: claude_code_self_hosted_orchestrator_last_poll_age_seconds > 90

274 for: 2m

275 labels: {severity: warning}

276 annotations:

277 summary: "Orquestrador {{ $labels.pod }} não pesquisou em >90s (loop de pesquisa aguarda execução de hook)"

278 - alert: ClaudeOrchestratorCircuitBroken

279 expr: claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions > 0

280 for: 1m

281 labels: {severity: critical}

282 annotations:

283 summary: "{{ $value }} sessões com circuito aberto — hook spawn-runner é repetidamente não retentável; corrija a infraestrutura e tente novamente na aba Activity"

284 - alert: ClaudeOrchestratorPollErrors

285 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0

286 for: 2m

287 labels: {severity: warning}

288 annotations:

289 summary: "Orquestrador {{ $labels.pod }}: PollSpawnHints falhando ({{ $value | humanize }}/s em 5m)"

290 - alert: ClaudeOrchestratorSpawnHookFailing

291 expr: sum by (pod) (increase(claude_code_self_hosted_orchestrator_spawn_hooks_total{result!="ok"}[5m])) > 3

292 for: 5m

293 labels: {severity: warning}

294 annotations:

295 summary: "Orquestrador {{ $labels.pod }}: >3 falhas de hook spawn-runner em 5m"

296```

297 

298<h3 id="pass-through-session-child-metrics">

299 Passar através de métricas de filho de sessão

300</h3>

301 

302Cada sessão é executada em seu próprio processo filho com suas próprias métricas OpenTelemetry; em `--capacity` acima de um, o executor reescreve como essas métricas de filho são expostas. Definir `OTEL_METRICS_EXPORTER=prometheus` no host do executor e `CLAUDE_CODE_ENABLE_TELEMETRY=1` no ambiente da sessão, por exemplo a partir de seu [script wrapper](/docs/pt/self-hosted-environments-configuration#wrapper-scripts) ou do próprio ambiente do executor, que as sessões herdam, re-expõe cada instrumento de contador e medidor do filho no ponto de extremidade `/metrics` do próprio executor, ao lado das séries do executor. O executor reescreve o exportador do filho para enviar por OTLP para um receptor somente de loopback na porta de saúde, marca cada série com rótulos `session_id` e `client_platform`, e remove as séries de uma sessão quando essa sessão termina. Histogramas não passam, e uma métrica de filho cujo nome colidiria com o prefixo do próprio executor é descartada.

303 

304No padrão `--capacity 1`, a reescrita não se aplica: o filho da sessão vincula seu próprio ponto de extremidade Prometheus na porta 9464 como usual.

305 

306<h3 id="session-lifecycle-counter-semantics">

307 Semântica do contador de ciclo de vida da sessão

308</h3>

309 

310Os contadores `sessions_started_total`, `sessions_completed_total`, `sessions_failed_total` e `sessions_interrupted_total` classificam cada sessão por como terminou. Cada filho de sessão gerado incrementa `sessions_started_total` no tempo de geração, e exatamente um dos outros três incrementa na saída, então `sessions_started_total` menos a soma dos outros três é igual ao número de filhos de sessão em execução no momento.

311 

312* `completed`: a sessão terminou limpo. Isso cobre o filho saindo por conta própria com código `0`, a sessão sendo arquivada ou excluída enquanto o filho ainda estava conectado, e o executor devolvendo o slot de forma limpa: a liberação da sessão no tempo limite de ociosidade, no tempo de aposentadoria ou no limite `--kill-session-after-min`; um tempo limite de inicialização; ou uma desatribuição do lado do servidor que o loop de pesquisa notou antes do filho sair. Incrementa `sessions_completed_total`.

313* `failed`: o filho saiu por conta própria com um código diferente de zero, seja um crash ou uma falha de configuração após geração. Incrementa `sessions_failed_total`.

314* `interrupted`: o executor encerrou o filho por um motivo operacional que não é nem um sucesso de sessão nem uma falha do executor, como uma drenagem ou o encerramento de uma sessão que ainda estava no executor quando a janela de graça [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) após seu limite `--kill-session-after-min` terminou. Um reinício de rolagem Kubernetes enviando `SIGTERM` é um exemplo de uma drenagem. Incrementa `sessions_interrupted_total`.

315 

316Antes da v2.1.260, o executor encerrava cada sessão que atingia seu limite `--kill-session-after-min` e a contava em `sessions_interrupted_total`.

317 

318O `CLAUDE_RUNNER_EXIT_REASON` do hook [`post-session`](/docs/pt/self-hosted-environments-configuration#post-session) classifica entregas limpas de forma diferente. O hook relata uma liberação, um tempo limite de inicialização e uma desatribuição do servidor como `interrupted`, porque o executor parou o filho. Esses contadores registram os mesmos eventos como `completed`, porque o slot foi devolvido limpo.

319 

320Se você reconciliar recebimentos de hook contra `sessions_completed_total` diretamente, você subestima as conclusões. Use o hook para garantias por sessão e os contadores para taxas agregadas.

321 

322Em um ambiente único, `--capacity 1` com o padrão `--drain-grace-sec 0`, cada processo executor sai momentos após sua única sessão terminar. `sessions_completed_total`, `sessions_failed_total` e `sessions_interrupted_total` incrementam apenas no final da sessão, logo antes dessa saída, então uma raspagem Prometheus a cada 15 a 60 segundos raramente captura o incremento antes das séries do executor desaparecerem; esses três contadores de final de sessão são os contadores terminais que o resto desta seção se refere. `sessions_started_total` incrementa na geração e permanece visível pela vida da sessão, então aparece de forma confiável, mas em um ambiente único lê mais perto de "sessões em execução no momento" do que uma contagem cumulativa.

323 

324Use a série nesta tabela para o objetivo correspondente em vez dos contadores terminais:

325 

326| Objetivo | Use |

327| :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

328| Throughput | `claude_code_self_hosted_orchestrator_spawn_hooks_total{result="ok"}`, um contador no orquestrador de longa vida que incrementa uma vez por hook `spawn-runner` bem-sucedido e permanece significativo sob `rate()`. Conta invocações de hook em vez de sessões, então pré-aquecimento e gerações repetidas para a mesma sessão divergem de contagens de sessão. |

329| Utilização | `sum(claude_code_self_hosted_runner_active_sessions)` contra `sum(claude_code_self_hosted_runner_capacity)`, ambos medidores válidos em cada raspagem independentemente da vida útil do executor |

330| Backlog | `claude_code_self_hosted_orchestrator_pool_pending_sessions` para profundidade de fila, e `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions`, alertando se acima de zero |

331| Falhas | `claude_code_self_hosted_runner_sessions_failed_total`, melhor esforço: crashes reais após geração incrementam, e `rate()` é significativo em executores que sobrevivem suas sessões com `--drain-grace-sec` acima de `0`. Um ambiente único tem o mesmo problema de janela de raspagem que os outros contadores terminais, então trate qualquer valor diferente de zero que você veja como digno de investigação. Falhas antes de geração, como falha de hook de checkout, preparação git ou problema de token, aparecem apenas em `session_init_errors_total`. |

332 

333As linhas `orchestrator_*` existem apenas em ambientes executando o [orquestrador sob demanda](/docs/pt/self-hosted-environments-configuration#on-demand-runners). Em uma frota fixa cujos executores sobrevivem suas sessões, com `--drain-grace-sec` acima de `0`, use `sum(rate(claude_code_self_hosted_runner_sessions_started_total[5m]))` para throughput; em uma frota única essa série tem o mesmo problema de janela de raspagem que os contadores terminais, então confie na contagem de sessões enfileiradas em vez disso. Verifique backlog na aba **Activity** do ambiente, na [página de administração **Cloud environments**](https://claude.ai/admin-settings/cloud-environments): os executores não exportam uma série de profundidade de fila.

334 

335Para relatório de resultado por sessão, use o hook [`post-session`](/docs/pt/self-hosted-environments-configuration#post-session) em vez disso: ele dispara no final de cada sessão onde um processo filho foi gerado, exceto em caso de encerramento abrupto do executor, como uma preempção de VM, por contrato do [próprio hook](/docs/pt/self-hosted-environments-configuration#post-session).

336 

337<h2 id="what’s-next">

338 Próximos passos

339</h2>

340 

341* [Self-hosted environments](/docs/pt/self-hosted-environments): o ambiente, executor e modelo de sessão; o [guia de início rápido](/docs/pt/self-hosted-environments-quickstart) e [Deploy to production](/docs/pt/self-hosted-environments-deploy) contêm configuração e operações

342* [Customize sessions](/docs/pt/self-hosted-environments-configuration): scripts wrapper, hooks de ciclo de vida e executores sob demanda

343* [Verify session identity](/docs/pt/self-hosted-environments-identity): o token de sessão, suas reivindicações e como verificá-lo

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Testar ambientes auto-hospedados de ponta a ponta

6 

7> Verifique uma imagem de executor auto-hospedado a partir de CI: despache uma sessão com a CLI, leia as respostas do Claude através de um hook Stop e execute o loop completo.

8 

9<Note>

10 Ambientes auto-hospedados estão em beta público em planos Team e Enterprise; [Disponibilidade e limitações](/docs/pt/self-hosted-environments#availability-and-limitations) cobre o caminho de habilitação. Esta página é a receita de teste de CI; consulte o [guia de início rápido](/docs/pt/self-hosted-environments-quickstart) para configuração e [Implantar em produção](/docs/pt/self-hosted-environments-deploy) para as receitas de frota.

11</Note>

12 

13Em um [ambiente auto-hospedado](/docs/pt/self-hosted-environments), as [sessões na nuvem](/docs/pt/claude-code-on-the-web) do Claude Code são executadas em uma imagem de executor que você constrói e mantém. Antes de implantar uma nova imagem em seu ambiente de produção, execute uma sessão completa contra um ambiente de teste a partir de um script: crie uma sessão, leia a resposta do Claude, envie um acompanhamento e leia essa resposta também. Esta é a forma de um teste de fumaça de CI que verifica sua imagem de executor, acesso ao git e quaisquer ferramentas personalizadas antes de promover uma alteração.

14 

15Esta receita assume que você já [configurou um ambiente e um executor](/docs/pt/self-hosted-environments-quickstart#set-up-an-environment-and-runner), e que seu trabalho de CI inicia o processo do executor no mesmo host que o script de teste, a configuração natural para testar uma nova imagem de executor. Um hook Stop que você instala no executor escreve a resposta final de cada turno em um arquivo local, e o script a lê de lá, portanto as únicas chamadas para a API Anthropic são os dois despachos em si. Se seus executores de teste estão em infraestrutura separada, consulte [Executores de teste remotos](#remote-test-runners).

16 

17<h2 id="install-the-capture-hook-on-your-test-runner">

18 Instale o hook de captura em seu runner de teste

19</h2>

20 

21A leitura funciona através de um [hook Stop](/docs/pt/hooks#stop) do Claude Code: quando Claude termina um turno, o hook recebe a mensagem final do assistente como `last_assistant_message` em seu JSON stdin e a anexa a `$E2E_REPLY_DIR/<session_id>.txt`. Instale-o da mesma forma que o [hook Stop commit-nudge](/docs/pt/self-hosted-environments-configuration#prompt-sessions-to-push-their-work), no `~/.claude/` do host do runner, que o runner semeia em cada sessão.

22 

23<h3 id="save-the-hook-files">

24 Salve os arquivos do hook

25</h3>

26 

27Salve os dois arquivos abaixo no host do runner:

28 

29* O bloco de configurações: mescle em `~/.claude/settings.json` no host do runner

30* O script: salve como `~/.claude/hooks/e2e-stop-hook-capture.sh` no host do runner e torne-o executável

31 

32```json theme={null}

33{

34 "hooks": {

35 "Stop": [

36 {

37 "hooks": [

38 {

39 "type": "command",

40 "timeout": 10,

41 "command": "\"$CLAUDE_CONFIG_DIR/hooks/e2e-stop-hook-capture.sh\""

42 }

43 ]

44 }

45 ]

46 }

47}

48```

49 

50```sh theme={null}

51#!/bin/sh

52# Stop hook for testing a self-hosted environment end to end: writes each

53# turn's final assistant reply to $E2E_REPLY_DIR/<session_id>.txt so a

54# co-located test driver can read it without calling the Anthropic API.

55# Install on the TEST runner only. Requires jq.

56 

57# No-op unless the driver is listening. Never fail the turn.

58[ -n "${E2E_REPLY_DIR:-}" ] && [ -d "$E2E_REPLY_DIR" ] || exit 0

59 

60# CLAUDE_CODE_REMOTE_SESSION_ID is exported in cse_... form; the session

61# id the dispatch CLI prints is in session_... form. Same id, different

62# prefix.

63sid=$(printf '%s' "${CLAUDE_CODE_REMOTE_SESSION_ID:-}" | sed 's/^cse_/session_/')

64[ -n "$sid" ] || exit 0

65 

66# last_assistant_message is absent when the final assistant turn had no

67# text, such as a tool-use-only turn. The `// empty` filter makes that a

68# zero-byte write rather than the literal string "null".

69jq -r '.last_assistant_message // empty' >> "$E2E_REPLY_DIR/$sid.txt" 2>/dev/null

70exit 0

71```

72 

73<h3 id="before-you-start-the-runner">

74 Antes de iniciar o runner

75</h3>

76 

77Duas coisas das quais o hook depende:

78 

79* Instale-o antes de iniciar o runner. O runner captura `~/.claude/` uma vez na inicialização, portanto um hook adicionado a um runner em execução entra em vigor apenas após uma reinicialização.

80* Exporte `E2E_REPLY_DIR` para o processo do runner. O hook é uma operação nula quando a variável não está definida ou o diretório não existe, portanto defina-a onde você inicia o runner, como a unidade systemd, especificação de pod ou etapa de CI. O script de teste abaixo também o requer.

81 

82Instale este hook apenas em runners que servem seu ambiente de teste. Ele escreve a resposta final de cada sessão em disco sempre que `E2E_REPLY_DIR` existe, o que é inofensivo em um runner de CI descartável, mas não algo para levar para uma imagem de runner de ambiente de produção onde a variável pode ser definida acidentalmente.

83 

84<h2 id="run-the-test-loop">

85 Execute o loop de teste

86</h2>

87 

88Os sinalizadores de dispatch `--environment` e `--ref` requerem Claude Code v2.1.224 ou posterior na máquina que executa o script, o mesmo piso que o próprio runner. Com o hook em vigor e um runner iniciado neste host, o script de teste:

89 

901. Cria uma sessão no ambiente de teste com `claude -p "<prompt>" --environment <environment-id> --output-format json`, executado a partir de um checkout de git para que a CLI possa detectar automaticamente o repositório a partir do remote `origin`. O `--ref <branch>` opcional baseia o checkout da sessão em uma ref nomeada em vez do HEAD local. O comando cria a sessão, imprime uma linha de JSON contendo `session_id` e sai sem aguardar a resposta do Claude.

912. Aguarda a resposta aparecer em `$E2E_REPLY_DIR/<session_id>.txt`, escrita pelo hook Stop no runner assim que o turno é concluído.

923. Envia um acompanhamento com `claude -p "<message>" --cloud <session_id> --output-format json` (consulte [Enviar uma mensagem de acompanhamento para uma sessão em execução](/docs/pt/claude-code-on-the-web#send-follow-ups-from-the-cli)), que publica um evento de usuário na sessão existente e sai.

934. Aguarda a resposta do acompanhamento da mesma forma que a etapa 2.

94 

95<h3 id="environment-dispatch-behavior">

96 Comportamento de dispatch `--environment`

97</h3>

98 

99Claude Code cria a sessão, imprime o ID da sessão e um link para ela, e sai.

100 

101O sinalizador tem precedência sobre a configuração [`remote.defaultEnvironmentId`](/docs/pt/settings-reference#remote-defaultenvironmentid). Ele não suporta `--output-format stream-json` e não pode ser combinado com sinalizadores que retomam, anexam ou pré-configuram uma sessão, como `--resume`, `--continue`, `--teleport`, `--session-id` ou `--init-only`. `--cloud` é rejeitado com um ID de sessão ou URL, e em execuções não interativas quando carrega uma descrição. Um `--cloud` simples é tratado como ausente. A partir de um terminal, você pode passar a tarefa como a descrição `--cloud` em vez de um prompt posicional.

102 

103<h2 id="example-script">

104 Script de exemplo

105</h2>

106 

107O script abaixo executa o loop completo contra `$CLAUDE_TEST_ENVIRONMENT_ID`, o ID `ccpool_...` do seu ambiente de teste, mostrado no diálogo de detalhes do ambiente na página de administração ou retornado pela [chamada create-environment](#create-a-dedicated-test-environment), e afirma uma frase sentinela em cada resposta. Execute-o a partir de um checkout de git do repositório no qual você deseja que a sessão funcione, após iniciar um runner neste host com o hook de captura instalado e `E2E_REPLY_DIR` exportado.

108 

109```bash theme={null}

110#!/usr/bin/env bash

111# End-to-end test against a self-hosted environment, using Stop-hook read-back.

112# Prereqs: `claude auth login` has been run on this machine (see "Authenticate

113# from CI" below); jq is installed; CLAUDE_TEST_ENVIRONMENT_ID names an

114# environment whose runner is the one on this host, with the capture hook

115# installed and E2E_REPLY_DIR in its environment.

116 

117set -euo pipefail

118 

119: "${CLAUDE_TEST_ENVIRONMENT_ID:=${CLAUDE_TEST_POOL_ID:-}}" # CLAUDE_TEST_POOL_ID is the legacy spelling

120: "${CLAUDE_TEST_ENVIRONMENT_ID:?set CLAUDE_TEST_ENVIRONMENT_ID to a ccpool_... id served by a runner on this host}"

121: "${E2E_REPLY_DIR:?set E2E_REPLY_DIR to the directory the Stop hook on your test runner writes to, and export it to the runner process}"

122: "${TEST_REPO_REF:=main}"

123 

124[ -d "$E2E_REPLY_DIR" ] || {

125 echo "FAIL: E2E_REPLY_DIR ($E2E_REPLY_DIR) does not exist. The Stop hook on the runner needs it." >&2

126 exit 1

127}

128 

129# Waits until $E2E_REPLY_DIR/<session_id>.txt contains $2, or fails after

130# 90 seconds. Tune the timeout to your environment's cold-start time. The

131# file is written by the Stop hook on the runner.

132await_reply() {

133 local expect="$2" f="$E2E_REPLY_DIR/$1.txt"

134 local deadline=$(($(date +%s) + 90))

135 while :; do

136 if [ -f "$f" ] && grep -qF -- "$expect" "$f"; then

137 return

138 fi

139 [ "$(date +%s)" -lt "$deadline" ] || {

140 echo "FAIL: '$expect' not in $f within 90s. The Stop hook on the runner did not write it." >&2

141 echo "-- $E2E_REPLY_DIR contents --" >&2; ls -la "$E2E_REPLY_DIR" >&2

142 [ -f "$f" ] && { echo "-- $f --" >&2; cat "$f" >&2; }

143 exit 1

144 }

145 sleep 1

146 done

147}

148 

149# 1. Create the session on the test environment. Run from a git checkout

150# so the CLI can auto-detect the repo. --ref pins the checkout to a named

151# ref regardless of local HEAD.

152TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"

153EXPECT1="ok: custom tools are reachable"

154create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \

155 --ref "$TEST_REPO_REF" --output-format json)

156echo "create: $create_json"

157SESSION_ID=$(jq -er '.session_id' <<<"$create_json")

158 

159# 2. Wait for the turn-1 reply.

160await_reply "$SESSION_ID" "$EXPECT1"

161echo "turn-1 reply ok"

162 

163# 3. Post a follow-up via the CLI.

164TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"

165EXPECT2="ok: follow-up delivered"

166followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json)

167echo "followup: $followup_json"

168jq -e '.ok == true' <<<"$followup_json" >/dev/null

169 

170# 4. Wait for the turn-2 reply.

171await_reply "$SESSION_ID" "$EXPECT2"

172echo "turn-2 reply ok"

173 

174echo "PASS: test-environment round-trip (session $SESSION_ID)"

175```

176 

177Substitua os prompts `TURN1`/`TURN2` e as sentinelas `EXPECT1`/`EXPECT2` por qualquer coisa que exercite sua configuração, como pedir ao Claude para executar uma de suas ferramentas MCP personalizadas e afirmar sua saída.

178 

179<h2 id="remote-test-runners">

180 Runners de teste remotos

181</h2>

182 

183Se seus runners de teste estão em infraestrutura separada, como uma frota Kubernetes persistente com a qual seu trabalho de CI não pode compartilhar um sistema de arquivos, troque a escrita de arquivo no hook Stop por um POST para um endpoint que seu driver escuta:

184 

185```sh theme={null}

186#!/bin/sh

187# Variant of the capture hook for runners on separate infrastructure.

188# Set E2E_REPLY_URL on the runner to an endpoint the driver controls.

189[ -n "${E2E_REPLY_URL:-}" ] || exit 0

190sid=$(printf '%s' "${CLAUDE_CODE_REMOTE_SESSION_ID:-}" | sed 's/^cse_/session_/')

191[ -n "$sid" ] || exit 0

192jq -r '.last_assistant_message // empty' | \

193 curl -fsS -X POST --data-binary @- "$E2E_REPLY_URL/$sid" >/dev/null 2>&1

194exit 0

195```

196 

197No lado do driver, execute qualquer coisa que aceite o POST e mantenha a resposta até que o teste a solicite, como um pequeno listener HTTP dentro do trabalho de CI ou um receptor de webhook que você já executa. O hook é executado em sua infraestrutura, portanto o endpoint só precisa ser acessível a partir de seus runners.

198 

199<h2 id="authenticate-from-ci">

200 Autentique a partir de CI

201</h2>

202 

203Tanto `claude -p ... --environment` quanto `claude -p ... --cloud` autenticam com um token OAuth claude.ai; chaves de API, como `sk-ant-xxxxx`, não são aceitas para nenhuma das duas chamadas. Duas abordagens disponibilizam um token em CI.

204 

205<h3 id="long-lived-ci-host">

206 Host de CI de longa duração

207</h3>

208 

209Execute `claude auth login` uma vez interativamente na máquina que executa o script, usando uma conta de usuário dedicada para automação. Claude Code armazena o token no chaveiro do SO no macOS, ou em `~/.claude/.credentials.json` no Linux e Windows. Em um host macOS cujo Keychain não pode ser escrito, como é típico em uma sessão SSH onde o Keychain de login permanece bloqueado, Claude Code armazena o token em `~/.claude/.credentials.json` lá também. Consulte [Gerenciamento de credenciais](/docs/pt/authentication#credential-management).

210 

211A CLI atualiza o token de acesso de curta duração automaticamente em cada invocação, mas a concessão de token de atualização subjacente é limitada a 30 dias a partir do login inicial, portanto execute `claude auth login` interativamente nesse host a cada 30 dias.

212 

213<h3 id="ephemeral-ci-runners">

214 Runners de CI efêmeros

215</h3>

216 

217Não há token de CI de longa duração para isso hoje. O escopo que concede controle de sessão remota, `user:sessions:claude_code`, é limitado no servidor a 30 dias, portanto `claude setup-token`, que cria um token somente de inferência de um ano, não o cobre. O [segredo do ambiente](/docs/pt/self-hosted-environments-quickstart#set-up-an-environment-and-runner) também não é aceito, pois apenas autoriza um runner a se registrar no ambiente, não a criar sessões.

218 

219Para provisionar um login armazenado em um runner efêmero, defina [`CLAUDE_CODE_OAUTH_REFRESH_TOKEN` e `CLAUDE_CODE_OAUTH_SCOPES`](/docs/pt/env-vars#variables) para que `claude auth login` troque o token sem um navegador; o mesmo limite de 30 dias se aplica à concessão de atualização. Entre em contato com sua equipe de conta Anthropic se você precisar de um caminho de identidade de máquina que não esteja vinculado a uma conta humana.

220 

221<h2 id="create-a-dedicated-test-environment">

222 Crie um ambiente de teste dedicado

223</h2>

224 

225Crie e exclua ambientes programaticamente para que cada execução de CI obtenha um limpo; o runner que seu trabalho de CI inicia se registra no ambiente novo. As chamadas de criação e exclusão abaixo são os mesmos endpoints que a página de administração **Cloud environments** em claude.ai usa, e requerem o cabeçalho `anthropic-beta: ccr-byoc-2025-07-29`.

226 

227<h3 id="mint-the-admin-token">

228 Crie o token de administrador

229</h3>

230 

231`$ADMIN_TOKEN` é um token de acesso OAuth claude.ai para uma conta que possui uma função de Proprietário, criado da mesma forma que [Autentique a partir de CI](#authenticate-from-ci):

232 

233* **Crie-o**: execute `claude auth login` com uma conta que possui uma função de Proprietário, depois leia o token de acesso atual de onde [Host de CI de longa duração](#long-lived-ci-host) diz que Claude Code o armazenou.

234* **Leia-o novo em cada execução**: a CLI rotaciona o token de acesso, e o mesmo limite de concessão de atualização de 30 dias se aplica, portanto não armazene uma cópia.

235* **Passe-o via stdin**: como o exemplo faz, para que o token nunca chegue à lista de argumentos do curl ou seu log de compilação.

236 

237<h3 id="create-the-environment">

238 Crie o ambiente

239</h3>

240 

241Capture a resposta sem ecoá-la: `pool_secret` é uma credencial de longa duração que pode registrar runners no ambiente, portanto armazene-a como um segredo de CI mascarado e imprima apenas o ID do ambiente. O formulário `-H @-` que mantém o token fora da lista de processos requer curl 7.55 ou posterior; curl mais antigo trata `@-` como um cabeçalho literal e envia a solicitação sem autorização.

242 

243```bash theme={null}

244create=$(curl -fsS -X POST -H @- \

245 -H "anthropic-beta: ccr-byoc-2025-07-29" -H "anthropic-version: 2023-06-01" \

246 -H "content-type: application/json" \

247 -d '{"name":"ci-test-environment"}' \

248 https://api.anthropic.com/v1/code/runners/self-hosted/pools \

249 <<<"Authorization: Bearer $ADMIN_TOKEN")

250ENVIRONMENT_ID=$(jq -er .pool.pool_id <<<"$create")

251ENVIRONMENT_SECRET=$(jq -er .pool_secret <<<"$create")

252```

253 

254Até que um [Proprietário ative **Allow self-hosted environments**](/docs/pt/self-hosted-environments#availability-and-limitations) para a organização, a chamada falha com um `403` `permission_error` lendo `self-hosted runners are disabled by your organization's policy`.

255 

256Inicie um runner neste host com `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET=$ENVIRONMENT_SECRET`, mais o hook de captura e `E2E_REPLY_DIR` por [Instale o hook de captura](#install-the-capture-hook-on-your-test-runner), depois execute o script de teste.

257 

258<h3 id="delete-the-environment">

259 Exclua o ambiente

260</h3>

261 

262Exclua o ambiente quando a execução terminar, para que cada execução de CI comece limpa:

263 

264```bash theme={null}

265curl -fsS -X DELETE -H @- \

266 -H "anthropic-beta: ccr-byoc-2025-07-29" -H "anthropic-version: 2023-06-01" \

267 "https://api.anthropic.com/v1/code/runners/self-hosted/pools/$ENVIRONMENT_ID" \

268 <<<"Authorization: Bearer $ADMIN_TOKEN"

269```

Details

49 <Step title="Definir suas configurações">49 <Step title="Definir suas configurações">

50 Adicione sua configuração como JSON. Todas as [configurações disponíveis em `settings.json`](/docs/pt/settings-reference#all-settings) são suportadas, exceto aquelas restritas à entrega de política em nível do SO; veja [Limitações atuais](#current-limitations) para essa lista curta. Isso inclui [hooks](/docs/pt/hooks), [variáveis de ambiente](/docs/pt/env-vars) e [configurações apenas gerenciadas](/docs/pt/managed-settings#managed-only-settings) como `allowManagedPermissionRulesOnly`.50 Adicione sua configuração como JSON. Todas as [configurações disponíveis em `settings.json`](/docs/pt/settings-reference#all-settings) são suportadas, exceto aquelas restritas à entrega de política em nível do SO; veja [Limitações atuais](#current-limitations) para essa lista curta. Isso inclui [hooks](/docs/pt/hooks), [variáveis de ambiente](/docs/pt/env-vars) e [configurações apenas gerenciadas](/docs/pt/managed-settings#managed-only-settings) como `allowManagedPermissionRulesOnly`.

51 51 

52 Este exemplo impõe uma lista de negação de permissões, impede que os usuários ignorem as permissões e restringe as regras de permissão àquelas definidas nas configurações gerenciadas:52 Este exemplo impõe uma lista de negação de permissões, impede que os usuários ignorem as permissões e restringe as regras de permissão àquelas definidas nas configurações gerenciadas. A regra `Bash(curl *)` corresponde a `curl` [conforme Claude a escreve](/docs/pt/permissions#bash-rule-limits), não `/usr/bin/curl` ou `sh -c 'curl …'`; para imposição de rede que não dependa do texto do comando, adicione um [bloco `sandbox` com `allowManagedDomainsOnly`](/docs/pt/sandboxing#configure-the-sandbox-for-your-organization).

53 53 

54 ```json theme={null}54 ```json theme={null}

55 {55 {


203 203 

204O Claude Code lê as variáveis de Workload Identity Federation e os seletores `ANTHROPIC_PROFILE` e `ANTHROPIC_CONFIG_DIR` apenas na inicialização, portanto um valor entregue pelo servidor para eles não muda a fonte de credencial da sessão mesmo após a busca ser bem-sucedida. Para entregar esses seletores no Claude Code v2.1.223 ou posterior, use [configurações gerenciadas pelo endpoint](/docs/pt/managed-settings#delivery-mechanisms) como MDM ou `managed-settings.json`. Para `CLAUDE_CONFIG_DIR` e as variáveis de diretório do sistema operacional, a retenção em si é a proteção: o valor em cache fica fora do ambiente até que o servidor confirme o payload.204O Claude Code lê as variáveis de Workload Identity Federation e os seletores `ANTHROPIC_PROFILE` e `ANTHROPIC_CONFIG_DIR` apenas na inicialização, portanto um valor entregue pelo servidor para eles não muda a fonte de credencial da sessão mesmo após a busca ser bem-sucedida. Para entregar esses seletores no Claude Code v2.1.223 ou posterior, use [configurações gerenciadas pelo endpoint](/docs/pt/managed-settings#delivery-mechanisms) como MDM ou `managed-settings.json`. Para `CLAUDE_CONFIG_DIR` e as variáveis de diretório do sistema operacional, a retenção em si é a proteção: o valor em cache fica fora do ambiente até que o servidor confirme o payload.

205 205 

206Todas as outras chaves no bloco `env` em cache se aplicam na inicialização. Uma vez que o servidor confirme o payload, e você o aprove se precisar de [aprovação de segurança](#security-approval-dialogs), as variáveis retidas se aplicam pelo resto da sessão; os seletores somente de inicialização cobertos acima chegam ao ambiente mas não mudam a fonte de credencial da sessão em execução.206Todas as outras chaves no bloco `env` em cache se aplicam na inicialização. Uma vez que o servidor confirme o payload, e você o aprove se precisar de [aprovação de segurança](#security-approval-dialogs), as variáveis retidas se aplicam pelo resto da sessão.

207 207 

208Se sua organização precisa de um proxy para alcançar `api.anthropic.com`, a retenção afeta apenas o bloco `env` entregue pelo servidor em si: um proxy definido em um bloco `env` [gerenciado pelo endpoint](/docs/pt/managed-settings#delivery-mechanisms) através de MDM ou `managed-settings.json`, no ambiente do shell ou em [configurações do usuário](/docs/pt/settings#where-settings-live) alcança a busca de configurações. A fonte gerenciada pelo endpoint requer Claude Code v2.1.223 ou posterior: o valor de proxy gerenciado pelo servidor em cache é retido até que a busca o confirme, portanto o valor gerenciado pelo endpoint se preenche por chave e alcança a busca em si. Antes da v2.1.223, use o ambiente do shell ou configurações do usuário para que o proxy se aplique junto com um payload de servidor em cache. O primeiro lançamento não tem cache, portanto uma fonte gerenciada pelo endpoint, o ambiente do shell ou configurações do usuário ainda é necessário para a busca inicial.208Se sua organização precisa de um proxy para alcançar `api.anthropic.com`, a retenção afeta apenas o bloco `env` entregue pelo servidor em si: um proxy definido em um bloco `env` [gerenciado pelo endpoint](/docs/pt/managed-settings#delivery-mechanisms) através de MDM ou `managed-settings.json`, no ambiente do shell ou em [configurações do usuário](/docs/pt/settings#where-settings-live) alcança a busca de configurações. A fonte gerenciada pelo endpoint requer Claude Code v2.1.223 ou posterior: o valor de proxy gerenciado pelo servidor em cache é retido até que a busca o confirme, portanto o valor gerenciado pelo endpoint se preenche por chave e alcança a busca em si. Antes da v2.1.223, use o ambiente do shell ou configurações do usuário para que o proxy se aplique junto com um payload de servidor em cache. O primeiro lançamento não tem cache, portanto uma fonte gerenciada pelo endpoint, o ambiente do shell ou configurações do usuário ainda é necessário para a busca inicial.

209 209 


231 231 

232Para impedir que clientes iniciem em configurações gerenciadas pelo servidor em cache ou ausentes, defina `forceRemoteSettingsRefresh: true` em suas configurações gerenciadas.232Para impedir que clientes iniciem em configurações gerenciadas pelo servidor em cache ou ausentes, defina `forceRemoteSettingsRefresh: true` em suas configurações gerenciadas.

233 233 

234Clientes conectados através de um [gateway de aplicativos Claude](#platform-availability) aguardam a busca de inicialização independentemente de você definir isso. Se o gateway responde um lançamento interativo assistido com um `401` e essa configuração está desativada, o gateway encerrou esse login, portanto o Claude Code imprime [`Cloud gateway session expired — run /login to reconnect.`](/docs/pt/errors#cloud-gateway-session-expired) e abre a sessão desconectada do gateway até que o usuário execute `/login`. Quando a busca falha de qualquer outra forma, ou em qualquer outro tipo de lançamento exceto um subcomando `claude auth`, o cliente sai com um erro.234Clientes conectados através de um [gateway de aplicativos Claude](#platform-availability) aguardam a busca de inicialização independentemente de você definir isso, e lidam com uma busca falhada da seguinte forma:

235 

236* Se o gateway responde um lançamento interativo assistido com um `401` e essa configuração está desativada, o gateway encerrou esse login. O Claude Code imprime [`Cloud gateway session expired — run /login to reconnect.`](/docs/pt/errors#cloud-gateway-session-expired) e abre a sessão desconectada do gateway até que o usuário execute `/login`.

237* Quando a busca falha de qualquer outra forma, ou em qualquer outro tipo de lançamento exceto um subcomando `claude auth`, o cliente sai com um erro.

235 238 

236Quando essa configuração está ativa em uma sessão que busca configurações gerenciadas pelo servidor, a CLI bloqueia na inicialização até que as configurações remotas sejam buscadas recentemente. Se a busca falhar, a CLI sai em vez de prosseguir sem a política. Essa configuração se auto-perpetua: uma vez entregue do servidor, ela também é armazenada em cache localmente para que as inicializações subsequentes imponham o mesmo comportamento mesmo antes da primeira busca bem-sucedida de uma nova sessão. Uma sessão que [não busca configurações gerenciadas pelo servidor](#platform-availability) inicia sem aguardar.239Quando essa configuração está ativa em uma sessão que busca configurações gerenciadas pelo servidor, a CLI bloqueia na inicialização até que as configurações remotas sejam buscadas recentemente. Se a busca falhar, a CLI sai em vez de prosseguir sem a política. Essa configuração se auto-perpetua: uma vez entregue do servidor, ela também é armazenada em cache localmente para que as inicializações subsequentes imponham o mesmo comportamento mesmo antes da primeira busca bem-sucedida de uma nova sessão. Uma sessão que [não busca configurações gerenciadas pelo servidor](#platform-availability) inicia sem aguardar.

237 240 


283 O Claude Code não salva aprovação para um gateway de desenvolvimento de loopback alcançado por HTTP simples, portanto a caixa de diálogo aparece novamente após cada login.286 O Claude Code não salva aprovação para um gateway de desenvolvimento de loopback alcançado por HTTP simples, portanto a caixa de diálogo aparece novamente após cada login.

284* **Qualquer outra credencial**, como uma chave de API ou `CLAUDE_CODE_OAUTH_TOKEN`: uma aprovação para as configurações entregues, mantida com a cópia em cache das configurações nesse diretório de configuração. O Claude Code mostra a caixa de diálogo novamente quando as configurações que exigem aprovação mudam, e após você executar `/logout` ou `claude auth logout`, qualquer um dos quais exclui a cópia em cache.287* **Qualquer outra credencial**, como uma chave de API ou `CLAUDE_CODE_OAUTH_TOKEN`: uma aprovação para as configurações entregues, mantida com a cópia em cache das configurações nesse diretório de configuração. O Claude Code mostra a caixa de diálogo novamente quando as configurações que exigem aprovação mudam, e após você executar `/logout` ou `claude auth logout`, qualquer um dos quais exclui a cópia em cache.

285 288 

289Uma aprovação para `sandbox.credentials` ou `sandbox.network.tlsTerminate` também cobre as entradas [`sandbox.network.allowedDomains`](/docs/pt/settings-reference#sandbox-network-alloweddomains) nessas mesmas configurações entregues, porque ambas as configurações atuam nessa lista de permissão. A caixa de diálogo aparece novamente quando seu administrador adiciona ou remove uma dessas entradas, mesmo que `sandbox.network.allowedDomains` não exija aprovação por si só.

290 

286Com um login claude.ai salvo:291Com um login claude.ai salvo:

287 292 

288* Se você se desconectar e reconectar, ou mudar para outra organização e depois retornar, o Claude Code não mostra a caixa de diálogo novamente enquanto essas configurações não forem alteradas, a menos que outra conta as tenha aprovado para essa organização no mesmo diretório de configuração no meio tempo.293* Se você se desconectar e reconectar, ou mudar para outra organização e depois retornar, o Claude Code não mostra a caixa de diálogo novamente enquanto essas configurações não forem alteradas, a menos que outra conta as tenha aprovado para essa organização no mesmo diretório de configuração no meio tempo.


326* Um login OAuth de Equipe ou Empresa331* Um login OAuth de Equipe ou Empresa

327* Um token OAuth fornecido através de `CLAUDE_CODE_OAUTH_TOKEN`332* Um token OAuth fornecido através de `CLAUDE_CODE_OAUTH_TOKEN`

328* Uma chave de API configurada diretamente333* Uma chave de API configurada diretamente

329* Um [perfil Anthropic](/docs/pt/authentication#anthropic-profiles-and-federation-credentials) `user_oauth`, que o [login sem chave do Console](/docs/pt/authentication#sign-in-without-an-api-key) ou o `ant auth login` da CLI da Plataforma Claude escreve, a menos que o perfil defina um `base_url` diferente da API Anthropic. Requer Claude Code v2.1.257 ou posterior.334* Um [perfil Anthropic](/docs/pt/authentication#anthropic-profiles-and-federation-credentials) `user_oauth`, a menos que o perfil defina um `base_url` diferente da API Anthropic. Requer Claude Code v2.1.257 ou posterior.

330 335 

331Nem as chaves retornadas por um script [`apiKeyHelper`](/docs/pt/settings-reference#apikeyhelper) nem as credenciais de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) acionam a busca de configurações.336Nem as chaves retornadas por um script [`apiKeyHelper`](/docs/pt/settings-reference#apikeyhelper) nem as credenciais de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) acionam a busca de configurações.

332 337 

sessions.md +3 −3

Details

37 37 

38Uma sessão retomada restaura a conversa junto com o estado salvo nela:38Uma sessão retomada restaura a conversa junto com o estado salvo nela:

39 39 

40* Histórico de conversa: o histórico completo, incluindo chamadas de ferramentas e resultados.40* Histórico de conversa: o histórico completo, incluindo chamadas de ferramentas e resultados. Uma ferramenta que ainda estava em execução quando o processo anterior terminou, por exemplo em uma falha, não termina ou executa novamente quando você retoma; Claude continua sem sua saída.

41* Modelo: a sessão continua no modelo que estava usando. O modelo não é restaurado quando foi descontinuado ou não é permitido por `availableModels`, quando uma flag `--model` ou uma variável de ambiente da família `ANTHROPIC_MODEL` escolhe um no lançamento, ou em provedores que usam IDs de implantação específicos do provedor, como [Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry](/docs/pt/third-party-integrations); veja [configuração de modelo](/docs/pt/model-config#setting-your-model) para a ordem de resolução.41* Modelo: a sessão continua no modelo que estava usando. O modelo não é restaurado quando foi descontinuado ou não é permitido por `availableModels`, quando uma flag `--model` ou uma variável de ambiente da família `ANTHROPIC_MODEL` escolhe um no lançamento, ou em provedores que usam IDs de implantação específicos do provedor, como [Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry](/docs/pt/third-party-integrations); veja [configuração de modelo](/docs/pt/model-config#setting-your-model) para a ordem de resolução.

42* Agente: uma sessão iniciada com [`--agent`](/docs/pt/sub-agents#invoke-subagents-explicitly) ou a configuração `agent` continua como esse agente, mantendo seu prompt do sistema, restrições de ferramentas e modelo. Passe `--agent` ao retomar para escolher um diferente. Claude Code procura o agente em dois lugares: o diretório original da sessão, desde que você tenha [confiado nesse workspace](/docs/pt/permissions#project-allow-rules-and-workspace-trust), e depois o diretório de onde você retoma, para que um agente com escopo de projeto ainda carregue quando você retoma de outro diretório. Se Claude Code não encontrar o agente em nenhum dos dois lugares, a sessão retoma com as ferramentas padrão e o prompt do sistema e mostra um [aviso nomeando o agente](/docs/pt/errors#session-agent-no-longer-available).42* Agente: uma sessão iniciada com [`--agent`](/docs/pt/sub-agents#invoke-subagents-explicitly) ou a configuração `agent` continua como esse agente, mantendo suas restrições de ferramentas e modelo. Passe `--agent` ao retomar para escolher um diferente; para o prompt do sistema em ambos os casos, veja [Flags de prompt do sistema em conversas retomadas](/docs/pt/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code procura o agente em dois lugares: o diretório original da sessão, desde que você tenha [confiado nesse workspace](/docs/pt/permissions#project-allow-rules-and-workspace-trust), e depois o diretório de onde você retoma, para que um agente com escopo de projeto ainda carregue quando você retoma de outro diretório. Se Claude Code não encontrar o agente em nenhum dos dois lugares, a sessão retoma com as ferramentas padrão e mostra um [aviso nomeando o agente](/docs/pt/errors#session-agent-no-longer-available).

43* Modo de permissão: se você retomar de um terminal com `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` quando o nome corresponde a uma sessão, sem `-p`, Claude Code restaura o modo de permissão em que a sessão estava, exceto nos casos em [modo de permissão ao retomar](#permission-mode-on-resume), que também cobre o seletor de sessão, `/resume` e retomar com `claude -p`. Passe `--permission-mode` ou `--dangerously-skip-permissions` para substituir o modo restaurado.43* Modo de permissão: se você retomar de um terminal com `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` quando o nome corresponde a uma sessão, sem `-p`, Claude Code restaura o modo de permissão em que a sessão estava, exceto nos casos em [modo de permissão ao retomar](#permission-mode-on-resume), que também cobre o seletor de sessão, `/resume` e retomar com `claude -p`. Passe `--permission-mode` ou `--dangerously-skip-permissions` para substituir o modo restaurado.

44* Objetivo ativo: um [objetivo](/docs/pt/goal#resume-with-an-active-goal) que ainda estava ativo quando a sessão terminou é transferido; sua contagem de turnos, temporizador e linha de base de gasto de tokens são redefinidos.44* Objetivo ativo: um [objetivo](/docs/pt/goal#resume-with-an-active-goal) que ainda estava ativo quando a sessão terminou é transferido; sua contagem de turnos, temporizador e linha de base de gasto de tokens são redefinidos.

45* Tarefas agendadas: [tarefas que não expiraram](/docs/pt/scheduled-tasks#limitations) são restauradas. Tarefas Bash em background e tarefas de monitoramento não são.45* Tarefas agendadas: [tarefas que não expiraram](/docs/pt/scheduled-tasks#limitations) são restauradas. Tarefas Bash em background e tarefas de monitoramento não são.

46 46 

47Nem toda flag de configuração do lançamento original é restaurada. Se a sessão dependia de `--mcp-config`, `--settings`, `--plugin-dir`, `--fallback-model` ou diretórios adicionados com `--add-dir`, passe-os novamente quando você retomar; diretórios adicionados no meio da sessão com `/add-dir` também não são restaurados, embora o seletor de sessão ainda os use para localizar a sessão. Os arquivos de configurações padrão, como `settings.json` e `settings.local.json`, são relidos no lançamento, portanto a configuração que reside neles não precisa ser passada novamente.47Nem toda flag de configuração do lançamento original é restaurada. Se a sessão dependia de `--mcp-config`, `--settings`, `--plugin-dir`, `--fallback-model` ou diretórios adicionados com `--add-dir`, passe-os novamente quando você retomar; diretórios adicionados no meio da sessão com `/add-dir` também não são restaurados, embora o seletor de sessão ainda os use para localizar a sessão. Os arquivos de configurações padrão, como `settings.json` e `settings.local.json`, são relidos no lançamento, portanto a configuração que reside neles não precisa ser passada novamente. Para `--system-prompt` e `--append-system-prompt`, veja [Flags de prompt do sistema em conversas retomadas](/docs/pt/cli-reference#system-prompt-flags-in-resumed-conversations).

48 48 

49<h4 id="permission-mode-on-resume">49<h4 id="permission-mode-on-resume">

50 Modo de permissão ao retomar50 Modo de permissão ao retomar

settings.md +6 −3

Details

605 Quando as edições entram em vigor605 Quando as edições entram em vigor

606</h3>606</h3>

607 607 

608O Claude Code observa seus arquivos de configurações e os recarrega quando mudam, para que aplique a maioria das edições à sessão em execução sem uma reinicialização, incluindo edições em `permissions`, `hooks` e auxiliares de credenciais como `apiKeyHelper`. O recarregamento cobre configurações de usuário, projeto, local e gerenciadas, e o Claude Code executa o [hook `ConfigChange`](/docs/pt/hooks#configchange) para cada mudança de arquivo de configurações que detecta, não para configurações gerenciadas que chegam de MDM ou do console claude.ai. As configurações gerenciadas que chegam através de MDM ou do console claude.ai alcançam uma sessão em execução em um cronograma em vez de ao salvar; a [tabela de entrega](/docs/pt/managed-settings#choose-a-delivery-mechanism) fornece por fonte.608O Claude Code observa seus arquivos de configurações e os recarrega quando mudam, para que aplique a maioria das edições à sessão em execução sem uma reinicialização, incluindo edições em `permissions`, `hooks` e auxiliares de credenciais como `apiKeyHelper`. O Claude Code também carrega um arquivo de configurações que você cria no meio da sessão se sua pasta existia quando a sessão começou. Para a pasta `.claude/` do projeto, ele carrega o arquivo mesmo quando você cria a pasta na mesma sessão.

609 

610O recarregamento cobre configurações de usuário, projeto, local e gerenciadas, e o Claude Code executa o [hook `ConfigChange`](/docs/pt/hooks#configchange) para cada mudança de arquivo de configurações que detecta, não para configurações gerenciadas que chegam de MDM ou do console claude.ai. As configurações gerenciadas que chegam através de MDM ou do console claude.ai alcançam uma sessão em execução em um cronograma em vez de ao salvar; a [tabela de entrega](/docs/pt/managed-settings#choose-a-delivery-mechanism) fornece por fonte.

609 611 

610O Claude Code lê algumas chaves apenas uma vez, na inicialização da sessão, então uma edição em uma delas não alcança a sessão em execução. As chaves do lado do administrador que também esperam por uma reinicialização, como `requiredMinimumVersion`, são listadas em [onde e quando uma política se aplica](/docs/pt/managed-settings#where-and-when-a-policy-applies). As que você provavelmente editará no meio da sessão:612O Claude Code lê algumas chaves apenas uma vez, na inicialização da sessão, então uma edição em uma delas não alcança a sessão em execução. As chaves do lado do administrador que também esperam por uma reinicialização, como `requiredMinimumVersion`, são listadas em [onde e quando uma política se aplica](/docs/pt/managed-settings#where-and-when-a-policy-applies). As que você provavelmente editará no meio da sessão:

611 613 


779 Exceções à precedência de configurações gerenciadas781 Exceções à precedência de configurações gerenciadas

780</h3>782</h3>

781 783 

782Para algumas chaves sensíveis à segurança, o Claude Code honra um valor restritivo de um escopo que de outra forma não poderia substituir configurações gerenciadas. Encontre a chave nesta tabela para ver qual valor ele honra e de onde.784Para algumas chaves cujos valores restringem uma sessão, o Claude Code honra um valor restritivo de um escopo que de outra forma não poderia substituir configurações gerenciadas. Encontre a chave nesta tabela para ver qual valor ele honra e de onde.

783 785 

784| Chave | Valor que o Claude Code honra | Notas |786| Chave | Valor que o Claude Code honra | Notas |

785| :------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |787| :------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


790| [`crossSessionInbound`](/docs/pt/settings-reference#crosssessioninbound) | Um valor mais rigoroso de `.claude/settings.json` ou `.claude/settings.local.json`, na escada `accept` \< `hold` \< `refuse` | Honrado sobre valores gerenciados, `--settings` e de usuário; um valor de projeto ou local que não é mais rigoroso é ignorado |792| [`crossSessionInbound`](/docs/pt/settings-reference#crosssessioninbound) | Um valor mais rigoroso de `.claude/settings.json` ou `.claude/settings.local.json`, na escada `accept` \< `hold` \< `refuse` | Honrado sobre valores gerenciados, `--settings` e de usuário; um valor de projeto ou local que não é mais rigoroso é ignorado |

791| [`useAutoModeDuringPlan`](/docs/pt/settings-reference#useautomodeduringplan) | `false` de qualquer fonte gerenciada, `--settings`, `~/.claude/settings.json` ou `.claude/settings.local.json` | Honrado mesmo quando a fonte gerenciada vencedora define `true`; um `false` em `.claude/settings.json` é ignorado |793| [`useAutoModeDuringPlan`](/docs/pt/settings-reference#useautomodeduringplan) | `false` de qualquer fonte gerenciada, `--settings`, `~/.claude/settings.json` ou `.claude/settings.local.json` | Honrado mesmo quando a fonte gerenciada vencedora define `true`; um `false` em `.claude/settings.json` é ignorado |

792| [`syncClaudeAiSkills`](/docs/pt/settings-reference#syncclaudeaiskills) | `false` de qualquer fonte gerenciada, `--settings`, `~/.claude/settings.json` ou `.claude/settings.local.json` | Honrado mesmo quando a fonte gerenciada vencedora define `true`; um `false` em `.claude/settings.json` é ignorado |794| [`syncClaudeAiSkills`](/docs/pt/settings-reference#syncclaudeaiskills) | `false` de qualquer fonte gerenciada, `--settings`, `~/.claude/settings.json` ou `.claude/settings.local.json` | Honrado mesmo quando a fonte gerenciada vencedora define `true`; um `false` em `.claude/settings.json` é ignorado |

795| [`maxEffortLevel`](/docs/pt/settings-reference#maxeffortlevel) | Um limite inferior de qualquer escopo, incluindo `--settings` | Honrado mesmo quando as configurações gerenciadas que o Claude Code aplica definem um limite superior; o limite inferior se aplica. Requer Claude Code v2.1.267 ou posterior |

793 796 

794Um aplicativo que executa o Claude Code dentro de si e define [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/pt/env-vars) também é uma exceção. O Claude Code toma a configuração de modelo daquele aplicativo sobre as chaves `model`, `fallbackModel` e `modelOverrides` de cada fonte gerenciada, e sobre as variáveis de seleção de modelo em um bloco `env` gerenciado, como `ANTHROPIC_MODEL` e a família `ANTHROPIC_DEFAULT_*_MODEL`. O Claude Code mantém uma [`availableModels`](/docs/pt/settings-reference#availablemodels) gerenciada em vigor a menos que o aplicativo forneça a sua própria.797Um aplicativo que executa o Claude Code dentro de si e define [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/pt/env-vars) também é uma exceção. O Claude Code toma a configuração de modelo daquele aplicativo sobre as chaves `model`, `fallbackModel`, `modelPicker` e `modelOverrides` de cada fonte gerenciada, e sobre as variáveis de seleção de modelo em um bloco `env` gerenciado, como `ANTHROPIC_MODEL` e a família `ANTHROPIC_DEFAULT_*_MODEL`. O Claude Code mantém uma [`availableModels`](/docs/pt/settings-reference#availablemodels) gerenciada em vigor a menos que o aplicativo forneça a sua própria.

795 798 

796<h2 id="settings-in-cloud-sessions">799<h2 id="settings-in-cloud-sessions">

797 Configurações em sessões em nuvem800 Configurações em sessões em nuvem

settings-example.md +396 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Arquivos de configuração de exemplo

6 

7> Arquivos settings.json realistas para um desenvolvedor, uma equipe e uma organização: copie um, mantenha as chaves que deseja e altere os valores.

8 

9Esta página contém três arquivos `settings.json` de exemplo, um para cada lugar onde você salva uma configuração:

10 

11* Um `~/.claude/settings.json` de desenvolvedor

12* Um `.claude/settings.json` de equipe, confirmado no repositório

13* Um `managed-settings.json` de organização

14 

15Cada um é um arquivo plausível para esse leitor, para que você possa ver a forma e copiar as partes que deseja. Nenhum deles é uma linha de base recomendada. Cada valor vem da entrada da chave na [referência de configurações](/docs/pt/settings-reference), que tem seu tipo, padrão e onde pode ser definido.

16 

17Cada exemplo tem duas abas. **Copyable settings file** é o arquivo como você o salvaria. **What each key does** é o mesmo arquivo com um comentário acima de cada chave; Claude Code não aceita comentários em um arquivo de configurações, então copie da primeira aba.

18 

19<h2 id="your-own-settings">

20 Suas próprias configurações

21</h2>

22 

23As configurações pessoais de um desenvolvedor. Ele escolhe um modelo e esforço, ajusta o terminal e pré-aprova um comando somente leitura e uma leitura de arquivo. Tudo não listado mantém seu padrão. Um arquivo como este vai em `~/.claude/settings.json`, onde se aplica a cada projeto que você abre.

24 

25<Tabs>

26 <Tab title="Copyable settings file">

27 Salve isto como `~/.claude/settings.json`. É JSON válido sem comentários, então você pode colar como está e deletar as chaves que não deseja.

28 

29 ```json ~/.claude/settings.json theme={null}

30 {

31 "model": "claude-sonnet-5",

32 "effortLevel": "xhigh",

33 "editorMode": "vim",

34 "theme": "light-daltonized",

35 "statusLine": {

36 "type": "command",

37 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",

38 "padding": 2

39 },

40 "spinnerTipsEnabled": false,

41 "preferredNotifChannel": "terminal_bell",

42 "permissions": {

43 "allow": [

44 "Bash(git diff *)",

45 "Read(~/.zshrc)"

46 ]

47 },

48 "autoUpdatesChannel": "stable",

49 "cleanupPeriodDays": 20

50 }

51 ```

52 </Tab>

53 

54 <Tab title="What each key does">

55 O mesmo arquivo com um comentário acima de cada chave. Leia aqui; copie da outra aba, porque Claude Code não aceita comentários em um arquivo de configurações.

56 

57 ```jsonc ~/.claude/settings.json theme={null}

58 {

59 // Inicie cada sessão no Sonnet 5

60 "model": "claude-sonnet-5",

61 // Raciocine mais profundamente do que o nível alto padrão em modelos sem um nível salvo; /effort salva um nível por modelo, e --effort define um para uma única sessão

62 "effortLevel": "xhigh",

63 // Atalhos de teclado Vim no prompt

64 "editorMode": "vim",

65 // O tema claro amigável para daltônicos

66 "theme": "light-daltonized",

67 // Uma linha de status abaixo do prompt: nome do modelo e contexto usado

68 "statusLine": {

69 "type": "command",

70 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",

71 "padding": 2

72 },

73 // Oculte as dicas que giram sob o spinner

74 "spinnerTipsEnabled": false,

75 // Toque o sino do terminal para notificações, como uma tarefa concluída ou um prompt de permissão aguardando

76 "preferredNotifChannel": "terminal_bell",

77 // Deixe Claude Code executar git diff e ler seu .zshrc sem perguntar

78 "permissions": {

79 "allow": [

80 "Bash(git diff *)",

81 "Read(~/.zshrc)"

82 ]

83 },

84 // Pegue atualizações do canal estável

85 "autoUpdatesChannel": "stable",

86 // Exclua transcrições de sessão e outros dados de sessão local com mais de 20 dias

87 "cleanupPeriodDays": 20

88 }

89 ```

90 </Tab>

91</Tabs>

92 

93<h2 id="a-teams-shared-settings">

94 Configurações compartilhadas de uma equipe

95</h2>

96 

97As configurações compartilhadas de uma equipe, confirmadas no repositório para que todos que o clonem obtenham as mesmas permissões, hooks, telemetria e marketplace de plugins. Salve um arquivo como este em `.claude/settings.json` no topo do repositório. O que você precisa saber antes de confirmar um:

98 

99* **Sessões em nuvem também o leem.** Uma [sessão em nuvem](/docs/pt/settings#settings-in-cloud-sessions) no Claude Code na web começa a partir de um clone do repositório, então o arquivo confirmado se aplica lá também.

100* **Regras de permissão aguardam confiança.** Regras de permissão e entradas `extraKnownMarketplaces` entram em vigor depois que cada pessoa [confia nesta pasta em si](/docs/pt/permissions#project-allow-rules-and-workspace-trust), não apenas em uma pasta pai; regras de negação e pergunta se aplicam em cada sessão, confiável ou não.

101* **O hook é um script no repositório.** O hook deste arquivo executa `.claude/hooks/block-rm.sh`; [How a hook resolves](/docs/pt/hooks#how-a-hook-resolves) percorre como escrevê-lo.

102* **Regras correspondem ao comando e caminho conforme escrito.** `Bash(git push *)` não corresponde a [`git -C . push`](/docs/pt/permissions#bash-rule-limits). `Read(./.env)` por si só impede as ferramentas de arquivo e comandos que nomeiam o arquivo, como `cat .env`, mas não [`grep -r` executado sobre o diretório](/docs/pt/permissions#read-and-edit); o bloco `sandbox` neste arquivo fecha essa lacuna, porque o sandbox [adiciona seus caminhos de negação `Read`](/docs/pt/settings-reference#sandbox-filesystem-denyread) ao que todo comando em sandbox não pode ler.

103 

104<Tabs>

105 <Tab title="Copyable settings file">

106 Salve isto como `.claude/settings.json` no topo do repositório e confirme. É JSON válido sem comentários, então você pode colar como está e deletar as chaves que não deseja.

107 

108 ```json .claude/settings.json theme={null}

109 {

110 "permissions": {

111 "allow": [

112 "Bash(npm run *)"

113 ],

114 "ask": [

115 "Bash(git push *)"

116 ],

117 "deny": [

118 "Read(./.env)",

119 "Read(./.env.*)",

120 "Read(./secrets/**)"

121 ]

122 },

123 "env": {

124 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

125 "OTEL_METRICS_EXPORTER": "otlp",

126 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

127 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

128 },

129 "hooks": {

130 "PreToolUse": [

131 {

132 "matcher": "Bash",

133 "hooks": [

134 {

135 "type": "command",

136 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"

137 }

138 ]

139 }

140 ]

141 },

142 "extraKnownMarketplaces": {

143 "acme-tools": {

144 "source": {

145 "source": "github",

146 "repo": "acme-corp/claude-plugins"

147 }

148 }

149 },

150 "enabledPlugins": {

151 "code-formatter@acme-tools": true

152 },

153 "sandbox": {

154 "enabled": true,

155 "filesystem": {

156 "allowWrite": [

157 "/tmp/build"

158 ]

159 },

160 "network": {

161 "allowedDomains": [

162 "registry.npmjs.org",

163 "*.example.com"

164 ]

165 }

166 },

167 "plansDirectory": "./plans"

168 }

169 ```

170 </Tab>

171 

172 <Tab title="What each key does">

173 O mesmo arquivo com um comentário acima de cada chave. Leia aqui; copie da outra aba, porque Claude Code não aceita comentários em um arquivo de configurações.

174 

175 ```jsonc .claude/settings.json theme={null}

176 {

177 "permissions": {

178 // Execute scripts npm sem perguntar

179 "allow": [

180 "Bash(npm run *)"

181 ],

182 // Confirme antes de comandos git push

183 "ask": [

184 "Bash(git push *)"

185 ],

186 // Negue leituras de arquivos env e da pasta de segredos pelas ferramentas de arquivo e comandos que leem arquivos

187 "deny": [

188 "Read(./.env)",

189 "Read(./.env.*)",

190 "Read(./secrets/**)"

191 ]

192 },

193 // Envie métricas OpenTelemetry para o coletor da equipe sobre gRPC; substitua o endpoint pela URL do seu coletor

194 "env": {

195 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

196 "OTEL_METRICS_EXPORTER": "otlp",

197 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

198 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

199 },

200 // Antes de cada comando Bash, execute um script no repositório que pode bloqueá-lo

201 "hooks": {

202 "PreToolUse": [

203 {

204 "matcher": "Bash",

205 "hooks": [

206 {

207 "type": "command",

208 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"

209 }

210 ]

211 }

212 ]

213 },

214 // Registre o marketplace de plugins da equipe em cada clone

215 "extraKnownMarketplaces": {

216 "acme-tools": {

217 "source": {

218 "source": "github",

219 "repo": "acme-corp/claude-plugins"

220 }

221 }

222 },

223 // Ative um plugin desse marketplace; um plugin de uma fonte externa como um repositório GitHub ainda precisa que cada pessoa o instale uma vez

224 "enabledPlugins": {

225 "code-formatter@acme-tools": true

226 },

227 // Comandos de sandbox: diretório de compilação gravável; npm e example.com pré-permitidos, outros hosts ainda solicitam

228 "sandbox": {

229 "enabled": true,

230 "filesystem": {

231 "allowWrite": [

232 "/tmp/build"

233 ]

234 },

235 "network": {

236 "allowedDomains": [

237 "registry.npmjs.org",

238 "*.example.com"

239 ]

240 }

241 },

242 // Mantenha arquivos de plano dentro do repositório

243 "plansDirectory": "./plans"

244 }

245 ```

246 </Tab>

247</Tabs>

248 

249<h2 id="an-organizations-managed-settings">

250 Configurações gerenciadas de uma organização

251</h2>

252 

253Um arquivo `managed-settings.json` que mostra a forma das chaves gerenciadas, com um valor plausível para cada uma. Não é uma política recomendada: escolha as chaves que correspondem aos seus próprios requisitos e defina seus próprios valores. O exemplo define estas chaves:

254 

255* `forceLoginMethod` e `forceLoginOrgUUID` fixam o método de login e a organização

256* `availableModels` e `enforceAvailableModels` restringem quais modelos as sessões podem usar

257* `permissions.deny` bloqueia duas leituras de arquivo e comandos `curl` [conforme Claude os escreve](/docs/pt/permissions#bash-rule-limits), e `disableBypassPermissionsMode` remove o modo de permissão de bypass

258* [`allowManagedPermissionRulesOnly`](/docs/pt/settings-reference#allowmanagedpermissionrulesonly) e [`allowManagedMcpServersOnly`](/docs/pt/settings-reference#allowmanagedmcpserversonly) fazem as listas de permissão gerenciadas e MCP as únicas que se aplicam

259* `allowedMcpServers` fixa o servidor MCP pela URL

260* `strictKnownMarketplaces` permite um marketplace de plugins

261* `sandbox` coloca comandos em sandbox com uma lista de permissão de rede fixa e sem retry não sandboxed

262* `requiredMinimumVersion` define uma versão mínima de Claude Code

263* `cleanupPeriodDays` encurta a retenção de transcrições de sessão e outros dados locais para sete dias

264* `companyAnnouncements` mostra uma mensagem na inicialização

265 

266Os administradores implantam um arquivo como este como `managed-settings.json`, ou o mesmo JSON através de MDM ou [configurações gerenciadas pelo servidor](/docs/pt/server-managed-settings). Um arquivo implantado se aplica a cada máquina ou conta que alcança. Para dar a um grupo valores diferentes, implante um arquivo ou perfil diferente para esse grupo, já que [as configurações gerenciadas pelo servidor não suportam política por grupo ainda](/docs/pt/server-managed-settings#current-limitations).

267 

268<Tabs>

269 <Tab title="Arquivo de configurações copiável">

270 Implante isto como `managed-settings.json`, ou o mesmo JSON através de MDM ou do console claude.ai. É JSON válido sem comentários; substitua o UUID da organização de exemplo, URL do servidor e marketplace pelos seus próprios e delete as chaves que não deseja.

271 

272 ```json managed-settings.json theme={null}

273 {

274 "forceLoginMethod": "claudeai",

275 "forceLoginOrgUUID": [

276 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

277 ],

278 "availableModels": [

279 "opus",

280 "sonnet"

281 ],

282 "enforceAvailableModels": true,

283 "permissions": {

284 "deny": [

285 "Bash(curl *)",

286 "Read(./.env)",

287 "Read(./secrets/**)"

288 ],

289 "disableBypassPermissionsMode": "disable"

290 },

291 "allowManagedPermissionRulesOnly": true,

292 "allowedMcpServers": [

293 {

294 "serverUrl": "https://api.githubcopilot.com/*"

295 }

296 ],

297 "allowManagedMcpServersOnly": true,

298 "strictKnownMarketplaces": [

299 {

300 "source": "github",

301 "repo": "acme-corp/approved-plugins"

302 }

303 ],

304 "sandbox": {

305 "enabled": true,

306 "failIfUnavailable": true,

307 "allowUnsandboxedCommands": false,

308 "network": {

309 "allowedDomains": [

310 "registry.npmjs.org",

311 "github.com"

312 ],

313 "allowManagedDomainsOnly": true

314 }

315 },

316 "requiredMinimumVersion": "2.1.150",

317 "cleanupPeriodDays": 7,

318 "companyAnnouncements": [

319 "Welcome to Acme Corp! Review our code guidelines at docs.example.com"

320 ]

321 }

322 ```

323 </Tab>

324 

325 <Tab title="O que cada chave faz">

326 O mesmo arquivo com um comentário acima de cada chave. Leia aqui; copie da outra aba, porque Claude Code não aceita comentários em um arquivo de configurações.

327 

328 ```jsonc managed-settings.json theme={null}

329 {

330 // Apenas logins claude.ai, e apenas nesta organização

331 "forceLoginMethod": "claudeai",

332 "forceLoginOrgUUID": [

333 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

334 ],

335 // Apenas modelos Opus e Sonnet; com enforceAvailableModels, a opção Padrão obedece à lista também

336 "availableModels": [

337 "opus",

338 "sonnet"

339 ],

340 "enforceAvailableModels": true,

341 "permissions": {

342 // Bloqueie curl, o arquivo .env do projeto e sua pasta de segredos em cada máquina

343 "deny": [

344 "Bash(curl *)",

345 "Read(./.env)",

346 "Read(./secrets/**)"

347 ],

348 // Remova o modo de bypass de permissões de cada sessão

349 "disableBypassPermissionsMode": "disable"

350 },

351 // Ignore regras de permissão de configurações de usuário, projeto e local

352 "allowManagedPermissionRulesOnly": true,

353 // Apenas o servidor MCP do GitHub, correspondido pela URL em vez de por nome, já que um usuário pode

354 // nomear qualquer servidor "github". Servidores adicionados pelo usuário que não correspondem não carregam, incluindo

355 // cada servidor stdio quando a lista tem apenas entradas de URL. A chave allowManagedMcpServersOnly

356 // abaixo faz desta lista gerenciada a única lista de permissão que se aplica

357 "allowedMcpServers": [

358 {

359 "serverUrl": "https://api.githubcopilot.com/*"

360 }

361 ],

362 "allowManagedMcpServersOnly": true,

363 // Plugins podem vir apenas deste marketplace

364 "strictKnownMarketplaces": [

365 {

366 "source": "github",

367 "repo": "acme-corp/approved-plugins"

368 }

369 ],

370 // Coloque cada comando que Claude executa em sandbox, recuse iniciar se o sandbox não puder ser

371 // configurado, e nunca deixe um comando bloqueado tentar novamente fora do sandbox; rede

372 // limitada a npm e GitHub, e usuários não podem adicionar domínios

373 "sandbox": {

374 "enabled": true,

375 "failIfUnavailable": true,

376 "allowUnsandboxedCommands": false,

377 "network": {

378 "allowedDomains": [

379 "registry.npmjs.org",

380 "github.com"

381 ],

382 "allowManagedDomainsOnly": true

383 }

384 },

385 // Recuse iniciar em versões mais antigas que 2.1.150

386 "requiredMinimumVersion": "2.1.150",

387 // Exclua transcrições de sessão e outros dados de sessão local após 7 dias

388 "cleanupPeriodDays": 7,

389 // Uma mensagem que cada usuário vê na inicialização

390 "companyAnnouncements": [

391 "Welcome to Acme Corp! Review our code guidelines at docs.example.com"

392 ]

393 }

394 ```

395 </Tab>

396</Tabs>

setup.md +12 −10

Details

41 Novo no terminal? Consulte o [guia de terminal](/docs/pt/terminal-guide) para instruções passo a passo.41 Novo no terminal? Consulte o [guia de terminal](/docs/pt/terminal-guide) para instruções passo a passo.

42</Tip>42</Tip>

43 43 

44To install Claude Code, use one of the following methods:44Para instalar Claude Code, use um dos seguintes métodos:

45 45 

46<Tabs>46<Tabs>

47 <Tab title="Native Install (Recommended)">47 <Tab title="Instalação Nativa (Recomendado)">

48 **macOS, Linux, WSL:**48 **macOS, Linux, WSL:**

49 49 

50 ```bash theme={null}50 ```bash theme={null}


63 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd63 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

64 ```64 ```

65 65 

66 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.66 Se você vir `The token '&&' is not a valid statement separator`, você está no PowerShell, não no CMD. Se você vir `'irm' is not recognized as an internal or external command`, você está no CMD, não no PowerShell. Seu prompt mostra `PS C:\` quando você está no PowerShell e `C:\` sem o `PS` quando você está no CMD.

67 67 

68 If the install command fails with `syntax error near unexpected token '<'`, a `403`, or another curl error, see [Troubleshoot installation](/docs/en/troubleshoot-install#find-your-error) to match the error to a fix and for alternative install methods.68 Se o comando de instalação falhar com `syntax error near unexpected token '<'`, um `403`, ou outro erro de curl, consulte [Solucionar problemas de instalação](/docs/pt/troubleshoot-install#find-your-error) para corresponder o erro a uma correção e para métodos alternativos de instalação.

69 69 

70 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.70 [Git for Windows](https://git-scm.com/downloads/win) é recomendado no Windows nativo para que Claude Code possa usar a ferramenta Bash. Se Git for Windows não estiver instalado, Claude Code usa PowerShell como ferramenta de shell. Configurações WSL não precisam de Git for Windows.

71 71 

72 <Info>72 <Info>

73 Native installations automatically update in the background to keep you on the latest version.73 As instalações nativas são atualizadas automaticamente em segundo plano para mantê-lo na versão mais recente.

74 </Info>74 </Info>

75 </Tab>75 </Tab>

76 76 


79 brew install --cask claude-code79 brew install --cask claude-code

80 ```80 ```

81 81 

82 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.82 Homebrew oferece dois casks. `claude-code` rastreia o canal de versão estável, que normalmente fica cerca de uma semana atrás e pula versões com regressões importantes. `claude-code@latest` rastreia o canal mais recente e recebe novas versões assim que são lançadas.

83 83 

84 <Info>84 <Info>

85 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.85 As instalações do Homebrew não são atualizadas automaticamente. Execute `brew upgrade claude-code` ou `brew upgrade claude-code@latest`, dependendo de qual cask você instalou, para obter os recursos mais recentes e correções de segurança.

86 </Info>86 </Info>

87 </Tab>87 </Tab>

88 88 


92 ```92 ```

93 93 

94 <Info>94 <Info>

95 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.95 As instalações do WinGet não são atualizadas automaticamente. Execute `winget upgrade Anthropic.ClaudeCode` periodicamente para obter os recursos mais recentes e correções de segurança.

96 </Info>96 </Info>

97 </Tab>97 </Tab>

98</Tabs>98</Tabs>

99 99 

100You can also install with [apt, dnf, or apk](/docs/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.100Você também pode instalar com [apt, dnf, ou apk](/docs/pt/setup#install-with-linux-package-managers) no Debian, Fedora, RHEL e Alpine.

101 101 

102Após a conclusão da instalação, abra um terminal no projeto em que deseja trabalhar e inicie Claude Code:102Após a conclusão da instalação, abra um terminal no projeto em que deseja trabalhar e inicie Claude Code:

103 103 


296}296}

297```297```

298 298 

299Em uma instalação nativa ou npm, confirme que a alteração entrou em vigor executando `claude doctor` e verificando se a linha `Auto-updates` mostra `disabled (set by env: DISABLE_AUTOUPDATER)` em vez de `enabled`.

300 

299`DISABLE_AUTOUPDATER` apenas interrompe a verificação em segundo plano; `claude update` e `claude install` ainda funcionam. Para bloquear todos os caminhos de atualização, incluindo atualizações manuais, defina [`DISABLE_UPDATES`](/docs/pt/env-vars) em vez disso. Use isso quando você distribuir Claude Code através de seus próprios canais e precisar que os usuários permaneçam na versão que você fornece.301`DISABLE_AUTOUPDATER` apenas interrompe a verificação em segundo plano; `claude update` e `claude install` ainda funcionam. Para bloquear todos os caminhos de atualização, incluindo atualizações manuais, defina [`DISABLE_UPDATES`](/docs/pt/env-vars) em vez disso. Use isso quando você distribuir Claude Code através de seus próprios canais e precisar que os usuários permaneçam na versão que você fornece.

300 302 

301<h3 id="update-manually">303<h3 id="update-manually">

skills.md +23 −14

Details

28 28 

29A maioria das skills agrupadas está disponível em todas as sessões. Algumas dependem de um recurso específico: `/workflow-authoring`, por exemplo, está disponível apenas quando [fluxos de trabalho dinâmicos](/docs/pt/workflows) estão habilitados.29A maioria das skills agrupadas está disponível em todas as sessões. Algumas dependem de um recurso específico: `/workflow-authoring`, por exemplo, está disponível apenas quando [fluxos de trabalho dinâmicos](/docs/pt/workflows) estão habilitados.

30 30 

31Para desativar skills agrupadas, use a configuração [`disableBundledSkills`](/docs/pt/settings-reference#disablebundledskills), que desativa todas as skills agrupadas, exceto `/doctor`.31Para desativar skills agrupadas, use a configuração [`disableBundledSkills`](/docs/pt/settings-reference#disablebundledskills).

32 32 

33<Note>33<Note>

34 A verificação de configuração [`/doctor`](/docs/pt/commands#all-commands) permanece digitável quando `disableBundledSkills` está ativado, no Claude Code v2.1.205 e posterior. Para ocultá-la, defina a variável de ambiente `DISABLE_DOCTOR_COMMAND` ou uma entrada [`skillOverrides`](#override-skill-visibility-from-settings) de `"doctor": "off"`. Antes da v2.1.205, `/doctor` era um comando integrado em vez de uma skill agrupada.34 A verificação de configuração [`/doctor`](/docs/pt/commands#all-commands) permanece digitável quando `disableBundledSkills` está ativado, no Claude Code v2.1.205 e posterior. Para ocultá-la, defina a variável de ambiente `DISABLE_DOCTOR_COMMAND` ou uma entrada [`skillOverrides`](#override-skill-visibility-from-settings) de `"doctor": "off"`. Antes da v2.1.205, `/doctor` era um comando integrado em vez de uma skill agrupada.


136 136 

137* **Pastas com symlink**: uma entrada `<skill-name>` no local enterprise, personal ou project pode ser um symlink para um diretório em outro lugar no disco. Claude Code lê `SKILL.md` do alvo e carrega a skill uma vez mesmo que vários locais apontem para o mesmo alvo. Skills de plugin [lidam com symlinks de forma diferente](/docs/pt/plugins-reference#share-files-within-a-marketplace-with-symlinks).137* **Pastas com symlink**: uma entrada `<skill-name>` no local enterprise, personal ou project pode ser um symlink para um diretório em outro lugar no disco. Claude Code lê `SKILL.md` do alvo e carrega a skill uma vez mesmo que vários locais apontem para o mesmo alvo. Skills de plugin [lidam com symlinks de forma diferente](/docs/pt/plugins-reference#share-files-within-a-marketplace-with-symlinks).

138* **Nome reservado**: não nomeie uma pasta de skill como `synced`, em qualquer capitalização. Claude Code usa `~/.claude/skills/synced/` para [skills baixadas do claude.ai](#where-synced-skills-load) e pula uma skill que você cria com esse nome nos locais enterprise, personal e project.138* **Nome reservado**: não nomeie uma pasta de skill como `synced`, em qualquer capitalização. Claude Code usa `~/.claude/skills/synced/` para [skills baixadas do claude.ai](#where-synced-skills-load) e pula uma skill que você cria com esse nome nos locais enterprise, personal e project.

139* **Arquivos de comando**: um arquivo Markdown em `.claude/commands/` é o formato mais antigo e ainda funciona. Ele suporta o mesmo [frontmatter](#frontmatter-reference) exceto `name` e `paths`, e você o invoca pelo nome do arquivo. Prefira uma skill para novo trabalho, já que skills também suportam [arquivos de suporte](#add-supporting-files).139* **Arquivos de comando**: um arquivo Markdown em `.claude/commands/` é o formato mais antigo e ainda funciona. Ele suporta o mesmo [frontmatter](#frontmatter-reference) exceto `name` e `paths`. Para encontrar o nome que você digita para invocá-lo, veja [Como uma skill obtém seu nome de comando](#how-a-skill-gets-its-command-name). Prefira uma skill para novo trabalho, já que skills também suportam [arquivos de suporte](#add-supporting-files).

140* **Pasta de skill como um plugin**: adicione um `.claude-plugin/plugin.json` a uma pasta de skill e ela carrega como um [plugin](/docs/pt/plugins-reference#skills-directory-plugins) nomeado `<name>@skills-dir`, para que possa agrupar agents, hooks e servidores MCP. Em um `.claude/skills/` de um projeto, isso requer aceitar primeiro o diálogo de confiança do workspace.140* **Pasta de skill como um plugin**: adicione um `.claude-plugin/plugin.json` a uma pasta de skill e ela carrega como um [plugin](/docs/pt/plugins-reference#skills-directory-plugins) nomeado `<name>@skills-dir`, para que possa agrupar agents, hooks e servidores MCP. Em um `.claude/skills/` de um projeto, isso requer aceitar primeiro o diálogo de confiança do workspace.

141 141 

142<h3 id="discovery-from-parent-and-nested-directories">142<h3 id="discovery-from-parent-and-nested-directories">


234 234 

235Claude Code rotula skills sincronizadas para que você possa dizer de onde vieram. O menu `/skills` e `/context` agrupam skills sincronizadas em `claude.ai sync`, e o menu de comando `/` as marca como vindo do claude.ai.235Claude Code rotula skills sincronizadas para que você possa dizer de onde vieram. O menu `/skills` e `/context` agrupam skills sincronizadas em `claude.ai sync`, e o menu de comando `/` as marca como vindo do claude.ai.

236 236 

237Quando compara nomes, Claude Code ignora maiúsculas, espaçamento e caracteres invisíveis, e trata formas de compatibilidade como letras de largura completa e variantes de travessão como seus equivalentes simples, então um `Commit` sincronizado não pode carregar ao lado de um `commit` local. Um nome que difere apenas por uma letra semelhante de outro alfabeto conta como um nome diferente, e o rótulo `claude.ai sync` é como você diferencia os dois.237Quando compara nomes, Claude Code ignora maiúsculas, espaçamento e caracteres invisíveis, e trata formas de compatibilidade como letras de largura completa e variantes de travessão como seus equivalentes simples, então um `Commit` sincronizado não pode carregar ao lado de um `commit` local. Um nome que difere apenas por uma letra semelhante de outro alfabeto conta como um nome diferente, e o rótulo `claude.ai sync` é como você diferencia os dois. Essas verificações e rótulos requerem Claude Code v2.1.228 ou posterior.

238 238 

239<h4 id="how-claude-code-handles-the-frontmatter-of-a-synced-skill">239<h4 id="how-claude-code-handles-the-frontmatter-of-a-synced-skill">

240 Como Claude Code lida com o frontmatter de uma skill sincronizada240 Como Claude Code lida com o frontmatter de uma skill sincronizada


243Claude Code aplica duas regras ao frontmatter de uma skill sincronizada:243Claude Code aplica duas regras ao frontmatter de uma skill sincronizada:

244 244 

245* Claude Code honra o frontmatter em todo tipo de sessão, então uma concessão `allowed-tools` passa pelo [fluxo de permissão](/docs/pt/permissions) normal.245* Claude Code honra o frontmatter em todo tipo de sessão, então uma concessão `allowed-tools` passa pelo [fluxo de permissão](/docs/pt/permissions) normal.

246* Claude Code sanitiza o texto de exibição que a skill fornece, como sua descrição. Remove caracteres de controle, e em texto que chega a Claude, como a descrição, também escapa colchetes angulares para que o texto não possa imitar a formatação interna do Claude Code.246* Claude Code sanitiza o texto de exibição que a skill fornece, como sua descrição. Remove caracteres de controle, e em texto que chega a Claude, como a descrição, também escapa colchetes angulares para que o texto não possa imitar a formatação interna do Claude Code. Essa sanitização requer Claude Code v2.1.228 ou posterior.

247 247 

248<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">248<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">

249 Como Claude Code lida com o corpo de uma skill sincronizada249 Como Claude Code lida com o corpo de uma skill sincronizada


253 253 

254* Em uma sessão cloud, o corpo mantém o comportamento que uma skill local tem, porque a sessão executa em um contêiner isolado.254* Em uma sessão cloud, o corpo mantém o comportamento que uma skill local tem, porque a sessão executa em um contêiner isolado.

255* Em uma sessão Cowork em seu desktop, o corpo mantém o comportamento que uma skill local tem, exceto que Claude Code substitui cada linha de comando `!` pelo [placeholder `disableSkillShellExecution`](#inject-dynamic-context), como faz para cada skill que você fornece lá.255* Em uma sessão Cowork em seu desktop, o corpo mantém o comportamento que uma skill local tem, exceto que Claude Code substitui cada linha de comando `!` pelo [placeholder `disableSkillShellExecution`](#inject-dynamic-context), como faz para cada skill que você fornece lá.

256* Em qualquer outra sessão em sua máquina, Claude Code não executa [comandos `!`](#inject-dynamic-context), não anexa os arquivos que referências `@` nomeiam da forma que faz para uma skill local, e não substitui os placeholders `${CLAUDE_PROJECT_DIR}` e `${CLAUDE_SESSION_ID}`, então as referências `@` e ambos os placeholders chegam a Claude como texto literal. Uma linha de comando `!` chega a Claude como texto literal também, ou como esse placeholder quando `disableSkillShellExecution` está ativado.256* Em qualquer outra sessão em sua máquina, Claude Code não executa [comandos `!`](#inject-dynamic-context), não anexa os arquivos que referências `@` nomeiam da forma que faz para uma skill local, e não substitui os placeholders `${CLAUDE_PROJECT_DIR}` e `${CLAUDE_SESSION_ID}`, então as referências `@` e ambos os placeholders chegam a Claude como texto literal. Uma linha de comando `!` chega a Claude como texto literal também, ou como esse placeholder quando `disableSkillShellExecution` está ativado. Esse tratamento requer Claude Code v2.1.228 ou posterior.

257 257 

258<h3 id="live-change-detection">258<h3 id="live-change-detection">

259 Edite uma skill durante uma sessão259 Edite uma skill durante uma sessão


271 271 

272* **Skill pessoal ou de projeto**: delete o diretório da skill, `~/.claude/skills/<skill-name>/` ou `.claude/skills/<skill-name>/`. Claude Code [a remove de `/skills` na sessão atual](#live-change-detection); o conteúdo que Claude Code já carregou dela segue o [ciclo de vida do conteúdo da skill](#skill-content-lifecycle).272* **Skill pessoal ou de projeto**: delete o diretório da skill, `~/.claude/skills/<skill-name>/` ou `.claude/skills/<skill-name>/`. Claude Code [a remove de `/skills` na sessão atual](#live-change-detection); o conteúdo que Claude Code já carregou dela segue o [ciclo de vida do conteúdo da skill](#skill-content-lifecycle).

273* **Skill enterprise**: um administrador deleta o diretório da skill de `.claude/skills/` dentro do [diretório de configurações gerenciadas](/docs/pt/managed-settings#delivery-mechanisms), por exemplo `/etc/claude-code/.claude/skills/<skill-name>/` no Linux.273* **Skill enterprise**: um administrador deleta o diretório da skill de `.claude/skills/` dentro do [diretório de configurações gerenciadas](/docs/pt/managed-settings#delivery-mechanisms), por exemplo `/etc/claude-code/.claude/skills/<skill-name>/` no Linux.

274* **Skill de plugin**: desabilite ou desinstale o plugin que a fornece, do menu `/plugin` ou com `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code descarrega as skills do plugin após você executar `/reload-plugins` ou reiniciar; veja [Aplique mudanças de plugin sem reiniciar](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting).274* **Skill de plugin**: desabilite ou desinstale o plugin que a fornece, do menu `/plugin` ou com `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code descarrega as skills do plugin quando [a mudança se aplica](/docs/pt/discover-plugins#apply-plugin-changes-without-restarting) ou quando você reinicia.

275* **Skill sincronizada do claude.ai**: desative a skill para sua conta claude.ai, no mesmo lugar onde você a [habilitou](#skills-in-cowork-and-cloud-sessions). Claude Code a remove de `~/.claude/skills/synced/` na próxima vez que [sincroniza suas skills](#where-synced-skills-load). Se você deletar o diretório manualmente em vez disso, a próxima sincronização o baixa novamente enquanto a skill permanece habilitada em claude.ai.275* **Skill sincronizada do claude.ai**: desative a skill para sua conta claude.ai, no mesmo lugar onde você a [habilitou](#skills-in-cowork-and-cloud-sessions). Claude Code a remove de `~/.claude/skills/synced/` na próxima vez que [sincroniza suas skills](#where-synced-skills-load). Se você deletar o diretório manualmente em vez disso, a próxima sincronização o baixa novamente enquanto a skill permanece habilitada em claude.ai.

276* **Skill agrupada**: defina [`disableBundledSkills`](#bundled-skills) como `true` para desativar cada skill agrupada exceto `/doctor`, ou defina uma skill como `"off"` em [`skillOverrides`](#override-skill-visibility-from-settings) para ocultá-la.276* **Skill agrupada**: defina [`disableBundledSkills`](#bundled-skills) como `true` para desativar skills agrupadas, ou defina uma skill como `"off"` em [`skillOverrides`](#override-skill-visibility-from-settings) para ocultá-la.

277 277 

278Para manter uma skill pessoal ou de projeto mas impedir que Claude a invoque por conta própria, defina [`disable-model-invocation: true`](#control-who-invokes-a-skill) em seu frontmatter, ou `"user-invocable-only"` em [`skillOverrides`](#override-skill-visibility-from-settings) quando você não quiser editar o arquivo.278Para manter uma skill pessoal ou de projeto mas impedir que Claude a invoque por conta própria, defina [`disable-model-invocation: true`](#control-who-invokes-a-skill) em seu frontmatter, ou `"user-invocable-only"` em [`skillOverrides`](#override-skill-visibility-from-settings) quando você não quiser editar o arquivo.

279 279 


347| Campo | Obrigatório | Descrição |347| Campo | Obrigatório | Descrição |

348| :------------------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |348| :------------------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

349| `name` | Não | Nome de exibição mostrado nas listagens de skills. Padrão é o nome do diretório. Veja [Como uma skill obtém seu nome de comando](#how-a-skill-gets-its-command-name) para como o campo interage com o nome que você digita para invocar a skill. |349| `name` | Não | Nome de exibição mostrado nas listagens de skills. Padrão é o nome do diretório. Veja [Como uma skill obtém seu nome de comando](#how-a-skill-gets-its-command-name) para como o campo interage com o nome que você digita para invocar a skill. |

350| `description` | Recomendado | O que a skill faz e quando usá-la. Claude usa isso para decidir quando aplicar a skill. Se omitido, usa o primeiro parágrafo do conteúdo markdown. Coloque o caso de uso principal primeiro: o texto combinado de `description` e `when_to_use` é truncado em 1.536 caracteres na listagem de skills para reduzir o uso de contexto. |350| `description` | Recomendado | O que a skill faz e quando usá-la. Claude usa isso para decidir quando aplicar a skill. Se omitido, usa a primeira linha não vazia do conteúdo markdown. Coloque o caso de uso principal primeiro: o texto combinado de `description` e `when_to_use` é truncado em 1.536 caracteres na listagem de skills para reduzir o uso de contexto. |

351| `when_to_use` | Não | Contexto adicional para quando Claude deve invocar a skill, como frases de gatilho ou solicitações de exemplo. Anexado a `description` na listagem de skills e conta para o limite de 1.536 caracteres. |351| `when_to_use` | Não | Contexto adicional para quando Claude deve invocar a skill, como frases de gatilho ou solicitações de exemplo. Anexado a `description` na listagem de skills e conta para o limite de 1.536 caracteres. |

352| `argument-hint` | Não | Dica mostrada durante o autocomplete para indicar argumentos esperados. Exemplo: `[issue-number]` ou `[filename] [format]`. |352| `argument-hint` | Não | Dica mostrada durante o autocomplete para indicar argumentos esperados. Exemplo: `[issue-number]` ou `[filename] [format]`. |

353| `arguments` | Não | Argumentos posicionais nomeados para [`$name` substitution](#available-string-substitutions) no conteúdo da skill. Aceita uma string separada por espaços ou uma lista YAML. Os nomes mapeiam para posições de argumento em ordem. |353| `arguments` | Não | Argumentos posicionais nomeados para [`$name` substitution](#available-string-substitutions) no conteúdo da skill. Aceita uma string separada por espaços ou uma lista YAML. Os nomes mapeiam para posições de argumento em ordem. |


397A tabela abaixo mostra de onde o nome do comando vem para cada layout:397A tabela abaixo mostra de onde o nome do comando vem para cada layout:

398 398 

399| Local da skill | Fonte do nome do comando | Exemplo |399| Local da skill | Fonte do nome do comando | Exemplo |

400| :---------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |400| :---------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |

401| Diretório de skill sob `~/.claude/skills/` ou `.claude/skills/` | Nome do diretório | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |401| Diretório de skill sob `~/.claude/skills/` ou `.claude/skills/` | Nome do diretório | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |

402| [Aninhado](#where-skills-live) diretório `.claude/skills/`, quando o nome entra em conflito com outra skill | Caminho do subdiretório relativo ao diretório de trabalho, depois o nome do diretório de skill | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |402| [Aninhado](#where-skills-live) diretório `.claude/skills/`, quando o nome entra em conflito com outra skill | Caminho do subdiretório relativo ao diretório de trabalho, depois o nome do diretório de skill | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |

403| Arquivo sob `.claude/commands/` | Nome do arquivo sem extensão | `.claude/commands/deploy.md` → `/deploy` |403| Arquivo sob `.claude/commands/` | Nome do arquivo sem extensão | `.claude/commands/deploy.md` → `/deploy` |

404| Arquivo em um subdiretório de `.claude/commands/` | Caminho do subdiretório relativo a `commands/` com cada `/` substituído por `:`, depois o nome do arquivo sem extensão | `.claude/commands/frontend/component.md` → `/frontend:component` |

404| Subdiretório `skills/` do plugin | Frontmatter `name` ou o nome do diretório, com namespace pelo plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, ou `/my-plugin:fancy` com `name: fancy` |405| Subdiretório `skills/` do plugin | Frontmatter `name` ou o nome do diretório, com namespace pelo plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, ou `/my-plugin:fancy` com `name: fancy` |

405| `SKILL.md` raiz do plugin | Frontmatter `name`, com o nome do diretório do plugin como fallback | `my-plugin/SKILL.md` com `name: review` → `/my-plugin:review`. Veja [Regras de comportamento de caminho](/docs/pt/plugins-reference#path-behavior-rules) |406| `SKILL.md` raiz do plugin | Frontmatter `name`, com o nome do diretório do plugin como fallback | `my-plugin/SKILL.md` com `name: review` → `/my-plugin:review`. Veja [Regras de comportamento de caminho](/docs/pt/plugins-reference#path-behavior-rules) |

406 407 


630 Injetar contexto dinâmico631 Injetar contexto dinâmico

631</h3>632</h3>

632 633 

633A sintaxe `` !`<command>` `` executa comandos shell antes do conteúdo da skill ser enviado para Claude. A saída do comando substitui o espaço reservado, então Claude recebe dados reais, não o comando em si. Claude Code não executa esses comandos em sua máquina quando a skill é [sincronizada de sua conta claude.ai](#how-claude-code-handles-the-body-of-a-synced-skill).634A sintaxe `` !`<command>` `` executa comandos shell antes do conteúdo da skill ser enviado para Claude. A saída do comando substitui o espaço reservado, então Claude recebe dados reais, não o comando em si. Claude Code não executa esses comandos em sua máquina quando a skill é [sincronizada de sua conta claude.ai](#how-claude-code-handles-the-body-of-a-synced-skill). Esta restrição requer Claude Code v2.1.228 ou posterior.

634 635 

635Esta skill resume um pull request buscando dados de PR ao vivo com a CLI do GitHub. Os comandos `` !`gh pr diff` `` e outros são executados primeiro, e sua saída é inserida no prompt:636Esta skill resume um pull request buscando dados de PR ao vivo com a CLI do GitHub. Os comandos `` !`gh pr diff` `` e outros são executados primeiro, e sua saída é inserida no prompt:

636 637 


668 669 

669Para desabilitar esse comportamento para skills e comandos personalizados de fontes de usuário, projeto, plugin ou [additional-directory](#skills-from-additional-directories), defina `"disableSkillShellExecution": true` em [settings](/docs/pt/settings). Cada comando é substituído por `[shell command execution disabled by policy]` em vez de ser executado. Skills agrupadas e gerenciadas não são afetadas. Esta configuração é mais útil em [managed settings](/docs/pt/managed-settings), onde os usuários não podem substituí-la.670Para desabilitar esse comportamento para skills e comandos personalizados de fontes de usuário, projeto, plugin ou [additional-directory](#skills-from-additional-directories), defina `"disableSkillShellExecution": true` em [settings](/docs/pt/settings). Cada comando é substituído por `[shell command execution disabled by policy]` em vez de ser executado. Skills agrupadas e gerenciadas não são afetadas. Esta configuração é mais útil em [managed settings](/docs/pt/managed-settings), onde os usuários não podem substituí-la.

670 671 

671Claude Code nunca executa esses comandos em sua máquina quando aparecem em skills [sincronizadas de sua conta claude.ai](#how-synced-skills-behave), independentemente desta configuração. [How Claude Code handles the body of a synced skill](#how-claude-code-handles-the-body-of-a-synced-skill) diz o que Claude recebe no lugar do comando em cada tipo de sessão.672Claude Code nunca executa esses comandos em sua máquina quando aparecem em skills [sincronizadas de sua conta claude.ai](#how-synced-skills-behave), independentemente desta configuração. Esta restrição requer Claude Code v2.1.228 ou posterior. [How Claude Code handles the body of a synced skill](#how-claude-code-handles-the-body-of-a-synced-skill) diz o que Claude recebe no lugar do comando em cada tipo de sessão.

672 673 

673<Tip>674<Tip>

674 Para solicitar raciocínio mais profundo quando uma skill é executada, inclua `ultrathink` em qualquer lugar no conteúdo da skill. Veja [Use ultrathink for one-off deep reasoning](/docs/pt/model-config#use-ultrathink-for-one-off-deep-reasoning).675 Para solicitar raciocínio mais profundo quando uma skill é executada, inclua `ultrathink` em qualquer lugar no conteúdo da skill. Veja [Use ultrathink for one-off deep reasoning](/docs/pt/model-config#use-ultrathink-for-one-off-deep-reasoning).


716 Executar skills em um subagente717 Executar skills em um subagente

717</h3>718</h3>

718 719 

719Adicione `context: fork` ao seu frontmatter quando você quiser que uma skill seja executada em isolamento. O conteúdo da skill se torna o prompt que impulsiona o subagente. Ele não terá acesso ao seu histórico de conversa.720Adicione `context: fork` ao seu frontmatter quando você quiser que uma skill seja executada em isolamento. Claude Code inicia um novo subagente do tipo definido no campo `agent` e lhe fornece o conteúdo da skill como seu prompt. O subagente não vê seu histórico de conversa, então as instruções da skill têm que se sustentar por si mesmas.

721 

722<Note>

723 Apesar do nome, uma skill com `context: fork` não é executada em um [fork da conversa atual](/docs/pt/sub-agents#fork-the-current-conversation), que entregaria ao subagente tudo o que você discutiu até agora. Quando a tarefa depende desse histórico, bifurque a conversa em vez de usar `context: fork`.

724</Note>

720 725 

721O subagente bifurcado é executado em [background](/docs/pt/sub-agents#run-subagents-in-foreground-or-background): você continua trabalhando enquanto ele é executado, e seu resultado chega em sua conversa quando é concluído. Defina `background: false` no frontmatter para esperar o resultado na volta que invocou a skill. Antes da v2.1.218, skills bifurcadas sempre bloqueavam a volta até serem concluídas.726O subagente bifurcado é executado em [background](/docs/pt/sub-agents#run-subagents-in-foreground-or-background): você continua trabalhando enquanto ele é executado, e seu resultado chega em sua conversa quando é concluído. Defina `background: false` no frontmatter para esperar o resultado na volta que invocou a skill. Antes da v2.1.218, skills bifurcadas sempre bloqueavam a volta até serem concluídas.

722 727 


866 871 

867A verificação de ambas é uma comparação de linha de base. Colete alguns prompts realistas, execute cada um em uma sessão nova com a skill disponível e novamente com ela [desabilitada](#override-skill-visibility-from-settings), e compare os resultados. Uma sessão nova é importante porque o contexto restante da autoria da skill mascarará lacunas nas instruções escritas.872A verificação de ambas é uma comparação de linha de base. Colete alguns prompts realistas, execute cada um em uma sessão nova com a skill disponível e novamente com ela [desabilitada](#override-skill-visibility-from-settings), e compare os resultados. Uma sessão nova é importante porque o contexto restante da autoria da skill mascarará lacunas nas instruções escritas.

868 873 

874Duas ferramentas automatizam essa comparação. Para uma skill que é entregue em um [plugin](/docs/pt/plugins), [`claude plugin eval`](/docs/pt/plugin-evals) executa cada prompt em uma sessão isolada com e sem o plugin, a classifica com avaliadores que você define ou que ela escreve para você, e sai com código não-zero abaixo de um limite para que você possa bloquear CI nela. Para iterar em uma única skill dentro de uma conversa Claude Code, o plugin skill-creator abaixo executa um loop similar com seu próprio formato `evals/evals.json`. Os dois formatos não são intercambiáveis.

875 

869<h3 id="run-evals-with-skill-creator">876<h3 id="run-evals-with-skill-creator">

870 Executar evals com skill-creator877 Executar evals com skill-creator

871</h3>878</h3>


881* `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.888* `Marketplace "claude-plugins-official" not found`: adicione o marketplace com `/plugin marketplace add anthropics/claude-plugins-official`, depois tente novamente a instalação.

882* O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.889* O plugin [não foi encontrado no marketplace](/docs/pt/discover-plugins#install-plugins): verifique o nome do plugin.

883 890 

884Se o resumo da instalação relatar `Run /reload-plugins to activate.`, execute esse comando para disponibilizar as skills do plugin na sessão atual. Depois peça ao Claude para avaliar uma skill existente, por exemplo `evaluate my summarize-changes skill with skill-creator`. O plugin o orienta através da escrita de casos de teste e executa o loop:891Se o resumo da instalação relatar `Run /reload-plugins to activate.`, Claude Code então executa esse reload para você. Se o reload avisar que sua próxima mensagem releria a conversa, execute `/reload-plugins --force` para disponibilizar as skills do plugin na sessão atual. Depois peça ao Claude para avaliar uma skill existente, por exemplo `evaluate my summarize-changes skill with skill-creator`. O plugin o orienta através da escrita de casos de teste e executa o loop:

885 892 

886* **Casos de teste**: armazena prompts, arquivos de entrada e comportamento esperado em `evals/evals.json` dentro do diretório da skill893* **Casos de teste**: armazena prompts, arquivos de entrada e comportamento esperado em `evals/evals.json` dentro do diretório da skill

887* **Execuções isoladas**: gera um [subagent](/docs/pt/sub-agents) por caso de teste para que cada execução comece com um contexto limpo, e registra contagem de tokens e duração894* **Execuções isoladas**: gera um [subagent](/docs/pt/sub-agents) por caso de teste para que cada execução comece com um contexto limpo, e registra contagem de tokens e duração


11113. Tente reformular sua solicitação para corresponder mais closely à descrição11183. Tente reformular sua solicitação para corresponder mais closely à descrição

11124. Invoque-a diretamente com `/skill-name` se a skill for invocável pelo usuário11194. Invoque-a diretamente com `/skill-name` se a skill for invocável pelo usuário

1113 1120 

1114Se o YAML do frontmatter estiver malformado, Claude Code carrega o corpo da skill com metadados vazios, então `/skill-name` ainda funciona, mas Claude não tem `description` para corresponder. Execute com `--debug` para ver o erro de análise.1121Se o YAML do frontmatter estiver malformado, Claude Code carrega o corpo da skill com metadados vazios, então `/skill-name` ainda funciona, mas Claude não pode corresponder contra sua `description`. Execute com `--debug` para ver o erro de análise.

1122 

1123Se a skill é fornecida em um plugin, você pode medir com que frequência ela é acionada em prompts realistas em vez de verificar uma de cada vez: escreva um caso de eval com um [`tool_used: Skill` grader](/docs/pt/plugin-evals#create-your-first-eval-suite) e execute-o com `claude plugin eval` após cada mudança de descrição.

1115 1124 

1116Para encontrar arquivos `SKILL.md` cujo frontmatter não é analisado, execute [`claude plugin validate`](/docs/pt/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) no diretório de skills, por exemplo `claude plugin validate .claude/skills` para skills de projeto ou `claude plugin validate ~/.claude/skills` para skills pessoais. Requer Claude Code v2.1.233 ou posterior.1125Para encontrar arquivos `SKILL.md` cujo frontmatter não é analisado, execute [`claude plugin validate`](/docs/pt/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) no diretório de skills, por exemplo `claude plugin validate .claude/skills` para skills de projeto ou `claude plugin validate ~/.claude/skills` para skills pessoais. Requer Claude Code v2.1.233 ou posterior.

1117 1126 

statusline.md +131 −36

Details

15* Trabalha em várias sessões e precisa distingui-las15* Trabalha em várias sessões e precisa distingui-las

16* Quer que a ramificação git e o status estejam sempre visíveis16* Quer que a ramificação git e o status estejam sempre visíveis

17 17 

18A linha de status é renderizada em sua própria linha acima dos crachás de rodapé integrados e não os substitui. Para adicionar crachás de links clicáveis ao rodapé quando uma ID aparece na conversa, sem escrever um script, configure [`footerLinksRegexes`](/docs/pt/settings#footer-link-badges) em vez disso.18A linha de status é renderizada em sua própria linha acima dos crachás de rodapé integrados e não os substitui. Com uma linha de status personalizada configurada, Claude Code para de mostrar a maioria das dicas de teclado do rodapé, incluindo `esc to interrupt`, o fallback `? for shortcuts` e a dica de [ditado por voz](/docs/pt/voice-dictation) `hold space to speak`. Para adicionar crachás de links clicáveis ao rodapé quando uma ID aparece na conversa, sem escrever um script, configure [`footerLinksRegexes`](/docs/pt/settings-reference#footerlinksregexes) em vez disso.

19 19 

20Aqui está um exemplo de uma [linha de status de múltiplas linhas](#display-multiple-lines) que exibe informações do git na primeira linha e uma barra de contexto codificada por cores na segunda.20Aqui está um exemplo de uma [linha de status de múltiplas linhas](#display-multiple-lines) que exibe informações do git na primeira linha e uma barra de contexto codificada por cores na segunda.

21 21 


41/statusline show model name and context percentage with a progress bar41/statusline show model name and context percentage with a progress bar

42```42```

43 43 

44Aprove os prompts de edição de arquivo se o Claude Code solicitar permissão durante a configuração.

45 

44<h3 id="manually-configure-a-status-line">46<h3 id="manually-configure-a-status-line">

45 Configure manualmente uma linha de status47 Configure manualmente uma linha de status

46</h3>48</h3>

47 49 

48Adicione um campo `statusLine` às suas configurações de usuário (`~/.claude/settings.json`, onde `~` é seu diretório inicial) ou [configurações de projeto](/docs/pt/settings#settings-files). Defina `type` como `"command"` e aponte `command` para um caminho de script ou um comando de shell inline. Para um passo a passo completo de criação de um script, consulte [Construir uma linha de status passo a passo](#build-a-status-line-step-by-step).50Adicione um campo `statusLine` às suas configurações de usuário (`~/.claude/settings.json`, onde `~` é seu diretório inicial) ou [configurações de projeto](/docs/pt/settings#where-settings-live). Defina `type` como `"command"` e aponte `command` para um caminho de script ou um comando de shell inline. Para um passo a passo completo de criação de um script, consulte [Construir uma linha de status passo a passo](#build-a-status-line-step-by-step).

49 51 

50```json theme={null}52```json theme={null}

51{53{


96 98 

97<Steps>99<Steps>

98 <Step title="Crie um script que leia JSON e imprima a saída">100 <Step title="Crie um script que leia JSON e imprima a saída">

99 O Claude Code envia dados JSON para seu script via stdin. Este script usa [`jq`](https://jqlang.github.io/jq/), um analisador JSON de linha de comando que você pode precisar instalar, para extrair o nome do modelo, diretório e porcentagem de contexto, depois imprime uma linha formatada.101 O Claude Code envia dados JSON para seu script via stdin. Este script usa [`jq`](https://jqlang.org/), um analisador JSON de linha de comando que você pode precisar instalar, para extrair o nome do modelo, diretório e porcentagem de contexto, depois imprime uma linha formatada.

100 102 

101 Salve isto em `~/.claude/statusline.sh` (onde `~` é seu diretório inicial, como `/Users/username` no macOS ou `/home/username` no Linux):103 Salve isto em `~/.claude/statusline.sh` (onde `~` é seu diretório inicial, como `/Users/username` no macOS ou `/home/username` no Linux):

102 104 


136 }138 }

137 ```139 ```

138 140 

139 Sua linha de status aparece na parte inferior da interface. As configurações são recarregadas automaticamente, mas as alterações não aparecerão até sua próxima interação com o Claude Code.141 Sua linha de status aparece na parte inferior da interface. O Claude Code recarrega as configurações automaticamente e executa seu script assim que você salva o arquivo.

140 </Step>142 </Step>

141</Steps>143</Steps>

142 144 


144 Como as linhas de status funcionam146 Como as linhas de status funcionam

145</h2>147</h2>

146 148 

147O Claude Code executa seu script e envia [dados de sessão JSON](#available-data) para ele via stdin. Seu script lê o JSON, extrai o que precisa e imprime texto para stdout. O Claude Code exibe tudo o que seu script imprime.149O Claude Code executa seu script com [dados de sessão JSON](#available-data) na entrada padrão e exibe tudo o que o script imprime na saída padrão.

148 150 

149**Quando é atualizado**151**Quando é atualizado**

150 152 

151Seu script é executado após cada nova mensagem do assistente, após `/compact` terminar, quando o modo de permissão muda ou quando o modo vim alterna. As atualizações são debounced em 300ms, significando que mudanças rápidas são agrupadas e seu script é executado uma vez que as coisas se estabilizam. Se uma nova atualização for acionada enquanto seu script ainda está em execução, a execução em andamento é cancelada. Se você editar seu script, as alterações não aparecerão até que sua próxima interação com o Claude Code acione uma atualização.153Seu script é executado uma vez quando uma sessão inicia, incluindo quando você retoma uma. Depois disso, ele é executado novamente quando:

154 

155* Uma nova mensagem do assistente chega

156* `/compact` termina

157* O modo de permissão muda

158* O modo Vim alterna

159* Você altera o `command` nas suas configurações de `statusLine`

160* Um temporizador [`refreshInterval`](#manually-configure-a-status-line) decorre, se você definir um

161* Uma janela de [limite de taxa](#rate-limit-usage) nos dados que seu script recebeu por último atinge seu tempo `resets_at`

162* Um [cache de prompt](#prompt-cache-fields) aquecido nos dados que seu script recebeu por último atinge seu tempo `expires_at`

163 

164O Claude Code debounce as atualizações em 300ms, portanto mudanças rápidas são agrupadas e seu script é executado uma vez após as mudanças pararem. Uma alteração no próprio `command` ignora o debounce: o Claude Code executa o novo comando imediatamente. Se uma nova atualização for acionada enquanto seu script ainda está em execução, o Claude Code cancela o script em andamento. Se você editar seu script, as alterações aparecem na próxima vez que um gatilho de atualização o re-executa.

152 165 

153Estes gatilhos podem ficar silenciosos quando a sessão principal está ociosa, por exemplo enquanto um coordenador aguarda subagentes em segundo plano. Para manter segmentos baseados em tempo ou de origem externa atualizados durante períodos ociosos, defina [`refreshInterval`](#manually-configure-a-status-line) para também executar novamente o comando em um temporizador fixo.166Os gatilhos acionados por eventos podem ficar silenciosos quando a sessão principal está ociosa, por exemplo enquanto um coordenador aguarda subagentes em segundo plano. Para manter segmentos baseados em tempo ou de origem externa atualizados durante períodos ociosos, defina [`refreshInterval`](#manually-configure-a-status-line) para também re-executar o comando em um temporizador fixo.

154 167 

155**O que seu script pode exibir**168**O que seu script pode exibir**

156 169 


160 173 

161**Dimensionando a saída para o terminal**174**Dimensionando a saída para o terminal**

162 175 

163O Claude Code captura a saída do seu script em vez de conectá-la diretamente ao terminal, portanto `tput cols` e a detecção de largura em nível de linguagem não podem ler o tamanho do terminal de dentro do script. Leia as variáveis de ambiente `COLUMNS` e `LINES` em vez disso. O Claude Code define estas variáveis para as dimensões atuais do terminal antes de executar seu script. Requer Claude Code v2.1.153 ou posterior.176O Claude Code captura a saída do seu script em vez de conectá-la diretamente ao terminal, portanto `tput cols` e a detecção de largura em nível de linguagem não podem ler o tamanho do terminal de dentro do script. Leia as variáveis de ambiente `COLUMNS` e `LINES` em vez disso. O Claude Code define estas variáveis para as dimensões atuais do terminal antes de executar seu script.

164 177 

165<Note>A linha de status é executada localmente e não consome tokens de API. Ela se oculta temporariamente durante certas interações da interface, incluindo sugestões de preenchimento automático, o menu de ajuda e prompts de permissão.</Note>178<Note>A linha de status é executada localmente e não consome tokens de API. Ela se oculta temporariamente durante certas interações da interface, incluindo sugestões de preenchimento automático, o menu de ajuda e prompts de permissão.</Note>

166 179 


171O Claude Code envia os seguintes campos JSON para seu script via stdin:184O Claude Code envia os seguintes campos JSON para seu script via stdin:

172 185 

173| Campo | Descrição |186| Campo | Descrição |

174| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |187| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

175| `model.id`, `model.display_name` | Identificador do modelo atual e nome de exibição |188| `model.id`, `model.display_name` | Identificador do modelo atual e nome de exibição |

176| `cwd`, `workspace.current_dir` | Diretório de trabalho atual. Ambos os campos contêm o mesmo valor; `workspace.current_dir` é preferido para consistência com `workspace.project_dir`. |189| `cwd`, `workspace.current_dir` | Diretório de trabalho atual. Ambos os campos contêm o mesmo valor; `workspace.current_dir` é preferido para consistência com `workspace.project_dir`. |

177| `workspace.project_dir` | Diretório onde o Claude Code foi iniciado, que pode diferir de `cwd` se o diretório de trabalho mudar durante uma sessão |190| `workspace.project_dir` | Diretório onde o Claude Code foi iniciado, que pode diferir de `cwd` se o diretório de trabalho mudar durante uma sessão |

178| `workspace.added_dirs` | Diretórios adicionais adicionados via `/add-dir` ou `--add-dir`. Array vazio se nenhum foi adicionado |191| `workspace.added_dirs` | Diretórios adicionais adicionados via `/add-dir` ou `--add-dir`. Array vazio se nenhum foi adicionado |

179| `workspace.git_worktree` | Nome da git worktree quando o diretório atual está dentro de uma worktree vinculada criada com `git worktree add`. Ausente na worktree principal. Preenchido para qualquer git worktree, diferentemente de `worktree.*` que se aplica apenas a sessões `--worktree` |192| `workspace.git_worktree` | Nome da git worktree quando o diretório atual está dentro de uma worktree vinculada criada com `git worktree add`. Ausente na worktree principal. Preenchido para qualquer git worktree, diferentemente de `worktree.*`, que está presente apenas enquanto a sessão está em uma [sessão de worktree](/docs/pt/worktrees) |

180| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | Identidade do repositório analisada a partir do remote `origin`, por exemplo `"github.com"`, `"anthropics"`, `"claude-code"`. Ausente fora de um repositório git ou quando nenhum remote `origin` está configurado |193| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | Identidade do repositório analisada a partir do remote `origin`, por exemplo, `"github.com"`, `"anthropics"`, `"claude-code"`. Ausente fora de um repositório git ou quando nenhum remote `origin` está configurado. Para um projeto gitlab.com aninhado em subgrupos, `owner` é o caminho completo do namespace com barras, como `"group/subgroup"`. Antes da v2.1.260, `workspace.repo` estava ausente para esses projetos |

181| `cost.total_cost_usd` | Custo total estimado da sessão em USD, calculado no lado do cliente. Pode diferir de sua fatura real |194| `cost.total_cost_usd` | Custo total estimado da sessão em USD, calculado no lado do cliente ao preço de lista, a menos que uma tabela [`modelPricing`](/docs/pt/settings-reference#modelpricing) esteja em vigor. Pode diferir de sua fatura real. Redefine para \$0 quando `/clear` inicia uma nova sessão. Antes da v2.1.211, o total era mantido após `/clear` |

182| `cost.total_duration_ms` | Tempo total decorrido desde o início da sessão, em milissegundos |195| `cost.total_duration_ms` | Tempo total decorrido desde o início da sessão, em milissegundos |

183| `cost.total_api_duration_ms` | Tempo total gasto aguardando respostas de API em milissegundos |196| `cost.total_api_duration_ms` | Tempo total gasto aguardando respostas de API em milissegundos |

184| `cost.total_lines_added`, `cost.total_lines_removed` | Linhas de código alteradas |197| `cost.total_lines_added`, `cost.total_lines_removed` | Linhas de código alteradas |

185| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Contagens de tokens atualmente na janela de contexto, da resposta de API mais recente. A entrada inclui leituras e escritas de cache. Antes da v2.1.132, estas eram totais cumulativos de sessão |198| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Contagens de tokens atualmente na janela de contexto, da resposta de API mais recente. A entrada inclui leituras e escritas de cache |

186| `context_window.context_window_size` | Tamanho máximo da janela de contexto em tokens. 200000 por padrão, ou 1000000 para modelos com contexto estendido. |199| `context_window.context_window_size` | Tamanho máximo da janela de contexto em tokens. 200000 por padrão, ou 1000000 para modelos com contexto estendido. |

187| `context_window.used_percentage` | Porcentagem pré-calculada da janela de contexto usada |200| `context_window.used_percentage` | Porcentagem pré-calculada da janela de contexto usada |

188| `context_window.remaining_percentage` | Porcentagem pré-calculada da janela de contexto restante |201| `context_window.remaining_percentage` | Porcentagem pré-calculada da janela de contexto restante |

189| `context_window.current_usage` | Contagens de tokens da última chamada de API, descritas em [campos de janela de contexto](#context-window-fields) |202| `context_window.current_usage` | Contagens de tokens da última chamada de API, descritas em [campos de janela de contexto](#context-window-fields) |

190| `exceeds_200k_tokens` | Se a contagem total de tokens (tokens de entrada, cache e saída combinados) da resposta de API mais recente excede 200k. Este é um limite fixo independentemente do tamanho real da janela de contexto. |203| `exceeds_200k_tokens` | Se a contagem total de tokens (tokens de entrada, cache e saída combinados) da resposta de API mais recente excede 200k. Este é um limite fixo independentemente do tamanho real da janela de contexto. |

204| `fast_mode` | Se o [modo rápido](/docs/pt/fast-mode) está habilitado para a sessão |

191| `effort.level` | Nível de esforço de raciocínio atual (`low`, `medium`, `high`, `xhigh` ou `max`). Reflete o valor da sessão em tempo real, incluindo mudanças de `/effort` durante a sessão. Ultracode não é um nível distinto e relata como `xhigh`. Ausente quando o modelo atual não suporta o parâmetro de esforço |205| `effort.level` | Nível de esforço de raciocínio atual (`low`, `medium`, `high`, `xhigh` ou `max`). Reflete o valor da sessão em tempo real, incluindo mudanças de `/effort` durante a sessão. Ultracode não é um nível distinto e relata como `xhigh`. Ausente quando o modelo atual não suporta o parâmetro de esforço |

192| `thinking.enabled` | Se o pensamento estendido está habilitado para a sessão |206| `thinking.enabled` | Se o pensamento estendido está habilitado para a sessão |

193| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | Porcentagem do limite de taxa de 5 horas ou 7 dias consumida, de 0 a 100 |207| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | Porcentagem do limite de taxa de 5 horas ou 7 dias consumida, de 0 a 100 |

194| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Segundos de época Unix quando a janela de limite de taxa de 5 horas ou 7 dias é redefinida |208| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Segundos de época Unix quando a janela de limite de taxa de 5 horas ou 7 dias é redefinida |

209| `rate_limits.spend_limit.used_percentage`, `rate_limits.spend_limit.resets_at` | Atrás de um [gateway de aplicativos Claude](/docs/pt/claude-apps-gateway-spend-limits#usage-warnings-in-claude-code), a porcentagem usada do limite de gastos que se aplica a você, e os segundos de época Unix quando seu período é redefinido. A porcentagem varia de 0 a 100, ou acima de 100 uma vez que você excede o limite. Requer Claude Code v2.1.251 ou posterior |

210| `prompt_cache` | As estatísticas de [cache de prompt](/docs/pt/prompt-caching) da sessão para a conversa principal: taxa de acerto, falhas e se o cache está aquecido. Consulte [campos de cache de prompt](#prompt-cache-fields) para cada campo. Ausente até a primeira resposta de API da conversa principal. Requer Claude Code v2.1.251 ou posterior |

195| `session_id` | Identificador único de sessão |211| `session_id` | Identificador único de sessão |

196| `session_name` | Nome de sessão personalizado definido com a flag `--name` ou `/rename`. Ausente se nenhum nome personalizado foi definido |212| `session_name` | Nome de sessão. Usa o nome personalizado definido com a flag `--name` ou `/rename` quando um existe, caso contrário, o título de sessão gerado por IA. O [nome de exibição padrão](/docs/pt/sessions#name-your-sessions), como `my-app-3f`, não popula este campo. Ausente quando a sessão não tem um nome personalizado nem um título gerado por IA |

197| `prompt_id` | UUID identificando o prompt do usuário sendo processado no momento. Corresponde ao atributo [`prompt.id` em eventos OpenTelemetry](/docs/pt/monitoring-usage#event-correlation-attributes). Ausente até a primeira entrada do usuário. Requer Claude Code v2.1.196 ou posterior |213| `prompt_id` | UUID identificando o prompt do usuário sendo processado no momento. Corresponde ao atributo [`prompt.id` em eventos OpenTelemetry](/docs/pt/monitoring-usage#event-correlation-attributes). Ausente até a primeira entrada do usuário. Requer Claude Code v2.1.196 ou posterior |

198| `transcript_path` | Caminho para o arquivo de transcrição de conversa |214| `transcript_path` | Caminho para o arquivo de transcrição de conversa |

199| `version` | Versão do Claude Code |215| `version` | Versão do Claude Code |

200| `output_style.name` | Nome do estilo de saída atual |216| `output_style.name` | Nome do estilo de saída atual |

201| `vim.mode` | Modo vim atual (`NORMAL`, `INSERT`, `VISUAL` ou `VISUAL LINE`) quando [modo vim](/docs/pt/interactive-mode#vim-editor-mode) está habilitado |217| `vim.mode` | Modo vim atual (`NORMAL`, `INSERT`, `VISUAL` ou `VISUAL LINE`) quando [modo vim](/docs/pt/interactive-mode#vim-editor-mode) está habilitado |

202| `agent.name` | Nome do agente ao executar com a flag `--agent` ou configurações de agente configuradas |218| `agent.name` | Nome do agente ao executar com a flag `--agent` ou configurações de agente configuradas |

203| `pr.number`, `pr.url` | Solicitação de pull aberta para o branch atual. Espelha o badge de PR na barra de status inferior. Ausente até que um PR seja encontrado, quando não em um repositório git, ou uma vez que o PR seja mesclado ou fechado |219| `pr.number`, `pr.url` | Solicitação de pull aberta para o branch atual. Espelha o badge de PR na barra de rodapé. Em um repositório com um remote GitLab, o Claude Code preenche esses campos a partir da [solicitação de mesclagem](/docs/pt/interactive-mode#gitlab-merge-requests) aberta do branch, então `pr.number` é o número da solicitação de mesclagem. Os dados de solicitação de mesclagem requerem Claude Code v2.1.234 ou posterior. Ausente quando não em um repositório git, até que uma solicitação de pull ou solicitação de mesclagem seja encontrada, ou uma vez que seja mesclada ou fechada |

204| `pr.review_state` | Status de revisão do PR aberto: `approved`, `pending`, `changes_requested` ou `draft`. Pode estar independentemente ausente mesmo quando `pr` está presente |220| `pr.review_state` | Status de revisão do PR aberto: `approved`, `pending`, `changes_requested` ou `draft`. Pode estar independentemente ausente mesmo quando `pr` está presente |

205| `worktree.name` | Nome da worktree ativa. Presente apenas durante sessões `--worktree` |221| `pr.kind` | `mr` quando `pr` descreve uma [solicitação de mesclagem GitLab](/docs/pt/interactive-mode#gitlab-merge-requests). Ausente para solicitações de pull do GitHub, então scripts escritos antes deste campo continuam funcionando. Para uma solicitação de mesclagem, o Claude Code define `review_state` para `approved` quando o GitLab relata que é mesclável, `pending` para qualquer outro estado aberto, e `draft` para um rascunho. Requer Claude Code v2.1.234 ou posterior |

222| `worktree.name` | Nome da worktree ativa. Presente apenas enquanto a sessão está em uma [sessão de worktree](/docs/pt/worktrees) |

206| `worktree.path` | Caminho absoluto para o diretório da worktree |223| `worktree.path` | Caminho absoluto para o diretório da worktree |

207| `worktree.branch` | Nome da ramificação git para a worktree (por exemplo, `"worktree-my-feature"`). Ausente para worktrees baseadas em hook |224| `worktree.branch` | Nome da ramificação git para a worktree (por exemplo, `"worktree-my-feature"`). Ausente para worktrees baseadas em hook |

208| `worktree.original_cwd` | O diretório em que o Claude estava antes de entrar na worktree |225| `worktree.original_cwd` | O diretório em que o Claude estava antes de entrar na worktree |


219 "prompt_id": "550e8400-e29b-41d4-a716-446655440000",236 "prompt_id": "550e8400-e29b-41d4-a716-446655440000",

220 "transcript_path": "/path/to/transcript.jsonl",237 "transcript_path": "/path/to/transcript.jsonl",

221 "model": {238 "model": {

222 "id": "claude-opus-4-8",239 "id": "claude-opus-5",

223 "display_name": "Opus"240 "display_name": "Opus"

224 },241 },

225 "workspace": {242 "workspace": {


258 }275 }

259 },276 },

260 "exceeds_200k_tokens": false,277 "exceeds_200k_tokens": false,

278 "prompt_cache": {

279 "warm": true,

280 "caching_observed": true,

281 "ttl": "1h",

282 "expires_at": 1738429200,

283 "requests": 14,

284 "misses": 2,

285 "expected_rebuilds": 1,

286 "hit_ratio": 0.91,

287 "cache_write_tokens": 352000,

288 "miss_recache_tokens": 310200,

289 "last_miss_at": 1738425230,

290 "last_miss_cause": {

291 "causes": ["tools_changed"],

292 "tools_added": 2,

293 "tools_removed": 0

294 },

295 "miss_causes": {

296 "tools_changed": 2

297 },

298 "recache_tokens_if_cold": 45000

299 },

300 "fast_mode": false,

261 "effort": {301 "effort": {

262 "level": "high"302 "level": "high"

263 },303 },


272 "seven_day": {312 "seven_day": {

273 "used_percentage": 41.2,313 "used_percentage": 41.2,

274 "resets_at": 1738857600314 "resets_at": 1738857600

315 },

316 "spend_limit": {

317 "used_percentage": 62.8,

318 "resets_at": 1740787200

275 }319 }

276 },320 },

277 "vim": {321 "vim": {


297 341 

298 **Campos que podem estar ausentes** (não presentes em JSON):342 **Campos que podem estar ausentes** (não presentes em JSON):

299 343 

300 * `session_name`: aparece apenas quando um nome personalizado foi definido com `--name` ou `/rename`344 * `session_name`: aparece quando um nome personalizado foi definido com `--name` ou `/rename`, ou uma vez que um título de sessão gerado por IA existe. O nome de exibição padrão, como `my-app-3f`, não popula este campo

301 * `prompt_id`: aparece apenas após a primeira entrada do usuário345 * `prompt_id`: aparece apenas após a primeira entrada do usuário

302 * `workspace.git_worktree`: aparece apenas quando o diretório atual está dentro de uma git worktree vinculada346 * `workspace.git_worktree`: aparece apenas quando o diretório atual está dentro de uma git worktree vinculada

303 * `workspace.repo`: aparece apenas dentro de um repositório git com um remote `origin` configurado347 * `workspace.repo`: aparece apenas dentro de um repositório git com um remote `origin` configurado

304 * `effort`: aparece apenas quando o modelo atual suporta o parâmetro de esforço de raciocínio348 * `effort`: aparece apenas quando o modelo atual suporta o parâmetro de esforço de raciocínio

305 * `vim`: aparece apenas quando o modo vim está habilitado349 * `vim`: aparece apenas quando o modo vim está habilitado

306 * `agent`: aparece apenas ao executar com a flag `--agent` ou configurações de agente configuradas350 * `agent`: aparece apenas ao executar com a flag `--agent` ou configurações de agente configuradas

307 * `pr`: aparece apenas enquanto um PR aberto é encontrado para o branch atual, e é removido uma vez que o PR seja mesclado ou fechado. `pr.review_state` pode estar independentemente ausente351 * `pr`: aparece apenas enquanto um PR aberto ou solicitação de mesclagem GitLab é encontrado para o branch atual, e é removido uma vez que seja mesclado ou fechado. `pr.review_state` e `pr.kind` podem estar independentemente ausentes

308 * `worktree`: aparece apenas durante sessões `--worktree`. Quando presente, `branch` e `original_branch` também podem estar ausentes para worktrees baseadas em hook352 * `worktree`: aparece apenas enquanto a sessão está em uma [sessão de worktree](/docs/pt/worktrees). Quando presente, `branch` e `original_branch` também podem estar ausentes para worktrees baseadas em hook

309 * `rate_limits`: aparece apenas para assinantes Claude.ai (Pro/Max) após a primeira resposta de API na sessão. Cada janela (`five_hour`, `seven_day`) pode estar independentemente ausente. Use `jq -r '.rate_limits.five_hour.used_percentage // empty'` para lidar com ausência graciosamente.353 * `rate_limits`: aparece apenas para assinantes Claude.ai Pro e Max, ou atrás de um gateway de aplicativos Claude que define um limite de gastos para você, e apenas após a primeira resposta de API na sessão. Cada janela (`five_hour`, `seven_day`, `spend_limit`) pode estar independentemente ausente, e o Claude Code remove uma janela uma vez que seu tempo `resets_at` passa. Use `jq -r '.rate_limits.five_hour.used_percentage // empty'` para lidar com ausência graciosamente.

354 * `prompt_cache`: aparece após a primeira resposta de API da conversa principal. Consulte [campos de cache de prompt](#prompt-cache-fields)

310 355 

311 **Campos que podem ser `null`**:356 **Campos que podem ser `null`**:

312 357 


320 Campos de janela de contexto365 Campos de janela de contexto

321</h3>366</h3>

322 367 

323O objeto `context_window` descreve a janela de contexto em tempo real da resposta de API mais recente. A partir da v2.1.132, `total_input_tokens` e `total_output_tokens` refletem o uso de contexto atual, não totais cumulativos de sessão.368O objeto `context_window` descreve a janela de contexto em tempo real da resposta de API mais recente.

324 369 

325* **Totais combinados** (`total_input_tokens`, `total_output_tokens`): tokens atualmente na janela de contexto. `total_input_tokens` é a soma de `input_tokens`, `cache_creation_input_tokens` e `cache_read_input_tokens`; `total_output_tokens` são os tokens de saída da resposta mais recente. Ambos são `0` antes da primeira resposta de API.370* **Totais combinados** (`total_input_tokens`, `total_output_tokens`): tokens atualmente na janela de contexto. `total_input_tokens` é a soma de `input_tokens`, `cache_creation_input_tokens` e `cache_read_input_tokens`; `total_output_tokens` são os tokens de saída da resposta mais recente. Ambos são `0` antes da primeira resposta de API.

326* **Uso por componente** (`current_usage`): as mesmas contagens de tokens divididas por categoria. Use isto quando você precisar de acertos de cache separados da entrada fresca.371* **Uso por componente** (`current_usage`): as mesmas contagens de tokens divididas por categoria. Use isto quando você precisar de acertos de cache separados da entrada fresca.


340 385 

341O objeto `current_usage` é `null` antes da primeira chamada de API em uma sessão, e novamente imediatamente após `/compact` até que a próxima chamada de API a repopule.386O objeto `current_usage` é `null` antes da primeira chamada de API em uma sessão, e novamente imediatamente após `/compact` até que a próxima chamada de API a repopule.

342 387 

388<h3 id="prompt-cache-fields">

389 Campos de cache de prompt

390</h3>

391 

392O objeto `prompt_cache` resume como a conversa principal da sessão está usando o [cache de prompt](/docs/pt/prompt-caching). O Claude Code o calcula a partir das contagens de tokens de cache nas respostas da API, então funciona em todos os provedores.

393 

394O objeto aparece após a primeira resposta de API da conversa principal. O Claude Code não conta solicitações de subagentos nessas estatísticas. Requer Claude Code v2.1.251 ou posterior.

395 

396A tabela lista cada campo com seu significado. Os timestamps são segundos de época Unix, a mesma unidade que `rate_limits.*.resets_at`. Uma linha de status curta geralmente mostra um ou dois destes; `warm` e `hit_ratio` resumem o estado do cache mais diretamente.

397 

398| Campo | Descrição |

399| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

400| `warm` | Se o prefixo em cache ainda está dentro de seu TTL. `false` quando a última resposta não relatou tokens de cache, mesmo enquanto `caching_observed` é `true` |

401| `caching_observed` | Se alguma resposta nesta sessão relatou tokens de cache. `false` significa que o cache de prompt está desativado, ou seu provedor ou gateway não o relata |

402| `ttl` | [Tempo de vida do cache](/docs/pt/prompt-caching#cache-lifetime) do prefixo em cache atual: `"5m"` ou `"1h"` |

403| `expires_at` | Quando o prefixo em cache sai de seu TTL e fica frio, em segundos de época. `null` quando a última resposta não relatou tokens de cache |

404| `requests` | Solicitações de API registradas para a conversa principal nesta sessão |

405| `misses` | Solicitações que reprocessaram conteúdo que o cache já continha: mais de 5% e pelo menos 2.000 tokens do que a solicitação poderia ter lido do cache, sem compactação ou limpeza de resultado de ferramenta para explicar a deficiência nas leituras de cache |

406| `expected_rebuilds` | Reconstruções de cache que seguiram uma compactação ou uma limpeza de resultados de ferramenta antigos |

407| `hit_ratio` | Tokens de leitura de cache como uma fração de todos os tokens de entrada nesta sessão, de 0 a 1. O denominador conta leituras de cache, escritas de cache e entrada não armazenada em cache. `null` enquanto essas contagens são todas zero |

408| `cache_write_tokens` | Todos os tokens escritos no cache nesta sessão, a escrita inicial da primeira solicitação incluída |

409| `miss_recache_tokens` | Tokens escritos no cache pelas solicitações contadas como falhas |

410| `last_miss_at` | Quando a última falha aconteceu, em segundos de época. `null` enquanto a sessão não tem falhas |

411| `last_miss_cause` | O que o Claude Code identificou como a provável causa da última falha, descrito em [Causa da última falha](#last-miss-cause). Requer Claude Code v2.1.260 ou posterior |

412| `miss_causes` | Quantas das falhas diagnosticadas desta sessão tiveram cada causa, indexadas pelos mesmos nomes de causa que `last_miss_cause`. Requer Claude Code v2.1.260 ou posterior |

413| `recache_tokens_if_cold` | Tokens que a próxima solicitação armazena em cache novamente se o cache tiver ficado frio até então. `null` logo após uma compactação ou uma limpeza de resultados de ferramenta antigos, até que a próxima solicitação registre o tamanho da conversa reescrita |

414 

415O Claude Code mostra as mesmas estatísticas no terminal, na linha [`/usage` do comando `Prompt cache (main)`](/docs/pt/costs#prompt-cache-statistics).

416 

417<h4 id="last-miss-cause">

418 Causa da última falha

419</h4>

420 

421O objeto `last_miss_cause` relata o que o Claude Code identificou como a provável causa da falha mais recente. Seu array `causes` contém um ou mais nomes de causa, como `tools_changed`, `system_prompt_changed`, `ttl_expired_5m` ou `likely_server_side`. O objeto é `null` até a primeira falha da sessão, e novamente sempre que o Claude Code não conseguir identificar uma causa para a falha mais recente. Requer Claude Code v2.1.260 ou posterior.

422 

423Duas causas adicionam contagens ao objeto:

424 

425* `tools_added` e `tools_removed`: com `tools_changed`, quantas ferramentas foram adicionadas ou removidas da solicitação

426* `system_char_delta`: com `system_prompt_changed`, a mudança no comprimento do prompt do sistema, em caracteres

427 

343<h2 id="examples">428<h2 id="examples">

344 Exemplos429 Exemplos

345</h2>430</h2>


3502. Torne-o executável: `chmod +x ~/.claude/statusline.sh`4352. Torne-o executável: `chmod +x ~/.claude/statusline.sh`

3513. Adicione o caminho às suas [configurações](#manually-configure-a-status-line)4363. Adicione o caminho às suas [configurações](#manually-configure-a-status-line)

352 437 

353Os exemplos de Bash usam [`jq`](https://jqlang.github.io/jq/) para analisar JSON. Python e Node.js têm análise JSON integrada.438Os exemplos de Bash usam [`jq`](https://jqlang.org/) para analisar JSON. Python e Node.js têm análise JSON integrada.

354 439 

355<h3 id="context-window-usage">440<h3 id="context-window-usage">

356 Uso da janela de contexto441 Uso da janela de contexto


584 Exibir múltiplas linhas669 Exibir múltiplas linhas

585</h3>670</h3>

586 671 

587Seu script pode exibir múltiplas linhas para criar uma exibição mais rica. Cada instrução `echo` produz uma linha separada na área de status.672Seu script pode exibir múltiplas linhas para criar uma exibição mais rica.

588 673 

589<Frame>674<Frame>

590 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Uma linha de status de múltiplas linhas mostrando nome do modelo, diretório, ramificação git na primeira linha, e uma barra de progresso de uso de contexto com custo e duração na segunda linha" width="776" height="212" data-path="images/statusline-multiline.png" />675 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Uma linha de status de múltiplas linhas mostrando nome do modelo, diretório, ramificação git na primeira linha, e uma barra de progresso de uso de contexto com custo e duração na segunda linha" width="776" height="212" data-path="images/statusline-multiline.png" />


693 Links clicáveis778 Links clicáveis

694</h3>779</h3>

695 780 

696Este exemplo cria um link clicável para seu repositório GitHub. Ele lê a URL remota do git, converte o formato SSH para HTTPS com `sed` e envolve o nome do repositório em códigos de escape OSC 8. Mantenha Cmd (macOS) ou Ctrl (Windows/Linux) pressionado e clique para abrir o link em seu navegador.781Este exemplo cria um link clicável para seu repositório GitHub. Mantenha Cmd (macOS) ou Ctrl (Windows/Linux) pressionado e clique para abrir o link em seu navegador.

697 782 

698<Frame>783<Frame>

699 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-links.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=4bcc6e7deb7cf52f41ab85a219b52661" alt="Uma linha de status mostrando um link clicável para um repositório GitHub" width="726" height="198" data-path="images/statusline-links.png" />784 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-links.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=4bcc6e7deb7cf52f41ab85a219b52661" alt="Uma linha de status mostrando um link clicável para um repositório GitHub" width="726" height="198" data-path="images/statusline-links.png" />


775 Uso de limite de taxa860 Uso de limite de taxa

776</h3>861</h3>

777 862 

778Exiba o uso do limite de taxa de assinatura Claude.ai na linha de status. O objeto `rate_limits` contém `five_hour` (janela móvel de 5 horas) e `seven_day` (janelas semanais). Cada janela fornece `used_percentage` (0-100) e `resets_at` (segundos de época Unix quando a janela é redefinida).863Exiba o uso do limite de taxa de assinatura Claude.ai na linha de status. O objeto `rate_limits` contém uma janela móvel `five_hour` e uma janela semanal `seven_day`. Cada janela fornece `used_percentage`, de 0 a 100, e `resets_at`, os segundos de época Unix quando a janela é redefinida.

864 

865Atrás de um gateway de aplicativos Claude com limites de gastos, `rate_limits` carrega `spend_limit` com os mesmos dois campos para o limite de gastos que se aplica a você, exceto que seu `used_percentage` pode ultrapassar 100 uma vez que você exceda o limite. Requer Claude Code v2.1.251 ou posterior.

779 866 

780Este campo está presente apenas para assinantes Claude.ai (Pro/Max) após a primeira resposta de API. Cada script trata o campo ausente graciosamente:867O objeto `rate_limits` está presente apenas para assinantes Claude.ai Pro e Max, ou atrás de um gateway de aplicativos Claude com limites de gastos, e apenas após a primeira resposta de API. Cada script trata o campo ausente graciosamente:

781 868 

782<CodeGroup>869<CodeGroup>

783 ```bash Bash theme={null}870 ```bash Bash theme={null}


863 950 

864 cache_is_stale() {951 cache_is_stale() {

865 [ ! -f "$CACHE_FILE" ] || \952 [ ! -f "$CACHE_FILE" ] || \

866 # stat -f %m is macOS, stat -c %Y is Linux953 # stat -c %Y (Linux) or stat -f %m (macOS) prints the file's last-modified

867 [ $(($(date +%s) - $(stat -f %m "$CACHE_FILE" 2>/dev/null || stat -c %Y "$CACHE_FILE" 2>/dev/null || echo 0))) -gt $CACHE_MAX_AGE ]954 # time. The Linux form must run first: on Linux, the macOS form prints a

955 # filesystem report to stdout before failing, and that output would be

956 # captured by the command substitution and break the arithmetic.

957 [ $(($(date +%s) - $(stat -c %Y "$CACHE_FILE" 2>/dev/null || stat -f %m "$CACHE_FILE" 2>/dev/null || echo 0))) -gt $CACHE_MAX_AGE ]

868 }958 }

869 959 

870 if cache_is_stale; then960 if cache_is_stale; then


1044}1134}

1045```1135```

1046 1136 

1047O comando é executado uma vez por tick de atualização com todas as linhas de subagente visíveis passadas como um único objeto JSON em stdin. A entrada inclui os [campos de hook base](/docs/pt/hooks#common-input-fields), um campo `columns` com a largura de linha utilizável e um array `tasks`. Cada tarefa tem `id`, `name`, `type`, `status`, `description`, `label`, `startTime`, `model`, `contextWindowSize`, `tokenCount`, `tokenSamples` e `cwd`.1137O comando é executado uma vez por tick de atualização com todas as linhas de subagente visíveis passadas como um único objeto JSON em stdin. A entrada inclui os [campos de hook base](/docs/pt/hooks#common-input-fields), um campo `columns` com a largura de linha utilizável e um array `tasks`. Cada tarefa tem `id`, `name`, `type`, `status`, `description`, `label`, `startTime`, `model`, `effort`, `contextWindowSize`, `tokenCount`, `tokenSamples` e `cwd`.

1048 1138 

1049O campo `model` por tarefa é o ID do modelo resolvido em que a tarefa é executada. `contextWindowSize` é a janela de contexto desse modelo em tokens, calculada da mesma forma que a `context_window.context_window_size` da linha de status principal, para que você possa renderizar uma porcentagem por linha a partir de `tokenCount`. Ambos os campos exigem Claude Code v2.1.205 ou posterior e são omitidos para uma tarefa cujo modelo ainda não foi resolvido.1139O campo `model` por tarefa é o ID do modelo resolvido em que a tarefa é executada. `contextWindowSize` é a janela de contexto desse modelo em tokens, calculada da mesma forma que a `context_window.context_window_size` da linha de status principal, para que você possa renderizar uma porcentagem por linha a partir de `tokenCount`. Ambos os campos exigem Claude Code v2.1.205 ou posterior e são omitidos para uma tarefa cujo modelo ainda não foi resolvido.

1050 1140 

1141O campo `effort` por tarefa é o esforço de raciocínio definido para esse subagente, em seu [frontmatter de definição](/docs/pt/sub-agents#supported-frontmatter-fields) ou na invocação individual. O valor é um dos strings de nível de esforço `low`, `medium`, `high`, `xhigh` ou `max`, ou um orçamento de token numérico. O campo relata o valor configurado conforme escrito: se o modelo não suportar esse nível, o esforço que Claude Code realmente aplica pode ser diferente. O campo exige Claude Code v2.1.214 ou posterior e está ausente quando o subagente herda o nível de esforço da sessão.

1142 

1051Escreva uma linha JSON para stdout por linha que você queira substituir, na forma `{"id": "<task id>", "content": "<row body>"}`. A string `content` é renderizada como está, incluindo cores ANSI e hiperlinks OSC 8. Omita o `id` de uma tarefa para manter a renderização padrão para essa linha; emita uma string `content` vazia para ocultá-la.1143Escreva uma linha JSON para stdout por linha que você queira substituir, na forma `{"id": "<task id>", "content": "<row body>"}`. A string `content` é renderizada como está, incluindo cores ANSI e hiperlinks OSC 8. Omita o `id` de uma tarefa para manter a renderização padrão para essa linha; emita uma string `content` vazia para ocultá-la.

1052 1144 

1053Os mesmos portões de confiança e `disableAllHooks` que se aplicam a `statusLine` se aplicam aqui. Plugins podem enviar um `subagentStatusLine` padrão em seu [`settings.json`](/docs/pt/plugins-reference#standard-plugin-layout).1145Os mesmos portões de confiança, `disableAllHooks` e [`allowManagedHooksOnly`](/docs/pt/settings-reference#allowmanagedhooksonly) que se aplicam a `statusLine` se aplicam aqui. Plugins podem enviar um `subagentStatusLine` padrão em seu [`settings.json`](/docs/pt/plugins-reference#standard-plugin-layout), mas diferentemente de hooks, valores de plugin não são executados sob `allowManagedHooksOnly` mesmo quando o plugin é forçadamente ativado nas configurações gerenciadas `enabledPlugins`.

1054 1146 

1055<h2 id="tips">1147<h2 id="tips">

1056 Dicas1148 Dicas


1072* Verifique se seu script produz saída para stdout, não stderr1164* Verifique se seu script produz saída para stdout, não stderr

1073* Execute seu script manualmente para verificar se produz saída1165* Execute seu script manualmente para verificar se produz saída

1074* No Windows com Git Bash instalado, barras invertidas no caminho `command` provavelmente estão sendo consumidas como caracteres de escape antes do script ser executado. Use barras normais no caminho. Veja [Configuração do Windows](#windows-configuration).1166* No Windows com Git Bash instalado, barras invertidas no caminho `command` provavelmente estão sendo consumidas como caracteres de escape antes do script ser executado. Use barras normais no caminho. Veja [Configuração do Windows](#windows-configuration).

1075* Se `disableAllHooks` estiver definido como `true` em suas configurações, a linha de status também será desabilitada. Remova esta configuração ou defina-a como `false` para reabilitar.1167* Se `disableAllHooks` estiver definido como `true` fora das configurações gerenciadas após a [precedência de configurações](/docs/pt/hooks#disable-or-remove-hooks) ser aplicada, o Claude Code executa apenas um `statusLine` das configurações gerenciadas, e sem um `statusLine` gerenciado a linha de status fica desabilitada. Remova a configuração ou defina-a como `false` no arquivo que a define para reabilitar. Veja [`disableAllHooks`](/docs/pt/settings-reference#disableallhooks).

1168* Se sua organização define `allowManagedHooksOnly` nas configurações gerenciadas, sua linha de status personalizada desaparece sem aviso: você só pode obter uma linha de status de um valor `statusLine` nessas configurações gerenciadas. Veja [o que é executado sob `allowManagedHooksOnly`](/docs/pt/settings-reference#what-runs-under-allowmanagedhooksonly) para o comportamento completo, e pergunte ao seu administrador se essa configuração se aplica a você.

1076* Execute `claude --debug` para registrar o código de saída e stderr da primeira invocação de linha de status em uma sessão1169* Execute `claude --debug` para registrar o código de saída e stderr da primeira invocação de linha de status em uma sessão

1077* Peça ao Claude para ler seu arquivo de configurações e executar o comando `statusLine` diretamente para descobrir erros1170* Peça ao Claude para ler seu arquivo de configurações e executar o comando `statusLine` diretamente para descobrir erros

1078 1171 


1093 1186 

1094* Terminal.app não suporta links clicáveis1187* Terminal.app não suporta links clicáveis

1095 1188 

1096* Se o texto do link aparecer mas não for clicável, o Claude Code pode não ter detectado suporte a hiperlink em seu terminal. Isto afeta comumente Windows Terminal e outros emuladores não na lista de detecção automática. Defina a variável de ambiente `FORCE_HYPERLINK` para substituir a detecção antes de iniciar o Claude Code:1189* Se o texto do link aparecer mas não for clicável, o Claude Code pode não ter detectado suporte a hiperlink em seu terminal. Defina a variável de ambiente `FORCE_HYPERLINK` para substituir a detecção antes de iniciar o Claude Code:

1097 1190 

1098 ```bash theme={null}1191 ```bash theme={null}

1099 FORCE_HYPERLINK=1 claude1192 FORCE_HYPERLINK=1 claude


1117 1210 

1118**Confiança do espaço de trabalho necessária**1211**Confiança do espaço de trabalho necessária**

1119 1212 

1120* O comando de linha de status só é executado se você aceitou o diálogo de confiança do espaço de trabalho para o diretório atual. Como `statusLine` executa um comando de shell, ele requer a mesma aceitação de confiança que hooks e outras configurações que executam shell.1213* Como `statusLine` executa um comando de shell, o Claude Code o executa sob a mesma [regra de confiança do espaço de trabalho que hooks em arquivos de configurações](/docs/pt/permissions#what-runs-before-you-trust-a-folder). Aceitar o diálogo para a pasta, ou para um diretório pai cuja confiança se estende a ela, é suficiente.

1121* Se a confiança não for aceita, você verá a notificação `statusline skipped · restart to fix` em vez da saída da sua linha de status. Reinicie o Claude Code e aceite o prompt de confiança para habilitá-lo.1214* Até então, a linha de status permanece em branco, e `claude --debug` registra `Status line command skipped: workspace trust not accepted`. Reinicie o Claude Code e aceite o diálogo de confiança para habilitá-lo.

1122 1215 

1123**Erros de script ou travamentos**1216**Erros de script ou travamentos**

1124 1217 


1129 1222 

1130**Notificações compartilham a linha de status**1223**Notificações compartilham a linha de status**

1131 1224 

1132* Notificações do sistema como erros de servidor MCP e atualizações automáticas são exibidas no lado direito da mesma linha que sua linha de status. Notificações transitórias como o aviso de contexto baixo também circulam por esta área.1225Fora da [renderização em tela cheia](/docs/pt/fullscreen), o Claude Code mostra notificações na mesma linha que sua linha de status. Na renderização em tela cheia, o Claude Code oferece às notificações uma linha própria.

1226 

1227* Notificações do sistema como erros de servidor MCP e atualizações automáticas são exibidas no lado direito da linha. Notificações transitórias como o aviso de contexto baixo também circulam por esta área.

1133* Habilitar modo verbose adiciona um contador de tokens a esta área1228* Habilitar modo verbose adiciona um contador de tokens a esta área

1134* Em terminais estreitos, essas notificações podem truncar sua saída de linha de status1229* Em terminais estreitos, essas notificações podem truncar sua saída de linha de status

sub-agents.md +129 −126

Details

304| `name` | Yes | Identificador único usando letras minúsculas e hífens. [Hooks](/docs/pt/hooks#subagentstart) recebem este valor como `agent_type`. O nome do arquivo não precisa corresponder. Nomes não podem conter `:`, que é reservado para [identificadores com escopo de plugin](/docs/pt/plugins) como `my-plugin:reviewer`. Claude Code não carrega um arquivo cujo nome contém um e registra um erro no log de debug. Antes da v2.1.218, tais nomes eram aceitos |304| `name` | Yes | Identificador único usando letras minúsculas e hífens. [Hooks](/docs/pt/hooks#subagentstart) recebem este valor como `agent_type`. O nome do arquivo não precisa corresponder. Nomes não podem conter `:`, que é reservado para [identificadores com escopo de plugin](/docs/pt/plugins) como `my-plugin:reviewer`. Claude Code não carrega um arquivo cujo nome contém um e registra um erro no log de debug. Antes da v2.1.218, tais nomes eram aceitos |

305| `description` | Yes | Quando Claude deve delegar para este subagente |305| `description` | Yes | Quando Claude deve delegar para este subagente |

306| `tools` | No | [Ferramentas](#available-tools) que o subagente pode usar. Herda todas as ferramentas disponíveis para subagentes se omitido. Se nenhuma entrada na lista se resolver para uma ferramenta, o subagente geralmente [falha ao iniciar](/docs/pt/errors#agent-would-be-spawned-with-zero-tools) com um erro nomeando as entradas. Para pré-carregar Skills no contexto, use o campo `skills` em vez de listar `Skill` aqui |306| `tools` | No | [Ferramentas](#available-tools) que o subagente pode usar. Herda todas as ferramentas disponíveis para subagentes se omitido. Se nenhuma entrada na lista se resolver para uma ferramenta, o subagente geralmente [falha ao iniciar](/docs/pt/errors#agent-would-be-spawned-with-zero-tools) com um erro nomeando as entradas. Para pré-carregar Skills no contexto, use o campo `skills` em vez de listar `Skill` aqui |

307| `disallowedTools` | No | Ferramentas a negar, removidas da lista herdada ou especificada |307| `disallowedTools` | No | Ferramentas a negar, removidas da lista herdada ou especificada. Uma entrada com um especificador, como `Bash(git push *)`, ainda [remove a ferramenta inteira](#available-tools) |

308| `model` | No | [Modelo](#choose-a-model) a usar: `sonnet`, `opus`, `haiku`, `fable`, um ID de modelo completo como `claude-opus-5`, ou `inherit`. Quando você omite, Claude Code escolhe o modelo na [ordem de modelo de subagente](#choose-a-model) |308| `model` | No | [Modelo](#choose-a-model) a usar: `sonnet`, `opus`, `haiku`, `fable`, um ID de modelo completo como `claude-opus-5`, ou `inherit`. Quando você omite, Claude Code escolhe o modelo na [ordem de modelo de subagente](#choose-a-model) |

309| `permissionMode` | No | [Modo de permissão](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan`, ou `manual` como um alias para `default`. O alias `manual` requer Claude Code v2.1.200 ou posterior. Ignorado para [subagentes de plugin](#choose-the-subagent-scope) |309| `permissionMode` | No | [Modo de permissão](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan`, ou `manual` como um alias para `default`. O alias `manual` requer Claude Code v2.1.200 ou posterior. Ignorado para [subagentes de plugin](#choose-the-subagent-scope) |

310| `maxTurns` | No | Número máximo de turnos de agente antes do subagente parar. Quando o subagente atinge o limite, Claude Code retorna sua saída marcada como parcial, e Claude pode [retomá-lo](#resume-subagents) para continuar. A marcação parcial requer Claude Code v2.1.246 ou posterior |310| `maxTurns` | No | Número máximo de turnos de agente antes do subagente parar. Quando o subagente atinge o limite, Claude Code retorna sua saída marcada como parcial, e Claude pode [retomá-lo](#resume-subagents) para continuar. A marcação parcial requer Claude Code v2.1.246 ou posterior |


427 Ferramentas disponíveis427 Ferramentas disponíveis

428</h4>428</h4>

429 429 

430Subagentes herdam as [ferramentas integradas](/docs/pt/tools-reference) e ferramentas MCP disponíveis na conversa principal, reduzidas por dois filtros: o primeiro remove uma lista curta de ferramentas de cada subagente, e o segundo reduz o conjunto de ferramentas integradas para subagentes que são executados em [background](#run-subagents-in-foreground-or-background), que é o padrão. [Bifurcações](#fork-the-current-conversation) pulam ambos os filtros e recebem o pool de ferramentas exato da conversa principal. O primeiro filtro remove essas ferramentas, mesmo quando listadas no campo `tools`:430Subagentes herdam as [ferramentas integradas](/docs/pt/tools-reference) e ferramentas MCP disponíveis na conversa principal, reduzidas por dois filtros: o primeiro remove uma lista curta de ferramentas de cada subagente, e o segundo reduz o conjunto de ferramentas integradas para subagentes que são executados em [background](#run-subagents-in-foreground-or-background), que é o padrão. Em macOS, Linux e WSL, um subagente também pode receber as ferramentas Glob e Grep quando a conversa principal não as tem, conforme descrito em [Comportamento da ferramenta Glob](/docs/pt/tools-reference#glob-tool-behavior). [Bifurcações](#fork-the-current-conversation) pulam ambos os filtros e recebem o pool de ferramentas exato da conversa principal. O primeiro filtro remove essas ferramentas, mesmo quando listadas no campo `tools`:

431 431 

432* `Agent`, quando o subagente está no [limite de profundidade](#let-subagents-spawn-their-own-subagents); em uma [bifurcação](#fork-the-current-conversation) a ferramenta permanece listada mas retorna um erro em vez de gerar432* `Agent`, quando o subagente está no [limite de profundidade](#let-subagents-spawn-their-own-subagents); em uma [bifurcação](#fork-the-current-conversation) a ferramenta permanece listada mas retorna um erro em vez de gerar

433* `AskUserQuestion`433* `AskUserQuestion`


439* `WaitForMcpServers`439* `WaitForMcpServers`

440* `Workflow`440* `Workflow`

441 441 

442O segundo filtro se aplica a subagentes em execução em background. Além de `Agent` e `ExitPlanMode`, que seguem as condições do primeiro filtro onde quer que o subagente seja executado, um subagente em background mantém cada ferramenta MCP mas apenas essas ferramentas integradas: `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage` e `Artifact`. Claude Code remove todas as outras ferramentas integradas de um subagente em background, seja herdadas ou listadas no campo `tools`, portanto a mesma definição pode se resolver para ferramentas diferentes em foreground e background. A remoção não relata erro a menos que deixe a lista `tools` [se resolvendo para nada](/docs/pt/errors#agent-would-be-spawned-with-zero-tools). [`ListAgents`](/docs/pt/cross-session-messaging) segue esses filtros como qualquer ferramenta integrada: um subagente em foreground a herda em sessões onde mensagens entre sessões estão habilitadas, e um subagente em background não a mantém.442O segundo filtro se aplica a subagentes em execução em background. Além de `Agent` e `ExitPlanMode`, que seguem as condições do primeiro filtro onde quer que o subagente seja executado, um subagente em background mantém cada ferramenta MCP mas apenas essas ferramentas integradas: `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage` e `Artifact`. Claude Code remove todas as outras ferramentas integradas de um subagente em background, seja herdadas ou listadas no campo `tools`, portanto a mesma definição pode se resolver para ferramentas diferentes em foreground e background. A remoção não relata erro a menos que deixe a lista `tools` [se resolvendo para nada](/docs/pt/errors#agent-would-be-spawned-with-zero-tools).

443 

444[`ListAgents`](/docs/pt/cross-session-messaging) segue esses filtros como qualquer ferramenta integrada: um subagente em foreground a herda em sessões onde mensagens entre sessões estão habilitadas, e um subagente em background não a mantém.

443 445 

444Colegas de trabalho em [equipes de agentes](/docs/pt/agent-teams) adicionalmente mantêm as ferramentas de tarefa e ferramentas cron: `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, `CronCreate`, `CronDelete` e `CronList`.446Colegas de trabalho em [equipes de agentes](/docs/pt/agent-teams) adicionalmente mantêm as ferramentas de tarefa e ferramentas cron: `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, `CronCreate`, `CronDelete` e `CronList`.

445 447 


479---481---

480```482```

481 483 

484Uma entrada `disallowedTools` com um especificador, como `Bash(git push *)`, ainda remove a ferramenta inteira do subagente, não apenas os comandos correspondentes. Para manter Bash e bloquear comandos específicos, adicione uma [regra de negação Bash](/docs/pt/permissions#bash) como `Bash(git push *)` a `permissions.deny` em suas configurações. A regra se aplica à conversa principal e aos subagentes.

485 

482<h4 id="restrict-which-subagents-can-be-spawned">486<h4 id="restrict-which-subagents-can-be-spawned">

483 Restringir quais subagentes podem ser gerados487 Restringir quais subagentes podem ser gerados

484</h4>488</h4>


570 Modos de permissão574 Modos de permissão

571</h4>575</h4>

572 576 

573Defina `permissionMode` para escolher o modo de permissão em que um subagente é executado. Use os valores de configuração dos modos, portanto o modo Manual é `default`. Se você deixar indefinido, o subagente herda o modo da conversa principal, que começa como [modo auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) em planos Pro, Max e Team a menos que suas configurações ou sua organização o alterem. Defini-lo sobrescreve esse modo, exceto nos casos descritos abaixo.577Defina `permissionMode` para escolher o modo de permissão em que um subagente é executado. Use os valores de configuração dos modos, portanto o modo Manual é `default`. Se você deixar indefinido, o subagente herda o modo da conversa principal, que começa como [modo auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode) em planos Pro, Max e Team a menos que suas configurações ou sua organização o alterem.

578 

579A conversa principal's modo de permissão decide se Claude Code usa o valor que você definiu:

580 

581* Quando a conversa principal está em `bypassPermissions`, `acceptEdits`, ou [modo auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode), o subagente é executado nesse mesmo modo e Claude Code ignora o `permissionMode` que você definiu. Sob modo auto, o classificador avalia as chamadas de ferramentas do subagente com as regras de bloqueio e permissão da conversa principal.

582* Quando a conversa principal está em `default`, `dontAsk`, ou modo `plan`, o subagente é executado no modo de permissão que você definiu, exceto `bypassPermissions`. Um subagente que declara `bypassPermissions` mantém o modo da conversa principal em vez disso. A exceção `bypassPermissions` requer Claude Code v2.1.267 ou posterior.

583 

584`permissionMode` aceita estes valores, e `manual` como um alias para `default`:

574 585 

575| Mode | Behavior |586| Mode | Behavior |

576| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |587| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


578| `acceptEdits` | Auto-aceitar edições de arquivo e comandos comuns do sistema de arquivos para caminhos no diretório de trabalho ou `additionalDirectories` |589| `acceptEdits` | Auto-aceitar edições de arquivo e comandos comuns do sistema de arquivos para caminhos no diretório de trabalho ou `additionalDirectories` |

579| `auto` | [Modo auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode): um classificador de IA revisa comandos e escritas em diretório protegido |590| `auto` | [Modo auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode): um classificador de IA revisa comandos e escritas em diretório protegido |

580| `dontAsk` | Auto-negar prompts de permissão. Ferramentas explicitamente permitidas ainda funcionam; `AskUserQuestion`, ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool), e ferramentas de conector [sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) em sessões onde essa configuração chega a Claude Code são negadas mesmo se você as permitiu |591| `dontAsk` | Auto-negar prompts de permissão. Ferramentas explicitamente permitidas ainda funcionam; `AskUserQuestion`, ferramentas MCP marcadas [`requiresUserInteraction`](/docs/pt/mcp#require-approval-for-a-specific-tool), e ferramentas de conector [sua organização definiu como `ask`](/docs/pt/mcp#organization-controls-on-connector-tools) em sessões onde essa configuração chega a Claude Code são negadas mesmo se você as permitiu |

581| `bypassPermissions` | Pular prompts de permissão |592| `bypassPermissions` | [Pular prompts de permissão](/docs/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode). Um subagente é executado neste modo apenas quando a conversa principal o faz |

582| `plan` | Plan mode (exploração somente leitura) |593| `plan` | Plan mode (exploração somente leitura) |

583 594 

584<Warning>

585 Use `bypassPermissions` com cuidado. Ele pula prompts de permissão, permitindo que o subagente execute operações sem aprovação, incluindo escritas em `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn` e `.mvn`.

586 

587 Mesmo neste modo, as [ações que nenhum modo auto-aprova](/docs/pt/permission-modes#actions-no-mode-auto-approves) ainda se aplicam. Veja [modos de permissão](/docs/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) para detalhes.

588</Warning>

589 

590Se o pai usar `bypassPermissions` ou `acceptEdits`, isso tem precedência e não pode ser sobrescrito. Se o pai usar [modo auto](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode), o subagente herda modo auto e qualquer `permissionMode` em seu frontmatter é ignorado: o classificador avalia as chamadas de ferramentas do subagente com as mesmas regras de bloqueio e permissão que a sessão pai.

591 

592Se o modo bypass está desabilitado por [`permissions.disableBypassPermissionsMode`](/docs/pt/permissions#managed-settings), Claude Code ignora `permissionMode: bypassPermissions` no frontmatter e o subagente é executado com o modo da sessão pai. Antes da v2.1.223, Claude Code aplicava o modo de frontmatter mesmo com bypass desabilitado.

593 

594<h4 id="preload-skills-into-subagents">595<h4 id="preload-skills-into-subagents">

595 Pré-carregar skills em subagentes596 Pré-carregar skills em subagentes

596</h4>597</h4>


616Se uma skill listada estiver faltando ou desabilitada, por exemplo pela política de sua organização, Claude Code a ignora e registra um aviso no log de debug.617Se uma skill listada estiver faltando ou desabilitada, por exemplo pela política de sua organização, Claude Code a ignora e registra um aviso no log de debug.

617 618 

618<Note>619<Note>

619 Isto é o inverso de [executar uma skill em um subagente](/docs/pt/skills#run-skills-in-a-subagent). Com `skills` em um subagente, o subagente controla o prompt de sistema e carrega conteúdo de skill. Com `context: fork` em uma skill, o conteúdo de skill é injetado no agente que você especificar. Ambos usam o mesmo sistema subjacente.620 Isto é o inverso de [executar uma skill em um subagente](/docs/pt/skills#run-skills-in-a-subagent). Com `skills` em um subagente, o subagente controla o prompt de sistema e carrega conteúdo de skill. Com `context: fork` em uma skill, o conteúdo de skill é injetado no agente que você especificar. Em ambos os casos o subagente começa sem seu histórico de conversa.

620</Note>621</Note>

621 622 

622<h4 id="enable-persistent-memory">623<h4 id="enable-persistent-memory">


844 Entender delegação automática845 Entender delegação automática

845</h3>846</h3>

846 847 

847Claude delega automaticamente tarefas baseado na descrição da tarefa em sua solicitação, no campo `description` em configurações de subagente e no contexto atual. Para encorajar delegação proativa, inclua frases como "use proactively" no campo description do seu subagente.848Claude delega tarefas automaticamente com base na descrição da tarefa em sua solicitação, no campo `description` nas configurações de subagentes e no contexto atual. Para incentivar delegação proativa, inclua frases como "use proativamente" no campo de descrição do seu subagente.

848 849 

849Mantenha descrições breves: Claude Code mostra um aviso de inicialização quando as descrições combinadas de seus subagentes passam [o limite de 15.000 tokens](/docs/pt/errors#agent-descriptions-are-over-the-15000-token-limit), e ainda carrega cada subagente.850Mantenha as descrições breves: Claude Code mostra um aviso de inicialização quando as descrições combinadas de seus subagentes ultrapassam o [limite de 15.000 tokens](/docs/pt/errors#agent-descriptions-are-over-the-15000-token-limit), e ainda carrega todos os subagentes.

850 851 

851<h3 id="invoke-subagents-explicitly">852<h3 id="invoke-subagents-explicitly">

852 Invocar subagentes explicitamente853 Invocar subagentes explicitamente

853</h3>854</h3>

854 855 

855Quando delegação automática não é suficiente, você pode solicitar um subagente você mesmo. Três padrões escalam de uma sugestão única para um padrão padrão em toda a sessão:856Quando a delegação automática não é suficiente, você pode solicitar um subagente você mesmo. Três padrões escalam de uma sugestão única para um padrão em toda a sessão:

856 857 

857* **Linguagem natural**: nomeie o subagente em seu prompt; Claude decide se deve delegar858* **Linguagem natural**: nomeie o subagente em seu prompt; Claude decide se deve delegar

858* **@-mention**: garante que o subagente seja executado para uma tarefa859* **@-mention**: garante que o subagente seja executado para uma tarefa

859* **Em toda a sessão**: toda a sessão usa o prompt de sistema, restrições de ferramentas e modelo do subagente via flag `--agent` ou configuração `agent`860* **Em toda a sessão**: toda a sessão usa o prompt do sistema, restrições de ferramentas e modelo desse subagente via sinalizador `--agent` ou configuração `agent`

860 861 

861Para linguagem natural, não há sintaxe especial. Nomeie o subagente e Claude normalmente delega:862Para linguagem natural, não há sintaxe especial. Nomeie o subagente e Claude normalmente delega:

862 863 

863```text wrap theme={null}864```text wrap theme={null}

864Use the test-runner subagent to fix failing tests865Use o subagente test-runner para corrigir testes com falha

865Have the code-reviewer subagent look at my recent changes866Peça ao subagente code-reviewer para analisar minhas mudanças recentes

866```867```

867 868 

868**@-mention o subagente.** Digite `@` e escolha o subagente do typeahead, da mesma forma que você @-menciona arquivos. Isso garante que esse subagente específico seja executado em vez de deixar a escolha para Claude:869**@-mention o subagente.** Digite `@` e escolha o subagente na lista de sugestões, da mesma forma que você @-menciona arquivos. Isso garante que esse subagente específico seja executado em vez de deixar a escolha para Claude:

869 870 

870```text wrap theme={null}871```text wrap theme={null}

871@"code-reviewer (agent)" look at the auth changes872@"code-reviewer (agent)" analise as mudanças de autenticação

872```873```

873 874 

874Sua mensagem completa ainda vai para Claude, que escreve o prompt de tarefa do subagente baseado no que você pediu. O @-mention controla qual subagente Claude invoca, não qual prompt ele recebe.875Sua mensagem completa ainda vai para Claude, que escreve o prompt de tarefa do subagente com base no que você pediu. O @-mention controla qual subagente Claude invoca, não qual prompt ele recebe.

875 876 

876Subagentes fornecidos por um [plugin](/docs/pt/plugins) habilitado aparecem no typeahead sob seu nome com escopo, como `my-plugin:code-reviewer` ou `my-plugin:review:security` quando o plugin [organiza agentes em subpastas](#choose-the-subagent-scope). Subagentes em background nomeados atualmente em execução na sessão também aparecem no typeahead, mostrando seu status ao lado do nome.877Subagentes fornecidos por um [plugin](/docs/pt/plugins) habilitado aparecem na lista de sugestões sob seu nome com escopo, como `my-plugin:code-reviewer` ou `my-plugin:review:security` quando o plugin [organiza agentes em subpastas](#choose-the-subagent-scope). Subagentes de fundo nomeados atualmente em execução na sessão também aparecem na lista de sugestões, mostrando seu status ao lado do nome.

877 878 

878Você também pode digitar a menção manualmente sem usar o picker: `@agent-<name>` para subagentes locais, ou `@agent-` seguido pelo nome com escopo para subagentes de plugin, por exemplo `@agent-my-plugin:code-reviewer`. Enquanto você digita este formulário, o typeahead mostra correspondências de arquivo em vez de agentes. A menção de agente ainda é resolvida quando você envia.879Você também pode digitar a menção manualmente sem usar o seletor: `@agent-<name>` para subagentes locais, ou `@agent-` seguido pelo nome com escopo para subagentes de plugin, por exemplo `@agent-my-plugin:code-reviewer`. Enquanto você digita este formulário, a lista de sugestões mostra correspondências de arquivo em vez de agentes. A menção do agente ainda é resolvida quando você envia.

879 880 

880**Execute toda a sessão como um subagente.** Passe [`--agent <name>`](/docs/pt/cli-reference) para iniciar uma sessão onde a thread principal em si assume o prompt de sistema, restrições de ferramentas e modelo do subagente:881**Execute toda a sessão como um subagente.** Passe [`--agent <name>`](/docs/pt/cli-reference) para iniciar uma sessão onde o thread principal em si assume o prompt do sistema, restrições de ferramentas e modelo desse subagente:

881 882 

882```bash theme={null}883```bash theme={null}

883claude --agent code-reviewer884claude --agent code-reviewer

884```885```

885 886 

886O prompt de sistema do subagente substitui completamente o prompt de sistema padrão do Claude Code, da mesma forma que [`--system-prompt`](/docs/pt/cli-reference) faz. Arquivos `CLAUDE.md` e memória de projeto ainda carregam através do fluxo de mensagem normal. O nome do agente aparece como `@<name>` no cabeçalho de inicialização para que você possa confirmar que está ativo.887O prompt do sistema do subagente substitui completamente o prompt do sistema padrão do Claude Code, da mesma forma que [`--system-prompt`](/docs/pt/cli-reference) faz. Os arquivos `CLAUDE.md` e a memória do projeto ainda são carregados através do fluxo de mensagens normal. O nome do agente aparece como `@<name>` no cabeçalho de inicialização para que você possa confirmar que está ativo.

887 888 

888Isso funciona com subagentes integrados e personalizados, e a escolha persiste quando você retoma a sessão: Claude Code restaura o prompt de sistema, restrições de ferramentas e modelo do agente junto com a conversa. Se o agente não existir mais quando você retomar, a sessão continua com as ferramentas padrão e prompt de sistema e mostra um [aviso nomeando o agente](/docs/pt/errors#session-agent-no-longer-available).889Isso funciona com subagentes integrados e personalizados, e a escolha persiste quando você retoma a sessão: Claude Code restaura as restrições de ferramentas e o modelo do agente junto com a conversa. Se o agente não existir mais quando você retomar, a sessão continua com as ferramentas padrão e mostra um [aviso nomeando o agente](/docs/pt/errors#session-agent-no-longer-available). Para o prompt do sistema em ambos os casos, consulte [Sinalizadores de prompt do sistema em conversas retomadas](/docs/pt/cli-reference#system-prompt-flags-in-resumed-conversations).

889 890 

890Para um subagente fornecido por plugin, você pode passar apenas o nome do agente e Claude Code o encontrará:891Para um subagente fornecido por plugin, você pode passar apenas o nome do agente e Claude Code o encontra:

891 892 

892```bash theme={null}893```bash theme={null}

893claude --agent security-reviewer894claude --agent security-reviewer

894```895```

895 896 

896Se múltiplos plugins fornecem agentes com o mesmo nome, passe o nome com escopo para desambiguar:897Se vários plugins fornecerem agentes com o mesmo nome, passe o nome com escopo para desambiguar:

897 898 

898```bash theme={null}899```bash theme={null}

899claude --agent my-plugin:security-reviewer900claude --agent my-plugin:security-reviewer

900```901```

901 902 

902Se o plugin coloca o agente em uma subpasta de seu diretório `agents/`, inclua a subpasta no nome com escopo, por exemplo `claude --agent my-plugin:review:security`.903Se o plugin colocar o agente em uma subpasta de seu diretório `agents/`, inclua a subpasta no nome com escopo, por exemplo `claude --agent my-plugin:review:security`.

903 904 

904Para torná-lo o padrão para cada sessão em um projeto, defina `agent` em `.claude/settings.json`:905Para torná-lo o padrão para cada sessão em um projeto, defina `agent` em `.claude/settings.json`:

905 906 


909}910}

910```911```

911 912 

912O flag CLI sobrescreve a configuração se ambos estiverem presentes.913O sinalizador CLI substitui a configuração se ambos estiverem presentes.

913 914 

914<h3 id="run-subagents-in-foreground-or-background">915<h3 id="run-subagents-in-foreground-or-background">

915 Executar subagentes em foreground ou background916 Executar subagentes em primeiro plano ou segundo plano

916</h3>917</h3>

917 918 

918Subagentes podem ser executados em foreground ou background:919Subagentes podem ser executados em primeiro plano ou segundo plano:

920 

921* **Subagentes em primeiro plano** bloqueiam a conversa principal até a conclusão. Prompts de permissão são passados para você conforme surgem.

922* **Subagentes em segundo plano** são executados simultaneamente enquanto você continua trabalhando. Quando um subagente em segundo plano atinge uma chamada de ferramenta que precisa de permissão, Claude Code exibe o prompt em sua sessão principal e nomeia o subagente que está pedindo. Aprove para deixar o subagente continuar, ou pressione Esc para negar essa chamada de ferramenta sem parar o subagente. Antes da v2.1.186, subagentes em segundo plano negavam automaticamente qualquer chamada de ferramenta que teria solicitado.

919 923 

920* **Subagentes em foreground** bloqueiam a conversa principal até completar. Prompts de permissão são passados para você conforme surgem.924Para cada subagente que Claude gera com a ferramenta Agent, Claude Code escolhe primeiro plano ou segundo plano do primeiro desses casos que se aplica:

921* **Subagentes em background** são executados concorrentemente enquanto você continua trabalhando. Quando um subagente em background atinge uma chamada de ferramenta que precisa de permissão, Claude Code exibe o prompt em sua sessão principal e nomeia o subagente que está pedindo. Aprove para deixar o subagente continuar, ou pressione Esc para negar essa chamada de ferramenta sem parar o subagente. Antes da v2.1.186, subagentes em background auto-negavam qualquer chamada de ferramenta que teria solicitado.

922 925 

923Para cada subagente que Claude gera com a ferramenta Agent, Claude Code escolhe foreground ou background do primeiro destes casos que se aplica:926* Se um colega de [equipe de agentes](/docs/pt/agent-teams#limitations) em processo gerou o subagente, Claude Code o executa em primeiro plano. Claude Code recusa com um erro para gerar um subagente de colega cuja definição define [`background: true`](#supported-frontmatter-fields). Onde o [modo fork](#turn-fork-mode-on-or-off) está desativado e você não [desativou tarefas em segundo plano](/docs/pt/env-vars), Claude Code também recusa com um erro quando um colega define `run_in_background: true`.

927* Se você definir [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/pt/env-vars) como `1`, Claude Code executa o subagente em primeiro plano, em todo tipo de sessão e independentemente de o modo fork estar ativado.

928* Onde o [modo fork](#turn-fork-mode-on-or-off) está ativado, como é por padrão em uma sessão interativa, Claude Code executa o subagente em segundo plano, subagentes fork e não-fork, e Claude não pode pedir o primeiro plano.

929* Onde o modo fork está desativado, Claude executa o subagente em segundo plano por padrão e em primeiro plano quando precisa do resultado antes de continuar. O modo fork está desativado no [modo não interativo](/docs/pt/headless) com `-p` e no Agent SDK a menos que você o ative. Para manter um subagente particular em segundo plano mesmo quando Claude quer o resultado, defina seu campo frontmatter [`background`](#supported-frontmatter-fields) como `true`.

924 930 

925* Se um colega de [equipe de agentes](/docs/pt/agent-teams#limitations) em processo gerou o subagente, Claude Code o executa em foreground. Claude Code recusa com um erro para gerar um subagente de colega cuja definição define [`background: true`](#supported-frontmatter-fields). Onde [modo fork](#turn-fork-mode-on-or-off) está desativado e você não [desativou tarefas em background](/docs/pt/env-vars), Claude Code também recusa com um erro quando um colega define `run_in_background: true`.931Para uma skill com `context: fork`, Claude Code segue as regras em [Executar skills em um subagente](/docs/pt/skills#run-skills-in-a-subagent), independentemente de o modo fork estar ativado.

926* Se você definir [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/pt/env-vars) para `1`, Claude Code executa o subagente em foreground, em todo tipo de sessão e se modo fork está ativado ou não.

927* Onde [modo fork](#turn-fork-mode-on-or-off) está ativado, como é por padrão em uma sessão interativa, Claude Code executa o subagente em background, subagentes fork e não-fork igualmente, e Claude não pode pedir pelo foreground.

928* Onde modo fork está desativado, Claude executa o subagente em background por padrão e em foreground quando precisa do resultado antes de continuar. Modo fork está desativado em [modo não-interativo](/docs/pt/headless) com `-p` e no Agent SDK a menos que você o ative. Para manter um subagente particular em background mesmo quando Claude quer o resultado, defina seu campo frontmatter [`background`](#supported-frontmatter-fields) para `true`.

929 932 

930Para uma skill com `context: fork`, Claude Code segue as regras em [Executar skills em um subagente](/docs/pt/skills#run-skills-in-a-subagent) em vez disso, se modo fork está ativado ou não.933Subagentes em segundo plano são executados com um [conjunto de ferramentas integradas menor](#available-tools) do que subagentes em primeiro plano, exceto para forks de conversa e subagentes em primeiro plano [retomados](#resume-subagents).

931 934 

932Subagentes em background são executados com um [conjunto de ferramentas integradas menor](#available-tools) do que subagentes em foreground, exceto para forks de conversa, e exibem cada prompt de permissão em sua sessão principal. Quando você responde um desses prompts com uma escolha que dura além dessa chamada de ferramenta, como uma concessão que dura pelo resto da sessão, Claude Code aplica sua resposta à sessão inteira, incluindo sua conversa principal.935Subagentes em segundo plano exibem cada prompt de permissão em sua sessão principal. Quando você responde um desses prompts com uma escolha que dura além dessa chamada de ferramenta, como uma concessão que dura o resto da sessão, Claude Code aplica sua resposta a toda a sessão, incluindo sua conversa principal.

933 936 

934Um subagente em background pode deixar um comando [Bash ou PowerShell](/docs/pt/tools-reference#background-commands) em background [rodando além do fim de seu turno](/docs/pt/interactive-mode#how-backgrounding-works). Quando esse comando termina, Claude Code envia ao subagente uma notificação.937Um subagente em segundo plano pode deixar um comando [Bash ou PowerShell](/docs/pt/tools-reference#background-commands) em segundo plano [em execução após o final de seu turno](/docs/pt/interactive-mode#how-backgrounding-works). Quando esse comando termina, Claude Code envia ao subagente uma notificação.

935 938 

936Os resultados de um subagente em background chegam a Claude como uma notificação de conclusão em um turno posterior. Claude aguarda essa notificação antes de relatar os resultados do subagente, e se você perguntar sobre progresso primeiro, ele relata que o subagente ainda está em execução. Antes da v2.1.211, Claude às vezes relatava resultados para um subagente em background que não tinha terminado.939Os resultados de um subagente em segundo plano chegam a Claude como uma notificação de conclusão em um turno posterior. Claude aguarda essa notificação antes de relatar os resultados do subagente, e se você perguntar sobre o progresso primeiro, ele relata que o subagente ainda está em execução. Antes da v2.1.211, Claude às vezes relatava resultados para um subagente em segundo plano que não havia terminado.

937 940 

938Você também pode direcionar isso você mesmo:941Você também pode orientar isso você mesmo:

939 942 

940* Onde modo fork está desativado, peça a Claude para executar uma tarefa em background ou em foreground943* Onde o modo fork está desativado, peça a Claude para executar uma tarefa em segundo plano ou em primeiro plano

941* Pressione **Ctrl+B** para colocar uma tarefa em execução em background944* Pressione **Ctrl+B** para colocar uma tarefa em execução em segundo plano

942 945 

943Claude Code limpa a linha de um subagente em background do painel de subagente abaixo da entrada de prompt de uma de duas formas, dependendo de como o subagente terminou:946Claude Code limpa a linha de um subagente em segundo plano do painel de subagentes abaixo da entrada de prompt de uma de duas maneiras, dependendo de como o subagente terminou:

944 947 

945* Quando um subagente termina com sucesso, Claude Code remove sua linha imediatamente e, exceto em [modo leitor de tela](/docs/pt/accessibility), mostra `/tasks to see subagents` no rodapé por 30 segundos. Durante esses 30 segundos, execute [`/tasks`](/docs/pt/commands) e pressione `Enter` no subagente para abrir sua transcrição. Antes da v2.1.232, Claude Code mantinha a linha por 30 segundos após o subagente terminar, o mesmo que um que falhou, e não mostrava dica de rodapé.948* Quando um subagente termina com sucesso, Claude Code remove sua linha imediatamente e, exceto no [modo leitor de tela](/docs/pt/accessibility), mostra `/tasks para ver subagentes` no rodapé por 30 segundos. Durante esses 30 segundos, execute [`/tasks`](/docs/pt/commands) e pressione `Enter` no subagente para abrir sua transcrição. Antes da v2.1.232, Claude Code mantinha a linha por 30 segundos após o subagente terminar, o mesmo que um com falha, e não mostrava dica de rodapé.

946* Quando um subagente falha ou você o para, Claude Code mantém sua linha por 30 segundos. Para limpar a linha mais cedo, selecione-a e pressione `x`.949* Quando um subagente falha ou você o para, Claude Code mantém sua linha por 30 segundos. Para limpar a linha mais cedo, selecione-a e pressione `x`.

947 950 

948Um subagente em background que completa fica listado em [`/tasks`](/docs/pt/commands), marcado como concluído e classificado abaixo do trabalho em execução, pelos mesmos 30 segundos que a dica de rodapé. Sua visualização de detalhes fica aberta quando o subagente termina. Subagentes que falham ou que você para deixam a lista. Antes da v2.1.208, um subagente concluído deixava a lista no momento em que terminava e sua visualização de detalhes fechava.951Um subagente em segundo plano que é concluído permanece listado em [`/tasks`](/docs/pt/commands), marcado como concluído e classificado abaixo do trabalho em execução, pelos mesmos 30 segundos que a dica de rodapé. Sua visualização de detalhes permanece aberta quando o subagente termina. Subagentes que falham ou que você para saem da lista. Antes da v2.1.208, um subagente concluído saía da lista no momento em que terminava e sua visualização de detalhes fechava.

949 952 

950<h3 id="subagent-names">953<h3 id="subagent-names">

951 Nomes de subagentes954 Nomes de subagentes

952</h3>955</h3>

953 956 

954Claude pode dar a um subagente um nome passando um parâmetro `name` na chamada da ferramenta Agent, e pode fazer isso por conta própria, sem pedir a você primeiro. O nome torna o subagente endereçável: Claude pode [mensagear ou retomá-lo por nome](#resume-subagents) após terminar.957Claude pode dar um nome a um subagente passando um parâmetro `name` na chamada da ferramenta Agent, e pode fazer isso por conta própria, sem pedir a você primeiro. O nome torna o subagente endereçável: Claude pode [mensagear ou retomá-lo pelo nome](#resume-subagents) após terminar.

955 958 

956Em uma sessão interativa com [equipes de agentes](/docs/pt/agent-teams) habilitadas, um subagente que Claude gera da conversa principal com um `name` é lançado como um colega em vez disso, a menos que a chamada seja um [fork](#fork-the-current-conversation) ou passe `isolation` na chamada em si. Um valor `isolation` no frontmatter do subagente não o previne, e o colega então é executado no diretório de trabalho da sessão principal. Veja [Como Claude inicia equipes de agentes](/docs/pt/agent-teams#how-claude-starts-agent-teams).959Em uma sessão interativa com [equipes de agentes](/docs/pt/agent-teams) habilitadas, um subagente que Claude gera da conversa principal com um `name` é lançado como um colega, a menos que a chamada seja um [fork](#fork-the-current-conversation) ou passe `isolation` na chamada em si. Um valor `isolation` no frontmatter do subagente não o impede, e o colega então é executado no diretório de trabalho da sessão principal. Consulte [Como Claude inicia equipes de agentes](/docs/pt/agent-teams#how-claude-starts-agent-teams).

957 960 

958<h3 id="api-errors-in-subagents">961<h3 id="api-errors-in-subagents">

959 Erros de API em subagentes962 Erros de API em subagentes

960</h3>963</h3>

961 964 

962Quando algo [corta a resposta de um subagente no meio do fluxo](/docs/pt/errors#the-response-above-may-be-incomplete), e a resposta parcial contém texto mas nenhuma chamada de ferramenta, Claude Code solicita ao subagente que continue em vez de terminar a execução. Isso acontece em sessões interativas também. A execução termina no erro apenas uma vez que essas continuações são usadas.965Quando algo [interrompe a resposta de um subagente no meio do fluxo](/docs/pt/errors#the-response-above-may-be-incomplete), e a resposta parcial contém texto mas nenhuma chamada de ferramenta, Claude Code solicita ao subagente que continue em vez de encerrar a execução. Isso também acontece em sessões interativas. A execução termina no erro apenas uma vez que essas continuações são usadas.

963 966 

964A partir da v2.1.199, um subagente cuja execução termina em um erro de API, como um limite de uso ou um erro de servidor repetido, relata essa falha de volta para Claude em vez de retornar o texto de erro como se fossem os achados do subagente. O que Claude recebe depende de onde o subagente foi executado:967A partir da v2.1.199, um subagente cuja execução termina em um erro de API, como um limite de uso ou um erro de servidor repetido, relata essa falha de volta a Claude em vez de retornar o texto de erro como se fossem as descobertas do subagente. O que Claude recebe depende de onde o subagente foi executado:

965 968 

966* **Foreground**: se um limite de taxa, sobrecarga ou erro de servidor corta um subagente que já produziu saída de texto, a ferramenta Agent retorna essa saída parcial com uma nota de que o subagente foi cortado e não completou sua tarefa. Um subagente que não produziu nada, ou cuja única saída foram chamadas de ferramenta, falha com [`Agent terminated early due to an API error`](/docs/pt/errors#agent-terminated-early-due-to-an-api-error), seguido pelo detalhe do erro. Na v2.1.199, um limite de taxa, sobrecarga ou erro de servidor que cortou a forma de chamadas de ferramenta apenas retornou um resultado parcial vazio contendo apenas a nota de corte em vez disso.969* **Primeiro plano**: se um limite de taxa, sobrecarga ou erro de servidor interromper um subagente que já produziu saída de texto, a ferramenta Agent retorna essa saída parcial com uma nota de que o subagente foi interrompido e não completou sua tarefa. Um subagente que não produziu nada, ou cuja única saída foram chamadas de ferramenta, falha com [`Agent terminated early due to an API error`](/docs/pt/errors#agent-terminated-early-due-to-an-api-error), seguido pelo detalhe do erro. Na v2.1.199, um limite de taxa, sobrecarga ou erro de servidor que interrompeu a forma de chamadas de ferramenta apenas retornou um resultado parcial vazio contendo apenas a nota de interrupção.

967* **Background**: o subagente é marcado como falho, e a mensagem que Claude recebe quando termina nomeia o erro de API e inclui a última saída do subagente, então o trabalho parcial não é perdido.970* **Segundo plano**: o subagente é marcado como com falha, e a mensagem que Claude recebe quando termina nomeia o erro de API e inclui a última saída do subagente, para que o trabalho parcial não seja perdido.

968 971 

969Quando você configura uma [cadeia de modelo fallback](/docs/pt/model-config#fallback-model-chains) e um subagente encontra uma falha que a cadeia cobre, como seu modelo estar indisponível, Claude Code muda o subagente para o primeiro modelo na cadeia que aceita a solicitação. O subagente continua trabalhando em vez de terminar no erro.972Quando você configura uma [cadeia de modelo de fallback](/docs/pt/model-config#fallback-model-chains) e um subagente encontra uma falha que a cadeia cobre, como seu modelo estar indisponível, Claude Code muda o subagente para o primeiro modelo na cadeia que aceita a solicitação. O subagente continua trabalhando em vez de terminar no erro.

970 973 

971Uma vez que o erro de API subjacente seja resolvido, peça a Claude para tentar novamente a tarefa ou [retomar o subagente](#resume-subagents).974Uma vez que o erro de API subjacente seja resolvido, peça a Claude para tentar novamente a tarefa ou [retomar o subagente](#resume-subagents).

972 975 

973<h3 id="subagent-output-scanning">976<h3 id="subagent-output-scanning">

974 Varredura de saída de subagente977 Verificação de saída de subagente

975</h3>978</h3>

976 979 

977Claude Code verifica o relatório final de cada subagente antes de Claude lê-lo. Um subagente pode ter lido arquivos, páginas da web ou saída de comando que você nunca revisou, e texto dessas fontes pode carregar instruções destinadas à conversa principal. A varredura nunca remove ou reformula nada; ela faz dois tipos de mudança que você pode notar em um relatório:980Claude Code verifica o relatório final de cada subagente antes de Claude lê-lo. Um subagente pode ter lido arquivos, páginas da web ou saída de comando que você nunca revisou, e texto dessas fontes pode carregar instruções destinadas à conversa principal. A verificação nunca remove ou reformula nada; ela faz dois tipos de mudança que você pode notar em um relatório:

978 981 

979* **Inserção de barra invertida**: a varredura insere uma barra invertida em texto que imita a própria saída do Claude Code, como uma tag `<system-reminder>` ou uma linha começando com `Human:` ou `Assistant:`, para que a imitação seja lida como texto ordinário em vez de ser confundida com parte da conversa.982* **Inserção de barra invertida**: a verificação insere uma barra invertida em texto que imita a própria saída do Claude Code, como uma tag `<system-reminder>` ou uma linha começando com `Human:` ou `Assistant:`, para que a imitação seja lida como texto comum em vez de ser confundida com parte da conversa.

980* **Linha de marcador**: a varredura prepara uma linha começando com `[harness: subagent output matched instruction-shaped pattern(s):` quando o relatório imita uma tag como `<system-reminder>` ou menciona configurações de permissão como `bypassPermissions` ou `--dangerously-skip-permissions`. Menções de configuração de permissão recebem a linha de marcador, mas o texto em si permanece como escrito.983* **Linha de marcador**: a verificação prepara uma linha começando com `[harness: subagent output matched instruction-shaped pattern(s):` quando o relatório imita uma tag como `<system-reminder>` ou menciona configurações de permissão como `bypassPermissions` ou `--dangerously-skip-permissions`. Menções de configuração de permissão recebem a linha de marcador, mas o texto em si permanece como escrito.

981 984 

982A varredura não julga se o conteúdo é malicioso, e não muda o que uma instrução em um relatório pode fazer: uma chamada de ferramenta que o relatório leva Claude a fazer ainda passa pelos [controles de permissão](/docs/pt/permissions) e [sandboxing](/docs/pt/sandboxing) da sessão. Não é um substituto para [restringir o que um subagente pode alcançar](#control-subagent-capabilities).985A verificação não julga se o conteúdo é malicioso, e não muda o que uma instrução em um relatório pode fazer: uma chamada de ferramenta que o relatório leva Claude a fazer ainda passa pelas [verificações de permissão](/docs/pt/permissions) e [sandboxing](/docs/pt/sandboxing) da sessão. Não é um substituto para [restringir o que um subagente pode alcançar](#control-subagent-capabilities).

983 986 

984<Note>987<Note>

985 A varredura de saída de subagente requer Claude Code v2.1.210 ou posterior.988 A verificação de saída de subagente requer Claude Code v2.1.210 ou posterior.

986</Note>989</Note>

987 990 

988<h3 id="common-patterns">991<h3 id="common-patterns">


993 Isolar operações de alto volume996 Isolar operações de alto volume

994</h4>997</h4>

995 998 

996Um dos usos mais eficazes para subagentes é isolar operações que produzem grandes quantidades de saída. Executar testes, buscar documentação ou processar arquivos de log podem consumir contexto significativo. Ao delegar esses para um subagente, a saída verbosa fica no contexto do subagente enquanto apenas o resumo relevante retorna para sua conversa principal.999Um dos usos mais eficazes para subagentes é isolar operações que produzem grandes quantidades de saída. Executar testes, buscar documentação ou processar arquivos de log pode consumir contexto significativo. Ao delegar isso a um subagente, a saída detalhada permanece no contexto do subagente enquanto apenas o resumo relevante retorna à sua conversa principal.

997 1000 

998```text wrap theme={null}1001```text wrap theme={null}

999Use a subagent to run the test suite and report only the failing tests with their error messages1002Use um subagente para executar o conjunto de testes e relatar apenas os testes com falha com suas mensagens de erro

1000```1003```

1001 1004 

1002<h4 id="run-parallel-research">1005<h4 id="run-parallel-research">

1003 Executar pesquisa em paralelo1006 Executar pesquisa paralela

1004</h4>1007</h4>

1005 1008 

1006Para investigações independentes, gere múltiplos subagentes para trabalhar simultaneamente:1009Para investigações independentes, gere vários subagentes para trabalhar simultaneamente:

1007 1010 

1008```text wrap theme={null}1011```text wrap theme={null}

1009Research the authentication, database, and API modules in parallel using separate subagents1012Pesquise os módulos de autenticação, banco de dados e API em paralelo usando subagentes separados

1010```1013```

1011 1014 

1012Cada subagente explora sua área independentemente, então Claude sintetiza os achados. Isso funciona melhor quando os caminhos de pesquisa não dependem um do outro.1015Cada subagente explora sua área independentemente, então Claude sintetiza as descobertas. Isso funciona melhor quando os caminhos de pesquisa não dependem um do outro.

1013 1016 

1014<Warning>1017<Warning>

1015 Quando subagentes completam, seus resultados retornam para sua conversa principal. Executar muitos subagentes que cada um retorna resultados detalhados pode consumir contexto significativo.1018 Quando subagentes são concluídos, seus resultados retornam à sua conversa principal. Executar muitos subagentes que cada um retorna resultados detalhados pode consumir contexto significativo.

1016</Warning>1019</Warning>

1017 1020 

1018Para trabalho que precisa continuar rodando em paralelo ou não caberá em uma janela de contexto, execute-o em [sessões separadas](/docs/pt/agents) e deixe Claude [passar achados entre elas](/docs/pt/cross-session-messaging).1021Para trabalho que precisa continuar em paralelo ou não caberá em uma janela de contexto, execute-o em [sessões separadas](/docs/pt/agents) e deixe Claude [passar descobertas entre elas](/docs/pt/cross-session-messaging).

1019 1022 

1020<h4 id="chain-subagents">1023<h4 id="chain-subagents">

1021 Encadear subagentes1024 Encadear subagentes

1022</h4>1025</h4>

1023 1026 

1024Para fluxos de trabalho multi-etapas, peça a Claude para usar subagentes em sequência. Cada subagente completa sua tarefa e retorna resultados para Claude, que então passa contexto relevante para o próximo subagente.1027Para fluxos de trabalho de várias etapas, peça a Claude para usar subagentes em sequência. Cada subagente completa sua tarefa e retorna resultados a Claude, que então passa contexto relevante para o próximo subagente.

1025 1028 

1026```text wrap theme={null}1029```text wrap theme={null}

1027Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them1030Use o subagente code-reviewer para encontrar problemas de desempenho, depois use o subagente optimizer para corrigi-los

1028```1031```

1029 1032 

1030<h3 id="choose-between-subagents-and-main-conversation">1033<h3 id="choose-between-subagents-and-main-conversation">


1036* A tarefa precisa de frequente ida e volta ou refinamento iterativo1039* A tarefa precisa de frequente ida e volta ou refinamento iterativo

1037* Múltiplas fases compartilham contexto significativo, como planejamento, implementação e testes1040* Múltiplas fases compartilham contexto significativo, como planejamento, implementação e testes

1038* Você está fazendo uma mudança rápida e direcionada1041* Você está fazendo uma mudança rápida e direcionada

1039* Latência importa. Um subagente que não é um [fork](#fork-the-current-conversation) começa do zero e pode precisar de tempo para reunir contexto1042* A latência importa. Um subagente que não é um [fork](#fork-the-current-conversation) começa do zero e pode precisar de tempo para reunir contexto

1040 1043 

1041Use **subagentes** quando:1044Use **subagentes** quando:

1042 1045 

1043* A tarefa produz saída verbosa que você não precisa em seu contexto principal1046* A tarefa produz saída detalhada que você não precisa em seu contexto principal

1044* Você quer aplicar restrições de ferramentas específicas ou permissões1047* Você quer impor restrições de ferramentas ou permissões específicas

1045* O trabalho é auto-contido e pode retornar um resumo1048* O trabalho é autossuficiente e pode retornar um resumo

1046 1049 

1047Considere [Skills](/docs/pt/skills) em vez disso quando você quer prompts reutilizáveis ou fluxos de trabalho que são executados no contexto da conversa principal em vez de contexto de subagente isolado.1050Considere [Skills](/docs/pt/skills) em vez disso quando você quer prompts ou fluxos de trabalho reutilizáveis que são executados no contexto da conversa principal em vez de contexto de subagente isolado.

1048 1051 

1049Para uma pergunta rápida sobre algo já em sua conversa, use [`/btw`](/docs/pt/interactive-mode#side-questions-with-%2Fbtw) em vez de um subagente. Ele vê seu contexto completo mas não tem acesso a ferramentas, e a resposta é descartada em vez de adicionada ao histórico.1052Para uma pergunta sobre algo já em sua conversa, use [`/btw`](/docs/pt/interactive-mode#side-questions-with-%2Fbtw) em vez de um subagente. Ele vê seu contexto completo mas não tem acesso a ferramentas, e a resposta não é adicionada ao histórico.

1050 1053 

1051<h3 id="let-subagents-spawn-their-own-subagents">1054<h3 id="let-subagents-spawn-their-own-subagents">

1052 Deixar subagentes gerar seus próprios subagentes1055 Deixar subagentes gerar seus próprios subagentes

1053</h3>1056</h3>

1054 1057 

1055Por padrão, um subagente pode gerar subagentes de seu próprio, até três camadas abaixo da conversa principal. No limite de profundidade, Claude Code retém a ferramenta `Agent` de cada subagente exceto um [fork](#fork-the-current-conversation), então um subagente no limite faz seu trabalho delegado em si e retorna um resumo. Um fork no limite mantém `Agent` em sua lista de ferramentas herdada, mas a ferramenta retorna um erro em vez de gerar.1058Por padrão, um subagente pode gerar subagentes de seu próprio, até três camadas abaixo da conversa principal. No limite de profundidade, Claude Code retém a ferramenta `Agent` de cada subagente, exceto um [fork](#fork-the-current-conversation), para que um subagente no limite faça seu trabalho delegado em si e retorne um resumo. Um fork no limite mantém `Agent` em sua lista de ferramentas herdada, mas a ferramenta retorna um erro em vez de gerar.

1056 1059 

1057Subagentes aninhados adequam uma tarefa delegada que em si se divide em subtarefas paralelas, como um subagente revisor que distribui um verificador por descoberta, para que a saída intermediária nunca alcance sua conversa principal. Apenas o resumo do subagente de nível superior retorna para você.1060Subagentes aninhados são adequados para uma tarefa delegada que em si se divide em subtarefas paralelas, como um subagente revisor que despacha um verificador por descoberta, para que a saída intermediária nunca chegue à sua conversa principal. Apenas o resumo do subagente de nível superior retorna para você.

1058 1061 

1059Para mudar o limite, defina [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/pt/env-vars) para o número de camadas de subagente que você quer abaixo de sua conversa principal. Por exemplo, esta entrada em [`settings.json`](/docs/pt/settings) limita aninhamento a duas camadas:1062Para alterar o limite, defina [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/pt/env-vars) para o número de camadas de subagente que você quer abaixo de sua conversa principal. Por exemplo, esta entrada em [`settings.json`](/docs/pt/settings) limita o aninhamento a duas camadas:

1060 1063 

1061```json theme={null}1064```json theme={null}

1062{1065{


1066}1069}

1067```1070```

1068 1071 

1069Com este valor, seus subagentes podem delegar a uma segunda camada de seus próprios, e essa segunda camada não pode delegar mais. Defina `1` para desativar aninhamento.1072Com este valor, seus subagentes podem delegar a uma segunda camada de seus próprios, e essa segunda camada não pode delegar mais. Defina `1` para desativar o aninhamento.

1070 1073 

1071Um subagente aninhado é configurado da mesma forma que um de nível superior e é resolvido dos mesmos [escopos](#choose-the-subagent-scope). Para manter um subagente de gerar enquanto aninhamento está ativado, como um revisor que deve permanecer somente leitura, omita `Agent` de sua lista [`tools`](#available-tools) ou adicione-o a `disallowedTools`.1074Um subagente aninhado é configurado da mesma forma que um de nível superior e é resolvido dos mesmos [escopos](#choose-the-subagent-scope). Para manter um subagente de gerar enquanto o aninhamento está ativado, como um revisor que deve permanecer somente leitura, omita `Agent` de sua lista [`tools`](#available-tools) ou adicione-o a `disallowedTools`.

1072 1075 

1073Claude Code mostra subagentes aninhados como uma árvore no painel de subagente abaixo da entrada de prompt e marca cada linha que ainda tem descendentes no painel com uma contagem `(+N)` deles. Abra uma linha para ver os irmãos desse subagente e filhos diretos com um caminho de volta para `main`.1076Claude Code mostra subagentes aninhados como uma árvore no painel de subagentes abaixo da entrada de prompt e marca cada linha que ainda tem descendentes no painel com uma contagem `(+N)` deles. Abra uma linha para ver os irmãos e filhos diretos desse subagente com um caminho de volta para `main`.

1074 1077 

1075<Note>1078<Note>

1076 Versões anteriores usaram padrões diferentes:1079 Versões anteriores usavam padrões diferentes:

1077 1080 

1078 * **v2.1.172 através v2.1.216**: subagentes podiam aninhar por padrão, até cinco camadas de profundidade, e o limite não podia ser mudado.1081 * **v2.1.172 a v2.1.216**: subagentes podiam aninhar por padrão, até cinco camadas de profundidade, e o limite não podia ser alterado.

1079 * **v2.1.217 através v2.1.218**: o limite padrão era um, então um subagente não podia gerar seu próprio a menos que você o aumentasse; v2.1.219 aumentou o padrão para três.1082 * **v2.1.217 a v2.1.218**: o limite era padrão para um, então um subagente não podia gerar seu próprio a menos que você o aumentasse; v2.1.219 aumentou o padrão para três.

1080</Note>1083</Note>

1081 1084 

1082<h3 id="concurrent-subagent-limit">1085<h3 id="concurrent-subagent-limit">

1083 Limite de subagente concorrente1086 Limite de subagente concorrente

1084</h3>1087</h3>

1085 1088 

1086Dois limites controlam o uso de subagente, cada um com sua própria variável: este para Claude de gerar mais subagentes enquanto muitos estão rodando, e o [limite de profundidade](#let-subagents-spawn-their-own-subagents) limita o quão profundamente subagentes aninham. Não há limite no número total de subagentes que Claude pode gerar ao longo de uma sessão.1089Dois limites controlam o uso de subagentes, cada um com sua própria variável: este impede que Claude gere mais subagentes enquanto muitos estão em execução, e o [limite de profundidade](#let-subagents-spawn-their-own-subagents) limita o quão profundamente os subagentes se aninham. Não há limite no número total de subagentes que Claude pode gerar ao longo de uma sessão.

1087 1090 

1088Por padrão, quando 20 subagentes estão rodando em uma sessão, gerar outro com a ferramenta Agent falha com `Concurrent subagent limit reached`, e o erro diz a Claude para não tentar novamente. Gerar sucede novamente quando a contagem em execução cai abaixo do limite. Para mudar o limite, defina [`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`](/docs/pt/env-vars) para qualquer número inteiro positivo. Sessões com [ultracode](/docs/pt/model-config#adjust-effort-level) ativo estão isentas: o limite não é aplicado lá. Requer Claude Code v2.1.217 ou posterior.1091Por padrão, quando 20 subagentes estão em execução em uma sessão, gerar outro com a ferramenta Agent falha com `Concurrent subagent limit reached`, e o erro diz a Claude para não tentar novamente. A geração é bem-sucedida novamente quando a contagem em execução cai abaixo do limite. Para alterar o limite, defina [`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`](/docs/pt/env-vars) para qualquer número inteiro positivo. Sessões com [ultracode](/docs/pt/model-config#adjust-effort-level) ativo estão isentas: o limite não é imposto lá. Requer Claude Code v2.1.217 ou posterior.

1089 1092 

1090O limite bloqueia apenas subagentes que Claude gera com a ferramenta Agent, mas outras execuções ocupam os mesmos slots:1093O limite bloqueia apenas subagentes que Claude gera com a ferramenta Agent, mas outras execuções ocupam os mesmos slots:

1091 1094 

1092* Um fork em sessão que você inicia com [`/subtask`](#fork-the-current-conversation) toma um slot enquanto é executado e nunca é bloqueado pelo limite.1095* Um fork em sessão que você inicia com [`/subtask`](#fork-the-current-conversation) ocupa um slot enquanto é executado e nunca é bloqueado pelo limite.

1093* [Retomar um subagente](#resume-subagents) que já terminou toma um slot fresco sem verificar o limite, então retomas podem empurrar a contagem em execução além dele.1096* [Retomar um subagente](#resume-subagents) que já terminou ocupa um slot novo sem verificar o limite, para que retomadas possam empurrar a contagem em execução além dele.

1094 1097 

1095Agentes que outros recursos executam, como agentes [workflow](/docs/pt/workflows) e colegas de [equipe de agentes](/docs/pt/agent-teams), seguem seus próprios limites em vez disso.1098Agentes que outros recursos executam, como agentes [workflow](/docs/pt/workflows) e colegas de [equipe de agentes](/docs/pt/agent-teams), seguem seus próprios limites em vez disso.

1096 1099 


1099</h3>1102</h3>

1100 1103 

1101<h4 id="what-loads-at-startup">1104<h4 id="what-loads-at-startup">

1102 O que carrega na inicialização1105 O que é carregado na inicialização

1103</h4>1106</h4>

1104 1107 

1105Cada subagente começa com uma janela de contexto fresca e isolada. Ele não vê seu histórico de conversa, as skills que você já invocou, ou os arquivos que Claude já leu. Claude compõe uma mensagem de delegação que resume a tarefa, e o subagente trabalha a partir daí. A exceção é um [fork](#fork-the-current-conversation), que herda a conversa pai em vez de começar do zero.1108Cada subagente começa com uma janela de contexto fresca e isolada. Ele não vê seu histórico de conversa, as skills que você já invocou ou os arquivos que Claude já leu. Claude compõe uma mensagem de delegação que resume a tarefa, e o subagente trabalha a partir daí. A exceção é um [fork](#fork-the-current-conversation), que herda a conversa pai em vez de começar do zero.

1106 1109 

1107O contexto inicial de um subagente não-fork contém:1110O contexto inicial de um subagente não-fork contém:

1108 1111 

1109* **Prompt de sistema**: o prompt próprio do agente mais detalhes de ambiente que Claude Code acrescenta, não o prompt de sistema do Claude Code. Subagentes personalizados definem o seu no [corpo markdown](#write-subagent-files) ou campo `prompt`. Agentes integrados têm prompts predefinidos.1112* **Prompt do sistema**: o próprio prompt do agente mais detalhes de ambiente que Claude Code acrescenta, não o prompt do sistema do Claude Code. Subagentes personalizados definem o seu no [corpo markdown](#write-subagent-files) ou campo `prompt`. Agentes integrados têm prompts predefinidos.

1110* **Mensagem de tarefa**: o prompt de delegação que Claude escreve quando passa o trabalho.1113* **Mensagem de tarefa**: o prompt de delegação que Claude escreve quando passa o trabalho.

1111* **Arquivos CLAUDE.md**: cada nível da [hierarquia de CLAUDE.md](/docs/pt/memory#how-claude-md-files-load) que a conversa principal carrega, incluindo `~/.claude/CLAUDE.md`, regras de projeto, `CLAUDE.local.md` e arquivos de política gerenciados. Os agentes integrados Explore e Plan pulam isso.1114* **Arquivos CLAUDE.md**: cada nível da [hierarquia CLAUDE.md](/docs/pt/memory#how-claude-md-files-load) que a conversa principal carrega, incluindo `~/.claude/CLAUDE.md`, regras do projeto, `CLAUDE.local.md` e arquivos de política gerenciada. Os agentes Explore e Plan integrados pulam isso.

1112* **Status do Git**: um snapshot tirado no início da sessão pai. Ausente quando o diretório de trabalho não é um repositório Git ou quando [`includeGitInstructions`](/docs/pt/settings-reference#includegitinstructions) é `false`. Explore e Plan pulam isso independentemente.1115* **Status Git**: um snapshot tirado no início da sessão pai. Ausente quando o diretório de trabalho não é um repositório Git ou quando [`includeGitInstructions`](/docs/pt/settings-reference#includegitinstructions) é `false`. Explore e Plan pulam independentemente.

1113* **Skills pré-carregadas**: conteúdo completo de qualquer skill nomeada no campo [`skills`](#preload-skills-into-subagents) do agente. Agentes integrados não pré-carregam skills.1116* **Skills pré-carregadas**: conteúdo completo de qualquer skill nomeada no campo [`skills`](#preload-skills-into-subagents) do agente. Agentes integrados não pré-carregam skills.

1114* **Roster de irmãos**: um lembrete de sistema listando `main` e cada outro agente nomeado na sessão, cada um um valor `to` válido para [`SendMessage`](#resume-subagents). Requer Claude Code v2.1.206 ou posterior. O roster aparece apenas quando as ferramentas do subagente incluem `SendMessage` e pelo menos um outro agente tem um nome, seja Claude o nomeou ao gerá-lo ou ele é executado como um colega de [equipe de agentes](/docs/pt/agent-teams). É um snapshot tirado quando o subagente começa, então agentes nomeados depois não aparecem.1117* **Roster de irmãos**: um lembrete do sistema listando `main` e cada outro agente nomeado na sessão, cada um um valor `to` válido para [`SendMessage`](#resume-subagents). Requer Claude Code v2.1.206 ou posterior. O roster aparece apenas quando as ferramentas do subagente incluem `SendMessage` e pelo menos um outro agente tem um nome, seja Claude o nomeou ao gerá-lo ou ele é executado como um colega de [equipe de agentes](/docs/pt/agent-teams). É um snapshot tirado quando o subagente começa, então agentes nomeados depois não aparecem.

1115 1118 

1116Explore e Plan são os únicos subagentes que omitem CLAUDE.md e status do Git. Não há campo de frontmatter ou configuração por-agente para mudar quais agentes pulam isso.1119Explore e Plan são os únicos subagentes que omitem CLAUDE.md e status git. Não há campo frontmatter ou configuração por agente para alterar quais agentes os pulam.

1117 1120 

1118A conversa principal lê resultados de Explore e Plan com contexto completo de CLAUDE.md, então a maioria das regras não precisa alcançar o subagente em si. Se uma regra deve, como "ignore o diretório `vendor/`", reafirme-a no prompt que você dá a Claude ao delegar.1121A conversa principal lê resultados de Explore e Plan com contexto CLAUDE.md completo, então a maioria das regras não precisa alcançar o subagente em si. Se uma regra deve, como "ignore o diretório `vendor/`", reafirme-a no prompt que você dá a Claude ao delegar.

1119 1122 

1120Algum estado da conversa principal nunca alcança um subagente não-fork:1123Algum estado da conversa principal nunca alcança um subagente não-fork:

1121 1124 

1122* **Estilo de saída**: um subagente executa seu próprio prompt de sistema, então seu [estilo de saída](/docs/pt/output-styles) não molda suas respostas, exceto em um [fork](#fork-the-current-conversation).1125* **Estilo de saída**: um subagente executa seu próprio prompt do sistema, então seu [estilo de saída](/docs/pt/output-styles) não molda suas respostas, exceto em um [fork](#fork-the-current-conversation).

1123* **Memória automática**: a [memória automática](/docs/pt/memory#auto-memory) da conversa principal não é carregada. Para dar a um subagente memória persistente de seu próprio, use o campo [`memory`](#enable-persistent-memory).1126* **Memória automática**: a [memória automática](/docs/pt/memory#auto-memory) da conversa principal não é carregada. Para dar a um subagente memória persistente de seu próprio, use o campo [`memory`](#enable-persistent-memory).

1124* **Tamanho da janela de contexto**: a janela de contexto de um subagente é dimensionada por seu próprio modelo, não pelo pai. Delegar a um modelo com uma janela menor dá a esse subagente a janela menor.1127* **Tamanho da janela de contexto**: a janela de contexto de um subagente é dimensionada por seu próprio modelo, não pelo pai. Delegar a um modelo com uma janela menor dá a esse subagente a janela menor.

1125 1128 


1129 1132 

1130Cada invocação de subagente cria uma nova instância em vez de continuar uma anterior. Para continuar o trabalho de um subagente existente em vez de começar do zero, peça a Claude para retomá-lo.1133Cada invocação de subagente cria uma nova instância em vez de continuar uma anterior. Para continuar o trabalho de um subagente existente em vez de começar do zero, peça a Claude para retomá-lo.

1131 1134 

1132Subagentes retomados retêm seu histórico de conversa completo, incluindo todas as chamadas de ferramentas anteriores, resultados e raciocínio. Se o subagente gerou [subagentes em background de seu próprio](#let-subagents-spawn-their-own-subagents), esse histórico inclui os resultados que entregaram enquanto ele rodava. O subagente continua exatamente de onde parou em vez de começar do zero.1135Subagentes retomados retêm seu histórico de conversa completo, incluindo todas as chamadas de ferramenta anteriores, resultados e raciocínio. Se o subagente gerou [subagentes em segundo plano de seu próprio](#let-subagents-spawn-their-own-subagents), esse histórico inclui os resultados que entregaram enquanto era executado. O subagente continua exatamente de onde parou em vez de começar do zero.

1133 1136 

1134* Quando um subagente completa, Claude recebe seu ID de agente.1137* Quando um subagente é concluído, Claude recebe seu ID de agente.

1135* Os agentes integrados Explore e Plan são de uma única execução e não retornam ID de agente, então Claude não pode retomá-los. Use `general-purpose` ou um subagente personalizado quando você precisar continuar o trabalho.1138* Os agentes Explore e Plan integrados são de uma única execução e não retornam um ID de agente, então Claude não pode retomá-los. Use `general-purpose` ou um subagente personalizado quando você precisa continuar o trabalho.

1136* Quando um subagente para em seu limite [`maxTurns`](#supported-frontmatter-fields), Claude Code marca a saída retornada como parcial. Para subagentes que retornam um ID de agente, Claude Code também nota no resultado que Claude pode mensagear o subagente para continuar de onde parou.1139* Quando um subagente para em seu limite [`maxTurns`](#supported-frontmatter-fields), Claude Code marca a saída retornada como parcial. Para subagentes que retornam um ID de agente, Claude Code também observa no resultado que Claude pode mensagear o subagente para continuar de onde parou.

1137 1140 

1138Claude usa a ferramenta `SendMessage` com o ID do agente ou nome do agente como campo `to` para retomá-lo. `SendMessage` não requer que [equipes de agentes](/docs/pt/agent-teams) estejam habilitadas; apenas mensagens de protocolo de equipe estruturadas como `shutdown_request` e `plan_approval_response` fazem. Além de subagentes e colegas, em sessões onde mensagens entre sessões está habilitada, Claude pode usar a mesma ferramenta para mensagear [suas outras sessões Claude Code](/docs/pt/cross-session-messaging), nesta máquina ou [além dela](/docs/pt/cross-session-messaging#message-sessions-on-other-machines).1141Claude usa a ferramenta `SendMessage` com o ID ou nome do agente como o campo `to` para retomá-lo. `SendMessage` não requer que [equipes de agentes](/docs/pt/agent-teams) estejam habilitadas; apenas mensagens de protocolo de equipe estruturadas como `shutdown_request` e `plan_approval_response` fazem. Além de subagentes e colegas, em sessões onde mensagens entre sessões estão habilitadas, Claude pode usar a mesma ferramenta para mensagear [suas outras sessões do Claude Code](/docs/pt/cross-session-messaging), nesta máquina ou [além dela](/docs/pt/cross-session-messaging#message-sessions-on-other-machines).

1139 1142 

1140Para retomar um subagente, peça a Claude para continuar o trabalho anterior:1143Para retomar um subagente, peça a Claude para continuar o trabalho anterior:

1141 1144 

1142```text wrap theme={null}1145```text wrap theme={null}

1143Use the code-reviewer subagent to review the authentication module1146Use o subagente code-reviewer para revisar o módulo de autenticação

1144[Agent completes]1147[Agent completes]

1145 1148 

1146Continue that code review and now analyze the authorization logic1149Continue essa revisão de código e agora analise a lógica de autorização

1147[Claude resumes the subagent with full context from previous conversation]1150[Claude retoma o subagente com contexto completo da conversa anterior]

1148```1151```

1149 1152 

1150Quando Claude envia a um subagente concluído uma mensagem com a ferramenta `SendMessage`, o subagente retoma em background sem uma nova invocação de `Agent`. O mesmo se aplica a um subagente que Claude parou com a ferramenta `TaskStop`, uma vez que sua execução parada tenha saído.1153Quando Claude envia a um subagente concluído uma mensagem com a ferramenta `SendMessage`, o subagente retoma em segundo plano sem uma nova invocação `Agent`. O mesmo se aplica a um subagente que Claude parou com a ferramenta `TaskStop`, uma vez que sua execução parada tenha saído. A execução retomada mantém o [conjunto de ferramentas de onde o subagente foi executado primeiro](#run-subagents-in-foreground-or-background) e pode continuar lendo o [cache de prompt que a execução original aqueceu](/docs/pt/prompt-caching#subagents-and-the-cache).

1151 1154 

1152Um subagente que tem a ferramenta `SendMessage` pode enviar essa mensagem também. Em uma sessão interativa, o agente retomado então relata de volta ao subagente que o retomou, não para sua conversa principal. Esse subagente aguarda o resultado antes de terminar seu próprio trabalho. Quando um subagente mensageia um agente que relata, como seu próprio lançador, Claude Code retoma esse agente sem redirecionar seus resultados.1155Um subagente que tem a ferramenta `SendMessage` pode enviar essa mensagem também. Em uma sessão interativa, o agente retomado então relata de volta ao subagente que o retomou, não à sua conversa principal. Esse subagente aguarda o resultado antes de terminar seu próprio trabalho. Quando um subagente mensageia um agente ao qual relata, como seu próprio iniciador, Claude Code retoma esse agente sem redirecionar seus resultados.

1153 1156 

1154Um subagente que você parou você mesmo, com `x` em `/tasks` ou uma solicitação SDK `stop_task`, não auto-retoma. Se Claude enviar uma mensagem para ele, a mensagem é recusada e Claude é informado que o agente foi cancelado.1157Um subagente que você parou você mesmo, com `x` em `/tasks` ou uma solicitação SDK `stop_task`, não retoma automaticamente. Se Claude enviar uma mensagem a ele, a mensagem é recusada e Claude é informado de que o agente foi cancelado.

1155 1158 

1156Enquanto [a linha desse subagente ainda está no painel de subagente](#run-subagents-in-foreground-or-background), digite em sua transcrição para retomá-lo você mesmo. Depois disso, uma mensagem de Claude pode auto-retomá-lo novamente. Requer Claude Code v2.1.191 ou posterior.1159Enquanto [a linha desse subagente ainda está no painel de subagentes](#run-subagents-in-foreground-or-background), digite em sua transcrição para retomá-lo você mesmo. Depois disso, uma mensagem de Claude pode retomá-lo automaticamente novamente. Requer Claude Code v2.1.191 ou posterior.

1157 1160 

1158Retomar inicia uma nova execução do agente sob o mesmo ID, então um subagente que já tinha falhado ou completado mostra como em execução novamente na lista de tarefas e nos eventos de tarefa do Agent SDK. Antes da v2.1.205, ele continuava mostrando seu status anterior de falha ou conclusão enquanto a execução retomada estava funcionando.1161Retomar inicia uma nova execução do agente sob o mesmo ID, então um subagente que já havia falhado ou sido concluído mostra como em execução novamente na lista de tarefas e nos eventos de tarefa do Agent SDK. Antes da v2.1.205, ele mantinha seu status anterior de falha ou conclusão enquanto a execução retomada estava funcionando.

1159 1162 

1160A partir da v2.1.199, `SendMessage` verifica que um nome ainda se refere ao mesmo agente que alcançou anteriormente na conversa. Se um agente mais novo assumiu o nome, como um agente em background re-gerado que o reutilizou, Claude Code recusa o envio em vez de entregá-lo ao agente errado, e o erro relata qual agente o nome agora alcança para que Claude possa redirecionar. Para alcançar o agente anterior enquanto ainda está em execução, Claude o endereça pelo ID do agente que recebeu quando gerou esse agente. A verificação é escopo da conversa atual e é redefinida em `/clear`.1163A partir da v2.1.199, `SendMessage` verifica que um nome ainda se refere ao mesmo agente que alcançou anteriormente na conversa. Se um agente mais novo assumiu o nome, como um agente em segundo plano re-gerado que o reutilizou, Claude Code recusa o envio em vez de entregá-lo ao agente errado, e o erro relata qual agente o nome agora alcança para que Claude possa redirecionar. Para alcançar o agente anterior enquanto ainda está em execução, Claude o endereça pelo ID do agente que recebeu quando gerou esse agente. A verificação é escopo para a conversa atual e é redefinida em `/clear`.

1161 1164 

1162A partir da v2.1.198, um subagente trata mensagens do agente que o lançou como direção de tarefa normal, incluindo correções de curso no meio da tarefa, e age sobre elas dentro de suas próprias configurações de permissão. Dois limites ainda se mantêm independentemente de quem enviou a mensagem: nenhuma mensagem de qualquer agente conta como sua aprovação para um prompt de permissão pendente, e nenhuma mensagem de agente pode mudar as configurações de permissão, `CLAUDE.md` ou configuração de um subagente. Apenas o sistema de permissão ou suas próprias mensagens podem conceder aprovação.1165A partir da v2.1.198, um subagente trata mensagens do agente que o lançou como direção de tarefa normal, incluindo correções de curso no meio da tarefa, e age sobre elas dentro de suas próprias configurações de permissão. Dois limites ainda se mantêm independentemente de quem enviou a mensagem: nenhuma mensagem de qualquer agente conta como sua aprovação para um prompt de permissão pendente, e nenhuma mensagem de agente pode alterar as configurações de permissão, `CLAUDE.md` ou configuração de um subagente. Apenas o sistema de permissão ou suas próprias mensagens podem conceder aprovação.

1163 1166 

1164Você também pode pedir a Claude pelo ID do agente se quiser referenciá-lo explicitamente, ou encontrar IDs nos arquivos de transcrição em `~/.claude/projects/{project}/{sessionId}/subagents/`. Cada transcrição é armazenada como `agent-{agentId}.jsonl`.1167Você também pode pedir a Claude o ID do agente se quiser referenciá-lo explicitamente, ou encontrar IDs nos arquivos de transcrição em `~/.claude/projects/{project}/{sessionId}/subagents/`. Cada transcrição é armazenada como `agent-{agentId}.jsonl`.

1165 1168 

1166Transcrições de subagente persistem independentemente da conversa principal:1169Transcrições de subagentes persistem independentemente da conversa principal:

1167 1170 

1168* **Compactação da conversa principal**: Quando a conversa principal se compacta, transcrições de subagente não são afetadas. Elas são armazenadas em arquivos separados.1171* **Compactação da conversa principal**: quando a conversa principal é compactada, as transcrições de subagentes não são afetadas. Elas são armazenadas em arquivos separados.

1169* **Persistência de sessão**: Transcrições de subagente persistem dentro de sua sessão. Você pode [retomar um subagente](#resume-subagents) após reiniciar Claude Code retomando a mesma sessão.1172* **Persistência de sessão**: as transcrições de subagentes persistem dentro de sua sessão. Você pode [retomar um subagente](#resume-subagents) após reiniciar Claude Code retomando a mesma sessão.

1170* **Limpeza automática**: Claude Code deleta transcrições de subagente após o período de retenção `cleanupPeriodDays`, 30 dias por padrão, seguindo as [regras de varredura de retenção](/docs/pt/claude-directory#cleaned-up-automatically).1173* **Limpeza automática**: Claude Code deleta transcrições de subagentes após o período de retenção `cleanupPeriodDays`, 30 dias por padrão, seguindo as [regras de varredura de retenção](/docs/pt/claude-directory#cleaned-up-automatically).

1171 1174 

1172<h4 id="auto-compaction">1175<h4 id="auto-compaction">

1173 Auto-compactação1176 Auto-compactação

1174</h4>1177</h4>

1175 1178 

1176Subagentes suportam compactação automática usando a mesma lógica que a conversa principal. A compactação é acionada sob as mesmas condições, e `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` se aplica a subagentes também. Veja [variáveis de ambiente](/docs/pt/env-vars) para quando a sobrescrita entra em efeito.1179Subagentes suportam compactação automática usando a mesma lógica que a conversa principal. A compactação é acionada sob as mesmas condições, e `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` se aplica a subagentes também. Consulte [variáveis de ambiente](/docs/pt/env-vars) para quando a substituição entra em vigor.

1177 1180 

1178Eventos de compactação são registrados em arquivos de transcrição de subagente:1181Eventos de compactação são registrados em arquivos de transcrição de subagentes:

1179 1182 

1180```json theme={null}1183```json theme={null}

1181{1184{

Details

240 240 

241 | Token | Controla |241 | Token | Controla |

242 | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |242 | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

243 | `promptBorder` | Borda da caixa de entrada no modo Manual |243 | `promptBorder` | Borda da caixa de entrada |

244 | `planMode` | Acento e borda do modo de plano |244 | `planMode` | Acento do modo de plano, mensagens de plano e diálogos do modo de plano |

245 | `autoAccept` | Acento e borda do modo aceitar-edições |245 | `autoAccept` | Acento do modo aceitar-edições |

246 | `bashBorder` | Borda da caixa de entrada ao inserir um comando shell `!` |246 | `bashBorder` | Borda da caixa de entrada ao inserir um comando shell `!` |

247 | `ide` | Indicador de conexão IDE |247 | `ide` | Indicador de conexão IDE |

248 | `fastMode` | Indicador de modo rápido |248 | `fastMode` | Indicador de modo rápido |

Details

227 Investir em documentação e memória227 Investir em documentação e memória

228</h3>228</h3>

229 229 

230Recomendamos fortemente investir em documentação para que Claude Code compreenda sua base de código. As organizações podem implantar arquivos CLAUDE.md em múltiplos níveis:230Recomendamos fortemente investir em documentação para que Claude Code compreenda sua base de código. As organizações podem implantar arquivos CLAUDE.md em múltiplos níveis. Veja [onde os arquivos CLAUDE.md podem estar](/docs/pt/memory#choose-where-to-put-claude-md-files) e [como implantar um CLAUDE.md em toda a organização](/docs/pt/memory#deploy-organization-wide-claude-md).

231 

232* **Em toda a organização**: Implante em diretórios do sistema como `/Library/Application Support/ClaudeCode/CLAUDE.md` (macOS), `/etc/claude-code/CLAUDE.md` (Linux e WSL), ou `C:\Program Files\ClaudeCode\CLAUDE.md` (Windows) para padrões em toda a empresa

233* **Nível de repositório**: Crie arquivos `CLAUDE.md` nas raízes dos repositórios contendo arquitetura do projeto, comandos de compilação e diretrizes de contribuição. Verifique-os no controle de origem para que todos os usuários se beneficiem

234 

235Saiba mais em [Memória e arquivos CLAUDE.md](/docs/pt/memory).

236 231 

237<h3 id="simplify-deployment">232<h3 id="simplify-deployment">

238 Simplificar a implantação233 Simplificar a implantação

tools-reference.md +26 −19

Details

31| `EnterWorktree` | Cria um [git worktree](/docs/pt/worktrees) isolado e muda para ele. Passe um `path` para mudar para um worktree existente em vez de criar um novo. Na primeira entrada, o alvo pode ser um worktree do repositório atual ou, em um espaço de trabalho multi-repositório, de um repositório aninhado dentro dele. Antes da v2.1.203, um worktree de repositório aninhado era rejeitado. Um `path` fora de `.claude/worktrees/` solicita sua aprovação antes de entrar, pois move o diretório de trabalho da sessão e o acesso de escrita para esse local. A criação de novo worktree e caminhos sob `.claude/worktrees/` não solicitam. Antes da v2.1.206, Claude entrava em caminhos fora de `.claude/worktrees/` sem solicitar. De dentro de uma sessão de worktree ou de um subagente com um diretório de trabalho fixado, como [`isolation: worktree`](/docs/pt/sub-agents#supported-frontmatter-fields), apenas a forma `path` está disponível e o alvo deve estar sob `.claude/worktrees/` do repositório da sessão | Sim |31| `EnterWorktree` | Cria um [git worktree](/docs/pt/worktrees) isolado e muda para ele. Passe um `path` para mudar para um worktree existente em vez de criar um novo. Na primeira entrada, o alvo pode ser um worktree do repositório atual ou, em um espaço de trabalho multi-repositório, de um repositório aninhado dentro dele. Antes da v2.1.203, um worktree de repositório aninhado era rejeitado. Um `path` fora de `.claude/worktrees/` solicita sua aprovação antes de entrar, pois move o diretório de trabalho da sessão e o acesso de escrita para esse local. A criação de novo worktree e caminhos sob `.claude/worktrees/` não solicitam. Antes da v2.1.206, Claude entrava em caminhos fora de `.claude/worktrees/` sem solicitar. De dentro de uma sessão de worktree ou de um subagente com um diretório de trabalho fixado, como [`isolation: worktree`](/docs/pt/sub-agents#supported-frontmatter-fields), apenas a forma `path` está disponível e o alvo deve estar sob `.claude/worktrees/` do repositório da sessão | Sim |

32| `ExitPlanMode` | Apresenta um plano para aprovação e sai do modo de plano | Sim |32| `ExitPlanMode` | Apresenta um plano para aprovação e sai do modo de plano | Sim |

33| `ExitWorktree` | Sai de uma sessão de worktree e retorna ao diretório original. Não disponível para subagentes que já executam em seu próprio diretório de trabalho, como com [`isolation: worktree`](/docs/pt/sub-agents#supported-frontmatter-fields) | Não |33| `ExitWorktree` | Sai de uma sessão de worktree e retorna ao diretório original. Não disponível para subagentes que já executam em seu próprio diretório de trabalho, como com [`isolation: worktree`](/docs/pt/sub-agents#supported-frontmatter-fields) | Não |

34| `Glob` | Encontra arquivos com base em correspondência de padrões. Veja [Comportamento da ferramenta Glob](#glob-tool-behavior) | Não |34| `Glob` | Encontra arquivos com base em correspondência de padrões. Ausente por padrão no macOS, Linux e WSL. Veja [Comportamento da ferramenta Glob](#glob-tool-behavior) | Não |

35| `Grep` | Pesquisa padrões no conteúdo de arquivos. Veja [Comportamento da ferramenta Grep](#grep-tool-behavior) | Não |35| `Grep` | Pesquisa padrões no conteúdo de arquivos. Ausente por padrão no macOS, Linux e WSL. Veja [Comportamento da ferramenta Grep](#grep-tool-behavior) | Não |

36| `ListAgents` | Lista os agentes que Claude pode enviar mensagens com `SendMessage`: subagentes na sessão, [colegas de equipe](/docs/pt/agent-teams) de equipe de agentes, suas outras sessões locais de Claude Code e, enquanto esta sessão está conectada a [Controle Remoto](/docs/pt/remote-control), suas sessões de [Claude Code na web](/docs/pt/claude-code-on-the-web) e suas sessões de Controle Remoto em outras máquinas. Respalda o comando `/list-agents`. Veja [mensagens entre sessões](/docs/pt/cross-session-messaging). Requer Claude Code v2.1.224 ou posterior e aparece apenas em sessões onde [mensagens entre sessões estão ativadas](/docs/pt/cross-session-messaging#availability). Linhas de colegas de equipe e a primeira linha mostrando o próprio nome desta sessão requerem v2.1.239 ou posterior | Não |36| `ListAgents` | Lista os agentes que Claude pode enviar mensagens com `SendMessage`: subagentes na sessão, [colegas de equipe](/docs/pt/agent-teams) de equipe de agentes, suas outras sessões locais de Claude Code e, enquanto esta sessão está conectada a [Controle Remoto](/docs/pt/remote-control), suas sessões de [Claude Code na web](/docs/pt/claude-code-on-the-web) e suas sessões de Controle Remoto em outras máquinas. Respalda o comando `/list-agents`. Veja [mensagens entre sessões](/docs/pt/cross-session-messaging). Requer Claude Code v2.1.224 ou posterior e aparece apenas em sessões onde [mensagens entre sessões estão ativadas](/docs/pt/cross-session-messaging#availability). Linhas de colegas de equipe e a primeira linha mostrando o próprio nome desta sessão requerem v2.1.239 ou posterior | Não |

37| `ListMcpResourcesTool` | Lista recursos expostos por [servidores MCP](/docs/pt/mcp) conectados | Não |37| `ListMcpResourcesTool` | Lista recursos expostos por [servidores MCP](/docs/pt/mcp) conectados | Não |

38| `LSP` | Inteligência de código via servidores de linguagem: ir para definições, encontrar referências, relatar erros de tipo e avisos. Veja [Comportamento da ferramenta LSP](#lsp-tool-behavior) | Não |38| `LSP` | Inteligência de código via servidores de linguagem: ir para definições, encontrar referências, relatar erros de tipo e avisos. Veja [Comportamento da ferramenta LSP](#lsp-tool-behavior) | Não |


50| `SendUserFile` | Envia arquivos da sessão para você com uma legenda opcional, para que um relatório gerado, diagrama, captura de tela ou artefato construído chegue ao seu dispositivo em vez de apenas ser mencionado na transcrição. A partir da v2.1.196, a entrada `display` opcional controla a apresentação: `render` abre o arquivo inline no cliente, `attach` mostra apenas um cartão de download e quando não definido o cliente decide por tipo de arquivo. Disponível quando um cliente [Controle Remoto](/docs/pt/remote-control) está conectado ou a sessão é executada em um ambiente de nuvem gerenciado, como [Claude Code na web](/docs/pt/claude-code-on-the-web). A entrega é executada através de infraestrutura hospedada pela Anthropic, então a ferramenta não está disponível no Amazon Bedrock, Agent Platform do Google Cloud ou Microsoft Foundry | Não |50| `SendUserFile` | Envia arquivos da sessão para você com uma legenda opcional, para que um relatório gerado, diagrama, captura de tela ou artefato construído chegue ao seu dispositivo em vez de apenas ser mencionado na transcrição. A partir da v2.1.196, a entrada `display` opcional controla a apresentação: `render` abre o arquivo inline no cliente, `attach` mostra apenas um cartão de download e quando não definido o cliente decide por tipo de arquivo. Disponível quando um cliente [Controle Remoto](/docs/pt/remote-control) está conectado ou a sessão é executada em um ambiente de nuvem gerenciado, como [Claude Code na web](/docs/pt/claude-code-on-the-web). A entrega é executada através de infraestrutura hospedada pela Anthropic, então a ferramenta não está disponível no Amazon Bedrock, Agent Platform do Google Cloud ou Microsoft Foundry | Não |

51| `ShareOnboardingGuide` | Carrega `ONBOARDING.md` e retorna um link de compartilhamento que colegas de equipe podem abrir no Claude Code. Chamado de `/team-onboarding` após o guia ser escrito. Disponível para assinantes do claude.ai nos planos Pro, Max, Team e Enterprise | Sim |51| `ShareOnboardingGuide` | Carrega `ONBOARDING.md` e retorna um link de compartilhamento que colegas de equipe podem abrir no Claude Code. Chamado de `/team-onboarding` após o guia ser escrito. Disponível para assinantes do claude.ai nos planos Pro, Max, Team e Enterprise | Sim |

52| `Skill` | Executa uma [skill](/docs/pt/skills#control-who-invokes-a-skill) dentro da conversa principal | Sim |52| `Skill` | Executa uma [skill](/docs/pt/skills#control-who-invokes-a-skill) dentro da conversa principal | Sim |

53| `TaskCreate` | Cria uma nova tarefa na lista de tarefas. Claude Code a deixa de fora nos modelos listados em [Disponibilidade da ferramenta Task](#task-tool-availability) a menos que você opte por participar | Não |53| `TaskCreate` | Cria uma nova tarefa na lista de tarefas. Fornecido por padrão apenas nos modelos listados em [Disponibilidade da ferramenta Task](#task-tool-availability) e em outros modelos quando você optar por participar | Não |

54| `TaskGet` | Recupera detalhes completos para uma tarefa específica. Claude Code a deixa de fora nos modelos listados em [Disponibilidade da ferramenta Task](#task-tool-availability) a menos que você opte por participar | Não |54| `TaskGet` | Recupera detalhes completos para uma tarefa específica. Fornecido por padrão apenas nos modelos listados em [Disponibilidade da ferramenta Task](#task-tool-availability) e em outros modelos quando você optar por participar | Não |

55| `TaskList` | Lista todas as tarefas com seu status atual. Claude Code a deixa de fora nos modelos listados em [Disponibilidade da ferramenta Task](#task-tool-availability) a menos que você opte por participar | Não |55| `TaskList` | Lista todas as tarefas com seu status atual. Fornecido por padrão apenas nos modelos listados em [Disponibilidade da ferramenta Task](#task-tool-availability) e em outros modelos quando você optar por participar | Não |

56| `TaskOutput` | Recupera saída de uma tarefa em segundo plano. Descontinuado em favor de `Read` no caminho do arquivo de saída da tarefa. Quando nenhuma tarefa corresponde ao ID, o erro lista os agentes de fundo em execução por ID e descrição. Antes da v2.1.203, o erro nomeava apenas o ID ausente | Não |56| `TaskOutput` | Recupera saída de uma tarefa em segundo plano. Descontinuado em favor de `Read` no caminho do arquivo de saída da tarefa. Quando nenhuma tarefa corresponde ao ID, o erro lista os agentes de fundo em execução por ID e descrição. Antes da v2.1.203, o erro nomeava apenas o ID ausente | Não |

57| `TaskStop` | Para uma tarefa em segundo plano em execução por ID. Também aceita um colega de equipe de [equipe de agentes](/docs/pt/agent-teams) ou um agente de fundo nomeado por ID ou nome de agente. Antes da v2.1.198, aceitava apenas um ID de tarefa em segundo plano. Quando nenhuma tarefa corresponde ao ID, o erro lista os agentes de fundo em execução por ID e descrição, incluindo agentes que outro agente gerou. Antes da v2.1.203, o erro listava colegas de equipe em execução e agentes nomeados, mas não agentes de fundo que outro agente gerou, então eles não podiam ser identificados ou parados da conversa principal | Não |57| `TaskStop` | Para uma tarefa em segundo plano em execução por ID. Também aceita um colega de equipe de [equipe de agentes](/docs/pt/agent-teams) ou um agente de fundo nomeado por ID ou nome de agente. Antes da v2.1.198, aceitava apenas um ID de tarefa em segundo plano. Quando nenhuma tarefa corresponde ao ID, o erro lista os agentes de fundo em execução por ID e descrição, incluindo agentes que outro agente gerou. Antes da v2.1.203, o erro listava colegas de equipe em execução e agentes nomeados, mas não agentes de fundo que outro agente gerou, então eles não podiam ser identificados ou parados da conversa principal | Não |

58| `TaskUpdate` | Atualiza status da tarefa, dependências, detalhes ou deleta tarefas. Claude Code a deixa de fora nos modelos listados em [Disponibilidade da ferramenta Task](#task-tool-availability) a menos que você opte por participar | Não |58| `TaskUpdate` | Atualiza status da tarefa, dependências, detalhes ou deleta tarefas. Fornecido por padrão apenas nos modelos listados em [Disponibilidade da ferramenta Task](#task-tool-availability) e em outros modelos quando você optar por participar | Não |

59| `TodoWrite` | Gerencia a lista de verificação de tarefas da sessão. Desativado por padrão em favor de `TaskCreate`, `TaskGet`, `TaskList` e `TaskUpdate`. Defina `CLAUDE_CODE_ENABLE_TASKS=0` para reativá-lo em [sessões que têm as ferramentas de rastreamento de tarefas](#task-tool-availability) | Não |59| `TodoWrite` | Gerencia a lista de verificação de tarefas da sessão. Desativado por padrão em favor de `TaskCreate`, `TaskGet`, `TaskList` e `TaskUpdate`. Defina `CLAUDE_CODE_ENABLE_TASKS=0` para reativá-lo em [sessões que têm as ferramentas de rastreamento de tarefas](#task-tool-availability) | Não |

60| `ToolSearch` | Pesquisa e carrega ferramentas adiadas quando [pesquisa de ferramentas](/docs/pt/mcp#scale-with-mcp-tool-search) está ativada | Não |60| `ToolSearch` | Pesquisa e carrega ferramentas adiadas quando [pesquisa de ferramentas](/docs/pt/mcp#scale-with-mcp-tool-search) está ativada | Não |

61| `WaitForMcpServers` | Aguarda um ou mais [servidores MCP](/docs/pt/mcp) que ainda estão se conectando em segundo plano, para que uma solicitação possa usar suas ferramentas sem reiniciar a sessão. Claude a chama quando um servidor necessário ainda não está conectado. Aparece apenas quando [pesquisa de ferramentas](/docs/pt/mcp#scale-with-mcp-tool-search) está desativada, pois `ToolSearch` lida com a espera quando está ativada | Não |61| `WaitForMcpServers` | Aguarda um ou mais [servidores MCP](/docs/pt/mcp) que ainda estão se conectando em segundo plano, para que uma solicitação possa usar suas ferramentas sem reiniciar a sessão. Claude a chama quando um servidor necessário ainda não está conectado. Aparece apenas quando [pesquisa de ferramentas](/docs/pt/mcp#scale-with-mcp-tool-search) está desativada, pois `ToolSearch` lida com a espera quando está ativada | Não |


73* em [`permissions.allow`](/docs/pt/settings-reference#permissions-allow) e [`permissions.deny`](/docs/pt/settings-reference#permissions-deny) em configurações, e na interface `/permissions`73* em [`permissions.allow`](/docs/pt/settings-reference#permissions-allow) e [`permissions.deny`](/docs/pt/settings-reference#permissions-deny) em configurações, e na interface `/permissions`

74* nos sinalizadores [CLI](/docs/pt/cli-reference) `--allowedTools` e `--disallowedTools`74* nos sinalizadores [CLI](/docs/pt/cli-reference) `--allowedTools` e `--disallowedTools`

75* nas opções [`allowedTools` e `disallowedTools`](/docs/pt/agent-sdk/permissions#allow-and-deny-rules) do Agent SDK75* nas opções [`allowedTools` e `disallowedTools`](/docs/pt/agent-sdk/permissions#allow-and-deny-rules) do Agent SDK

76* no frontmatter [`tools` ou `disallowedTools`](/docs/pt/sub-agents#supported-frontmatter-fields) de um subagent

77* no frontmatter [`allowed-tools`](/docs/pt/skills#frontmatter-reference) de uma skill76* no frontmatter [`allowed-tools`](/docs/pt/skills#frontmatter-reference) de uma skill

78* na condição [`if`](/docs/pt/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field) de um hook77* na condição [`if`](/docs/pt/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field) de um hook

79 78 


154 O que persiste entre comandos153 O que persiste entre comandos

155</h3>154</h3>

156 155 

157* Quando Claude executa `cd` na sessão principal, o novo diretório de trabalho é mantido para comandos Bash posteriores, desde que permaneça dentro do diretório do projeto ou de um [diretório de trabalho adicional](/docs/pt/permissions#working-directories) que você adicionou com `--add-dir`, `/add-dir`, ou `additionalDirectories` nas configurações. Sessões de subagentos nunca mantêm mudanças de diretório de trabalho.156* Quando Claude executa `cd` na sessão principal, o novo diretório de trabalho é mantido para comandos Bash posteriores, desde que permaneça dentro do diretório do projeto ou de um [diretório de trabalho adicional](/docs/pt/permissions#working-directories) que você adicionou com `--add-dir`, `/add-dir`, ou `additionalDirectories` nas configurações. Isso inclui comandos que Claude executa em resposta às suas mensagens posteriores.

157 * Sessões de subagentos nunca mantêm mudanças de diretório de trabalho.

158 * Se `cd` sair desses diretórios, Claude Code redefine para o diretório do projeto e anexa `Shell cwd was reset to <dir>` ao resultado da ferramenta.158 * Se `cd` sair desses diretórios, Claude Code redefine para o diretório do projeto e anexa `Shell cwd was reset to <dir>` ao resultado da ferramenta.

159 * Para desabilitar esse carregamento de forma que cada comando Bash comece no diretório do projeto, defina `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.159 * Para desabilitar esse carregamento de forma que cada comando Bash comece no diretório do projeto, defina `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

160* Variáveis de ambiente não persistem. Um `export` em um comando não estará disponível no próximo.160* Variáveis de ambiente não persistem. Um `export` em um comando não estará disponível no próximo.


196 196 

197Um comando que um [subagentos em foreground](/docs/pt/sub-agents#run-subagents-in-foreground-or-background) iniciou para quando esse subagentos dá sua resposta final. Um comando que a conversa principal ou um subagentos em background iniciou continua sendo executado após uma resposta final. Em modo não interativo com a flag `-p`, [comandos em background terminam logo após o resultado final da execução](/docs/pt/headless#background-tasks-at-exit).197Um comando que um [subagentos em foreground](/docs/pt/sub-agents#run-subagents-in-foreground-or-background) iniciou para quando esse subagentos dá sua resposta final. Um comando que a conversa principal ou um subagentos em background iniciou continua sendo executado após uma resposta final. Em modo não interativo com a flag `-p`, [comandos em background terminam logo após o resultado final da execução](/docs/pt/headless#background-tasks-at-exit).

198 198 

199Quando um comando atinge seu timeout sem terminar, Claude Code o move para o background em vez de interrompê-lo. Claude continua trabalhando enquanto o comando continua. Claude Code aplica as mesmas regras de tempo de vida a um comando movido quanto a qualquer outro comando em background, então ainda termina o comando de um subagentos em foreground na resposta final desse subagentos. Definir [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/pt/env-vars#variables) desabilita o auto-backgrounding junto com o resto da funcionalidade de tarefas em background.199Quando um comando atinge seu timeout sem terminar, Claude Code o move para o background em vez de interrompê-lo, a menos que o comando comece com `sleep`. Claude continua trabalhando enquanto o comando continua. Claude Code aplica as mesmas regras de tempo de vida a um comando movido quanto a qualquer outro comando em background, então ainda termina o comando de um subagentos em foreground na resposta final desse subagentos. Definir [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/pt/env-vars#variables) desabilita o auto-backgrounding junto com o resto da funcionalidade de tarefas em background.

200 

201Claude Code nunca faz auto-background de três tipos de comando. Ele os interrompe no timeout em vez disso:

202 

203* Um comando que começa com `sleep`.

204* Um comando que executa `git` em qualquer lugar nele.

205* Um comando composto que Claude Code não consegue analisar completamente em comandos simples. Claude Code trata uma expansão de parâmetro como `${VAR}` como não analisável, então interrompe um comando que termina em `; exit "${PIPESTATUS[0]}"` no timeout mesmo quando o resto desse comando é analisável.

206 200 

207O resultado de um comando movido para o background declara o que aconteceu:201O resultado de um comando movido para o background declara o que aconteceu:

208 202 


291 Comportamento da ferramenta Glob285 Comportamento da ferramenta Glob

292</h2>286</h2>

293 287 

294A ferramenta Glob encontra arquivos por padrão de nome. Ela suporta sintaxe glob padrão, incluindo `**` para correspondência recursiva de diretórios:288A ferramenta Glob encontra arquivos por padrão de nome. No Windows, ela faz parte do conjunto de ferramentas padrão. No macOS, Linux e WSL, Claude Code deixa Glob e [Grep](#grep-tool-behavior) fora do conjunto de ferramentas padrão, e Claude pesquisa com `find` e `grep` através da ferramenta Bash. No shell do Claude, esses dois comandos executam versões incorporadas de `bfs` e `ugrep`, e as pesquisas alcançam seus hooks e regras de permissão como chamadas `Bash`.

289 

290No macOS, Linux e WSL, você recupera as ferramentas Glob e Grep nestes casos:

291 

292* Você nomeia `Glob` ou `Grep` em [`--tools` ou `--allowedTools`](/docs/pt/cli-reference#cli-flags) quando inicia a sessão, ou nas [opções equivalentes do Agent SDK](/docs/pt/agent-sdk/overview). Com `--tools` você obtém os que lista, e nomear qualquer ferramenta em `--allowedTools` restaura ambas. Uma regra de permissão em um arquivo de configurações não tem esse efeito.

293* Uma [regra de negação](/docs/pt/permissions#match-all-uses-of-a-tool) de permissões, o sinalizador `--disallowedTools`, ou [`--restricted`](/docs/pt/cli-reference#cli-flags) remove `Bash` da sessão.

294* Um [subagente](/docs/pt/sub-agents#available-tools) lista `Glob` ou `Grep` em seu campo `tools` e deixa `Bash` de fora. As ferramentas listadas voltam apenas para esse subagente, ou para toda a sessão quando é executado como o agente de sessão principal através de [`--agent`](/docs/pt/sub-agents#invoke-subagents-explicitly) ou da configuração `agent`.

295 

296Glob suporta sintaxe glob padrão, incluindo `**` para correspondência recursiva de diretórios:

295 297 

296* `**/*.js` corresponde a todos os arquivos `.js` em qualquer profundidade298* `**/*.js` corresponde a todos os arquivos `.js` em qualquer profundidade

297* `src/**/*.ts` corresponde a todos os arquivos `.ts` sob `src/`299* `src/**/*.ts` corresponde a todos os arquivos `.ts` sob `src/`


309 Comportamento da ferramenta Grep311 Comportamento da ferramenta Grep

310</h2>312</h2>

311 313 

312A ferramenta Grep pesquisa padrões no conteúdo dos arquivos. Enquanto [Glob](#glob-tool-behavior) encontra arquivos por nome, Grep encontra linhas dentro deles.314A ferramenta Grep pesquisa padrões no conteúdo dos arquivos. Enquanto [Glob](#glob-tool-behavior) encontra arquivos por nome, Grep encontra linhas dentro deles. No macOS, Linux e WSL, Grep está ausente por padrão sob as mesmas condições que Glob. Veja [Comportamento da ferramenta Glob](#glob-tool-behavior) para quando ambas as ferramentas estão disponíveis.

313 315 

314Grep é construído em [ripgrep](https://github.com/BurntSushi/ripgrep) e usa a sintaxe regex do ripgrep, não grep POSIX. Padrões que incluem metacaracteres regex precisam ser escapados. Por exemplo, encontrar `interface{}` em código Go requer o padrão `interface\{\}`.316Grep é construído em [ripgrep](https://github.com/BurntSushi/ripgrep) e usa a sintaxe regex do ripgrep, não grep POSIX. Padrões que incluem metacaracteres regex precisam ser escapados. Por exemplo, encontrar `interface{}` em código Go requer o padrão `interface\{\}`.

315 317 


580 Disponibilidade da ferramenta Task582 Disponibilidade da ferramenta Task

581</h2>583</h2>

582 584 

583No Claude Code v2.1.233 e posterior, as seguintes ferramentas não estão disponíveis no Opus 4.8, Sonnet 5, Fable 5, Mythos 5 ou versões posteriores dessas famílias, a menos que você opte por usá-las: `TodoWrite`, `TaskCreate`, `TaskGet`, `TaskUpdate` e `TaskList`. Esses modelos acompanham o trabalho em várias etapas sem uma lista de verificação escrita, e as definições e lembretes das ferramentas ocupam contexto, portanto Claude Code as omite. Sem elas, Claude não adiciona nada à [lista de tarefas](/docs/pt/interactive-mode#task-list) enquanto trabalha. Em qualquer outro modelo, como Opus 4.7, Claude Code fornece as quatro ferramentas Task por padrão e `TodoWrite` apenas quando você define [`CLAUDE_CODE_ENABLE_TASKS=0`](/docs/pt/env-vars).585As ferramentas de rastreamento de tarefas, `TaskCreate`, `TaskGet`, `TaskUpdate`, `TaskList` e `TodoWrite`, estão disponíveis por padrão apenas nos modelos Claude 3.x, Opus 4 até 4.7, Sonnet 4 até 4.6 e Haiku 4.5. Sempre que as ferramentas estão disponíveis, você obtém as quatro ferramentas Task, ou `TodoWrite` quando você define [`CLAUDE_CODE_ENABLE_TASKS=0`](/docs/pt/env-vars).

586 

587Em todos os outros modelos, Claude Code deixa as ferramentas de fora a menos que você opte por usá-las. O mesmo se aplica a um ID de modelo que Claude Code não reconhece, como um nome de modelo personalizado servido através de um [gateway LLM](/docs/pt/llm-gateway). Em modelos mais novos, Claude acompanha o trabalho em várias etapas sem uma lista de verificação escrita, e as definições e lembretes das ferramentas ocupam contexto. Sem as ferramentas, Claude não adiciona nada à [lista de tarefas](/docs/pt/interactive-mode#task-list) enquanto trabalha.

584 588 

585Se você gostaria de usar essas ferramentas em um dos modelos listados mesmo assim, faça um dos seguintes:589Se você gostaria de usar essas ferramentas em um modelo que não as possui por padrão, faça um dos seguintes:

586 590 

587* Exporte [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](/docs/pt/env-vars) antes de iniciar Claude Code, por exemplo `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`. Claude Code então fornece as mesmas ferramentas em todos os modelos e todos os provedores591* Exporte [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](/docs/pt/env-vars) antes de iniciar Claude Code, por exemplo `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`. Claude Code então fornece as mesmas ferramentas em todos os modelos e todos os provedores

588* Nomeie uma das ferramentas em [`--allowedTools`](/docs/pt/cli-reference#cli-flags), por exemplo `claude --allowedTools TaskCreate`592* Nomeie uma das ferramentas em [`--allowedTools`](/docs/pt/cli-reference#cli-flags), por exemplo `claude --allowedTools TaskCreate`


593 597 

594Claude Code fornece a um suagente as ferramentas apenas quando sua sessão as possui, mesmo quando o suagente executa um modelo diferente. Um colega de [equipe de agentes](/docs/pt/agent-teams) em processo segue sua sessão da mesma forma, enquanto um colega em seu próprio [painel dividido](/docs/pt/agent-teams#choose-a-display-mode) é executado como um processo Claude Code separado, portanto seu próprio modelo decide. Sem as ferramentas Task, um agente coordena com sua equipe através de mensagens em vez da [lista de tarefas compartilhada](/docs/pt/agent-teams#assign-and-claim-tasks).598Claude Code fornece a um suagente as ferramentas apenas quando sua sessão as possui, mesmo quando o suagente executa um modelo diferente. Um colega de [equipe de agentes](/docs/pt/agent-teams) em processo segue sua sessão da mesma forma, enquanto um colega em seu próprio [painel dividido](/docs/pt/agent-teams#choose-a-display-mode) é executado como um processo Claude Code separado, portanto seu próprio modelo decide. Sem as ferramentas Task, um agente coordena com sua equipe através de mensagens em vez da [lista de tarefas compartilhada](/docs/pt/agent-teams#assign-and-claim-tasks).

595 599 

600O conjunto padrão descrito aqui se aplica no Claude Code v2.1.268 e posterior.

601 

596<h2 id="webfetch-tool-behavior">602<h2 id="webfetch-tool-behavior">

597 Comportamento da ferramenta WebFetch603 Comportamento da ferramenta WebFetch

598</h2>604</h2>


606* URLs HTTP são automaticamente atualizadas para HTTPS.612* URLs HTTP são automaticamente atualizadas para HTTPS.

607* Páginas grandes são truncadas para um limite de caracteres fixo antes do processamento.613* Páginas grandes são truncadas para um limite de caracteres fixo antes do processamento.

608* WebFetch armazena em cache cada resposta por 15 minutos por padrão, então buscas repetidas da mesma URL retornam rapidamente. No Claude Code v2.1.233 ou posterior, defina [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/pt/env-vars#variables) para alterar quanto tempo WebFetch mantém cada resposta.614* WebFetch armazena em cache cada resposta por 15 minutos por padrão, então buscas repetidas da mesma URL retornam rapidamente. No Claude Code v2.1.233 ou posterior, defina [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/pt/env-vars#variables) para alterar quanto tempo WebFetch mantém cada resposta.

615* Uma página que não terminou de fazer download em cinco minutos, incluindo qualquer redirecionamento que WebFetch segue, falha com um erro de deadline. No Claude Code v2.1.268 ou posterior, defina [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/pt/env-vars#variables) para alterar o limite, ou para `0` para removê-lo.

609* Quando uma URL redireciona para um host diferente, WebFetch retorna um resultado de texto que nomeia a URL original e o alvo de redirecionamento em vez de segui-lo. Claude então busca a nova URL com uma segunda chamada WebFetch.616* Quando uma URL redireciona para um host diferente, WebFetch retorna um resultado de texto que nomeia a URL original e o alvo de redirecionamento em vez de segui-lo. Claude então busca a nova URL com uma segunda chamada WebFetch.

610* Quando a etapa de extração atinge uma API sobrecarregada, Claude Code tenta novamente com backoff; uma busca que ainda falha retorna um resultado de erro. Antes da v2.1.212, o texto de erro da API poderia chegar a Claude como se fosse o conteúdo da página extraída.617* Quando a etapa de extração atinge uma API sobrecarregada, Claude Code tenta novamente com backoff; uma busca que ainda falha retorna um resultado de erro. Antes da v2.1.212, o texto de erro da API poderia chegar a Claude como se fosse o conteúdo da página extraída.

611 618 

vs-code.md +43 −8

Details

56 56 

57 Outras formas de abrir Claude Code:57 Outras formas de abrir Claude Code:

58 58 

59 * **Activity Bar**: clique no ícone Spark na barra lateral esquerda para abrir a lista de sessões. Clique em qualquer sessão para abri-la como uma aba de editor completa, ou inicie uma nova. Este ícone está sempre visível na Activity Bar.59 * **Activity Bar**: clique no ícone Spark na barra lateral esquerda para abrir a lista de sessões. Clique em qualquer sessão para abri-la no seu [local preferido](#extension-settings), ou inicie uma nova. Este ícone está sempre visível na Activity Bar.

60 * **Command Palette**: `Cmd+Shift+P` (Mac) ou `Ctrl+Shift+P` (Windows/Linux), digite "Claude Code" e selecione uma opção como "Open in New Tab"60 * **Command Palette**: `Cmd+Shift+P` (Mac) ou `Ctrl+Shift+P` (Windows/Linux), digite "Claude Code" e selecione uma opção como "Open in New Tab"

61 * **Status Bar**: se você definiu [`preferredLocation`](#extension-settings) como `sidebar`, ou abriu Claude com **Claude Code: Open in Side Bar**, clique em **✱ Claude Code** no canto inferior direito da janela. Isso funciona mesmo quando nenhum arquivo está aberto.61 * **Status Bar**: se você definiu [`preferredLocation`](#extension-settings) como `sidebar`, ou abriu Claude com **Claude Code: Open in Side Bar**, clique em **✱ Claude Code** no canto inferior direito da janela. Isso funciona mesmo quando nenhum arquivo está aberto.

62 62 


110 * **Manual**: Claude asks permission before file edits and most shell commands.110 * **Manual**: Claude asks permission before file edits and most shell commands.

111 * **Plan**: Claude describes what it will do and waits for approval before making changes. VS Code automatically opens the plan as a full Markdown document where you can add inline comments to give feedback before Claude begins.111 * **Plan**: Claude describes what it will do and waits for approval before making changes. VS Code automatically opens the plan as a full Markdown document where you can add inline comments to give feedback before Claude begins.

112 * **Edit automatically**: Claude makes edits without asking.112 * **Edit automatically**: Claude makes edits without asking.

113* **Model**: select **Switch model…** from the command menu to change the model mid-session. You can also click the model name at the bottom of the prompt box to open the same picker. When the current model supports [effort levels](/docs/pt/model-config#adjust-effort-level), the picker also shows an **Effort** row. The model name button and the **Effort** row require Claude Code v2.1.257 or later.113* **Model**: select **Switch model…** from the command menu to change the model mid-session. You can also click the model name at the bottom of the prompt box to open the same picker. When the current model supports [effort levels](/docs/pt/model-config#adjust-effort-level), the picker also shows an **Effort** row and the model name button shows the selected level. The model name button and the **Effort** row require Claude Code v2.1.257 or later.

114* **Command menu**: click `/` or type `/` to open the command menu. Options include attaching files, switching models, and toggling extended thinking. The Customize section provides access to MCP servers, slash commands, output styles, hooks, memory, permissions, and plugins. Items with a terminal icon open in the integrated terminal.114* **Command menu**: click `/` or type `/` to open the command menu. Options include attaching files, switching models, and toggling extended thinking. The Customize section provides access to MCP servers, slash commands, output styles, hooks, memory, permissions, and plugins. Items with a terminal icon open in the integrated terminal.

115 * To browse commands such as `/usage` or [`/remote-control`](/docs/pt/remote-control), select **Slash commands** in the Customize section. A dialog lists them with a filter box. Pick one to run it. Typing `/` in the prompt box still suggests commands inline. Requires Claude Code v2.1.257 or later.115 * To browse commands such as `/usage` or [`/remote-control`](/docs/pt/remote-control), select **Slash commands** in the Customize section. A dialog lists them with a filter box. Pick one to run it. Typing `/` in the prompt box still suggests commands inline. Requires Claude Code v2.1.257 or later.

116 * Select **Output styles** in the Customize section to pick an [output style](/docs/pt/output-styles), including your custom styles. Requires Claude Code v2.1.257 or later.116 * Select **Output styles** in the Customize section to pick an [output style](/docs/pt/output-styles), including your custom styles. Requires Claude Code v2.1.257 or later.


141 141 

142When you select text in the editor, Claude can see your highlighted code automatically. The prompt box footer shows how many lines are selected. Press `Option+K` (Mac) / `Alt+K` (Windows/Linux) to insert an @-mention with the file path and line numbers (e.g., `@app.ts#5-10`). Click the selection indicator to toggle whether Claude can see your highlighted text - the eye-slash icon means the selection is hidden from Claude.142When you select text in the editor, Claude can see your highlighted code automatically. The prompt box footer shows how many lines are selected. Press `Option+K` (Mac) / `Alt+K` (Windows/Linux) to insert an @-mention with the file path and line numbers (e.g., `@app.ts#5-10`). Click the selection indicator to toggle whether Claude can see your highlighted text - the eye-slash icon means the selection is hidden from Claude.

143 143 

144You can also hold `Shift` while dragging files into the prompt box to add them as attachments. Click the X on any attachment to remove it from context.144To attach an image, paste it from your clipboard into the prompt box. You can also hold `Shift` while dragging files into the prompt box to add them as attachments. Click the X on any attachment to remove it from context.

145 145 

146<h3 id="resume-past-conversations">146<h3 id="resume-past-conversations">

147 Resume past conversations147 Resume past conversations

148</h3>148</h3>

149 149 

150Click the **Session history** button at the top of the Claude Code panel to access your conversation history. You can search by keyword or browse by time. Click any conversation to resume it with the full message history. For more on resuming sessions, see [Manage sessions](/docs/pt/sessions).150Click the **Session history** button at the top of the Claude Code panel to access your conversation history. You can search by keyword or browse by time.

151 151 

152New sessions receive AI-generated titles based on your first message. Hover over a session to reveal rename and archive actions: rename to give it a descriptive title, or archive to move it to the **Archived sessions** group at the bottom of the list.152Click any conversation to resume it with the full message history. If the conversation is already open in another tab of the current window, clicking it switches to that tab. For more on resuming sessions, see [Manage sessions](/docs/pt/sessions).

153 

154* **Session titles**: new sessions receive AI-generated titles based on your first message.

155* **Rename and archive**: hover over a session to reveal these actions. Rename to give it a descriptive title, or archive to move it to the **Archived sessions** group at the bottom of the list.

156 

157By default, a session with no activity for 14 days moves to **Archived sessions** automatically, unless it is open, unread, or in a [group](#organize-sessions-into-groups). Automatic archiving requires Claude Code v2.1.265 or later. To change the period or turn it off, open the [Archive Inactive Sessions setting](vscode://settings/claudeCode.archiveInactiveSessions) and select a number of days or **Never**.

153 158 

154To restore an archived session, expand **Archived sessions** and click **Unarchive session**. Before v2.1.257, the action was **Delete session**, which hid a session with no way to restore it. Sessions you deleted then appear under **Archived sessions** after you upgrade.159To restore an archived session, expand **Archived sessions** and click **Unarchive session**. Before v2.1.257, the action was **Delete session**, which hid a session with no way to restore it. Sessions you deleted then appear under **Archived sessions** after you upgrade.

155 160 


186 Check account and usage191 Check account and usage

187</h3>192</h3>

188 193 

189Run `/usage` to open the Account & usage dialog. The dialog requires a claude.ai sign-in, so it isn't offered on a [third-party provider](#use-third-party-providers). It shows your signed-in account, your plan, and usage bars for the current session and the week. Each bar shows how long until its limit resets.194Run `/usage` to open the Account & usage dialog. The dialog requires a claude.ai sign-in, so it isn't offered on a [third-party provider](#use-third-party-providers). It shows your signed-in account, your plan, and usage bars for your plan's limits, such as the current session and the week. Each bar shows how long until its limit resets.

190 195 

191The dialog also breaks down what is contributing to your plan limits. It flags behaviors that account for 10% or more of recent usage, such as cache misses, long context, and subagent-heavy or highly parallel sessions, each with a tip to reduce it. Attribution tables show how much usage came from each skill, subagent, plugin, and MCP server. Requires Claude Code v2.1.174 or later.196The dialog also breaks down what is contributing to your plan limits. It flags behaviors that account for 10% or more of recent usage, such as cache misses, long context, and subagent-heavy or highly parallel sessions, each with a tip to reduce it. Attribution tables show how much usage came from each skill, subagent, plugin, and MCP server. Requires Claude Code v2.1.174 or later.

192 197 


212 Use a barra lateral para sua sessão principal do Claude e abra abas adicionais para tarefas secundárias. Claude lembra sua localização preferida. O ícone da lista de sessões da Activity Bar é separado do painel Claude: a lista de sessões está sempre visível na Activity Bar, enquanto o ícone do painel Claude só aparece lá quando o painel está encaixado na barra lateral esquerda.217 Use a barra lateral para sua sessão principal do Claude e abra abas adicionais para tarefas secundárias. Claude lembra sua localização preferida. O ícone da lista de sessões da Activity Bar é separado do painel Claude: a lista de sessões está sempre visível na Activity Bar, enquanto o ícone do painel Claude só aparece lá quando o painel está encaixado na barra lateral esquerda.

213</Tip>218</Tip>

214 219 

220Depois de executar **Developer: Reload Window** ou reiniciar o VS Code, se um chat volta com sua conversa depende de onde estava aberto:

221 

222* **Aba do editor**: a conversa volta com sua aba.

223* **Barra lateral**: a conversa volta se você enviou uma mensagem ou Claude respondeu nela nos últimos 10 minutos. Se ela não voltar, retome a conversa do [Histórico de sessões](#resume-past-conversations).

224 

215<h3 id="run-multiple-conversations">225<h3 id="run-multiple-conversations">

216 Execute múltiplas conversas226 Execute múltiplas conversas

217</h3>227</h3>


266* **Instalar para este projeto**: compartilhado com colaboradores do projeto (escopo de projeto)276* **Instalar para este projeto**: compartilhado com colaboradores do projeto (escopo de projeto)

267* **Instalar localmente**: apenas para você, apenas neste repositório (escopo local)277* **Instalar localmente**: apenas para você, apenas neste repositório (escopo local)

268 278 

279<h3 id="share-a-plugin-install-link">

280 Compartilhar um link de instalação de plugin

281</h3>

282 

283Para enviar alguém diretamente para instalar um plugin específico, forneça a URL `install-plugin` da extensão. Abri-la inicia ou foca VS Code, abre o painel Claude Code e abre o diálogo **Gerenciar plugins** na escolha de escopo daquele plugin. Nada é instalado até que a pessoa escolha um escopo. Se o marketplace do plugin ainda não estiver configurado no Claude Code deles, o diálogo primeiro pede que eles o adicionem.

284 

285```text theme={null}

286vscode://anthropic.claude-code/install-plugin?plugin=code-review&marketplace=anthropics/claude-plugins-official

287```

288 

289A URL aceita dois parâmetros de consulta:

290 

291| Parâmetro | Descrição |

292| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

293| `plugin` | O nome do plugin conforme seu marketplace o lista. Obrigatório. |

294| `marketplace` | De onde o plugin vem, em qualquer forma que a [aba Marketplaces](#manage-marketplaces) aceita, como um `owner/repo` do GitHub ou uma URL git. Codifique-o em URL se contiver caracteres como `&`. Padrão para `anthropics/claude-plugins-official` quando omitido. |

295 

296Dois casos terminam em uma mensagem no diálogo em vez da escolha de escopo:

297 

298* **O marketplace não lista um plugin com esse nome**: o diálogo relata que o plugin não foi encontrado. Verifique o valor `plugin` contra a listagem do marketplace.

299* **O plugin já está instalado**: o diálogo diz isso, e nada muda.

300 

301READMEs do GitHub, problemas e alguns outros hosts Markdown removem links cujo esquema não é `http` ou `https`, então um link `vscode://` lá é renderizado como texto simples. Coloque a URL em um bloco de código nesses hosts, conforme [O link é renderizado como texto simples em vez de ser clicável](/docs/pt/deep-links#the-link-renders-as-plain-text-instead-of-being-clickable) descreve para links `claude-cli://`.

302 

269<h3 id="manage-marketplaces">303<h3 id="manage-marketplaces">

270 Gerenciar marketplaces304 Gerenciar marketplaces

271</h3>305</h3>


276* Clique no ícone de atualização para atualizar a lista de plugins de um marketplace310* Clique no ícone de atualização para atualizar a lista de plugins de um marketplace

277* Clique no ícone de lixeira para remover um marketplace311* Clique no ícone de lixeira para remover um marketplace

278 312 

279Depois de fazer alterações, um banner o solicita a reiniciar Claude Code para aplicá-las.313As alterações de plugin que você faz no diálogo se aplicam imediatamente às sessões Claude Code abertas naquela janela VS Code. Se a sessão a partir da qual você abriu o diálogo não conseguir recarregar seus plugins, o diálogo oferece tentar novamente ou reiniciar Claude naquela sessão.

280 314 

281<Note>315<Note>

282 O gerenciamento de plugins no VS Code usa os mesmos comandos CLI sob o capô. Plugins e marketplaces que você configura na extensão também estão disponíveis na CLI, e vice-versa.316 O gerenciamento de plugins no VS Code usa os mesmos comandos CLI sob o capô. Plugins e marketplaces que você configura na extensão também estão disponíveis na CLI, e vice-versa.


382vscode://anthropic.claude-code/open?prompt=review%20my%20changes416vscode://anthropic.claude-code/open?prompt=review%20my%20changes

383```417```

384 418 

385Para iniciar uma sessão de terminal em vez de uma aba do VS Code, use o manipulador `claude-cli://` da CLI. Consulte [Launch sessions from links](/docs/pt/deep-links).419A extensão também manipula `vscode://anthropic.claude-code/install-plugin`, que [abre o diálogo de plugin em um plugin](#share-a-plugin-install-link). Para iniciar uma sessão de terminal em vez de uma aba do VS Code, use o manipulador `claude-cli://` da CLI. Consulte [Launch sessions from links](/docs/pt/deep-links).

386 420 

387<h2 id="configure-settings">421<h2 id="configure-settings">

388 Configurar configurações422 Configurar configurações


412| `useCtrlEnterToSend` | `false` | Use Ctrl/Cmd+Enter em vez de Enter para enviar prompts |446| `useCtrlEnterToSend` | `false` | Use Ctrl/Cmd+Enter em vez de Enter para enviar prompts |

413| `enableNewConversationShortcut` | `false` | Ativar Cmd/Ctrl+N para iniciar uma nova conversa |447| `enableNewConversationShortcut` | `false` | Ativar Cmd/Ctrl+N para iniciar uma nova conversa |

414| `enableReopenClosedSessionShortcut` | `true` | Use Cmd/Ctrl+Shift+T para reabrir a aba de sessão Claude fechada mais recentemente. Quando a última aba fechada não era uma sessão Claude, o atalho executa o comando normal de reabrir editor fechado do VS Code. |448| `enableReopenClosedSessionShortcut` | `true` | Use Cmd/Ctrl+Shift+T para reabrir a aba de sessão Claude fechada mais recentemente. Quando a última aba fechada não era uma sessão Claude, o atalho executa o comando normal de reabrir editor fechado do VS Code. |

449| `archiveInactiveSessions` | `14` | [Arquivar uma sessão automaticamente](#resume-past-conversations) após este número de dias sem atividade: `1`, `2`, `7` ou `14`. Defina `0` para desativar. Requer Claude Code v2.1.265 ou posterior |

415| `hideOnboarding` | `false` | Ocultar a lista de verificação de integração (ícone de chapéu de formatura) |450| `hideOnboarding` | `false` | Ocultar a lista de verificação de integração (ícone de chapéu de formatura) |

416| `focusView` | `false` | Ocultar chamadas de ferramenta, resultados de ferramenta e pensamento atrás de linhas expansíveis, deixando seus prompts e respostas do Claude. A lista de tarefas mais recente do Claude permanece visível; isso requer Claude Code v2.1.225 ou posterior. Você também pode alternar a visualização de foco no menu de comandos. Requer Claude Code v2.1.221 ou posterior |451| `focusView` | `false` | Ocultar chamadas de ferramenta, resultados de ferramenta e pensamento atrás de linhas expansíveis, deixando seus prompts e respostas do Claude. A lista de tarefas mais recente do Claude permanece visível; isso requer Claude Code v2.1.225 ou posterior. Você também pode alternar a visualização de foco no menu de comandos. Requer Claude Code v2.1.221 ou posterior |

417| `respectGitIgnore` | `true` | Excluir padrões .gitignore de buscas de arquivo |452| `respectGitIgnore` | `true` | Excluir padrões .gitignore de buscas de arquivo |

web-quickstart.md +40 −24

Details

70 </Step>70 </Step>

71 71 

72 <Step title="Sign in with GitHub">72 <Step title="Sign in with GitHub">

73 Após fazer login, claude.ai/code solicita que você conecte o GitHub. Siga o prompt, e claude.ai/code o envia para a página de autorização do GitHub. Aprove a solicitação de autorização, e o GitHub o retorna para claude.ai/code. As sessões em nuvem funcionam com repositórios GitHub existentes e podem acessar qualquer repositório que sua conta GitHub possa ver. Para iniciar um novo projeto, [crie um repositório vazio no GitHub](https://github.com/new) primeiro.73 Após fazer login, claude.ai/code solicita que você conecte o GitHub. Siga o prompt, e claude.ai/code o envia para a página de autorização do GitHub. Aprove a solicitação de autorização, e o GitHub o retorna para claude.ai/code. As sessões em nuvem funcionam com repositórios GitHub existentes. Para iniciar um novo projeto, [crie um repositório vazio no GitHub](https://github.com/new) primeiro.

74 74 

75 Quando Quick web setup está desativado, que é o padrão em planos Team e Enterprise, claude.ai/code então solicita que você instale o Claude GitHub App em seus repositórios, a menos que já esteja instalado. Instale-o se quiser [Auto-fix](/docs/pt/claude-code-on-the-web#auto-fix-pull-requests), que permite que Claude responda a falhas de CI e comentários de revisão em pull requests nesses repositórios; caso contrário, clique em **Skip**. De qualquer forma, as sessões podem acessar os mesmos repositórios.75 Com essa conexão, uma sessão pode clonar qualquer repositório público, mas pode trabalhar em um repositório privado apenas quando o Claude GitHub App está instalado nele. [Instale o App](https://github.com/apps/claude/installations/new) em cada conta GitHub ou organização cujos repositórios privados você deseja usar. Em uma organização GitHub, um proprietário da organização pode precisar aprovar a instalação. Instalar o App também ativa [Auto-fix](/docs/pt/claude-code-on-the-web#auto-fix-pull-requests), que permite que Claude responda a falhas de CI e comentários de revisão em pull requests nesses repositórios.

76 

77 Se a integração solicitar que você instale o App neste ponto e você preferir fazer isso mais tarde, clique em **Skip**.

76 </Step>78 </Step>

77 79 

78 <Step title="Configure seu ambiente padrão">80 <Step title="Configure seu ambiente padrão">


91 Conecte do seu terminal93 Conecte do seu terminal

92</h3>94</h3>

93 95 

94Se você já usa a CLI do GitHub (`gh`), você pode configurar Claude Code na web sem abrir um navegador. Isso requer a [CLI do Claude Code](/docs/pt/quickstart). Quando você executa `/web-setup`, Claude Code lê seu token `gh` local, vincula-o à sua conta claude.ai e cria o ambiente em nuvem **Default** se você não tiver um. Em planos Team e Enterprise, `/web-setup` está disponível apenas após um Owner ativar [Quick web setup](/docs/pt/claude-code-on-the-web#github-authentication-options).96Se você já usa a CLI do GitHub (`gh`), você pode configurar Claude Code na web sem abrir um navegador. Isso requer a [CLI do Claude Code](/docs/pt/quickstart). Em planos Team e Enterprise, `/web-setup` está disponível apenas após um Owner ativar [Quick web setup](/docs/pt/claude-code-on-the-web#github-authentication-options).

97 

98Quando você executa `/web-setup`, Claude Code lê o token que `gh auth token` imprime, pede que você confirme e envia o token para Anthropic. Anthropic o armazena criptografado com sua conta claude.ai, e suas sessões em nuvem o usam para acesso ao GitHub até você [removê-lo](#remove-the-web-setup-token). Uma sessão em nuvem pode então acessar qualquer repositório que esse token possa acessar, sem nenhuma instalação do Claude GitHub App.

99 

100Se você já conectou o GitHub no navegador, `/web-setup` avisa que continuar substitui essa conexão para suas sessões em nuvem.

95 101 

96<Note>102<Note>

97 Organizações com [Zero Data Retention](/docs/pt/zero-data-retention) habilitado não podem usar `/web-setup` ou outros recursos de sessão em nuvem. Se a CLI do GitHub não estiver instalada ou autenticada, Claude Code abre o fluxo de integração do navegador em vez disso.103 Organizações com [Zero Data Retention](/docs/pt/zero-data-retention) habilitado não podem usar `/web-setup` ou outros recursos de sessão em nuvem. Se a CLI do GitHub não estiver instalada ou autenticada, Claude Code abre o fluxo de integração do navegador em vez disso.


117 /web-setup123 /web-setup

118 ```124 ```

119 125 

120 Isso sincroniza seu token `gh` com sua conta Claude. Em caso de sucesso, Claude Code imprime `Connected as <your-github-username>` e abre [claude.ai/code](https://claude.ai/code) no seu navegador. Se você ainda não tiver um ambiente em nuvem, `/web-setup` cria um com acesso à rede Trusted e sem script de configuração. Você pode [editar o ambiente ou adicionar variáveis](/docs/pt/cloud-environments#configure-your-environment) depois. Após `/web-setup` ser concluído, você pode iniciar sessões em nuvem do seu terminal com [`--cloud`](/docs/pt/claude-code-on-the-web#from-terminal-to-web) ou configurar tarefas recorrentes com [`/schedule`](/docs/pt/routines).126 Confirme o prompt para enviar seu token `gh` para sua conta Claude. Em caso de sucesso, Claude Code imprime `Connected as <your-github-username>` e abre [claude.ai/code](https://claude.ai/code) no seu navegador. Se você ainda não tiver um ambiente em nuvem, `/web-setup` cria um com acesso à rede Trusted e sem script de configuração. Você pode [editar o ambiente ou adicionar variáveis](/docs/pt/cloud-environments#configure-your-environment) depois. Após `/web-setup` ser concluído, você pode iniciar sessões em nuvem do seu terminal com [`--cloud`](/docs/pt/claude-code-on-the-web#from-terminal-to-web) ou configurar tarefas recorrentes com [`/schedule`](/docs/pt/routines).

121 </Step>127 </Step>

122</Steps>128</Steps>

123 129 

130<h4 id="remove-the-web-setup-token">

131 Remova o token `/web-setup`

132</h4>

133 

134Para remover o token da sua conta Claude, desconecte o GitHub em [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Desconectar deleta as credenciais do GitHub que suas sessões em nuvem usam, quer tenham vindo do navegador ou de `/web-setup`, então as sessões em nuvem perdem acesso ao GitHub até você conectar novamente. Seu `gh` local permanece conectado, e o token permanece válido no GitHub.

135 

136Para invalidar o token em si, revogue-o no GitHub. Se você fez login em `gh` através do navegador, o token pertence à entrada **GitHub CLI** em [**Settings > Applications > Authorized OAuth Apps**](https://github.com/settings/applications) no GitHub, e revogar essa entrada também desconecta a CLI do GitHub em suas máquinas. As sessões em nuvem então perdem acesso ao GitHub até você executar `gh auth login` e `/web-setup` novamente.

137 

124<h2 id="start-a-task">138<h2 id="start-a-task">

125 Inicie uma tarefa139 Inicie uma tarefa

126</h2>140</h2>


197</Steps>211</Steps>

198 212 

199<h2 id="troubleshoot-setup">213<h2 id="troubleshoot-setup">

200 Solucione problemas de configuração214 Solucionar problemas de configuração

201</h2>215</h2>

202 216 

203<h3 id="no-repositories-appear-after-connecting-github">217<h3 id="no-repositories-appear-after-connecting-github">

204 Nenhum repositório aparece após conectar GitHub218 Nenhum repositório aparece após conectar GitHub

205</h3>219</h3>

206 220 

207Uma sessão em nuvem pode usar qualquer repositório que a conta GitHub conectada possa ver, independentemente de quais repositórios o aplicativo Claude GitHub está instalado. Se um repositório está faltando, verifique se a conta GitHub conectada tem acesso a ele no GitHub. Se você também quiser [Auto-fix](/docs/pt/claude-code-on-the-web#auto-fix-pull-requests) para um repositório, instale o App nele: em github.com, abra **Configurações → Aplicativos → Claude → Configurar** e verifique se o repositório está listado em **Acesso ao repositório**. Repositórios privados precisam da mesma autorização que os públicos.221Se você conectou GitHub no navegador, as sessões podem clonar qualquer repositório público, mas um repositório privado aparece apenas quando o Claude GitHub App está instalado na conta ou organização que o possui e o acesso ao repositório da instalação o inclui. [Instale o Claude GitHub App](https://github.com/apps/claude/installations/new) lá, ou peça a um proprietário da organização para instalá-lo ou aprová-lo.

222 

223Se você conectou com `/web-setup`, as sessões acessam todos os repositórios que seu token `gh` pode acessar. Execute `gh repo view OWNER/REPO` no seu shell para verificar se seu login do GitHub CLI pode ver o repositório, e execute `/web-setup` novamente se você trocou de contas `gh` desde a conexão.

208 224 

209<h3 id="the-page-only-shows-a-github-login-button">225<h3 id="the-page-only-shows-a-github-login-button">

210 A página mostra apenas um botão de login do GitHub226 A página mostra apenas um botão de login do GitHub

211</h3>227</h3>

212 228 

213As sessões em nuvem requerem uma conta GitHub conectada. Conecte através do fluxo do navegador acima, ou execute `/web-setup` do seu terminal se você usar a CLI do GitHub. Se você preferir não conectar o GitHub, consulte [Remote Control](/docs/pt/remote-control) para executar Claude Code em sua própria máquina e monitorá-lo na web.229As sessões em nuvem requerem uma conta GitHub conectada. Conecte através do fluxo do navegador acima, ou execute `/web-setup` do seu terminal se você usar o GitHub CLI. Se você preferir não conectar GitHub, consulte [Remote Control](/docs/pt/remote-control) para executar Claude Code em sua própria máquina e monitorá-lo pela web.

214 230 

215<h3 id="not-available-for-the-selected-organization">231<h3 id="not-available-for-the-selected-organization">

216 "Não disponível para a organização selecionada"232 "Não disponível para a organização selecionada"

217</h3>233</h3>

218 234 

219Organizações Enterprise podem precisar que um administrador habilite Claude Code na web. Entre em contato com sua equipe de conta Anthropic.235Organizações Enterprise podem precisar que um Proprietário ative Claude Code na web. Entre em contato com sua equipe de conta Anthropic.

220 236 

221<h3 id="/web-setup-says-not-signed-in-to-claude">237<h3 id="/web-setup-says-not-signed-in-to-claude">

222 `/web-setup` diz "Não conectado ao Claude"238 `/web-setup` diz "Não conectado ao Claude"

223</h3>239</h3>

224 240 

225Se `/web-setup` responder com "Não conectado ao Claude. Execute /login primeiro.", a CLI não tem um login válido em claude.ai. Isso também pode acontecer quando um login anterior expirou. Execute `/login`, faça login com sua conta claude.ai e execute `/web-setup` novamente.241Se `/web-setup` responder com "Not signed in to Claude. Run /login first.", o CLI não tem um login válido em claude.ai. Isso também pode acontecer quando um login anterior expirou. Execute `/login`, conecte-se com sua conta claude.ai, depois execute `/web-setup` novamente.

226 242 

227<h3 id="/web-setup-warns-that-your-token-doesn’t-have-the-workflow-scope">243<h3 id="/web-setup-warns-that-your-token-doesn’t-have-the-workflow-scope">

228 `/web-setup` avisa que seu token não tem o escopo `workflow`244 `/web-setup` avisa que seu token não tem o escopo `workflow`

229</h3>245</h3>

230 246 

231Se `/web-setup` disser que seu token da CLI do GitHub não tem o escopo `workflow`, você pode continuar, mas o GitHub pode rejeitar alguns pushes feitos com esse token, como pushes que alteram arquivos de fluxo de trabalho do GitHub Actions. Para adicionar o escopo, execute `gh auth refresh -s workflow` no seu shell e execute `/web-setup` novamente.247Se `/web-setup` disser que seu token do GitHub CLI não tem o escopo `workflow`, você pode continuar, mas GitHub pode rejeitar alguns pushes feitos com esse token, como pushes que alteram arquivos de fluxo de trabalho do GitHub Actions. Para adicionar o escopo, execute `gh auth refresh -s workflow` no seu shell, depois execute `/web-setup` novamente.

232 248 

233<h3 id="web-setup-shows-no-commands-match-or-unknown-command">249<h3 id="web-setup-shows-no-commands-match-or-unknown-command">

234 `/web-setup` mostra "Nenhum comando corresponde" ou "Comando desconhecido"250 `/web-setup` mostra "No commands match" ou "Unknown command"

235</h3>251</h3>

236 252 

237`/web-setup` é executado dentro da CLI do Claude Code, não no seu shell. Inicie `claude` primeiro, depois digite `/web-setup` no prompt.253`/web-setup` é executado dentro do Claude Code CLI, não no seu shell. Inicie `claude` primeiro, depois digite `/web-setup` no prompt.

238 254 

239Se você digitou dentro do Claude Code e o menu de comandos mostra `Nenhum comando corresponde "/web-setup"`, ou enviá-lo retorna `Comando desconhecido: /web-setup`, o comando está oculto porque um requisito não foi atendido. A causa geralmente é que você está autenticado com uma chave de API ou provedor de terceiros em vez de uma assinatura claude.ai. Execute `claude update` para fazer login com sua conta claude.ai.255Se você digitou dentro do Claude Code e o menu de comandos mostra `No commands match "/web-setup"`, ou enviá-lo retorna `Unknown command: /web-setup`, o comando está oculto porque um requisito não é atendido. A causa geralmente é que você está autenticado com uma chave de API ou provedor de terceiros em vez de uma assinatura claude.ai. Execute `/login` para conectar-se com sua conta claude.ai.

240 256 

241No plano Team e Enterprise, o comando está oculto por padrão: a [alternância de configuração rápida da web](/docs/pt/claude-code-on-the-web#github-authentication-options) está desativada até que um administrador a ative. Enquanto estiver desativada, [conecte o GitHub do navegador](#connect-github). O comando também está oculto quando um administrador desabilitou Claude Code na web para sua organização, ou quando sua organização Enterprise tem [Zero Data Retention](/docs/pt/zero-data-retention) habilitado, o que torna Claude Code na web indisponível.257Nos planos Team e Enterprise, o comando está oculto por padrão: a [alternância Quick web setup](/docs/pt/claude-code-on-the-web#github-authentication-options) está desativada até que um Proprietário a ative. Enquanto estiver desativada, [conecte GitHub do navegador](#connect-github). O comando também está oculto quando um administrador desativou Claude Code na web para sua organização, ou quando sua organização Enterprise tem [Zero Data Retention](/docs/pt/zero-data-retention) ativado, o que torna Claude Code na web indisponível.

242 258 

243<h3 id="could-not-create-a-cloud-environment-or-no-cloud-environment-available-when-using-cloud">259<h3 id="could-not-create-a-cloud-environment-or-no-cloud-environment-available-when-using-cloud">

244 "Não foi possível criar um ambiente de nuvem" ou "Nenhum ambiente de nuvem disponível" ao usar `--cloud`260 "Could not create a cloud environment" ou "No cloud environment available" ao usar `--cloud`

245</h3>261</h3>

246 262 

247Os recursos de sessão remota criam um ambiente de nuvem padrão automaticamente se você não tiver um. Se você vir "Não foi possível criar um ambiente de nuvem", a criação automática falhou. Se você vir "Nenhum ambiente de nuvem disponível", sua CLI é anterior à criação automática. Em qualquer caso, execute `/web-setup` na CLI do Claude Code, ou adicione um ambiente a partir do [seletor de ambiente](/docs/pt/cloud-environments#configure-your-environment) em [claude.ai/code](https://claude.ai/code).263Os recursos de sessão remota criam um ambiente em nuvem padrão automaticamente se você não tiver um. Se você vir "Could not create a cloud environment", a criação automática falhou. Se você vir "No cloud environment available", seu CLI é anterior à criação automática. Em qualquer caso, execute `/web-setup` no Claude Code CLI, ou adicione um ambiente do [seletor de ambiente](/docs/pt/cloud-environments#configure-your-environment) em [claude.ai/code](https://claude.ai/code).

248 264 

249<h3 id="setup-script-failed">265<h3 id="setup-script-failed">

250 Script de configuração falhou266 Script de configuração falhou


252 268 

253O script de configuração saiu com um status diferente de zero, o que bloqueia o início da sessão. Causas comuns:269O script de configuração saiu com um status diferente de zero, o que bloqueia o início da sessão. Causas comuns:

254 270 

255* Uma instalação de pacote falhou porque o registro não está no seu [nível de acesso à rede](/docs/pt/cloud-environments#access-levels). `Trusted` cobre a maioria dos gerenciadores de pacotes; `None` bloqueia todos.271* Uma instalação de pacote falhou porque o registro não está no seu [nível de acesso à rede](/docs/pt/cloud-environments#access-levels). `Trusted` cobre a maioria dos gerenciadores de pacotes; `None` bloqueia todos eles.

256* O script faz referência a um arquivo ou caminho que não existe em um clone novo.272* O script faz referência a um arquivo ou caminho que não existe em um clone recente.

257* Um comando que funciona localmente precisa de uma invocação diferente no Ubuntu.273* Um comando que funciona localmente precisa de uma invocação diferente no Ubuntu.

258 274 

259Para depurar, adicione `set -x` no topo do script para ver qual comando falhou. Para comandos não críticos, acrescente `|| true` para que não bloqueiem o início da sessão.275Para depurar, adicione `set -x` no topo do script para ver qual comando falhou. Para comandos não críticos, anexe `|| true` para que não bloqueiem o início da sessão.

260 276 

261<h3 id="new-sessions-hang-or-time-out-during-setup">277<h3 id="new-sessions-hang-or-time-out-during-setup">

262 Novas sessões travam ou expiram durante a configuração278 Novas sessões travam ou expiram durante a configuração

263</h3>279</h3>

264 280 

265Se novas sessões ficarem presas na etapa do script de configuração ou falharem com um erro genérico de contêiner antes do script terminar, o script provavelmente está excedendo o orçamento de tempo de aproximadamente cinco minutos para construir o [cache de ambiente](/docs/pt/cloud-environments#environment-caching). Etapas pesadas como puxar imagens Docker grandes, sincronizar árvores de dependência completas ou baixar pesos de modelo frequentemente empurram o total além do limite, especialmente quando são executadas uma após a outra.281Se novas sessões ficarem presas na etapa do script de configuração ou falharem com um erro genérico de contêiner antes do script terminar, o script provavelmente está excedendo o orçamento de tempo de aproximadamente cinco minutos para construir o [cache de ambiente](/docs/pt/cloud-environments#environment-caching). Etapas pesadas, como puxar imagens Docker grandes, sincronizar árvores de dependência completas ou baixar pesos de modelo, geralmente ultrapassam o limite, especialmente quando são executadas uma após a outra.

266 282 

267Para corrigir isso, reduza o script para que ele termine de forma confiável em menos de cinco minutos:283Para corrigir isso, reduza o script para que ele termine de forma confiável em menos de cinco minutos:

268 284 

269* Execute instalações independentes em paralelo com `&` e um `wait` final em vez de executá-las serialmente.285* Execute instalações independentes em paralelo com `&` e um `wait` final em vez de executá-las em série.

270* Mova os maiores downloads para fora do script de configuração e para um [hook SessionStart](/docs/pt/cloud-environments#setup-scripts-vs-sessionstart-hooks) que os inicia em segundo plano, para que a sessão se torne utilizável enquanto eles terminam.286* Mova os maiores downloads para fora do script de configuração e para um [hook SessionStart](/docs/pt/cloud-environments#setup-scripts-vs-sessionstart-hooks) que os inicia em segundo plano, para que a sessão se torne utilizável enquanto eles terminam.

271* Remova longas tentativas de sono do script de configuração, pois um loop de tentativa travado conta contra o orçamento.287* Remova longas suspensões de repetição do script de configuração, pois um loop de repetição travado conta contra o orçamento.

272 288 

273<h3 id="session-keeps-running-after-closing-the-tab">289<h3 id="session-keeps-running-after-closing-the-tab">

274 A sessão continua funcionando após fechar a aba290 A sessão continua em execução após fechar a aba

275</h3>291</h3>

276 292 

277Isso é por design. Fechar a aba ou navegar para longe não interrompe a sessão. Ela continua funcionando em segundo plano até Claude terminar a tarefa atual, depois fica ociosa. Na barra lateral, você pode [arquivar uma sessão](/docs/pt/claude-code-on-the-web#archive-sessions) para ocultá-la de sua lista, ou [deletá-la](/docs/pt/claude-code-on-the-web#delete-sessions) para removê-la permanentemente.293Isso é por design. Fechar a aba ou navegar para longe não interrompe a sessão. Ela continua em execução em segundo plano até que Claude termine a tarefa atual, depois fica ociosa. Na barra lateral, você pode [arquivar uma sessão](/docs/pt/claude-code-on-the-web#archive-sessions) para ocultá-la da sua lista, ou [deletá-la](/docs/pt/claude-code-on-the-web#delete-sessions) para removê-la permanentemente.

278 294 

279<h2 id="next-steps">295<h2 id="next-steps">

280 Próximos passos296 Próximos passos

whats-new/2026-w29.md +70 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Semana 29 · 13–17 de julho de 2026

6 

7> Puxe dados ao vivo para artefatos publicados através de conectores MCP e use Claude Code com um leitor de tela no novo modo de leitor de tela.

8 

9<div className="digest-meta">

10 <span>Lançamentos <a href="/docs/en/changelog#2-1-207">v2.1.207 → v2.1.212</a></span>

11 <span>2 recursos · 13–17 de julho</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Artefatos chamam seus conectores MCP</span>

17 <span className="digest-feature-pill">web</span>

18 </div>

19 

20 <p className="digest-feature-lede">Um artefato publicado agora pode chamar conectores MCP cada vez que alguém o visualiza, para que um painel mostre dados ao vivo e possa executar ações sob demanda em vez de um instantâneo da sessão que o construiu. Cada chamada é executada através das próprias conexões da conta que visualiza, e os visualizadores aprovam o acesso antes da primeira chamada do conector da página. Esta semana também adiciona links de compartilhamento público, funções de editor para edição compartilhada nos planos Team e Enterprise, e artefatos criados a partir de sessões Claude Tag.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/ItzF3QVI6L0QypjJ/images/whats-new/artifacts-mcp.mp4?fit=max&auto=format&n=ItzF3QVI6L0QypjJ&q=85&s=ff8b81ed52b26c773899dc28cec959e6" data-path="images/whats-new/artifacts-mcp.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Nomeie o conector e os dados que você deseja em seu prompt:</p>

27 

28 ```text title="Claude Code" wrap theme={null}

29 Build a dashboard artifact of open pull requests that pulls the live list through my GitHub connector when the page loads.

30 ```

31 

32 <a className="digest-feature-link" href="/docs/pt/artifacts#pull-live-data-with-mcp-connectors">Puxe dados ao vivo com conectores MCP</a>

33</div>

34 

35<div className="digest-feature">

36 <div className="digest-feature-header">

37 <span className="digest-feature-title">Modo de leitor de tela</span>

38 <span className="digest-feature-pill">CLI</span>

39 </div>

40 

41 <p className="digest-feature-lede">O modo de leitor de tela substitui a interface visual do terminal por texto simples e linear: em vez de caixas, spinners e redesenhos no local, Claude Code imprime linhas rotuladas que um leitor de tela como VoiceOver ou NVDA lê em ordem, para que você possa aprovar permissões e revisar a saída de ponta a ponta. Ative-o por sessão com um sinalizador, por shell com a variável de ambiente <code>CLAUDE\_AX\_SCREEN\_READER</code>, ou em todos os lugares com a configuração <code>axScreenReader</code>.</p>

42 

43 <p className="digest-feature-try">Inicie uma sessão no modo de leitor de tela:</p>

44 

45 ```bash terminal theme={null}

46 claude --ax-screen-reader

47 ```

48 

49 <a className="digest-feature-link" href="/docs/pt/accessibility#turn-on-screen-reader-mode">Ative o modo de leitor de tela</a>

50</div>

51 

52<div className="digest-wins">

53 <p className="digest-wins-title">Outras vitórias</p>

54 

55 <div className="digest-wins-grid">

56 <div><code>/fork</code> agora copia sua conversa em uma nova sessão em segundo plano com sua própria linha em <code>claude agents</code> enquanto você continua trabalhando; o subagente bifurcado em sessão que costumava ser lançado agora é <code>/subtask</code></div>

57 <div><a href="/docs/pt/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry">Modo automático</a> não precisa mais da aceitação <code>CLAUDE\_CODE\_ENABLE\_AUTO\_MODE</code> no Amazon Bedrock, na Plataforma de Agentes do Google Cloud e no Microsoft Foundry; administradores podem desativá-lo com <code>disableAutoMode</code></div>

58 <div>Chamadas de ferramenta MCP que são executadas por mais de dois minutos agora se movem para o segundo plano automaticamente para que a sessão permaneça utilizável; ajuste ou desative o limite com <code>CLAUDE\_CODE\_MCP\_AUTO\_BACKGROUND\_MS</code></div>

59 <div>Novo <code>claude auto-mode reset</code> restaura a configuração padrão do modo automático, e `--yes` pula o prompt de confirmação</div>

60 <div>Novo suporte a <a href="/docs/pt/corporate-launcher">inicializador corporativo</a>: <code>CLAUDE\_CODE\_PROCESS\_WRAPPER</code> ou a configuração <code>processWrapper</code> executa os processos que Claude Code inicia a partir de seu próprio binário, como o serviço em segundo plano e sessões de visualização de agentes, através de um executável wrapper obrigatório</div>

61 <div>A configuração <code>vimInsertModeRemaps</code> mapeia sequências de modo de inserção de duas teclas como <code>jj</code> para Escape no modo vim</div>

62 <div>`--forward-subagent-text` e <code>CLAUDE\_CODE\_FORWARD\_SUBAGENT\_TEXT</code> incluem texto de subagente e blocos de pensamento em <a href="/docs/pt/headless">saída stream-json</a></div>

63 <div>Limites em toda a sessão interrompem loops descontrolados: chamadas WebSearch e spawns de subagente têm cada um o padrão de 200, ajustáveis com <code>CLAUDE\_CODE\_MAX\_WEB\_SEARCHES\_PER\_SESSION</code> e <code>CLAUDE\_CODE\_MAX\_SUBAGENTS\_PER\_SESSION</code></div>

64 <div>Regras de permissão "Sempre permitir" são salvas na raiz do repositório, para que as aprovações concedidas em um git worktree persistam entre sessões e worktrees</div>

65 <div>Amazon Bedrock, Plataforma de Agentes do Google Cloud e Claude Platform na AWS agora usam Claude Opus 4.8 como padrão</div>

66 <div>A linha de resumo de ferramenta recolhida mostra um contador de tempo decorrido ao vivo, para que chamadas de ferramenta de longa duração fiquem visivelmente marcadas em vez de parecerem travadas</div>

67 </div>

68</div>

69 

70[Changelog completo para v2.1.207–v2.1.212 →](/docs/en/changelog#2-1-207)

whats-new/2026-w30.md +91 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Semana 30 · 20–24 de julho de 2026

6 

7> Opus 5 torna-se o modelo Opus padrão, Claude Code Desktop adiciona um painel iOS Simulator, e o plugin Claude Security verifica seu código em busca de vulnerabilidades.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/docs/en/changelog#2-1-214">v2.1.214 → v2.1.219</a></span>

11 <span>3 recursos · 20–24 de julho</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Opus 5</span>

17 <span className="digest-feature-pill">novo modelo</span>

18 </div>

19 

20 <p className="digest-feature-lede">Claude Opus 5 é o novo modelo Opus padrão no Claude Code. É o padrão no Max, Team Premium, Enterprise pay-as-you-go, e na API Anthropic, e na Claude Platform no AWS, Amazon Bedrock e Agent Platform do Google Cloud. Na API Anthropic e nos planos Max, Team e Enterprise, Opus 5 é executado com uma <a href="/docs/pt/model-config#extended-context">janela de contexto de 1M tokens</a>; no Amazon Bedrock e Agent Platform do Google Cloud, selecione a variante de modelo 1M. Fast mode passa para Opus 5 a \$10/\$50 por MTok. Requer v2.1.219 ou posterior.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/opus-5.mp4?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=8536b1cb3180e539008f39930403e47b" data-path="images/whats-new/opus-5.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Mude para Opus 5 pelo nome, ou escolha-o no seletor de modelo:</p>

27 

28 ```text Claude Code theme={null}

29 > /model claude-opus-5

30 ```

31 

32 <a className="digest-feature-link" href="/docs/pt/model-config#available-models">Configuração de modelo</a>

33</div>

34 

35<div className="digest-feature">

36 <div className="digest-feature-header">

37 <span className="digest-feature-title">iOS Simulator no Claude Code Desktop</span>

38 <span className="digest-feature-pill">Desktop</span>

39 </div>

40 

41 <p className="digest-feature-lede">Claude Code Desktop no macOS recebe um painel iOS Simulator, em beta público nos planos Pro, Max e Team. Quando Claude constrói, inicia ou verifica seu aplicativo em um simulador, o painel abre ao lado da conversa e transmite a tela do dispositivo em tempo real, para que você possa observar Claude tocar no aplicativo para verificar suas alterações ou controlar o dispositivo você mesmo. Requer Xcode com a plataforma iOS instalada, e Claude Desktop v1.24012.0 ou posterior.</p>

42 

43 <Frame>

44 <img className="w-full" src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/ios-simulator.jpg?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=6c88418ed14ed0fb12cc1af75b17f2ee" alt="Claude Code Desktop com o painel iOS Simulator mostrando um aplicativo iPhone ao lado da conversa" width="2048" height="1152" data-path="images/whats-new/ios-simulator.jpg" />

45 </Frame>

46 

47 <p className="digest-feature-try">Peça ao Claude para executar ou testar seu aplicativo, e o painel abre quando o aplicativo é iniciado:</p>

48 

49 ```text Claude Code theme={null}

50 > Build the app and run it in the simulator to check the onboarding flow.

51 ```

52 

53 <a className="digest-feature-link" href="/docs/pt/desktop-ios-simulator#run-your-app-in-the-simulator">Teste aplicativos iOS no simulador</a>

54</div>

55 

56<div className="digest-feature">

57 <div className="digest-feature-header">

58 <span className="digest-feature-title">Plugin Claude Security</span>

59 <span className="digest-feature-pill">plugin</span>

60 </div>

61 

62 <p className="digest-feature-lede">O plugin Claude Security executa uma verificação de vulnerabilidade multi-agente de sua base de código dentro de uma sessão Claude Code: agentes mapeiam sua arquitetura, constroem um modelo de ameaça, procuram vulnerabilidades e revisam independentemente cada descoberta antes de escrever o relatório em um diretório <code>CLAUDE-SECURITY-\<timestamp>/</code>. Verifique um repositório inteiro ou apenas o diff de uma branch, um pull request ou um único commit, depois transforme as descobertas que você escolher em patches revisados que você aplica você mesmo.</p>

63 

64 <p className="digest-feature-try">Instale o plugin do marketplace oficial Anthropic, execute <code>/reload-plugins</code>, depois inicie uma verificação com <code>/claude-security</code>:</p>

65 

66 ```text Claude Code theme={null}

67 > /plugin install claude-security@claude-plugins-official

68 ```

69 

70 <a className="digest-feature-link" href="/docs/pt/claude-security#scan-and-fix-your-codebase">Verifique e corrija sua base de código</a>

71</div>

72 

73<div className="digest-wins">

74 <p className="digest-wins-title">Outras melhorias</p>

75 

76 <div className="digest-wins-grid">

77 <div><a href="/docs/pt/code-review#review-a-diff-locally"><code>/code-review</code></a> agora é executado como um subagente em background com sua própria janela de contexto, para que o trabalho de revisão fique fora de sua conversa e as descobertas cheguem quando ele é concluído</div>

78 <div><code>/verify</code>, <code>/code-review</code> e <code>/deep-research</code> são executados apenas quando você os invoca; Claude não os inicia mais por conta própria</div>

79 <div><a href="/docs/pt/interactive-mode#emoji-shortcodes">Códigos de emoji</a> preenchem automaticamente na entrada de prompt: digite <code>:heart:</code> para inserir um emoji, ou dois ou mais caracteres após <code>:</code> para sugestões; desative com <code>emojiCompletionEnabled</code></div>

80 <div>Skills com <code>context: fork</code> <a href="/docs/pt/skills#run-skills-in-a-subagent">são executadas em background</a> por padrão, e <code>background: false</code> no frontmatter da skill aguarda o resultado na mesma volta</div>

81 <div>Uma sessão executa até 20 subagentes simultaneamente por padrão; altere o <a href="/docs/pt/sub-agents#concurrent-subagent-limit">limite</a> com <code>CLAUDE\_CODE\_MAX\_CONCURRENT\_SUBAGENTS</code></div>

82 <div>`--max-budget-usd` agora impõe o limite em subagentes: uma vez que o gasto o atinge, Claude não pode iniciar mais e os subagentes em execução em background param</div>

83 <div>Nova configuração <a href="/docs/pt/sandboxing#disable-filesystem-isolation"><code>sandbox.filesystem.disabled</code></a> pula isolamento do sistema de arquivos mantendo controle de saída de rede</div>

84 <div>No modo auto, as verificações de comandos <code>rm</code> perigosos, trabalhos em background e caminhos Windows suspeitos não abrem mais diálogos de permissão; o classificador de modo automático os adjudica</div>

85 <div>As verificações de permissão Bash falham fechadas em mais formas de shell, incluindo redirecionamentos de descritor de arquivo, subscritos de variável Zsh em comparações <code>\[\[ ]]</code>, invocações de <code>help</code> e <code>man</code> que poderiam executar opções inseguras, e comandos com mais de 10.000 caracteres</div>

86 <div><a href="/docs/pt/fast-mode">Fast mode</a> não suporta mais Opus 4.7: <code>/fast</code> agora se aplica a Opus 5 e Opus 4.8</div>

87 <div>Chamadas de ferramenta de longa duração emitem um heartbeat de progresso periódico em vez de ficar silencioso</div>

88 </div>

89</div>

90 

91[Changelog completo para v2.1.214–v2.1.219 →](/docs/en/changelog#2-1-214)

whats-new/2026-w32.md +103 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Semana 32 · 3–7 de agosto de 2026

6 

7> As sessões do Claude Code se comunicam entre si, ambientes auto-hospedados executam sessões em nuvem em sua infraestrutura, e o modo automático se torna o modo de permissão padrão.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/docs/en/changelog#2-1-220">v2.1.220 → v2.1.224</a></span>

11 <span>3 recursos · 3–7 de agosto</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Mensagens entre sessões</span>

17 <span className="digest-feature-pill">v2.1.224</span>

18 </div>

19 

20 <p className="digest-feature-lede">Suas sessões do Claude Code agora podem se comunicar entre si. Claude descobre suas outras sessões com a ferramenta <code>ListAgents</code> e envia com <code>SendMessage</code>, seja quando você pede ou por conta própria, como após uma mudança em uma sessão afetar o que outra está trabalhando. Uma mensagem é um texto que Claude escreve para a outra sessão, nunca seu histórico de conversa ou arquivos. Disponível em macOS e Linux. Requer v2.1.224 ou posterior.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/cross-session-messaging.mp4?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=8f33c3390f78660a4a26dc980f46159f" data-path="images/whats-new/cross-session-messaging.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Com duas sessões abertas na mesma máquina, peça a uma delas para passar algo adiante:</p>

27 

28 ```text title="Claude Code" wrap theme={null}

29 Tell the session working on the payments API that users.name is now users.display_name

30 ```

31 

32 <p className="digest-feature-try">A outra sessão mostra uma linha <code>Message from</code> assim que Claude lê a mensagem; pressione <code>Ctrl+O</code> para expandi-la. Para ver quais sessões Claude pode alcançar, execute <code>/list-agents</code>.</p>

33 

34 <a className="digest-feature-link" href="/docs/pt/cross-session-messaging#message-another-session">Enviar mensagem para outra sessão</a>

35</div>

36 

37<div className="digest-feature">

38 <div className="digest-feature-header">

39 <span className="digest-feature-title">Ambientes auto-hospedados</span>

40 <span className="digest-feature-pill">v2.1.224</span>

41 </div>

42 

43 <p className="digest-feature-lede">Ambientes auto-hospedados executam sessões em nuvem do Claude Code na infraestrutura própria da sua organização, em beta público nos planos Team e Enterprise. Execute <code>claude self-hosted-runner</code> em suas máquinas ou contêineres para transformá-los em runners. Quando alguém escolhe seu ambiente ao iniciar uma sessão a partir de claude.ai, dos aplicativos móvel ou desktop, ou `claude --cloud`, essa sessão é executada dentro de sua rede, com acesso aos seus serviços internos. Um Owner ativa <strong>Allow self-hosted environments</strong> em <a href="https://claude.ai/admin-settings/cloud-environments">configurações de administrador</a> primeiro.</p>

44 

45 <Frame>

46 <img className="w-full" src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/self-hosted-environments.jpg?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=ae9152cb1670c8af517d1aee57689b14" alt="A página de administrador de ambientes auto-hospedados listando ambientes como linux-dev e macos-prod com seu status e contagens de sessões ativas" width="2048" height="1152" data-path="images/whats-new/self-hosted-environments.jpg" />

47 </Frame>

48 

49 <p className="digest-feature-try">Conectado como um Owner, execute a configuração guiada, que o orienta na criação do ambiente e inicia um runner:</p>

50 

51 ```bash terminal theme={null}

52 claude self-hosted-runner setup

53 ```

54 

55 <p className="digest-feature-try">O ambiente mostra <strong>Healthy</strong> nas configurações de administrador assim que o runner se registra.</p>

56 

57 <a className="digest-feature-link" href="/docs/pt/self-hosted-environments-quickstart#set-up-an-environment-and-runner">Guia rápido de ambientes auto-hospedados</a>

58</div>

59 

60<div className="digest-feature">

61 <div className="digest-feature-header">

62 <span className="digest-feature-title">Modo automático se torna o padrão</span>

63 <span className="digest-feature-pill">CLI</span>

64 </div>

65 

66 <p className="digest-feature-lede">A partir de 14 de agosto, o modo automático é o modo de permissão padrão para novas sessões nos planos Pro, Max e Team. Se você definir um modo padrão por conta própria, ele permanece em vigor a menos que você aceite o prompt de alternância única, e um padrão que sua organização gerencia não muda. Você ainda pode alternar modos a qualquer momento. Já em vigor nesses planos: as chamadas do classificador que o modo automático faz não contam mais para seus limites de uso.</p>

67 

68 <p className="digest-feature-try">Para iniciar cada sessão em modo automático antes da alternância, defina-o como padrão em suas configurações de usuário:</p>

69 

70 ```json ~/.claude/settings.json {3} theme={null}

71 {

72 "permissions": {

73 "defaultMode": "auto"

74 }

75 }

76 ```

77 

78 <p className="digest-feature-try">Novas sessões então mostram <code>auto mode on</code> na barra de status.</p>

79 

80 <a className="digest-feature-link" href="/docs/pt/permission-modes#eliminate-prompts-with-auto-mode">Requisitos e controles do modo automático</a>

81</div>

82 

83<div className="digest-wins">

84 <p className="digest-wins-title">Outras melhorias</p>

85 

86 <div className="digest-wins-grid">

87 <div>A extensão VS Code recebe <a href="/docs/pt/vs-code#extension-settings">Focus view</a>, que oculta a atividade de ferramentas atrás de uma linha expansível por turno; alterne-a no menu de comandos ou com <code>Ctrl+Alt+F</code> (<code>Ctrl+Option+F</code> no Mac)</div>

88 <div>Arquivos de credenciais de sandbox aceitam <a href="/docs/pt/sandboxing#mask-credential-files"><code>mode: "mask"</code></a> em Linux e WSL2, para que comandos em sandbox leiam uma cópia sentinela enquanto o proxy de sandbox substitui o valor real na saída; o mascaramento de credenciais também ganha opções <code>extract</code>, <code>decode</code> com reconhecimento de JWT e re-assinatura AWS SigV4</div>

89 <div>Marketplaces podem distribuir um plugin como um <a href="/docs/pt/plugin-marketplaces#zip-archives">arquivo zip</a> com a nova fonte <code>archive</code>, baixado via HTTPS com um pin SHA-256 opcional, para que as instalações funcionem sem git ou npm</div>

90 <div><code>/review</code> agora é um alias de <a href="/docs/pt/code-review#review-a-diff-locally"><code>/code-review</code></a>, e <code>/code-review</code> sem nível de esforço reutiliza o nível que você digitou por último</div>

91 <div>Uma sessão que você copia com <a href="/docs/pt/agent-view#copy-the-session-with-%2Ffork"><code>/fork</code></a> agora faz suas alterações de código em uma worktree própria em vez do checkout da sessão original</div>

92 <div>Plugins que você instala a partir de <a href="/docs/pt/discover-plugins#install-plugins"><code>/plugin</code></a> são ativados na sessão atual quando é seguro fazer isso; o resumo de instalação relata <code>Plugin is now active.</code> ou diz para você executar <code>/reload-plugins</code></div>

93 <div><a href="/docs/pt/agent-view#how-file-edits-are-isolated">Sessões em segundo plano</a> que alteraram código em uma worktree agora fazem commit e push antes de terminar, abrem uma solicitação de pull em rascunho apenas quando a tarefa exige, e seguem as instruções git em seu <code>CLAUDE.md</code></div>

94 <div>O limite de 200 subagentes por sessão é removido, para que sessões de longa duração não recusem mais novos subagentes; os limites de <a href="/docs/pt/sub-agents#concurrent-subagent-limit">concorrência</a> e profundidade ainda se aplicam</div>

95 <div>As configurações verificadas de um repositório não podem mais ativar <a href="/docs/pt/remote-control#enable-remote-control-for-all-sessions">Conexão automática de Controle Remoto</a>; defina <code>remoteControlAtStartup</code> em suas configurações de usuário ou gerenciadas, e as configurações de projeto e local podem apenas desativá-lo</div>

96 <div><a href="/docs/pt/worktrees#how-claude-code-enforces-isolation">Isolamento de worktree</a> agora bloqueia não apenas edições de arquivo, mas também comandos Bash e redirecionamentos git que alcançam o checkout principal, em todos os tipos de sessão e nos subagentes da sessão</div>

97 <div>Um comando Bash não pode mais ocultar parte de si mesmo das verificações de permissão, e preenchimento com tabulação ou Unicode invisível não oculta mais parte de um comando do diálogo de aprovação</div>

98 <div>Hooks de auto-permissão PreToolUse não contornam mais restrições de ferramentas nas tarefas internas do Claude Code, como resumos e compactação</div>

99 <div>A visualização de pesquisa <a href="/docs/pt/ultraplan">Ultraplan</a> é removida, incluindo o comando <code>/ultraplan</code> e a palavra-chave <code>ultraplan</code>; use o modo de plano ou Claude Code na web</div>

100 </div>

101</div>

102 

103[Changelog completo para v2.1.220–v2.1.224 →](/docs/en/changelog#2-1-220)

whats-new/2026-w33.md +87 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Semana 33 · 10–14 de agosto de 2026

6 

7> Claude Code Desktop continua automaticamente após um limite de uso ser redefinido, o modo fork ativa por padrão, e as solicitações de merge do GitLab e marketplaces se juntam ao GitHub.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/docs/en/changelog#2-1-225">v2.1.225 → v2.1.233</a></span>

11 <span>3 recursos · 10–14 de agosto</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Continuação automática após um limite de uso no Desktop</span>

17 <span className="digest-feature-pill">Desktop</span>

18 </div>

19 

20 <p className="digest-feature-lede">Quando você atinge seu limite de sessão na aba Code do Claude Code Desktop, o cartão de limite agora oferece uma caixa de seleção <strong>Continuar automaticamente quando os limites forem redefinidos</strong>. Marque-a e o aplicativo Desktop tenta novamente a volta interrompida após a redefinição. O cartão mostra a hora da tentativa. O cartão de limite semanal não oferece essa opção.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/2SnAdpL4dJ18nKb3/images/whats-new/desktop-auto-continue.mp4?fit=max&auto=format&n=2SnAdpL4dJ18nKb3&q=85&s=1937f489695feaea715e48ecfd7e62cd" data-path="images/whats-new/desktop-auto-continue.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Na próxima vez que um cartão de limite de sessão aparecer, marque <strong>Continuar automaticamente quando os limites forem redefinidos</strong> e deixe a sessão aberta. O cartão mostra <code>Auto-resuming at</code> seguido pela hora da redefinição, e a volta continua por conta própria assim que o limite é redefinido.</p>

27 

28 <a className="digest-feature-link" href="/docs/pt/errors#youve-hit-your-session-limit">O que fazer quando você atinge um limite de uso</a>

29</div>

30 

31<div className="digest-feature">

32 <div className="digest-feature-header">

33 <span className="digest-feature-title">Fork mode ativado por padrão</span>

34 <span className="digest-feature-pill">v2.1.232</span>

35 </div>

36 

37 <p className="digest-feature-lede">O fork mode agora está ativado por padrão em sessões interativas. Claude pode solicitar o tipo de subagente <code>fork</code>, que herda a conversa completa e o cache de prompt em vez de começar do zero, para que você não precise re-explicar o contexto para uma tarefa secundária. Os subagentes que Claude gera em sessões interativas, exceto os que um colega de equipe de agentes gera, também são executados em segundo plano por padrão.</p>

38 

39 <p className="digest-feature-try">Inicie um fork você mesmo com uma tarefa que precisa de tudo o que você discutiu até agora:</p>

40 

41 ```text Claude Code theme={null}

42 > /subtask draft unit tests for the parser changes so far

43 ```

44 

45 <p className="digest-feature-try">O fork aparece no painel abaixo do seu prompt e seu resultado chega na sua conversa quando termina. Para desativar o fork mode, defina <code>CLAUDE\_CODE\_FORK\_SUBAGENT=0</code>.</p>

46 

47 <a className="digest-feature-link" href="/docs/pt/sub-agents#turn-fork-mode-on-or-off">Ativar ou desativar o fork mode</a>

48</div>

49 

50<div className="digest-feature">

51 <div className="digest-feature-header">

52 <span className="digest-feature-title">Solicitações de merge do GitLab e marketplaces</span>

53 <span className="digest-feature-pill">v2.1.232</span>

54 </div>

55 

56 <p className="digest-feature-lede">Os marketplaces de plugins clonam URLs <code>gitlab.com</code> simples, incluindo subgrupos aninhados. Na v2.1.233 ou posterior, passe uma URL de solicitação de merge do GitLab para <code>--worktree</code> para fazer branch a partir dela, e a visualização <code>claude agents</code> rotula sessões vinculadas a uma solicitação de merge como <code>!N</code>. Claude Code também oculta famílias de tokens do GitLab como <code>glpat-</code> e <code>glrt-</code>, e protege o armazenamento de configuração da CLI <code>glab</code> da mesma forma que protege <code>gh</code>.</p>

57 

58 <p className="digest-feature-try">Inicie uma sessão em um worktree com branch a partir de uma solicitação de merge:</p>

59 

60 ```bash terminal theme={null}

61 claude --worktree https://gitlab.com/group/project/-/merge_requests/42

62 ```

63 

64 <p className="digest-feature-try">Quando <code>origin</code> está em gitlab.com, Claude Code busca <code>merge-requests/42/head</code> e abre a sessão nesse branch em seu próprio worktree.</p>

65 

66 <a className="digest-feature-link" href="/docs/pt/worktrees#branch-from-a-pull-request">Fazer branch de um worktree a partir de uma solicitação de pull ou merge</a>

67</div>

68 

69<div className="digest-wins">

70 <p className="digest-wins-title">Outras vitórias</p>

71 

72 <div className="digest-wins-grid">

73 <div>Digite <code>@</code> no prompt para <a href="/docs/pt/cross-session-messaging#message-another-session">mencionar outra sessão do Claude</a> pelo nome, e Claude a mensageia diretamente com <code>SendMessage</code>; um nome simples que corresponde exatamente a uma sessão ativa agora é entregue sem uma etapa de confirmação</div>

74 <div>Sessões interativas em uma máquina mantêm <a href="/docs/pt/cross-session-messaging#see-which-sessions-claude-can-reach">nomes únicos</a>: se você iniciar ou renomear uma sessão com um nome que outra sessão ativa já usa, Claude Code oferece uma variante <code>name-word-word</code> para a sua e avisa você</div>

75 <div>Os marketplaces de plugins aceitam <a href="/docs/pt/plugin-marketplaces#command-sources">fontes de <code>command</code></a>: um comando local imprime o diretório do plugin, que Claude Code re-resolve a cada sessão e aplica sem uma reinicialização</div>

76 <div>No Linux e WSL, defina <a href="/docs/pt/tools-reference#memory-limit-on-linux-and-wsl"><code>CLAUDE\_CODE\_TOOL\_MEMORY\_LIMIT</code></a> para um tamanho como <code>4G</code> para limitar a memória que os comandos da ferramenta Bash e PowerShell podem usar</div>

77 <div>As ferramentas de rastreamento de tarefas, como <code>TaskCreate</code>, <code>TaskUpdate</code> e <code>TodoWrite</code>, <a href="/docs/pt/tools-reference#task-tool-availability">não estão mais disponíveis no Opus 4.8, Sonnet 5, Fable 5, Mythos 5 e modelos posteriores nessas famílias</a>; defina <code>CLAUDE\_CODE\_ENABLE\_TODO\_TOOLS=1</code> para reativá-las</div>

78 <div><a href="/docs/pt/code-review#review-a-diff-locally"><code>/code-review</code></a> em esforço alto, xhigh e máximo agora é executado em um agente de fundo como os outros níveis</div>

79 <div><a href="/docs/pt/discover-plugins#install-plugins"><code>/plugin install plugin\@marketplace</code></a> atualiza o marketplace primeiro, para que plugins recém-publicados sejam instalados sem uma atualização manual do marketplace</div>

80 <div>As configurações aceitam <a href="/docs/pt/settings-reference#marketplace-key-aliases"><code>additionalMarketplaces</code> e <code>allowedMarketplaces</code></a> como aliases para <code>extraKnownMarketplaces</code> e <code>strictKnownMarketplaces</code></div>

81 <div>Em modelos mais novos, Claude pode <a href="/docs/pt/tools-reference#write-tool-behavior">sobrescrever um arquivo existente com a ferramenta Write</a> sem lê-lo primeiro nesta sessão, correspondendo às regras da ferramenta Edit; modelos mais antigos exigem a leitura</div>

82 <div>A extensão VS Code pode <a href="/docs/pt/vs-code#organize-sessions-into-groups">organizar a lista de sessões em grupos</a>: clique com o botão direito para criar, renomear ou excluir um grupo, e Cmd/Ctrl- ou Shift-clique para mover várias sessões de uma vez</div>

83 <div>Se sua organização roteia Claude Code através de um <a href="/docs/pt/claude-apps-gateway-spend-limits">gateway de aplicativos Claude com limites de gastos</a>, Claude Code mostra o período de limite, sua hora de redefinição e a mensagem do operador quando você atinge o limite</div>

84 </div>

85</div>

86 

87[Changelog completo para v2.1.225–v2.1.233 →](/docs/en/changelog#2-1-225)

whats-new/2026-w34.md +105 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Semana 34 · 17–21 de agosto de 2026

6 

7> Crie artboards de UI editáveis com a skill /design, defina o estilo de saída Concise e inicie uma sessão Claude Code na sua máquina a partir do seu telefone.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/docs/en/changelog#2-1-234">v2.1.234 → v2.1.239</a></span>

11 <span>3 recursos · 17–21 de agosto</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">/design</span>

17 <span className="digest-feature-pill">research preview</span>

18 </div>

19 

20 <p className="digest-feature-lede">A skill <code>/design</code> traz o fluxo de trabalho de artboards do Claude Design para o CLI e Claude Code Desktop, construído em artifacts. Execute-a com um briefing e Claude publica uma tela de artboards editáveis para sua UI. Escolha um, ajuste-o e depois peça a Claude para implementá-lo. Disponível em Pro, Max, Team e Enterprise. Requer v2.1.234 ou posterior.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/2SnAdpL4dJ18nKb3/images/whats-new/design-skill.mp4?fit=max&auto=format&n=2SnAdpL4dJ18nKb3&q=85&s=0b376a94227c14a4204af89c4c9fd7ac" data-path="images/whats-new/design-skill.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Descreva o que você quer projetar e deixe Claude elaborar as opções:</p>

27 

28 ```text Claude Code theme={null}

29 > /design redesign the composer based on what people actually use it for

30 ```

31 

32 <p className="digest-feature-try">Claude imprime um link para a tela publicada. Abra-a, escolha um artboard e diga a Claude qual opção implementar.</p>

33 

34 <a className="digest-feature-link" href="/docs/pt/artifacts#availability">Onde os artifacts estão disponíveis</a>

35</div>

36 

37<div className="digest-feature">

38 <div className="digest-feature-header">

39 <span className="digest-feature-title">Estilo de saída Concise</span>

40 <span className="digest-feature-pill">v2.1.237</span>

41 </div>

42 

43 <p className="digest-feature-lede">Concise é um novo estilo de saída integrado. Claude começa com o resultado e pula o preâmbulo e narração, enquanto faz o trabalho tão completamente quanto no estilo Default. Quando você pede uma explicação ou mais detalhes, Claude responde completamente. Relatórios de erro, avisos de segurança e confirmações para ações destrutivas mantêm seu conteúdo completo.</p>

44 

45 <Frame>

46 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/2SnAdpL4dJ18nKb3/images/whats-new/concise-output-style.mp4?fit=max&auto=format&n=2SnAdpL4dJ18nKb3&q=85&s=dfb40ec8921ed1bc82eb629042a8ec17" data-path="images/whats-new/concise-output-style.mp4" />

47 </Frame>

48 

49 <p className="digest-feature-try">Ative-o em <strong>Output style</strong> em <code>/config</code>, ou defina-o no seu arquivo de configurações:</p>

50 

51 ```json ~/.claude/settings.json {2} theme={null}

52 {

53 "outputStyle": "Concise"

54 }

55 ```

56 

57 <p className="digest-feature-try">Execute <code>/clear</code> ou inicie uma nova sessão, e as respostas de Claude começarão com o resultado.</p>

58 

59 <a className="digest-feature-link" href="/docs/pt/output-styles#built-in-output-styles">Estilos de saída integrados</a>

60</div>

61 

62<div className="digest-feature">

63 <div className="digest-feature-header">

64 <span className="digest-feature-title">Inicie uma sessão na sua máquina a partir do seu telefone</span>

65 <span className="digest-feature-pill">mobile</span>

66 </div>

67 

68 <p className="digest-feature-lede">Qualquer máquina executando <code>claude remote-control</code> agora aparece como um cartão de dispositivo no topo da aba Code no aplicativo Claude. Remote Control também saiu da research preview.</p>

69 

70 <Frame>

71 <img className="w-full" src="https://mintcdn.com/claude-code/2SnAdpL4dJ18nKb3/images/whats-new/remote-control-phone-start.jpg?fit=max&auto=format&n=2SnAdpL4dJ18nKb3&q=85&s=9f0ebedab23aa0e1732cc37782573907" alt="A aba Code no aplicativo móvel Claude com uma seção Devices mostrando um MacBook conectado como um cartão de dispositivo acima da lista de sessões" width="1206" height="895" data-path="images/whats-new/remote-control-phone-start.jpg" />

72 </Frame>

73 

74 <p className="digest-feature-try">Inicie Remote Control na máquina que você quer alcançar, depois abra a aba Code no seu telefone:</p>

75 

76 ```bash terminal theme={null}

77 claude remote-control

78 ```

79 

80 <p className="digest-feature-try">Sua máquina aparece como um cartão de dispositivo no topo da aba Code. Toque nele para escolher um diretório e iniciar uma sessão lá.</p>

81 

82 <a className="digest-feature-link" href="/docs/pt/remote-control#start-a-remote-control-session">Inicie uma sessão Remote Control</a>

83</div>

84 

85<div className="digest-wins">

86 <p className="digest-wins-title">Outras melhorias</p>

87 

88 <div className="digest-wins-grid">

89 <div>Claude Code agora continua sua sessão automaticamente quando um limite de uso claude.ai é redefinido; desative-o na linha <strong>Continue automatically at usage limit</strong> em <code>/config</code></div>

90 <div>A configuração opcional <a href="/docs/pt/interactive-mode#check-spelling-as-you-type"><code>spellcheck</code></a> sublinha palavras com erros de ortografia na entrada do prompt conforme você digita, usando seu <code>aspell</code>, <code>hunspell</code> ou <code>ispell</code> instalado</div>

91 <div>Em uma branch com um merge request aberto do GitLab, com a CLI <code>glab</code> autenticada através de <code>glab auth login</code>, o rodapé mostra um <a href="/docs/pt/interactive-mode#gitlab-merge-requests">badge <code>MR !N</code></a> colorido dependendo se o merge request é um rascunho, está aberto ou é mesclável</div>

92 <div>Altere o nível de esforço do seu telefone ou claude.ai/code e ele <a href="/docs/pt/remote-control#what-connected-devices-see">se aplica à sessão na sua máquina</a>; sessões Remote Control hospedadas por Desktop ou VS Code também mostram aos dispositivos conectados o modo de permissão atual da sessão</div>

93 <div>Você pode abrir <a href="/docs/pt/permissions#manage-permissions"><code>/permissions</code></a> ou executar <code>/add-dir \<path></code> enquanto Claude está trabalhando; mudanças nas regras de permissão se aplicam ao resto do turno atual</div>

94 <div>Quando tarefas em segundo plano mantêm um <a href="/docs/pt/goal#background-work-defers-evaluation"><code>/goal</code></a> aguardando, Claude verifica neles após 30 minutos em vez de aguardar indefinidamente e continua verificando, em intervalos mais longos enquanto a sessão fica ociosa; defina <code>CLAUDE\_CODE\_GOAL\_CHECKIN\_MINUTES=0</code> para desativar</div>

95 <div>Seus próprios prompts agora renderizam markdown na transcrição, com blocos de código destacados, código inline e listas, da mesma forma que as respostas fazem</div>

96 <div>A nova variável de ambiente <a href="/docs/pt/model-config#set-a-default-model-for-new-sessions"><code>ANTHROPIC\_DEFAULT\_MODEL</code></a> define o modelo em que novas sessões começam; uma escolha <code>/model</code> ainda a substitui e persiste entre reinicializações</div>

97 <div>Com a entrada <code>notify\_when\_idle</code> em <code>SendMessage</code>, Claude pode pedir a outra sessão Claude Code na mesma máquina para <a href="/docs/pt/cross-session-messaging#get-a-notice-when-another-session-goes-idle">enviar um aviso quando ela ficar ociosa novamente</a></div>

98 <div>Defina <a href="/docs/pt/interactive-mode#make-ctrl-w-delete-back-to-whitespace"><code>keybindingFlavor</code></a> para <code>"readline"</code> para fazer <code>Ctrl+W</code> no prompt deletar de volta até o espaço em branco anterior, como Bash faz, em vez de parar em pontuação como <code>/</code></div>

99 <div>No Windows nativo, suas sessões Claude Code agora podem <a href="/docs/pt/cross-session-messaging#availability">se comunicar uma com a outra</a> com <code>SendMessage</code> e se encontrar com <code>ListAgents</code>, como em macOS e Linux</div>

100 <div>Runners auto-hospedados aceitam `--defer-shutdown-max-min`, que <a href="/docs/pt/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal">continua servindo sessões anexadas</a> por um número definido de minutos após SIGTERM</div>

101 <div>Runners auto-hospedados aceitam `--proxy-authorization-command` ou `--proxy-authorization-file` para fornecer um cabeçalho `Proxy-Authorization` fresco para <a href="/docs/pt/self-hosted-environments-deploy#authenticate-to-an-egress-proxy">proxies de saída que exigem um</a></div>

102 </div>

103</div>

104 

105[Changelog completo para v2.1.234–v2.1.239 →](/docs/en/changelog#2-1-234)

workflows.md +30 −22

Details

34Mover o plano para o código também permite que um fluxo de trabalho aplique um padrão de qualidade repetível, não apenas execute mais agentes: ele pode ter agentes independentes revisando adversarialmente as descobertas um do outro antes de serem relatadas, ou elaborar um plano de vários ângulos e pesá-los um contra o outro, para que você obtenha um resultado mais confiável do que uma única passagem.34Mover o plano para o código também permite que um fluxo de trabalho aplique um padrão de qualidade repetível, não apenas execute mais agentes: ele pode ter agentes independentes revisando adversarialmente as descobertas um do outro antes de serem relatadas, ou elaborar um plano de vários ângulos e pesá-los um contra o outro, para que você obtenha um resultado mais confiável do que uma única passagem.

35 35 

36<h2 id="run-a-bundled-workflow">36<h2 id="run-a-bundled-workflow">

37 Executar um fluxo de trabalho agrupado37 Executar um workflow agrupado

38</h2>38</h2>

39 39 

40A maneira mais rápida de ver um fluxo de trabalho em ação é executar `/deep-research`, o [fluxo de trabalho integrado](#bundled-workflows) que Claude Code inclui para investigar uma pergunta em muitas fontes. Você verá agentes trabalhando através de um conjunto de fases em segundo plano enquanto sua sessão permanece livre, e obterá um relatório no final em vez de uma transcrição turno por turno.40A forma mais rápida de ver um workflow em ação é executar `/deep-research`, o [workflow integrado](#bundled-workflows) que Claude Code inclui para investigar uma pergunta em muitas fontes. Você verá agentes trabalhando através de um conjunto de fases em segundo plano enquanto sua sessão permanece livre, e obterá um relatório no final em vez de uma transcrição turno a turno.

41 41 

42<Steps>42<Steps>

43 <Step title="Executar o fluxo de trabalho">43 <Step title="Executar o workflow">

44 Execute `/deep-research` com uma pergunta que você deseja investigar. Ele distribui buscas na web em vários ângulos, busca e verifica cruzadamente as fontes que encontra, e sintetiza um relatório citado.44 Execute `/deep-research` com uma pergunta que você deseja investigar. Ele distribui buscas na web em vários ângulos, busca e verifica cruzadamente as fontes que encontra, e sintetiza um relatório citado.

45 45 

46 ```text wrap theme={null}46 ```text wrap theme={null}


48 ```48 ```

49 </Step>49 </Step>

50 50 

51 <Step title="Permitir fluxos de trabalho">51 <Step title="Permitir workflows">

52 Claude Code pergunta se deve permitir o fluxo de trabalho. Selecione **Sim** para continuar. O prompt exato depende do seu modo de permissão. Consulte [Aprovar o plano antes de ser executado](#approve-the-plan-before-it-runs) para as opções por modo.52 Claude Code pergunta se deve permitir o workflow. Selecione **Sim** para continuar. O prompt exato depende do seu modo de permissão. Consulte [Aprovar o plano antes de ser executado](#approve-the-plan-before-it-runs) para as opções por modo.

53 </Step>53 </Step>

54 54 

55 <Step title="Observar o progresso">55 <Step title="Acompanhar o progresso">

56 A execução começa em segundo plano. Execute `/workflows`, use as setas para selecionar a execução e pressione Enter para abrir sua visualização de progresso:56 A execução começa em segundo plano. Execute `/workflows`, use as setas para selecionar a execução e pressione Enter para abrir sua visualização de progresso:

57 57 

58 ```text wrap theme={null}58 ```text wrap theme={null}

59 /workflows59 /workflows

60 ```60 ```

61 61 

62 A visualização mostra cada fase com sua contagem de agentes, total de tokens e tempo decorrido. Aprofunde-se em qualquer fase para ver seus agentes e o que cada um encontrou. Consulte [Observar a execução](#watch-the-run) para o conjunto completo de controles.62 A visualização mostra cada fase com sua contagem de agentes, total de tokens e tempo decorrido. Aprofunde-se em qualquer fase para ver seus agentes e o que cada um encontrou. Consulte [Acompanhar a execução](#watch-the-run) para o conjunto completo de controles.

63 63 

64 Você também pode observar no painel de tarefas abaixo da caixa de entrada: um resumo de progresso de uma linha aparece lá enquanto a execução está em andamento. Pressione a seta para baixo para focá-lo e depois Enter para expandir.64 Você também pode acompanhar a partir do painel de tarefas abaixo da caixa de entrada: um resumo de progresso de uma linha aparece lá enquanto a execução está em andamento. Pressione a seta para baixo para focá-lo e depois Enter para expandir.

65 </Step>65 </Step>

66 66 

67 <Step title="Ler o relatório">67 <Step title="Ler o relatório">


71 </Step>71 </Step>

72</Steps>72</Steps>

73 73 

74Para executar um fluxo de trabalho para sua própria tarefa, [faça Claude escrever um](#have-claude-write-a-workflow), e uma vez que uma execução faça o que você queria, você pode [salvá-lo](#save-the-workflow-for-reuse) como um comando seu.74Para executar um workflow para sua própria tarefa, [peça a Claude para escrever um](#have-claude-write-a-workflow), e uma vez que uma execução faça o que você desejava, você pode [salvá-lo](#save-the-workflow-for-reuse) como um comando seu.

75 75 

76<h3 id="bundled-workflows">76<h3 id="bundled-workflows">

77 Fluxos de trabalho agrupados77 Workflows agrupados

78</h3>78</h3>

79 79 

80Claude Code inclui `/deep-research` como um fluxo de trabalho integrado:80Claude Code inclui `/deep-research` como um workflow integrado:

81 81 

82| Comando | O que faz |82| Comando | O que faz |

83| :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |83| :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


85 85 

86`/deep-research` é executado apenas quando você o invoca.86`/deep-research` é executado apenas quando você o invoca.

87 87 

88[Fluxos de trabalho que você salva](#save-the-workflow-for-reuse) você mesmo se tornam comandos da mesma forma e aparecem no autocomplete `/` junto com os agrupados.88[Workflows que você salva](#save-the-workflow-for-reuse) você mesmo se tornam comandos da mesma forma e aparecem na autocompletar `/` junto com os agrupados.

89 89 

90<h3 id="watch-the-run">90<h3 id="watch-the-run">

91 Observar a execução91 Acompanhar a execução

92</h3>92</h3>

93 93 

94Fluxos de trabalho são executados em segundo plano, então a sessão permanece responsiva enquanto os agentes trabalham. Execute `/workflows` a qualquer momento para listar fluxos de trabalho em execução e concluídos, depois selecione um para abrir sua visualização de progresso.94Workflows são executados em segundo plano, portanto a sessão permanece responsiva enquanto os agentes trabalham. Execute `/workflows` a qualquer momento para listar workflows em execução e concluídos, depois selecione um para abrir sua visualização de progresso.

95 95 

96A visualização de progresso mostra cada fase com suas contagens de agentes, totais de tokens e tempo decorrido. O rodapé lista a chave para cada ação:96A visualização de progresso mostra cada fase com suas contagens de agentes, totais de tokens e tempo decorrido. O rodapé lista a chave para cada ação:

97 97 

98| Chave | Ação |98| Chave | Ação |

99| :------------- | :----------------------------------------------------------------------------------------------------------------------- |99| :------------- | :--------------------------------------------------------------------------------------------------------- |

100| `↑` / `↓` | Selecionar uma fase ou agente |100| `↑` / `↓` | Selecionar uma fase ou agente |

101| `Enter` ou `→` | Aprofundar-se na fase selecionada, depois em um agente para ler seu prompt, chamadas de ferramentas recentes e resultado |101| `Enter` ou `→` | Aprofundar-se na fase selecionada e depois no detalhe de um agente. No detalhe, `Enter` expande ou recolhe |

102| `Esc` ou `←` | Voltar um nível. Na v2.1.203 até v2.1.205, `←` não voltava para fora de uma fase ou agente; use `Esc` nessas versões |102| `Esc` ou `←` | Voltar um nível. Na v2.1.203 até v2.1.205, `←` não recuou de uma fase ou agente; use `Esc` nessas versões |

103| `j` / `k` | Rolar dentro do detalhe do agente quando transborda |103| `j` / `k` | Rolar dentro do detalhe do agente quando ele transborda |

104| `f` | Filtrar a lista de agentes na fase selecionada por status. Pressione novamente para ciclar |104| `f` | Filtrar a lista de agentes na fase selecionada por status. Pressione novamente para ciclar |

105| `p` | Pausar ou retomar a execução |105| `p` | Pausar ou retomar a execução |

106| `x` | Parar o agente selecionado, ou parar todo o fluxo de trabalho quando o foco está na execução |106| `x` | Parar o agente selecionado ou parar todo o workflow quando o foco está na execução |

107| `r` | Reiniciar o agente em execução selecionado |107| `r` | Reiniciar o agente em execução selecionado |

108| `s` | [Salvar](#save-the-workflow-for-reuse) o script da execução como um comando |108| `s` | [Salvar](#save-the-workflow-for-reuse) o script da execução como um comando |

109 109 

110O detalhe do agente lista o prompt do agente, suas chamadas de ferramentas recentes e seu resultado. Cada chamada mostra seu estado, como ainda em execução ou falha. Quando o agente mantém uma lista de tarefas própria, o detalhe a mostra também, com o status de cada tarefa.

111 

112Pressione `Enter` para expandir o detalhe. O prompt e o resultado então aparecem em sua totalidade, e cada chamada listada mostra sua entrada e o início de seu resultado.

113 

110<h2 id="have-claude-write-a-workflow">114<h2 id="have-claude-write-a-workflow">

111 Fazer Claude escrever um fluxo de trabalho115 Fazer Claude escrever um fluxo de trabalho

112</h2>116</h2>


169 173 

170Com ultracode ativado, Claude decide quando uma tarefa justifica um fluxo de trabalho. Uma única solicitação pode se transformar em vários fluxos de trabalho seguidos: um para entender o código, um para fazer a alteração e um para verificá-la. Isso se aplica a cada tarefa na sessão, então cada solicitação usa mais tokens e leva mais tempo do que em níveis de esforço mais baixos.174Com ultracode ativado, Claude decide quando uma tarefa justifica um fluxo de trabalho. Uma única solicitação pode se transformar em vários fluxos de trabalho seguidos: um para entender o código, um para fazer a alteração e um para verificá-la. Isso se aplica a cada tarefa na sessão, então cada solicitação usa mais tokens e leva mais tempo do que em níveis de esforço mais baixos.

171 175 

172`/effort ultracode` dura para a sessão atual; para ter cada sessão iniciada com ele, defina a configuração [`ultracode`](/docs/pt/settings-reference#ultracode). Volte com `/effort high` quando retornar ao trabalho de rotina. Está disponível em modelos que suportam `xhigh` [esforço](/docs/pt/model-config#adjust-effort-level); em outros modelos o menu `/effort` não o oferece.176`/effort ultracode` dura para a sessão atual; para ter cada sessão iniciada com ele, defina a configuração [`ultracode`](/docs/pt/settings-reference#ultracode). Volte com `/effort high` quando retornar ao trabalho de rotina. O menu `/effort` o oferece apenas [quando ultracode está disponível](/docs/pt/model-config#when-ultracode-is-available).

173 177 

174<h3 id="approve-the-plan-before-it-runs">178<h3 id="approve-the-plan-before-it-runs">

175 Aprovar o plano antes de ser executado179 Aprovar o plano antes de ser executado


344 348 

345O corpo é JavaScript simples com `await` de nível superior. `agent()` spawna um subagentos, `pipeline()` executa um por item em uma lista, e `parallel()` executa um conjunto de tarefas de agente ao mesmo tempo e aguarda todas elas.349O corpo é JavaScript simples com `await` de nível superior. `agent()` spawna um subagentos, `pipeline()` executa um por item em uma lista, e `parallel()` executa um conjunto de tarefas de agente ao mesmo tempo e aguarda todas elas.

346 350 

347Uma chamada `agent()` é resolvida para `null` se você a interromper no meio da execução ou se ela atingir um erro de API irrecuperável. `pipeline()` mantém esse `null` na matriz de resultados, e é por isso que o exemplo termina com `.filter(Boolean)` para descartar essas entradas.351Uma chamada `agent()` é resolvida para `null` se você a interromper no meio da execução ou se ela atingir um erro de API irrecuperável. Em [modo automático](/docs/pt/permission-modes#eliminate-prompts-with-auto-mode), o classificador pode bloquear uma chamada `agent()` antes do subagentos iniciar. Uma chamada bloqueada é resolvida para `null` e aparece na visualização de progresso da execução com o motivo. `pipeline()` mantém cada `null` na matriz de resultados, e é por isso que o exemplo termina com `.filter(Boolean)` para descartar essas entradas.

348 352 

349Se você passar um `schema` em uma chamada `agent()`, esse subagentos retorna JSON correspondendo à forma em vez de prosa. Claude Code verifica o schema antes de iniciar o subagentos: quando pode provar que o schema contradiz a si mesmo, a chamada falha com um erro nomeando a contradição, e o subagentos nunca inicia. Uma contradição que pode provar é uma chave `required` que `additionalProperties: false` descarta.353Se você passar um `schema` em uma chamada `agent()`, esse subagentos retorna JSON correspondendo à forma em vez de prosa. Claude Code verifica o schema antes de iniciar o subagentos: quando pode provar que o schema contradiz a si mesmo, a chamada falha com um erro nomeando a contradição, e o subagentos nunca inicia. Uma contradição que pode provar é uma chave `required` que `additionalProperties: false` descarta.

350 354 


430Você pode retomar uma execução dentro da mesma sessão de Claude Code. O que acontece com um fluxo de trabalho em execução quando você sai da sessão depende de como você sai:434Você pode retomar uma execução dentro da mesma sessão de Claude Code. O que acontece com um fluxo de trabalho em execução quando você sai da sessão depende de como você sai:

431 435 

432* Se você [colocar a sessão em segundo plano](/docs/pt/agent-view#what-carries-over-when-you-background), Claude Code reproduz a execução da mesma forma na sessão em segundo plano e continua.436* Se você [colocar a sessão em segundo plano](/docs/pt/agent-view#what-carries-over-when-you-background), Claude Code reproduz a execução da mesma forma na sessão em segundo plano e continua.

433* Se você sair de Claude Code enquanto um fluxo de trabalho está em execução e [agent view está ativado](/docs/pt/agent-view#from-inside-a-session), o diálogo de saída oferece `Move to background and exit`, que transfere a execução da mesma forma. Se você escolher `Exit and stop tasks` em vez disso, ou a opção não for oferecida, a execução para com a sessão. Claude Code mantém os resultados salvos da execução no diretório dessa sessão em `~/.claude/projects/`, para que uma sessão que você retome com `claude --resume` possa reproduzi-los quando você pedir a Claude para relançar o fluxo de trabalho, enquanto uma sessão que você inicia do zero não tem nada para reproduzir e inicia o fluxo de trabalho novamente.437* Se você sair de Claude Code enquanto um fluxo de trabalho está em execução e [agent view está ativado](/docs/pt/agent-view#from-inside-a-session), o diálogo de saída oferece `Move to background and exit`, que transfere a execução da mesma forma. Se você escolher `Exit and stop tasks` em vez disso, ou a opção não for oferecida, a execução para com a sessão. Claude Code mantém os resultados salvos da execução no diretório dessa sessão em `~/.claude/projects/`, para que uma sessão que você retome com `claude --resume` possa reproduzi-los quando você pedir a Claude para relançar o fluxo de trabalho. Em uma sessão que você inicia do zero, Claude não tem nenhuma execução anterior para relançar e inicia o fluxo de trabalho novamente como uma nova execução.

438 

439Em uma [sessão em nuvem](/docs/pt/claude-code-on-the-web), Claude Code também salva os resultados da execução com o histórico de conversa da sessão, que sobrevive quando a VM da sessão é recuperada. Quando você [reabre tal sessão](/docs/pt/claude-code-on-the-web#environment-expired) e pede a Claude para relançar o fluxo de trabalho, agentes concluídos ainda retornam seus resultados salvos.

440 

441Em sessões locais e em nuvem, quando Claude relança uma execução anterior e Claude Code não consegue encontrar os resultados salvos dessa execução, o relançamento falha com um erro `nothing to resume` em vez de iniciar a execução novamente por conta própria. Peça a Claude para iniciar o fluxo de trabalho novamente como uma nova execução.

434 442 

435<h3 id="cost">443<h3 id="cost">

436 Custo444 Custo