SpyBara
Go Premium

Documentation 2026-05-02 18:14 UTC to 2026-05-04 22:58 UTC

99 files changed +47,205 −0. View all changes and history on the product overview
2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

admin-setup.md +132 −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# Configure Claude Code para sua organização

6 

7> Um mapa de decisão para administradores que implantam Claude Code, cobrindo provedores de API, configurações gerenciadas, aplicação de políticas, monitoramento de uso e tratamento de dados.

8 

9Claude Code aplica a política da organização através de configurações gerenciadas que têm precedência sobre a configuração local do desenvolvedor. Você entrega essas configurações a partir do console de administração Claude, seu sistema de gerenciamento de dispositivos móveis (MDM) ou um arquivo no disco. As configurações controlam quais ferramentas, comandos, servidores e destinos de rede Claude pode alcançar.

10 

11Esta página percorre as decisões de implantação em ordem. Cada linha vincula à seção abaixo e à página de referência para essa área.

12 

13<Note>

14 SSO, provisionamento SCIM e atribuição de assentos são configurados no nível da conta Claude. Consulte o [Guia do Administrador Empresarial Claude](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide) e [atribuição de assentos](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan) para essas etapas.

15</Note>

16 

17| Decisão | O que você está escolhendo | Referência |

18| :----------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

19| [Escolha seu provedor de API](#choose-your-api-provider) | Onde Claude Code autentica e como é cobrado | [Authentication](/pt/authentication), [Bedrock](/pt/amazon-bedrock), [Vertex AI](/pt/google-vertex-ai), [Foundry](/pt/microsoft-foundry) |

20| [Decida como as configurações chegam aos dispositivos](#decide-how-settings-reach-devices) | Como a política gerenciada chega às máquinas dos desenvolvedores | [Server-managed settings](/pt/server-managed-settings), [Settings files](/pt/settings#settings-files) |

21| [Decida o que aplicar](#decide-what-to-enforce) | Quais ferramentas, comandos e integrações são permitidas | [Permissions](/pt/permissions), [Sandboxing](/pt/sandboxing) |

22| [Configure a visibilidade de uso](#set-up-usage-visibility) | Como você rastreia gastos e adoção | [Analytics](/pt/analytics), [Monitoring](/pt/monitoring-usage), [Costs](/pt/costs) |

23| [Revise o tratamento de dados](#review-data-handling) | Retenção de dados e postura de conformidade | [Data usage](/pt/data-usage), [Security](/pt/security) |

24 

25## Escolha seu provedor de API

26 

27Claude Code se conecta ao Claude através de um dos vários provedores de API. Sua escolha afeta faturamento, autenticação e qual postura de conformidade você herda.

28 

29| Provedor | Escolha isto quando |

30| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

31| Claude for Teams / Enterprise | Você quer Claude Code e claude.ai sob uma assinatura por assento com nenhuma infraestrutura para executar. Esta é a recomendação padrão. |

32| Claude Console | Você é API-first ou quer faturamento pay-as-you-go |

33| Amazon Bedrock | Você quer herdar controles de conformidade e faturamento AWS existentes |

34| Google Vertex AI | Você quer herdar controles de conformidade e faturamento GCP existentes |

35| Microsoft Foundry | Você quer herdar controles de conformidade e faturamento Azure existentes |

36 

37Para a comparação completa do provedor cobrindo autenticação, regiões e paridade de recursos, consulte a [visão geral de implantação empresarial](/pt/third-party-integrations). A configuração de autenticação de cada provedor está em [Authentication](/pt/authentication).

38 

39Os requisitos de proxy e firewall em [Network configuration](/pt/network-config) se aplicam independentemente do provedor. Se você quiser um único endpoint na frente de vários provedores ou registro de solicitações centralizado, consulte [LLM gateway](/pt/llm-gateway).

40 

41## Decida como as configurações chegam aos dispositivos

42 

43As configurações gerenciadas definem a política que tem precedência sobre a configuração local do desenvolvedor. Claude Code procura por elas em quatro lugares e usa a primeira que encontra em um determinado dispositivo.

44 

45| Mecanismo | Entrega | Prioridade | Plataformas |

46| :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- | :------------- |

47| Server-managed | Console de administração Claude.ai | Mais alta | Todas |

48| plist / registry policy | macOS: `com.anthropic.claudecode` plist<br />Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` | Alta | macOS, Windows |

49| File-based managed | macOS: `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux e WSL: `/etc/claude-code/managed-settings.json`<br />Windows: `C:\Program Files\ClaudeCode\managed-settings.json` | Média | Todas |

50| Windows user registry | `HKCU\SOFTWARE\Policies\ClaudeCode` | Mais baixa | Apenas Windows |

51 

52As configurações gerenciadas pelo servidor chegam aos dispositivos no momento da autenticação e são atualizadas a cada hora durante sessões ativas, sem infraestrutura de endpoint. Eles exigem um plano Claude for Teams ou Enterprise, portanto, implantações em outros provedores precisam de um dos mecanismos baseados em arquivo ou de nível do SO.

53 

54Se sua organização mistura provedores, configure [configurações gerenciadas pelo servidor](/pt/server-managed-settings) para usuários Claude.ai mais um [fallback baseado em arquivo ou plist/registry](/pt/settings#settings-files) para que outros usuários ainda recebam política gerenciada.

55 

56Os locais de registro plist e HKLM funcionam com qualquer provedor e resistem a adulteração porque exigem privilégios de administrador para escrever. O registro de usuário do Windows em HKCU é gravável sem elevação, portanto, trate-o como um padrão de conveniência em vez de um canal de aplicação.

57 

58Por padrão, WSL lê apenas o caminho do arquivo Linux em `/etc/claude-code`. Para estender sua política de registro do Windows e `C:\Program Files\ClaudeCode` para WSL na mesma máquina, defina [`wslInheritsWindowsSettings: true`](/pt/settings#available-settings) em uma das fontes do Windows somente para administrador.

59 

60Qualquer que seja o mecanismo escolhido, os valores gerenciados têm precedência sobre as configurações de usuário e projeto. As configurações de matriz, como `permissions.allow` e `permissions.deny`, mesclam entradas de todas as fontes, portanto, os desenvolvedores podem estender listas gerenciadas, mas não removê-las.

61 

62Consulte [Server-managed settings](/pt/server-managed-settings) e [Settings files and precedence](/pt/settings#settings-files).

63 

64## Decida o que aplicar

65 

66As configurações gerenciadas podem bloquear ferramentas, execução de sandbox, restringir servidores MCP e fontes de plugins, e controlar quais hooks são executados. Cada linha é uma superfície de controle com as chaves de configuração que a controlam.

67 

68| Controle | O que faz | Configurações-chave |

69| :------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |

70| [Permission rules](/pt/permissions) | Permitir, perguntar ou negar ferramentas e comandos específicos | `permissions.allow`, `permissions.deny` |

71| [Permission lockdown](/pt/permissions#managed-only-settings) | Apenas regras de permissão gerenciadas se aplicam; desabilitar `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

72| [Sandboxing](/pt/sandboxing) | Isolamento de sistema de arquivos e rede de nível do SO com listas de permissão de domínio | `sandbox.enabled`, `sandbox.network.allowedDomains` |

73| [Managed policy CLAUDE.md](/pt/memory#deploy-organization-wide-claude-md) | Instruções em toda a organização carregadas em cada sessão, não podem ser excluídas | Arquivo no caminho da política gerenciada |

74| [MCP server control](/pt/mcp#managed-mcp-configuration) | Restringir quais servidores MCP os usuários podem adicionar ou conectar | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly` |

75| [Plugin marketplace control](/pt/plugin-marketplaces#managed-marketplace-restrictions) | Restringir quais fontes de marketplace os usuários podem adicionar e instalar | `strictKnownMarketplaces`, `blockedMarketplaces` |

76| [Hook restrictions](/pt/settings#hook-configuration) | Apenas hooks gerenciados são carregados; restringir URLs de hook HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

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

78 

79As regras de permissão e sandboxing cobrem camadas diferentes. Negar WebFetch bloqueia a ferramenta de busca do Claude, mas se Bash for permitido, `curl` e `wget` ainda podem alcançar qualquer URL. O sandboxing fecha essa lacuna com uma lista de permissão de domínio de rede aplicada no nível do SO.

80 

81Para o modelo de ameaça que esses controles defendem, consulte [Security](/pt/security).

82 

83## Configure a visibilidade de uso

84 

85Escolha monitoramento com base no que você precisa relatar.

86 

87| Capacidade | O que você obtém | Disponibilidade | Por onde começar |

88| :------------------ | :--------------------------------------------------------- | :------------------ | :--------------------------------------- |

89| Usage monitoring | Exportação OpenTelemetry de sessões, ferramentas e tokens | Todos os provedores | [Monitoring usage](/pt/monitoring-usage) |

90| Analytics dashboard | Métricas por usuário, rastreamento de contribuição, placar | Apenas Anthropic | [Analytics](/pt/analytics) |

91| Cost tracking | Limites de gastos, limites de taxa e atribuição de uso | Apenas Anthropic | [Costs](/pt/costs) |

92 

93Os provedores de nuvem expõem gastos através do AWS Cost Explorer, GCP Billing ou Azure Cost Management. Os planos Claude for Teams e Enterprise incluem um painel de uso em [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).

94 

95## Revise o tratamento de dados

96 

97Nos planos Team, Enterprise, Claude API e provedor de nuvem, Anthropic não treina modelos em seu código ou prompts. Seu provedor de API determina a retenção e postura de conformidade.

98 

99| Tópico | O que saber | Por onde começar |

100| :------------------------ | :----------------------------------------------------------------------------------- | :--------------------------------------------- |

101| Data usage policy | O que Anthropic coleta, quanto tempo é retido, o que nunca é usado para treinamento | [Data usage](/pt/data-usage) |

102| Zero Data Retention (ZDR) | Nada armazenado após a conclusão da solicitação. Disponível no Claude for Enterprise | [Zero data retention](/pt/zero-data-retention) |

103| Security architecture | Modelo de rede, criptografia, autenticação, trilha de auditoria | [Security](/pt/security) |

104 

105Se você precisar de registro de auditoria em nível de solicitação ou rotear tráfego por sensibilidade de dados, coloque um [LLM gateway](/pt/llm-gateway) entre desenvolvedores e seu provedor. Para requisitos regulatórios e certificações, consulte [Legal and compliance](/pt/legal-and-compliance).

106 

107## Verifique e integre

108 

109Após configurar as configurações gerenciadas, peça a um desenvolvedor para executar `/status` dentro de Claude Code. A saída inclui uma linha começando com `Enterprise managed settings` seguida pela fonte entre parênteses, uma de `(remote)`, `(plist)`, `(HKLM)`, `(HKCU)` ou `(file)`. Consulte [Verificar configurações ativas](/pt/settings#verify-active-settings).

110 

111Compartilhe esses recursos para ajudar os desenvolvedores a começar:

112 

113* [Quickstart](/pt/quickstart): passo a passo da primeira sessão da instalação ao trabalho com um projeto

114* [Common workflows](/pt/common-workflows): padrões para tarefas cotidianas como revisão de código, refatoração e depuração

115* [Claude 101](https://anthropic.skilljar.com/claude-101) e [Claude Code in Action](https://anthropic.skilljar.com/claude-code-in-action): cursos de ritmo próprio da Anthropic Academy

116 

117Para problemas de login, direcione os desenvolvedores para [solução de problemas de autenticação](/pt/troubleshoot-install#login-and-authentication). As correções mais comuns são:

118 

119* Execute `/logout` e depois `/login` para trocar de contas

120* Execute `claude update` se a opção de autenticação empresarial estiver faltando

121* Reinicie o terminal após atualizar

122 

123Se um desenvolvedor vir "You haven't been added to your organization yet," seu assento não inclui acesso a Claude Code e precisa ser atualizado no console de administração.

124 

125## Próximas etapas

126 

127Com o provedor e mecanismo de entrega escolhidos, passe para a configuração detalhada:

128 

129* [Server-managed settings](/pt/server-managed-settings): entregar política gerenciada a partir do console de administração Claude

130* [Settings reference](/pt/settings): cada chave de configuração, local de arquivo e regra de precedência

131* [Amazon Bedrock](/pt/amazon-bedrock), [Google Vertex AI](/pt/google-vertex-ai), [Microsoft Foundry](/pt/microsoft-foundry): implantação específica do provedor

132* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, gerenciamento de assentos e playbook de implementação

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 features in the SDK

6 

7> Load project instructions, skills, hooks, and other Claude Code features into your SDK agents.

8 

9O Agent SDK é construído na mesma base que Claude Code, o que significa que seus agentes SDK têm acesso aos mesmos recursos baseados em sistema de arquivos: instruções de projeto (`CLAUDE.md` e regras), skills, hooks e muito mais.

10 

11Quando você omite `settingSources`, `query()` lê as mesmas configurações do sistema de arquivos que a CLI Claude Code: configurações de usuário, projeto e local, arquivos `CLAUDE.md` e skills, agentes e comandos em `.claude/`. Para executar sem estes, passe `settingSources: []`, o que limita o agente ao que você configura programaticamente. As configurações de política gerenciada e a configuração global `~/.claude.json` são lidas independentemente desta opção. Veja [O que settingSources não controla](#what-settingsources-does-not-control).

12 

13Para uma visão geral conceitual do que cada recurso faz e quando usá-lo, veja [Extend Claude Code](/pt/features-overview).

14 

15## Control filesystem settings with settingSources

16 

17A opção de fontes de configuração ([`setting_sources`](/pt/agent-sdk/python#claude-agent-options) em Python, [`settingSources`](/pt/agent-sdk/typescript#setting-source) em TypeScript) controla quais configurações baseadas em sistema de arquivos o SDK carrega. Passe uma lista explícita para optar por fontes específicas, ou passe um array vazio para desabilitar configurações de usuário, projeto e local.

18 

19Este exemplo carrega configurações de nível de usuário e nível de projeto definindo `settingSources` para `["user", "project"]`:

20 

21<CodeGroup>

22 ```python Python theme={null}

23 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

24 

25 async for message in query(

26 prompt="Help me refactor the auth module",

27 options=ClaudeAgentOptions(

28 # "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

29 # Together they give the agent access to CLAUDE.md, skills, hooks, and

30 # permissions from both locations.

31 setting_sources=["user", "project"],

32 allowed_tools=["Read", "Edit", "Bash"],

33 ),

34 ):

35 if isinstance(message, AssistantMessage):

36 for block in message.content:

37 if hasattr(block, "text"):

38 print(block.text)

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

40 print(f"\nResult: {message.result}")

41 ```

42 

43 ```typescript TypeScript theme={null}

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

45 

46 for await (const message of query({

47 prompt: "Help me refactor the auth module",

48 options: {

49 // "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

50 // Together they give the agent access to CLAUDE.md, skills, hooks, and

51 // permissions from both locations.

52 settingSources: ["user", "project"],

53 allowedTools: ["Read", "Edit", "Bash"]

54 }

55 })) {

56 if (message.type === "assistant") {

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

58 if (block.type === "text") console.log(block.text);

59 }

60 }

61 if (message.type === "result" && message.subtype === "success") {

62 console.log(`\nResult: ${message.result}`);

63 }

64 }

65 ```

66</CodeGroup>

67 

68Cada fonte carrega configurações de um local específico, onde `<cwd>` é o diretório de trabalho que você passa via opção `cwd` (ou o diretório atual do processo se não definido). Para a definição de tipo completa, veja [`SettingSource`](/pt/agent-sdk/typescript#setting-source) (TypeScript) ou [`SettingSource`](/pt/agent-sdk/python#setting-source) (Python).

69 

70| Fonte | O que carrega | Local |

71| :---------- | :---------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |

72| `"project"` | CLAUDE.md do projeto, `.claude/rules/*.md`, skills do projeto, hooks do projeto, `settings.json` do projeto | `<cwd>/.claude/` e cada diretório pai até a raiz do sistema de arquivos (parando quando um `.claude/` é encontrado ou não há mais pais) |

73| `"user"` | CLAUDE.md do usuário, `~/.claude/rules/*.md`, skills do usuário, configurações do usuário | `~/.claude/` |

74| `"local"` | CLAUDE.local.md (gitignored), `.claude/settings.local.json` | `<cwd>/` |

75 

76Omitir `settingSources` é equivalente a `["user", "project", "local"]`.

77 

78A opção `cwd` determina onde o SDK procura por configurações de projeto. Se nem `cwd` nem nenhum de seus diretórios pai contiver uma pasta `.claude/`, os recursos de nível de projeto não serão carregados.

79 

80### What settingSources does not control

81 

82`settingSources` cobre configurações de usuário, projeto e local. Algumas entradas são lidas independentemente de seu valor:

83 

84| Entrada | Comportamento | Para desabilitar |

85| :----------------------------------------------------------- | :----------------------------------------- | :--------------------------------------------------------------------------------------------------- |

86| Configurações de política gerenciada | Sempre carregadas quando presentes no host | Remova o arquivo de configurações gerenciadas |

87| Configuração global `~/.claude.json` | Sempre lida | Relocalize com `CLAUDE_CONFIG_DIR` em `env` |

88| Memória automática em `~/.claude/projects/<project>/memory/` | Carregada por padrão no prompt do sistema | Defina `autoMemoryEnabled: false` nas configurações, ou `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` em `env` |

89 

90<Warning>

91 Não confie nas opções padrão de `query()` para isolamento multi-tenant. Porque as entradas acima são lidas independentemente de `settingSources`, um processo SDK pode pegar configuração de nível de host e memória por diretório. Para implantações multi-tenant, execute cada tenant em seu próprio sistema de arquivos e defina `settingSources: []` mais `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` em `env`. Veja [Secure deployment](/pt/agent-sdk/secure-deployment).

92</Warning>

93 

94## Project instructions (CLAUDE.md and rules)

95 

96Arquivos `CLAUDE.md` e arquivos `.claude/rules/*.md` dão ao seu agente contexto persistente sobre seu projeto: convenções de codificação, comandos de compilação, decisões de arquitetura e instruções. Quando `settingSources` inclui `"project"` (como no exemplo acima), o SDK carrega esses arquivos em contexto no início da sessão. O agente então segue suas convenções de projeto sem você repeti-las em cada prompt.

97 

98### CLAUDE.md load locations

99 

100| Nível | Local | Quando carregado |

101| :------------------------- | :------------------------------------------------ | :------------------------------------------------------------------------------------------------------- |

102| Projeto (raiz) | `<cwd>/CLAUDE.md` ou `<cwd>/.claude/CLAUDE.md` | `settingSources` inclui `"project"` |

103| Regras do projeto | `<cwd>/.claude/rules/*.md` | `settingSources` inclui `"project"` |

104| Projeto (diretórios pai) | Arquivos `CLAUDE.md` em diretórios acima de `cwd` | `settingSources` inclui `"project"`, carregado no início da sessão |

105| Projeto (diretórios filho) | Arquivos `CLAUDE.md` em subdiretórios de `cwd` | `settingSources` inclui `"project"`, carregado sob demanda quando o agente lê um arquivo nessa subárvore |

106| Local (gitignored) | `<cwd>/CLAUDE.local.md` | `settingSources` inclui `"local"` |

107| Usuário | `~/.claude/CLAUDE.md` | `settingSources` inclui `"user"` |

108| Regras do usuário | `~/.claude/rules/*.md` | `settingSources` inclui `"user"` |

109 

110Todos os níveis são aditivos: se existem arquivos `CLAUDE.md` de projeto e usuário, o agente vê ambos. Não há regra de precedência rígida entre níveis; se as instruções conflitarem, o resultado depende de como Claude as interpreta. Escreva regras não conflitantes, ou declare precedência explicitamente no arquivo mais específico ("Estas instruções de projeto substituem quaisquer padrões conflitantes de nível de usuário").

111 

112<Tip>

113 Você também pode injetar contexto diretamente via `systemPrompt` sem usar arquivos `CLAUDE.md`. Veja [Modify system prompts](/pt/agent-sdk/modifying-system-prompts). Use `CLAUDE.md` quando você quer que o mesmo contexto seja compartilhado entre sessões interativas de Claude Code e seus agentes SDK.

114</Tip>

115 

116Para como estruturar e organizar conteúdo `CLAUDE.md`, veja [Manage Claude's memory](/pt/memory).

117 

118## Skills

119 

120Skills são arquivos markdown que dão ao seu agente conhecimento especializado e fluxos de trabalho invocáveis. Diferentemente de `CLAUDE.md` (que carrega a cada sessão), skills carregam sob demanda. O agente recebe descrições de skills na inicialização e carrega o conteúdo completo quando relevante.

121 

122Skills são descobertos do sistema de arquivos através de `settingSources`. Com opções padrão, skills de usuário e projeto carregam automaticamente. A ferramenta `Skill` é habilitada por padrão quando você não especifica `allowedTools`. Se você está usando uma lista de permissão `allowedTools`, inclua `"Skill"` explicitamente.

123 

124<CodeGroup>

125 ```python Python theme={null}

126 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

127 

128 # Skills in .claude/skills/ are discovered automatically

129 # when settingSources includes "project"

130 async for message in query(

131 prompt="Review this PR using our code review checklist",

132 options=ClaudeAgentOptions(

133 setting_sources=["user", "project"],

134 allowed_tools=["Skill", "Read", "Grep", "Glob"],

135 ),

136 ):

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

138 print(message.result)

139 ```

140 

141 ```typescript TypeScript theme={null}

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

143 

144 // Skills in .claude/skills/ are discovered automatically

145 // when settingSources includes "project"

146 for await (const message of query({

147 prompt: "Review this PR using our code review checklist",

148 options: {

149 settingSources: ["user", "project"],

150 allowedTools: ["Skill", "Read", "Grep", "Glob"]

151 }

152 })) {

153 if (message.type === "result" && message.subtype === "success") {

154 console.log(message.result);

155 }

156 }

157 ```

158</CodeGroup>

159 

160<Note>

161 Skills devem ser criados como artefatos do sistema de arquivos (`.claude/skills/<name>/SKILL.md`). O SDK não tem uma API programática para registrar skills. Veja [Agent Skills in the SDK](/pt/agent-sdk/skills) para detalhes completos.

162</Note>

163 

164Para mais sobre criar e usar skills, veja [Agent Skills in the SDK](/pt/agent-sdk/skills).

165 

166## Hooks

167 

168O SDK suporta duas maneiras de definir hooks, e eles executam lado a lado:

169 

170* **Filesystem hooks:** comandos shell definidos em `settings.json`, carregados quando `settingSources` inclui a fonte relevante. Estes são os mesmos hooks que você configuraria para [sessões interativas de Claude Code](/pt/hooks-guide).

171* **Programmatic hooks:** funções de callback passadas diretamente para `query()`. Estes executam em seu processo de aplicação e podem retornar decisões estruturadas. Veja [Control execution with hooks](/pt/agent-sdk/hooks).

172 

173Ambos os tipos executam durante o mesmo ciclo de vida de hook. Se você já tem hooks no `settings.json` do seu projeto e você define `settingSources: ["project"]`, esses hooks executam automaticamente no SDK sem configuração extra.

174 

175Callbacks de hook recebem a entrada da ferramenta e retornam um dict de decisão. Retornar `{}` (um dict vazio) significa permitir que a ferramenta prossiga. Retornar `{"decision": "block", "reason": "..."}` previne execução e a razão é enviada para Claude como o resultado da ferramenta. Veja o [hooks guide](/pt/agent-sdk/hooks) para a assinatura de callback completa e tipos de retorno.

176 

177<CodeGroup>

178 ```python Python theme={null}

179 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, ResultMessage

180 

181 

182 # PreToolUse hook callback. Positional args:

183 # input_data: HookInput dict with tool_name, tool_input, hook_event_name

184 # tool_use_id: str | None, the ID of the tool call being intercepted

185 # context: HookContext, carries session metadata

186 async def audit_bash(input_data, tool_use_id, context):

187 command = input_data.get("tool_input", {}).get("command", "")

188 if "rm -rf" in command:

189 return {"decision": "block", "reason": "Destructive command blocked"}

190 return {} # Empty dict: allow the tool to proceed

191 

192 

193 # Filesystem hooks from .claude/settings.json run automatically

194 # when settingSources loads them. You can also add programmatic hooks:

195 async for message in query(

196 prompt="Refactor the auth module",

197 options=ClaudeAgentOptions(

198 setting_sources=["project"], # Loads hooks from .claude/settings.json

199 hooks={

200 "PreToolUse": [

201 HookMatcher(matcher="Bash", hooks=[audit_bash]),

202 ]

203 },

204 ),

205 ):

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

207 print(message.result)

208 ```

209 

210 ```typescript TypeScript theme={null}

211 import { query, type HookInput, type HookJSONOutput } from "@anthropic-ai/claude-agent-sdk";

212 

213 // PreToolUse hook callback. HookInput is a discriminated union on

214 // hook_event_name, so narrowing on it gives TypeScript the right

215 // tool_input shape for this event.

216 const auditBash = async (input: HookInput): Promise<HookJSONOutput> => {

217 if (input.hook_event_name !== "PreToolUse") return {};

218 const toolInput = input.tool_input as { command?: string };

219 if (toolInput.command?.includes("rm -rf")) {

220 return { decision: "block", reason: "Destructive command blocked" };

221 }

222 return {}; // Empty object: allow the tool to proceed

223 };

224 

225 // Filesystem hooks from .claude/settings.json run automatically

226 // when settingSources loads them. You can also add programmatic hooks:

227 for await (const message of query({

228 prompt: "Refactor the auth module",

229 options: {

230 settingSources: ["project"], // Loads hooks from .claude/settings.json

231 hooks: {

232 PreToolUse: [{ matcher: "Bash", hooks: [auditBash] }]

233 }

234 }

235 })) {

236 if (message.type === "result" && message.subtype === "success") {

237 console.log(message.result);

238 }

239 }

240 ```

241</CodeGroup>

242 

243### When to use which hook type

244 

245| Tipo de hook | Melhor para |

246| :---------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

247| **Filesystem** (`settings.json`) | Compartilhar hooks entre sessões CLI e SDK. Suporta `"command"` (scripts shell), `"http"` (POST para um endpoint), `"mcp_tool"` (chamar a ferramenta de um servidor MCP conectado), `"prompt"` (LLM avalia um prompt), e `"agent"` (spawns um agente verificador). Estes disparam no agente principal e em qualquer subagente que ele spawna. |

248| **Programmatic** (callbacks em `query()`) | Lógica específica da aplicação; retornando decisões estruturadas; integração em processo. Escopo apenas para a sessão principal. |

249 

250<Note>

251 O SDK TypeScript suporta eventos de hook adicionais além de Python, incluindo `SessionStart`, `SessionEnd`, `TeammateIdle`, e `TaskCompleted`. Veja o [hooks guide](/pt/agent-sdk/hooks) para a tabela de compatibilidade de eventos completa.

252</Note>

253 

254Para detalhes completos sobre hooks programáticos, veja [Control execution with hooks](/pt/agent-sdk/hooks). Para sintaxe de hook do sistema de arquivos, veja [Hooks](/pt/hooks).

255 

256## Choose the right feature

257 

258O Agent SDK oferece acesso a várias maneiras de estender o comportamento do seu agente. Se você não tem certeza qual usar, esta tabela mapeia objetivos comuns para a abordagem correta.

259 

260| Você quer... | Use | Superfície SDK |

261| :------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

262| Definir convenções de projeto que seu agente sempre segue | [CLAUDE.md](/pt/memory) | `settingSources: ["project"]` carrega automaticamente |

263| Dar ao agente material de referência que ele carrega quando relevante | [Skills](/pt/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

264| Executar um fluxo de trabalho reutilizável (deploy, review, release) | [User-invocable skills](/pt/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

265| Delegar uma subtarefa isolada para um contexto fresco (research, review) | [Subagents](/pt/agent-sdk/subagents) | parâmetro `agents` + `allowedTools: ["Agent"]` |

266| Coordenar múltiplas instâncias de Claude Code com listas de tarefas compartilhadas e mensagens diretas entre agentes | [Agent teams](/pt/agent-teams) | Não configurado diretamente via opções SDK. Agent teams são um recurso CLI onde uma sessão atua como o líder da equipe, coordenando trabalho entre colegas independentes |

267| Executar lógica determinística em chamadas de ferramenta (audit, block, transform) | [Hooks](/pt/agent-sdk/hooks) | parâmetro `hooks` com callbacks, ou scripts shell carregados via `settingSources` |

268| Dar a Claude acesso estruturado a ferramenta para um serviço externo | [MCP](/pt/agent-sdk/mcp) | parâmetro `mcpServers` |

269 

270<Tip>

271 **Subagents versus agent teams:** Subagents são efêmeros e isolados: conversa fresca, uma tarefa, resumo retornado ao pai. Agent teams coordenam múltiplas instâncias independentes de Claude Code que compartilham uma lista de tarefas e se mensageiam diretamente. Agent teams são um recurso CLI. Veja [What subagents inherit](/pt/agent-sdk/subagents#what-subagents-inherit) e a [agent teams comparison](/pt/agent-teams#compare-with-subagents) para detalhes.

272</Tip>

273 

274Cada recurso que você habilita adiciona à janela de contexto do seu agente. Para custos por recurso e como esses recursos se sobrepõem, veja [Extend Claude Code](/pt/features-overview#understand-context-costs).

275 

276## Related resources

277 

278* [Extend Claude Code](/pt/features-overview): Visão geral conceitual de todos os recursos de extensão, com tabelas de comparação e análise de custo de contexto

279* [Skills in the SDK](/pt/agent-sdk/skills): Guia completo para usar skills programaticamente

280* [Subagents](/pt/agent-sdk/subagents): Defina e invoque subagents para subtarefas isoladas

281* [Hooks](/pt/agent-sdk/hooks): Intercepte e controle comportamento do agente em pontos-chave de execução

282* [Permissions](/pt/agent-sdk/permissions): Controle acesso a ferramentas com modos, regras e callbacks

283* [System prompts](/pt/agent-sdk/modifying-system-prompts): Injete contexto sem arquivos CLAUDE.md

agent-sdk/cost-tracking.md +263 −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# Rastrear custo e uso

6 

7> Aprenda como rastrear o uso de tokens, estimar custos e configurar prompt caching com o Claude Agent SDK.

8 

9O Claude Agent SDK fornece informações detalhadas de uso de tokens para cada interação com Claude. Este guia explica como rastrear adequadamente o uso e entender o relatório de custos, especialmente ao lidar com usos de ferramentas paralelas e conversas em múltiplas etapas.

10 

11Para documentação completa da API, consulte a [referência do SDK TypeScript](/pt/agent-sdk/typescript) e a [referência do SDK Python](/pt/agent-sdk/python).

12 

13<Warning>

14 Os campos `total_cost_usd` e `costUSD` são estimativas do lado do cliente, não dados de faturamento autoritários. O SDK os calcula localmente a partir de uma tabela de preços incluída no momento da compilação, portanto, podem divergir do que você é realmente cobrado quando:

15 

16 * os preços mudam

17 * a versão do SDK instalada não reconhece um modelo

18 * regras de faturamento se aplicam que o cliente não consegue modelar

19 

20 Use esses campos para obter informações de desenvolvimento e orçamento aproximado. Para faturamento autoritário, use a [API de Uso e Custo](https://platform.claude.com/docs/en/build-with-claude/usage-cost-api) ou a página de Uso no [Console Claude](https://platform.claude.com/usage). Não fature usuários finais ou dispare decisões financeiras a partir desses campos.

21</Warning>

22 

23## Entender o uso de tokens

24 

25Os SDKs TypeScript e Python expõem os mesmos dados de uso com nomes de campos diferentes:

26 

27* **TypeScript** fornece divisões de tokens por etapa em cada mensagem do assistente (`message.message.id`, `message.message.usage`), custo por modelo via `modelUsage` na mensagem de resultado, e um total cumulativo na mensagem de resultado.

28* **Python** fornece divisões de tokens por etapa em cada mensagem do assistente (`message.usage`, `message.message_id`), custo por modelo via `model_usage` na mensagem de resultado, e o total acumulado na mensagem de resultado (`total_cost_usd` e dicionário `usage`).

29 

30Ambos os SDKs usam o mesmo modelo de custo subjacente e expõem a mesma granularidade. A diferença está na nomenclatura dos campos e onde o uso por etapa está aninhado.

31 

32O rastreamento de custos depende de entender como o SDK define o escopo dos dados de uso:

33 

34* **Chamada `query()`:** uma invocação da função `query()` do SDK. Uma única chamada pode envolver múltiplas etapas (Claude responde, usa ferramentas, obtém resultados, responde novamente). Cada chamada produz uma mensagem [`result`](/pt/agent-sdk/typescript#sdk-result-message) no final.

35* **Etapa:** um único ciclo de solicitação/resposta dentro de uma chamada `query()`. Cada etapa produz mensagens do assistente com uso de tokens.

36* **Sessão:** uma série de chamadas `query()` vinculadas por um ID de sessão (usando a opção `resume`). Cada chamada `query()` dentro de uma sessão relata seu próprio custo independentemente.

37 

38O diagrama a seguir mostra o fluxo de mensagens de uma única chamada `query()`, com uso de tokens relatado em cada etapa e a estimativa cumulativa no final:

39 

40<img src="https://mintcdn.com/claude-code/Dujg43sxTkuhSELI/images/agent-sdk/message-usage-flow.svg?fit=max&auto=format&n=Dujg43sxTkuhSELI&q=85&s=c542f51ff58547ef9c0e57b16d03f33c" alt="Diagrama mostrando uma query produzindo duas etapas de mensagens. A Etapa 1 tem quatro mensagens do assistente compartilhando o mesmo ID e uso (contar uma vez), a Etapa 2 tem uma mensagem do assistente com um novo ID, e a mensagem de resultado final mostra o total_cost_usd estimado." width="760" height="520" data-path="images/agent-sdk/message-usage-flow.svg" />

41 

42<Steps>

43 <Step title="Cada etapa produz mensagens do assistente">

44 Quando Claude responde, ele envia uma ou mais mensagens do assistente. Em TypeScript, cada mensagem do assistente contém uma `BetaMessage` aninhada (acessada via `message.message`) com um `id` e um objeto [`usage`](https://platform.claude.com/docs/en/api/messages) com contagens de tokens (`input_tokens`, `output_tokens`). Em Python, a classe de dados `AssistantMessage` expõe os mesmos dados diretamente via `message.usage` e `message.message_id`. Quando Claude usa múltiplas ferramentas em um turno, todas as mensagens nesse turno compartilham o mesmo ID, portanto, deduplicar por ID para evitar contagem dupla.

45 </Step>

46 

47 <Step title="A mensagem de resultado fornece a estimativa cumulativa">

48 Quando a chamada `query()` é concluída, o SDK emite uma mensagem de resultado com `total_cost_usd` e `usage` cumulativo. Isso está disponível tanto em TypeScript ([`SDKResultMessage`](/pt/agent-sdk/typescript#sdk-result-message)) quanto em Python ([`ResultMessage`](/pt/agent-sdk/python#result-message)). Se você fizer múltiplas chamadas `query()` (por exemplo, em uma sessão multi-turno), cada resultado reflete apenas o custo dessa chamada individual. Se você só precisar do total estimado, pode ignorar o uso por etapa e ler este único valor.

49 </Step>

50</Steps>

51 

52## Obter o custo total de uma query

53 

54A mensagem de resultado ([TypeScript](/pt/agent-sdk/typescript#sdk-result-message), [Python](/pt/agent-sdk/python#result-message)) marca o final do loop do agente para uma chamada `query()`. Ela inclui `total_cost_usd`, o custo estimado cumulativo em todas as etapas dessa chamada. Isso funciona tanto para resultados de sucesso quanto de erro. Se você usar sessões para fazer múltiplas chamadas `query()`, cada resultado reflete apenas o custo dessa chamada individual.

55 

56Os exemplos a seguir iteram sobre o fluxo de mensagens de uma chamada `query()` e imprimem o custo total quando a mensagem `result` chega:

57 

58<CodeGroup>

59 ```typescript TypeScript theme={null}

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

61 

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

63 if (message.type === "result") {

64 console.log(`Total cost: $${message.total_cost_usd}`);

65 }

66 }

67 ```

68 

69 ```python Python theme={null}

70 from claude_agent_sdk import query, ResultMessage

71 import asyncio

72 

73 

74 async def main():

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

76 if isinstance(message, ResultMessage):

77 print(f"Total cost: ${message.total_cost_usd or 0}")

78 

79 

80 asyncio.run(main())

81 ```

82</CodeGroup>

83 

84## Rastrear uso por etapa e por modelo

85 

86Os exemplos nesta seção usam nomes de campos TypeScript. Em Python, os campos equivalentes são [`AssistantMessage.usage`](/pt/agent-sdk/python#assistant-message) e `AssistantMessage.message_id` para uso por etapa, e [`ResultMessage.model_usage`](/pt/agent-sdk/python#result-message) para divisões por modelo.

87 

88### Rastrear uso por etapa

89 

90Cada mensagem do assistente contém uma `BetaMessage` aninhada (acessada via `message.message`) com um `id` e um objeto `usage` com contagens de tokens. Quando Claude usa ferramentas em paralelo, múltiplas mensagens compartilham o mesmo `id` com dados de uso idênticos. Rastreie quais IDs você já contou e pule duplicatas para evitar totais inflacionados.

91 

92<Warning>

93 Chamadas de ferramentas paralelas produzem múltiplas mensagens do assistente cuja `BetaMessage` aninhada compartilha o mesmo `id` e uso idêntico. Sempre deduplicar por ID para obter contagens de tokens por etapa precisas.

94</Warning>

95 

96O exemplo a seguir acumula tokens de entrada e saída em todas as etapas, contando cada ID de mensagem único apenas uma vez:

97 

98```typescript theme={null}

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

100 

101const seenIds = new Set<string>();

102let totalInputTokens = 0;

103let totalOutputTokens = 0;

104 

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

106 if (message.type === "assistant") {

107 const msgId = message.message.id;

108 

109 // Parallel tool calls share the same ID, only count once

110 if (!seenIds.has(msgId)) {

111 seenIds.add(msgId);

112 totalInputTokens += message.message.usage.input_tokens;

113 totalOutputTokens += message.message.usage.output_tokens;

114 }

115 }

116}

117 

118console.log(`Steps: ${seenIds.size}`);

119console.log(`Input tokens: ${totalInputTokens}`);

120console.log(`Output tokens: ${totalOutputTokens}`);

121```

122 

123### Dividir o uso por modelo

124 

125A mensagem de resultado inclui [`modelUsage`](/pt/agent-sdk/typescript#model-usage), um mapa de nome de modelo para contagens de tokens por modelo e custo. Isso é útil quando você executa múltiplos modelos (por exemplo, Haiku para subagentos e Opus para o agente principal) e deseja ver para onde os tokens estão indo.

126 

127O exemplo a seguir executa uma query e imprime o custo e a divisão de tokens para cada modelo usado:

128 

129```typescript theme={null}

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

131 

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

133 if (message.type !== "result") continue;

134 

135 for (const [modelName, usage] of Object.entries(message.modelUsage)) {

136 console.log(`${modelName}: $${usage.costUSD.toFixed(4)}`);

137 console.log(` Input tokens: ${usage.inputTokens}`);

138 console.log(` Output tokens: ${usage.outputTokens}`);

139 console.log(` Cache read: ${usage.cacheReadInputTokens}`);

140 console.log(` Cache creation: ${usage.cacheCreationInputTokens}`);

141 }

142}

143```

144 

145## Acumular custos em múltiplas chamadas

146 

147Cada chamada `query()` retorna seu próprio `total_cost_usd`. O SDK não fornece um total no nível da sessão, portanto, se sua aplicação fizer múltiplas chamadas `query()` (por exemplo, em uma sessão multi-turno ou entre diferentes usuários), acumule os totais você mesmo.

148 

149Os exemplos a seguir executam duas chamadas `query()` sequencialmente, adicionam o `total_cost_usd` de cada chamada a um total em execução e imprimem tanto o custo por chamada quanto o custo combinado:

150 

151<CodeGroup>

152 ```typescript TypeScript theme={null}

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

154 

155 // Track cumulative cost across multiple query() calls

156 let totalSpend = 0;

157 

158 const prompts = [

159 "Read the files in src/ and summarize the architecture",

160 "List all exported functions in src/auth.ts"

161 ];

162 

163 for (const prompt of prompts) {

164 for await (const message of query({ prompt })) {

165 if (message.type === "result") {

166 totalSpend += message.total_cost_usd;

167 console.log(`This call: $${message.total_cost_usd}`);

168 }

169 }

170 }

171 

172 console.log(`Total spend: $${totalSpend.toFixed(4)}`);

173 ```

174 

175 ```python Python theme={null}

176 from claude_agent_sdk import query, ResultMessage

177 import asyncio

178 

179 

180 async def main():

181 # Track cumulative cost across multiple query() calls

182 total_spend = 0.0

183 

184 prompts = [

185 "Read the files in src/ and summarize the architecture",

186 "List all exported functions in src/auth.ts",

187 ]

188 

189 for prompt in prompts:

190 async for message in query(prompt=prompt):

191 if isinstance(message, ResultMessage):

192 cost = message.total_cost_usd or 0

193 total_spend += cost

194 print(f"This call: ${cost}")

195 

196 print(f"Total spend: ${total_spend:.4f}")

197 

198 

199 asyncio.run(main())

200 ```

201</CodeGroup>

202 

203## Lidar com erros, caching e discrepâncias de tokens

204 

205Para rastreamento de custos preciso, leve em conta conversas falhadas, preços de tokens em cache e inconsistências ocasionais de relatórios.

206 

207### Resolver discrepâncias de tokens de saída

208 

209Em casos raros, você pode observar valores diferentes de `output_tokens` para mensagens com o mesmo ID. Quando isso ocorre:

210 

2111. **Use o valor mais alto:** a mensagem final em um grupo normalmente contém o total preciso.

2122. **Prefira a mensagem de resultado:** o `total_cost_usd` na mensagem de resultado reflete a estimativa acumulada do SDK em todas as etapas, portanto, é mais confiável do que somar valores por etapa você mesmo. Ainda é uma estimativa e pode diferir da sua conta real.

2133. **Relate inconsistências:** abra problemas no [repositório GitHub Claude Code](https://github.com/anthropics/claude-code/issues).

214 

215### Rastrear custos em conversas falhadas

216 

217Tanto as mensagens de resultado de sucesso quanto de erro incluem `usage` e `total_cost_usd`. Se uma conversa falhar no meio do caminho, você ainda consumiu tokens até o ponto de falha. Sempre leia dados de custo da mensagem de resultado independentemente de seu `subtype`.

218 

219### Rastrear tokens em cache

220 

221O Agent SDK usa automaticamente [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) para reduzir custos em conteúdo repetido. Você não precisa configurar caching você mesmo. O objeto de uso inclui dois campos adicionais para rastreamento de cache:

222 

223* `cache_creation_input_tokens`: tokens usados para criar novas entradas de cache (cobrados a uma taxa mais alta do que tokens de entrada padrão).

224* `cache_read_input_tokens`: tokens lidos de entradas de cache existentes (cobrados a uma taxa reduzida).

225 

226Rastreie esses separadamente de `input_tokens` para entender a economia de caching. Em TypeScript, esses campos são digitados no objeto [`Usage`](/pt/agent-sdk/typescript#usage). Em Python, eles aparecem como chaves no dicionário [`ResultMessage.usage`](/pt/agent-sdk/python#result-message) (por exemplo, `message.usage.get("cache_read_input_tokens", 0)`).

227 

228### Estender o TTL do cache de prompt para uma hora

229 

230As entradas de cache escritas pelo SDK usam um TTL de 5 minutos por padrão quando você se autentica com uma chave de API ou executa no Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry. Se sua carga de trabalho executa muitas sessões curtas contra o mesmo prompt do sistema e contexto com lacunas maiores que 5 minutos entre elas, o cache expira entre sessões e cada nova sessão paga o preço de entrada completo.

231 

232Para solicitar um TTL de 1 hora em escritas de cache, defina a variável de ambiente [`ENABLE_PROMPT_CACHING_1H`](/pt/env-vars). Você pode exportá-la em seu ambiente de shell ou contêiner, ou passá-la através de `options.env`.

233 

234O exemplo a seguir habilita TTL de 1 hora para um agente executando no Bedrock:

235 

236<CodeGroup>

237 ```python Python theme={null}

238 options = ClaudeAgentOptions(

239 env={

240 "CLAUDE_CODE_USE_BEDROCK": "1",

241 "ENABLE_PROMPT_CACHING_1H": "1",

242 },

243 )

244 ```

245 

246 ```typescript TypeScript theme={null}

247 const options = {

248 env: {

249 ...process.env,

250 CLAUDE_CODE_USE_BEDROCK: "1",

251 ENABLE_PROMPT_CACHING_1H: "1",

252 },

253 };

254 ```

255</CodeGroup>

256 

257Escritas de cache com TTL de 1 hora são cobradas a uma taxa mais alta do que escritas de 5 minutos, portanto, habilitar isso troca custo de escrita mais alto por mais leituras de cache. Consulte [preços de prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) para detalhes. Os usuários de assinatura Claude já recebem TTL de 1 hora automaticamente e não precisam definir essa variável.

258 

259## Documentação relacionada

260 

261* [Referência do SDK TypeScript](/pt/agent-sdk/typescript) - Documentação completa da API

262* [Visão geral do SDK](/pt/agent-sdk/overview) - Começando com o SDK

263* [Permissões do SDK](/pt/agent-sdk/permissions) - Gerenciando permissões de ferramentas

agent-sdk/hooks.md +819 −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# Interceptar e controlar o comportamento do agente com hooks

6 

7> Interceptar e personalizar o comportamento do agente em pontos-chave de execução com hooks

8 

9Hooks são funções de callback que executam seu código em resposta a eventos do agente, como uma ferramenta sendo chamada, uma sessão iniciando ou a execução parando. Com hooks, você pode:

10 

11* **Bloquear operações perigosas** antes de serem executadas, como comandos shell destrutivos ou acesso a arquivos não autorizado

12* **Registrar e auditar** cada chamada de ferramenta para conformidade, depuração ou análise

13* **Transformar entradas e saídas** para sanitizar dados, injetar credenciais ou redirecionar caminhos de arquivo

14* **Exigir aprovação humana** para ações sensíveis como gravações em banco de dados ou chamadas de API

15* **Rastrear ciclo de vida da sessão** para gerenciar estado, limpar recursos ou enviar notificações

16 

17Este guia cobre como hooks funcionam, como configurá-los e fornece exemplos para padrões comuns como bloquear ferramentas, modificar entradas e encaminhar notificações.

18 

19## Como hooks funcionam

20 

21<Steps>

22 <Step title="Um evento é disparado">

23 Algo acontece durante a execução do agente e o SDK dispara um evento: uma ferramenta está prestes a ser chamada (`PreToolUse`), uma ferramenta retornou um resultado (`PostToolUse`), um subagente iniciou ou parou, o agente está ocioso ou a execução terminou. Veja a [lista completa de eventos](#available-hooks).

24 </Step>

25 

26 <Step title="O SDK coleta hooks registrados">

27 O SDK verifica se há hooks registrados para esse tipo de evento. Isso inclui hooks de callback que você passa em `options.hooks` e hooks de comando shell de arquivos de configuração quando a entrada [`settingSources`](/pt/agent-sdk/typescript#setting-source) ou [`setting_sources`](/pt/agent-sdk/python#setting-source) correspondente está habilitada, o que é o padrão para opções `query()`.

28 </Step>

29 

30 <Step title="Matchers filtram quais hooks são executados">

31 Se um hook tem um padrão [`matcher`](#matchers) (como `"Write|Edit"`), o SDK o testa contra o alvo do evento (por exemplo, o nome da ferramenta). Hooks sem um matcher são executados para cada evento desse tipo.

32 </Step>

33 

34 <Step title="Funções de callback são executadas">

35 Cada [função de callback](#callback-functions) do hook correspondente recebe informações sobre o que está acontecendo: o nome da ferramenta, seus argumentos, o ID da sessão e outros detalhes específicos do evento.

36 </Step>

37 

38 <Step title="Seu callback retorna uma decisão">

39 Após realizar qualquer operação (registro, chamadas de API, validação), seu callback retorna um [objeto de saída](#outputs) que diz ao agente o que fazer: permitir a operação, bloqueá-la, modificar a entrada ou injetar contexto na conversa.

40 </Step>

41</Steps>

42 

43O exemplo a seguir reúne essas etapas. Ele registra um hook `PreToolUse` (etapa 1) com um matcher `"Write|Edit"` (etapa 3) para que o callback seja acionado apenas para ferramentas de escrita de arquivo. Quando acionado, o callback recebe a entrada da ferramenta (etapa 4), verifica se o caminho do arquivo tem como alvo um arquivo `.env` e retorna `permissionDecision: "deny"` para bloquear a operação (etapa 5):

44 

45<CodeGroup>

46 ```python Python theme={null}

47 import asyncio

48 from claude_agent_sdk import (

49 AssistantMessage,

50 ClaudeSDKClient,

51 ClaudeAgentOptions,

52 HookMatcher,

53 ResultMessage,

54 )

55 

56 

57 # Define a hook callback that receives tool call details

58 async def protect_env_files(input_data, tool_use_id, context):

59 # Extract the file path from the tool's input arguments

60 file_path = input_data["tool_input"].get("file_path", "")

61 file_name = file_path.split("/")[-1]

62 

63 # Block the operation if targeting a .env file

64 if file_name == ".env":

65 return {

66 "hookSpecificOutput": {

67 "hookEventName": input_data["hook_event_name"],

68 "permissionDecision": "deny",

69 "permissionDecisionReason": "Cannot modify .env files",

70 }

71 }

72 

73 # Return empty object to allow the operation

74 return {}

75 

76 

77 async def main():

78 options = ClaudeAgentOptions(

79 hooks={

80 # Register the hook for PreToolUse events

81 # The matcher filters to only Write and Edit tool calls

82 "PreToolUse": [HookMatcher(matcher="Write|Edit", hooks=[protect_env_files])]

83 }

84 )

85 

86 async with ClaudeSDKClient(options=options) as client:

87 await client.query("Update the database configuration")

88 async for message in client.receive_response():

89 # Filter for assistant and result messages

90 if isinstance(message, (AssistantMessage, ResultMessage)):

91 print(message)

92 

93 

94 asyncio.run(main())

95 ```

96 

97 ```typescript TypeScript theme={null}

98 import { query, HookCallback, PreToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

99 

100 // Define a hook callback with the HookCallback type

101 const protectEnvFiles: HookCallback = async (input, toolUseID, { signal }) => {

102 // Cast input to the specific hook type for type safety

103 const preInput = input as PreToolUseHookInput;

104 

105 // Cast tool_input to access its properties (typed as unknown in the SDK)

106 const toolInput = preInput.tool_input as Record<string, unknown>;

107 const filePath = toolInput?.file_path as string;

108 const fileName = filePath?.split("/").pop();

109 

110 // Block the operation if targeting a .env file

111 if (fileName === ".env") {

112 return {

113 hookSpecificOutput: {

114 hookEventName: preInput.hook_event_name,

115 permissionDecision: "deny",

116 permissionDecisionReason: "Cannot modify .env files"

117 }

118 };

119 }

120 

121 // Return empty object to allow the operation

122 return {};

123 };

124 

125 for await (const message of query({

126 prompt: "Update the database configuration",

127 options: {

128 hooks: {

129 // Register the hook for PreToolUse events

130 // The matcher filters to only Write and Edit tool calls

131 PreToolUse: [{ matcher: "Write|Edit", hooks: [protectEnvFiles] }]

132 }

133 }

134 })) {

135 // Filter for assistant and result messages

136 if (message.type === "assistant" || message.type === "result") {

137 console.log(message);

138 }

139 }

140 ```

141</CodeGroup>

142 

143## Hooks disponíveis

144 

145O SDK fornece hooks para diferentes estágios de execução do agente. Alguns hooks estão disponíveis em ambos os SDKs, enquanto outros são apenas para TypeScript.

146 

147| Evento de Hook | SDK Python | SDK TypeScript | O que o dispara | Caso de uso de exemplo |

148| -------------------- | ---------- | -------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |

149| `PreToolUse` | Sim | Sim | Solicitação de chamada de ferramenta (pode bloquear ou modificar) | Bloquear comandos shell perigosos |

150| `PostToolUse` | Sim | Sim | Resultado de execução de ferramenta | Registrar todas as alterações de arquivo na trilha de auditoria |

151| `PostToolUseFailure` | Sim | Sim | Falha na execução de ferramenta | Lidar ou registrar erros de ferramenta |

152| `PostToolBatch` | Não | Sim | Um lote completo de chamadas de ferramenta é resolvido, uma vez por lote antes da próxima chamada de modelo | Injetar convenções uma vez para todo o lote |

153| `UserPromptSubmit` | Sim | Sim | Envio de prompt do usuário | Injetar contexto adicional em prompts |

154| `Stop` | Sim | Sim | Parada de execução do agente | Salvar estado da sessão antes de sair |

155| `SubagentStart` | Sim | Sim | Inicialização de subagente | Rastrear geração de tarefas paralelas |

156| `SubagentStop` | Sim | Sim | Conclusão de subagente | Agregar resultados de tarefas paralelas |

157| `PreCompact` | Sim | Sim | Solicitação de compactação de conversa | Arquivar transcrição completa antes de resumir |

158| `PermissionRequest` | Sim | Sim | Diálogo de permissão seria exibido | Manipulação de permissão personalizada |

159| `SessionStart` | Não | Sim | Inicialização de sessão | Inicializar registro e telemetria |

160| `SessionEnd` | Não | Sim | Encerramento de sessão | Limpar recursos temporários |

161| `Notification` | Sim | Sim | Mensagens de status do agente | Enviar atualizações de status do agente para Slack ou PagerDuty |

162| `Setup` | Não | Sim | Configuração/manutenção de sessão | Executar tarefas de inicialização |

163| `TeammateIdle` | Não | Sim | Colega fica ocioso | Reatribuir trabalho ou notificar |

164| `TaskCompleted` | Não | Sim | Tarefa em segundo plano é concluída | Agregar resultados de tarefas paralelas |

165| `ConfigChange` | Não | Sim | Arquivo de configuração muda | Recarregar configurações dinamicamente |

166| `WorktreeCreate` | Não | Sim | Git worktree criado | Rastrear espaços de trabalho isolados |

167| `WorktreeRemove` | Não | Sim | Git worktree removido | Limpar recursos de espaço de trabalho |

168 

169## Configurar hooks

170 

171Para configurar um hook, passe-o no campo `hooks` de suas opções de agente (`ClaudeAgentOptions` em Python, o objeto `options` em TypeScript):

172 

173<CodeGroup>

174 ```python Python theme={null}

175 options = ClaudeAgentOptions(

176 hooks={"PreToolUse": [HookMatcher(matcher="Bash", hooks=[my_callback])]}

177 )

178 

179 async with ClaudeSDKClient(options=options) as client:

180 await client.query("Your prompt")

181 async for message in client.receive_response():

182 print(message)

183 ```

184 

185 ```typescript TypeScript theme={null}

186 for await (const message of query({

187 prompt: "Your prompt",

188 options: {

189 hooks: {

190 PreToolUse: [{ matcher: "Bash", hooks: [myCallback] }]

191 }

192 }

193 })) {

194 console.log(message);

195 }

196 ```

197</CodeGroup>

198 

199A opção `hooks` é um dicionário (Python) ou objeto (TypeScript) onde:

200 

201* **Chaves** são [nomes de eventos de hook](#available-hooks) (por exemplo, `'PreToolUse'`, `'PostToolUse'`, `'Stop'`)

202* **Valores** são arrays de [matchers](#matchers), cada um contendo um padrão de filtro opcional e suas [funções de callback](#callback-functions)

203 

204### Matchers

205 

206Use matchers para filtrar quando seus callbacks são acionados. O campo `matcher` é uma string regex que corresponde a um valor diferente dependendo do tipo de evento de hook. Por exemplo, hooks baseados em ferramentas correspondem ao nome da ferramenta, enquanto hooks `Notification` correspondem ao tipo de notificação. Veja a [referência de hooks do Claude Code](/pt/hooks#matcher-patterns) para a lista completa de valores de matcher para cada tipo de evento.

207 

208| Opção | Tipo | Padrão | Descrição |

209| --------- | ---------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

210| `matcher` | `string` | `undefined` | Padrão regex correspondido contra o campo de filtro do evento. Para hooks de ferramenta, este é o nome da ferramenta. As ferramentas integradas incluem `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` e outras (veja [Tipos de Entrada de Ferramenta](/pt/agent-sdk/typescript#tool-input-types) para a lista completa). Ferramentas MCP usam o padrão `mcp__<server>__<action>`. |

211| `hooks` | `HookCallback[]` | - | Obrigatório. Array de funções de callback a executar quando o padrão corresponde |

212| `timeout` | `number` | `60` | Timeout em segundos |

213 

214Use o padrão `matcher` para direcionar ferramentas específicas sempre que possível. Um matcher com `'Bash'` é executado apenas para comandos Bash, enquanto omitir o padrão executa seus callbacks para cada ocorrência do evento. Observe que para hooks baseados em ferramentas, matchers filtram apenas pelo **nome da ferramenta**, não por caminhos de arquivo ou outros argumentos. Para filtrar por caminho de arquivo, verifique `tool_input.file_path` dentro de seu callback.

215 

216<Tip>

217 **Descobrindo nomes de ferramentas:** Veja [Tipos de Entrada de Ferramenta](/pt/agent-sdk/typescript#tool-input-types) para a lista completa de nomes de ferramentas integradas, ou adicione um hook sem um matcher para registrar todas as chamadas de ferramenta que sua sessão faz.

218 

219 **Nomenclatura de ferramentas MCP:** Ferramentas MCP sempre começam com `mcp__` seguido pelo nome do servidor e ação: `mcp__<server>__<action>`. Por exemplo, se você configurar um servidor chamado `playwright`, suas ferramentas serão nomeadas `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click`, etc. O nome do servidor vem da chave que você usa na configuração `mcpServers`.

220</Tip>

221 

222### Funções de callback

223 

224#### Entradas

225 

226Cada callback de hook recebe três argumentos:

227 

228* **Dados de entrada:** um objeto tipado contendo detalhes do evento. Cada tipo de hook tem sua própria forma de entrada (por exemplo, `PreToolUseHookInput` inclui `tool_name` e `tool_input`, enquanto `NotificationHookInput` inclui `message`). Veja as definições de tipo completas nas referências do SDK [TypeScript](/pt/agent-sdk/typescript#hook-input) e [Python](/pt/agent-sdk/python#hook-input).

229 * Todas as entradas de hook compartilham `session_id`, `cwd` e `hook_event_name`.

230 * `agent_id` e `agent_type` são preenchidos quando o hook é acionado dentro de um subagente. Em TypeScript, estes estão na entrada de hook base e disponíveis para todos os tipos de hook. Em Python, eles estão em `PreToolUse`, `PostToolUse` e `PostToolUseFailure` apenas.

231* **ID de uso de ferramenta** (`str | None` / `string | undefined`): correlaciona eventos `PreToolUse` e `PostToolUse` para a mesma chamada de ferramenta.

232* **Contexto:** em TypeScript, contém uma propriedade `signal` (`AbortSignal`) para cancelamento. Em Python, este argumento é reservado para uso futuro.

233 

234#### Saídas

235 

236Seu callback retorna um objeto com duas categorias de campos:

237 

238* **Campos de nível superior** controlam a conversa: `systemMessage` injeta uma mensagem na conversa visível ao modelo, e `continue` (`continue_` em Python) determina se o agente continua executando após este hook.

239* **`hookSpecificOutput`** controla a operação atual. Os campos dentro dependem do tipo de evento de hook. Para hooks `PreToolUse`, é aqui que você define `permissionDecision` (`"allow"`, `"deny"` ou `"ask"`), `permissionDecisionReason` e `updatedInput`. No SDK TypeScript, `permissionDecision` também aceita `"defer"` para encerrar a consulta e [retomar depois](/pt/hooks#defer-a-tool-call-for-later); este valor não está disponível no SDK Python. Para hooks `PostToolUse`, você pode definir `additionalContext` para anexar informações ao resultado da ferramenta.

240 

241Retorne `{}` para permitir a operação sem alterações. Hooks de callback do SDK usam o mesmo formato de saída JSON que [hooks de comando shell do Claude Code](/pt/hooks#json-output), que documenta cada campo e opção específica do evento. Para as definições de tipo do SDK, veja as referências do SDK [TypeScript](/pt/agent-sdk/typescript#sync-hook-json-output) e [Python](/pt/agent-sdk/python#sync-hook-json-output).

242 

243<Note>

244 Quando múltiplos hooks ou regras de permissão se aplicam, **deny** tem prioridade sobre **defer**, que tem prioridade sobre **ask**, que tem prioridade sobre **allow**. Se qualquer hook retornar `deny`, a operação é bloqueada independentemente de outros hooks.

245</Note>

246 

247#### Saída assíncrona

248 

249Por padrão, o agente aguarda seu hook retornar antes de prosseguir. Se seu hook realiza um efeito colateral (registro, envio de webhook) e não precisa influenciar o comportamento do agente, você pode retornar uma saída assíncrona. Isso diz ao agente para continuar imediatamente sem aguardar o hook terminar:

250 

251<CodeGroup>

252 ```python Python theme={null}

253 async def async_hook(input_data, tool_use_id, context):

254 # Start a background task, then return immediately

255 asyncio.create_task(send_to_logging_service(input_data))

256 return {"async_": True, "asyncTimeout": 30000}

257 ```

258 

259 ```typescript TypeScript theme={null}

260 const asyncHook: HookCallback = async (input, toolUseID, { signal }) => {

261 // Start a background task, then return immediately

262 sendToLoggingService(input).catch(console.error);

263 return { async: true, asyncTimeout: 30000 };

264 };

265 ```

266</CodeGroup>

267 

268| Campo | Tipo | Descrição |

269| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |

270| `async` | `true` | Sinaliza modo assíncrono. O agente prossegue sem aguardar. Em Python, use `async_` para evitar a palavra-chave reservada. |

271| `asyncTimeout` | `number` | Timeout opcional em milissegundos para a operação em segundo plano |

272 

273<Note>

274 Saídas assíncronas não podem bloquear, modificar ou injetar contexto na operação, pois o agente já avançou. Use-as apenas para efeitos colaterais como registro, métricas ou notificações.

275</Note>

276 

277## Exemplos

278 

279### Modificar entrada de ferramenta

280 

281Este exemplo intercepta chamadas de ferramenta Write e reescreve o argumento `file_path` para prepender `/sandbox`, redirecionando todas as gravações de arquivo para um diretório em sandbox. O callback retorna `updatedInput` com o caminho modificado e `permissionDecision: 'allow'` para aprovar automaticamente a operação reescrita:

282 

283<CodeGroup>

284 ```python Python theme={null}

285 async def redirect_to_sandbox(input_data, tool_use_id, context):

286 if input_data["hook_event_name"] != "PreToolUse":

287 return {}

288 

289 if input_data["tool_name"] == "Write":

290 original_path = input_data["tool_input"].get("file_path", "")

291 return {

292 "hookSpecificOutput": {

293 "hookEventName": input_data["hook_event_name"],

294 "permissionDecision": "allow",

295 "updatedInput": {

296 **input_data["tool_input"],

297 "file_path": f"/sandbox{original_path}",

298 },

299 }

300 }

301 return {}

302 ```

303 

304 ```typescript TypeScript theme={null}

305 const redirectToSandbox: HookCallback = async (input, toolUseID, { signal }) => {

306 if (input.hook_event_name !== "PreToolUse") return {};

307 

308 const preInput = input as PreToolUseHookInput;

309 const toolInput = preInput.tool_input as Record<string, unknown>;

310 if (preInput.tool_name === "Write") {

311 const originalPath = toolInput.file_path as string;

312 return {

313 hookSpecificOutput: {

314 hookEventName: preInput.hook_event_name,

315 permissionDecision: "allow",

316 updatedInput: {

317 ...toolInput,

318 file_path: `/sandbox${originalPath}`

319 }

320 }

321 };

322 }

323 return {};

324 };

325 ```

326</CodeGroup>

327 

328<Note>

329 Ao usar `updatedInput`, você também deve incluir `permissionDecision: 'allow'`. Sempre retorne um novo objeto em vez de mutar o `tool_input` original.

330</Note>

331 

332### Adicionar contexto e bloquear uma ferramenta

333 

334Este exemplo bloqueia qualquer tentativa de escrever no diretório `/etc` e usa dois campos de saída juntos: `permissionDecision: 'deny'` para a chamada de ferramenta, enquanto `systemMessage` injeta um lembrete na conversa para que o agente receba contexto sobre por que a operação foi bloqueada e evite tentar novamente:

335 

336<CodeGroup>

337 ```python Python theme={null}

338 async def block_etc_writes(input_data, tool_use_id, context):

339 file_path = input_data["tool_input"].get("file_path", "")

340 

341 if file_path.startswith("/etc"):

342 return {

343 # Top-level field: inject guidance into the conversation

344 "systemMessage": "Remember: system directories like /etc are protected.",

345 # hookSpecificOutput: block the operation

346 "hookSpecificOutput": {

347 "hookEventName": input_data["hook_event_name"],

348 "permissionDecision": "deny",

349 "permissionDecisionReason": "Writing to /etc is not allowed",

350 },

351 }

352 return {}

353 ```

354 

355 ```typescript TypeScript theme={null}

356 const blockEtcWrites: HookCallback = async (input, toolUseID, { signal }) => {

357 const preInput = input as PreToolUseHookInput;

358 const toolInput = preInput.tool_input as Record<string, unknown>;

359 const filePath = toolInput?.file_path as string;

360 

361 if (filePath?.startsWith("/etc")) {

362 return {

363 // Top-level field: inject guidance into the conversation

364 systemMessage: "Remember: system directories like /etc are protected.",

365 // hookSpecificOutput: block the operation

366 hookSpecificOutput: {

367 hookEventName: preInput.hook_event_name,

368 permissionDecision: "deny",

369 permissionDecisionReason: "Writing to /etc is not allowed"

370 }

371 };

372 }

373 return {};

374 };

375 ```

376</CodeGroup>

377 

378### Aprovar automaticamente ferramentas específicas

379 

380Por padrão, o agente pode solicitar permissão antes de usar certas ferramentas. Este exemplo aprova automaticamente ferramentas de sistema de arquivos somente leitura (Read, Glob, Grep) retornando `permissionDecision: 'allow'`, permitindo que sejam executadas sem confirmação do usuário enquanto deixa todas as outras ferramentas sujeitas a verificações de permissão normais:

381 

382<CodeGroup>

383 ```python Python theme={null}

384 async def auto_approve_read_only(input_data, tool_use_id, context):

385 if input_data["hook_event_name"] != "PreToolUse":

386 return {}

387 

388 read_only_tools = ["Read", "Glob", "Grep"]

389 if input_data["tool_name"] in read_only_tools:

390 return {

391 "hookSpecificOutput": {

392 "hookEventName": input_data["hook_event_name"],

393 "permissionDecision": "allow",

394 "permissionDecisionReason": "Read-only tool auto-approved",

395 }

396 }

397 return {}

398 ```

399 

400 ```typescript TypeScript theme={null}

401 const autoApproveReadOnly: HookCallback = async (input, toolUseID, { signal }) => {

402 if (input.hook_event_name !== "PreToolUse") return {};

403 

404 const preInput = input as PreToolUseHookInput;

405 const readOnlyTools = ["Read", "Glob", "Grep"];

406 if (readOnlyTools.includes(preInput.tool_name)) {

407 return {

408 hookSpecificOutput: {

409 hookEventName: preInput.hook_event_name,

410 permissionDecision: "allow",

411 permissionDecisionReason: "Read-only tool auto-approved"

412 }

413 };

414 }

415 return {};

416 };

417 ```

418</CodeGroup>

419 

420### Encadear múltiplos hooks

421 

422Hooks são executados na ordem em que aparecem no array. Mantenha cada hook focado em uma única responsabilidade e encadeie múltiplos hooks para lógica complexa:

423 

424<CodeGroup>

425 ```python Python theme={null}

426 options = ClaudeAgentOptions(

427 hooks={

428 "PreToolUse": [

429 HookMatcher(hooks=[rate_limiter]), # First: check rate limits

430 HookMatcher(hooks=[authorization_check]), # Second: verify permissions

431 HookMatcher(hooks=[input_sanitizer]), # Third: sanitize inputs

432 HookMatcher(hooks=[audit_logger]), # Last: log the action

433 ]

434 }

435 )

436 ```

437 

438 ```typescript TypeScript theme={null}

439 const options = {

440 hooks: {

441 PreToolUse: [

442 { hooks: [rateLimiter] }, // First: check rate limits

443 { hooks: [authorizationCheck] }, // Second: verify permissions

444 { hooks: [inputSanitizer] }, // Third: sanitize inputs

445 { hooks: [auditLogger] } // Last: log the action

446 ]

447 }

448 };

449 ```

450</CodeGroup>

451 

452### Filtrar com matchers regex

453 

454Use padrões regex para corresponder múltiplas ferramentas. Este exemplo registra três matchers com escopos diferentes: o primeiro dispara `file_security_hook` apenas para ferramentas de modificação de arquivo, o segundo dispara `mcp_audit_hook` para qualquer ferramenta MCP (ferramentas cujos nomes começam com `mcp__`), e o terceiro dispara `global_logger` para cada chamada de ferramenta independentemente do nome:

455 

456<CodeGroup>

457 ```python Python theme={null}

458 options = ClaudeAgentOptions(

459 hooks={

460 "PreToolUse": [

461 # Match file modification tools

462 HookMatcher(matcher="Write|Edit|Delete", hooks=[file_security_hook]),

463 # Match all MCP tools

464 HookMatcher(matcher="^mcp__", hooks=[mcp_audit_hook]),

465 # Match everything (no matcher)

466 HookMatcher(hooks=[global_logger]),

467 ]

468 }

469 )

470 ```

471 

472 ```typescript TypeScript theme={null}

473 const options = {

474 hooks: {

475 PreToolUse: [

476 // Match file modification tools

477 { matcher: "Write|Edit|Delete", hooks: [fileSecurityHook] },

478 

479 // Match all MCP tools

480 { matcher: "^mcp__", hooks: [mcpAuditHook] },

481 

482 // Match everything (no matcher)

483 { hooks: [globalLogger] }

484 ]

485 }

486 };

487 ```

488</CodeGroup>

489 

490### Rastrear atividade de subagente

491 

492Use hooks `SubagentStop` para monitorar quando subagentes terminam seu trabalho. Veja o tipo de entrada completo nas referências do SDK [TypeScript](/pt/agent-sdk/typescript#hook-input) e [Python](/pt/agent-sdk/python#hook-input). Este exemplo registra um resumo cada vez que um subagente é concluído:

493 

494<CodeGroup>

495 ```python Python theme={null}

496 async def subagent_tracker(input_data, tool_use_id, context):

497 # Log subagent details when it finishes

498 print(f"[SUBAGENT] Completed: {input_data['agent_id']}")

499 print(f" Transcript: {input_data['agent_transcript_path']}")

500 print(f" Tool use ID: {tool_use_id}")

501 print(f" Stop hook active: {input_data.get('stop_hook_active')}")

502 return {}

503 

504 

505 options = ClaudeAgentOptions(

506 hooks={"SubagentStop": [HookMatcher(hooks=[subagent_tracker])]}

507 )

508 ```

509 

510 ```typescript TypeScript theme={null}

511 import { HookCallback, SubagentStopHookInput } from "@anthropic-ai/claude-agent-sdk";

512 

513 const subagentTracker: HookCallback = async (input, toolUseID, { signal }) => {

514 // Cast to SubagentStopHookInput to access subagent-specific fields

515 const subInput = input as SubagentStopHookInput;

516 

517 // Log subagent details when it finishes

518 console.log(`[SUBAGENT] Completed: ${subInput.agent_id}`);

519 console.log(` Transcript: ${subInput.agent_transcript_path}`);

520 console.log(` Tool use ID: ${toolUseID}`);

521 console.log(` Stop hook active: ${subInput.stop_hook_active}`);

522 return {};

523 };

524 

525 const options = {

526 hooks: {

527 SubagentStop: [{ hooks: [subagentTracker] }]

528 }

529 };

530 ```

531</CodeGroup>

532 

533### Fazer requisições HTTP a partir de hooks

534 

535Hooks podem realizar operações assíncronas como requisições HTTP. Capture erros dentro de seu hook em vez de deixá-los se propagar, pois uma exceção não tratada pode interromper o agente.

536 

537Este exemplo envia um webhook após cada ferramenta ser concluída, registrando qual ferramenta foi executada e quando. O hook captura erros para que um webhook falhado não interrompa o agente:

538 

539<CodeGroup>

540 ```python Python theme={null}

541 import asyncio

542 import json

543 import urllib.request

544 from datetime import datetime

545 

546 

547 def _send_webhook(tool_name):

548 """Synchronous helper that POSTs tool usage data to an external webhook."""

549 data = json.dumps(

550 {

551 "tool": tool_name,

552 "timestamp": datetime.now().isoformat(),

553 }

554 ).encode()

555 req = urllib.request.Request(

556 "https://api.example.com/webhook",

557 data=data,

558 headers={"Content-Type": "application/json"},

559 method="POST",

560 )

561 urllib.request.urlopen(req)

562 

563 

564 async def webhook_notifier(input_data, tool_use_id, context):

565 # Only fire after a tool completes (PostToolUse), not before

566 if input_data["hook_event_name"] != "PostToolUse":

567 return {}

568 

569 try:

570 # Run the blocking HTTP call in a thread to avoid blocking the event loop

571 await asyncio.to_thread(_send_webhook, input_data["tool_name"])

572 except Exception as e:

573 # Log the error but don't raise. A failed webhook shouldn't stop the agent

574 print(f"Webhook request failed: {e}")

575 

576 return {}

577 ```

578 

579 ```typescript TypeScript theme={null}

580 import { query, HookCallback, PostToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

581 

582 const webhookNotifier: HookCallback = async (input, toolUseID, { signal }) => {

583 // Only fire after a tool completes (PostToolUse), not before

584 if (input.hook_event_name !== "PostToolUse") return {};

585 

586 try {

587 await fetch("https://api.example.com/webhook", {

588 method: "POST",

589 headers: { "Content-Type": "application/json" },

590 body: JSON.stringify({

591 tool: (input as PostToolUseHookInput).tool_name,

592 timestamp: new Date().toISOString()

593 }),

594 // Pass signal so the request cancels if the hook times out

595 signal

596 });

597 } catch (error) {

598 // Handle cancellation separately from other errors

599 if (error instanceof Error && error.name === "AbortError") {

600 console.log("Webhook request cancelled");

601 }

602 // Don't re-throw. A failed webhook shouldn't stop the agent

603 }

604 

605 return {};

606 };

607 

608 // Register as a PostToolUse hook

609 for await (const message of query({

610 prompt: "Refactor the auth module",

611 options: {

612 hooks: {

613 PostToolUse: [{ hooks: [webhookNotifier] }]

614 }

615 }

616 })) {

617 console.log(message);

618 }

619 ```

620</CodeGroup>

621 

622### Encaminhar notificações para Slack

623 

624Use hooks `Notification` para receber notificações do sistema do agente e encaminhá-las para serviços externos. Notificações são disparadas para tipos de evento específicos: `permission_prompt` (Claude precisa de permissão), `idle_prompt` (Claude está aguardando entrada), `auth_success` (autenticação concluída) e `elicitation_dialog` (Claude está solicitando ao usuário). Cada notificação inclui um campo `message` com uma descrição legível por humanos e opcionalmente um `title`.

625 

626Este exemplo encaminha cada notificação para um canal Slack. Requer uma [URL de webhook de entrada do Slack](https://api.slack.com/messaging/webhooks), que você cria adicionando um app ao seu espaço de trabalho Slack e habilitando webhooks de entrada:

627 

628<CodeGroup>

629 ```python Python theme={null}

630 import asyncio

631 import json

632 import urllib.request

633 

634 from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, HookMatcher

635 

636 

637 def _send_slack_notification(message):

638 """Synchronous helper that sends a message to Slack via incoming webhook."""

639 data = json.dumps({"text": f"Agent status: {message}"}).encode()

640 req = urllib.request.Request(

641 "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",

642 data=data,

643 headers={"Content-Type": "application/json"},

644 method="POST",

645 )

646 urllib.request.urlopen(req)

647 

648 

649 async def notification_handler(input_data, tool_use_id, context):

650 try:

651 # Run the blocking HTTP call in a thread to avoid blocking the event loop

652 await asyncio.to_thread(_send_slack_notification, input_data.get("message", ""))

653 except Exception as e:

654 print(f"Failed to send notification: {e}")

655 

656 # Return empty object. Notification hooks don't modify agent behavior

657 return {}

658 

659 

660 async def main():

661 options = ClaudeAgentOptions(

662 hooks={

663 # Register the hook for Notification events (no matcher needed)

664 "Notification": [HookMatcher(hooks=[notification_handler])],

665 },

666 )

667 

668 async with ClaudeSDKClient(options=options) as client:

669 await client.query("Analyze this codebase")

670 async for message in client.receive_response():

671 print(message)

672 

673 

674 asyncio.run(main())

675 ```

676 

677 ```typescript TypeScript theme={null}

678 import { query, HookCallback, NotificationHookInput } from "@anthropic-ai/claude-agent-sdk";

679 

680 // Define a hook callback that sends notifications to Slack

681 const notificationHandler: HookCallback = async (input, toolUseID, { signal }) => {

682 // Cast to NotificationHookInput to access the message field

683 const notification = input as NotificationHookInput;

684 

685 try {

686 // POST the notification message to a Slack incoming webhook

687 await fetch("https://hooks.slack.com/services/YOUR/WEBHOOK/URL", {

688 method: "POST",

689 headers: { "Content-Type": "application/json" },

690 body: JSON.stringify({

691 text: `Agent status: ${notification.message}`

692 }),

693 // Pass signal so the request cancels if the hook times out

694 signal

695 });

696 } catch (error) {

697 if (error instanceof Error && error.name === "AbortError") {

698 console.log("Notification cancelled");

699 } else {

700 console.error("Failed to send notification:", error);

701 }

702 }

703 

704 // Return empty object. Notification hooks don't modify agent behavior

705 return {};

706 };

707 

708 // Register the hook for Notification events (no matcher needed)

709 for await (const message of query({

710 prompt: "Analyze this codebase",

711 options: {

712 hooks: {

713 Notification: [{ hooks: [notificationHandler] }]

714 }

715 }

716 })) {

717 console.log(message);

718 }

719 ```

720</CodeGroup>

721 

722## Corrigir problemas comuns

723 

724### Hook não é disparado

725 

726* Verifique se o nome do evento de hook está correto e sensível a maiúsculas/minúsculas (`PreToolUse`, não `preToolUse`)

727* Verifique se seu padrão de matcher corresponde exatamente ao nome da ferramenta

728* Certifique-se de que o hook está sob o tipo de evento correto em `options.hooks`

729* Para hooks não baseados em ferramentas como `Stop` e `SubagentStop`, matchers correspondem a campos diferentes (veja [padrões de matcher](/pt/hooks#matcher-patterns))

730* Hooks podem não ser disparados quando o agente atinge o limite [`max_turns`](/pt/agent-sdk/python#claude-agent-options) porque a sessão termina antes que hooks possam ser executados

731 

732### Matcher não filtra como esperado

733 

734Matchers apenas correspondem a **nomes de ferramentas**, não a caminhos de arquivo ou outros argumentos. Para filtrar por caminho de arquivo, verifique `tool_input.file_path` dentro de seu hook:

735 

736```typescript theme={null}

737const myHook: HookCallback = async (input, toolUseID, { signal }) => {

738 const preInput = input as PreToolUseHookInput;

739 const toolInput = preInput.tool_input as Record<string, unknown>;

740 const filePath = toolInput?.file_path as string;

741 if (!filePath?.endsWith(".md")) return {}; // Skip non-markdown files

742 // Process markdown files...

743 return {};

744};

745```

746 

747### Timeout de hook

748 

749* Aumente o valor `timeout` na configuração `HookMatcher`

750* Use o `AbortSignal` do terceiro argumento de callback para lidar com cancelamento graciosamente em TypeScript

751 

752### Ferramenta bloqueada inesperadamente

753 

754* Verifique todos os hooks `PreToolUse` para retornos `permissionDecision: 'deny'`

755* Adicione registro aos seus hooks para ver qual `permissionDecisionReason` eles estão retornando

756* Verifique se padrões de matcher não são muito amplos (um matcher vazio corresponde a todas as ferramentas)

757 

758### Entrada modificada não aplicada

759 

760* Certifique-se de que `updatedInput` está dentro de `hookSpecificOutput`, não no nível superior:

761 

762 ```typescript theme={null}

763 return {

764 hookSpecificOutput: {

765 hookEventName: "PreToolUse",

766 permissionDecision: "allow",

767 updatedInput: { command: "new command" }

768 }

769 };

770 ```

771 

772* Você também deve retornar `permissionDecision: 'allow'` para que a modificação de entrada tenha efeito

773 

774* Inclua `hookEventName` em `hookSpecificOutput` para identificar qual tipo de hook a saída é

775 

776### Hooks de sessão não disponíveis em Python

777 

778`SessionStart` e `SessionEnd` podem ser registrados como hooks de callback do SDK em TypeScript, mas não estão disponíveis no SDK Python (`HookEvent` os omite). Em Python, eles estão disponíveis apenas como [hooks de comando shell](/pt/hooks#hook-events) definidos em arquivos de configuração (por exemplo, `.claude/settings.json`). Para carregar hooks de comando shell de sua aplicação SDK, inclua a fonte de configuração apropriada com [`setting_sources`](/pt/agent-sdk/python#setting-source) ou [`settingSources`](/pt/agent-sdk/typescript#setting-source):

779 

780<CodeGroup>

781 ```python Python theme={null}

782 options = ClaudeAgentOptions(

783 setting_sources=["project"], # Loads .claude/settings.json including hooks

784 )

785 ```

786 

787 ```typescript TypeScript theme={null}

788 const options = {

789 settingSources: ["project"] // Loads .claude/settings.json including hooks

790 };

791 ```

792</CodeGroup>

793 

794Para executar lógica de inicialização como um callback do SDK Python, use a primeira mensagem de `client.receive_response()` como seu gatilho.

795 

796### Prompts de permissão de subagente se multiplicando

797 

798Ao gerar múltiplos subagentes, cada um pode solicitar permissões separadamente. Subagentes não herdam automaticamente permissões do agente pai. Para evitar prompts repetidos, use hooks `PreToolUse` para aprovar automaticamente ferramentas específicas ou configure regras de permissão que se aplicam a sessões de subagente.

799 

800### Loops recursivos de hook com subagentes

801 

802Um hook `UserPromptSubmit` que gera subagentes pode criar loops infinitos se esses subagentes acionarem o mesmo hook. Para evitar isso:

803 

804* Verifique um indicador de subagente na entrada do hook antes de gerar

805* Use uma variável compartilhada ou estado de sessão para rastrear se você já está dentro de um subagente

806* Escopo hooks para executar apenas para a sessão de agente de nível superior

807 

808### systemMessage não aparecendo na saída

809 

810O campo `systemMessage` adiciona contexto à conversa que o modelo vê, mas pode não aparecer em todos os modos de saída do SDK. Se você precisar expor decisões de hook para sua aplicação, registre-as separadamente ou use um canal de saída dedicado.

811 

812## Recursos relacionados

813 

814* [Referência de hooks do Claude Code](/pt/hooks): esquemas JSON de entrada/saída completos, documentação de eventos e padrões de matcher

815* [Guia de hooks do Claude Code](/pt/hooks-guide): exemplos de hooks de comando shell e passo a passo

816* [Referência do SDK TypeScript](/pt/agent-sdk/typescript): tipos de hook, definições de entrada/saída e opções de configuração

817* [Referência do SDK Python](/pt/agent-sdk/python): tipos de hook, definições de entrada/saída e opções de configuração

818* [Permissões](/pt/agent-sdk/permissions): controlar o que seu agente pode fazer

819* [Ferramentas personalizadas](/pt/agent-sdk/custom-tools): construir ferramentas para estender capacidades do agente

agent-sdk/hosting.md +142 −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# Hospedagem do Agent SDK

6 

7> Implante e hospede o Claude Agent SDK em ambientes de produção

8 

9O Claude Agent SDK difere das APIs LLM tradicionais sem estado, pois mantém o estado conversacional e executa comandos em um ambiente persistente. Este guia aborda a arquitetura, considerações de hospedagem e melhores práticas para implantar agentes baseados em SDK em produção.

10 

11<Info>

12 Para endurecimento de segurança além da sandboxing básica (incluindo controles de rede, gerenciamento de credenciais e opções de isolamento), consulte [Implantação Segura](/pt/agent-sdk/secure-deployment).

13</Info>

14 

15## Requisitos de Hospedagem

16 

17### Sandboxing Baseado em Container

18 

19Para segurança e isolamento, o SDK deve ser executado dentro de um ambiente de container sandboxed. Isso fornece isolamento de processo, limites de recursos, controle de rede e sistemas de arquivos efêmeros.

20 

21O SDK também suporta [configuração de sandbox programática](/pt/agent-sdk/typescript#sandbox-settings) para execução de comandos.

22 

23### Requisitos do Sistema

24 

25Cada instância do SDK requer:

26 

27* **Dependências de tempo de execução**

28 * Python 3.10+ para o SDK Python, ou Node.js 18+ para o SDK TypeScript

29 * Ambos os pacotes SDK incluem um binário nativo do Claude Code para a plataforma do host, portanto, nenhuma instalação separada do Claude Code ou Node.js é necessária para o CLI gerado

30 

31* **Alocação de recursos**

32 * Recomendado: 1GiB de RAM, 5GiB de disco e 1 CPU (varie isso com base em sua tarefa conforme necessário)

33 

34* **Acesso à rede**

35 * HTTPS de saída para `api.anthropic.com`

36 * Opcional: Acesso a servidores MCP ou ferramentas externas

37 

38## Compreendendo a Arquitetura do SDK

39 

40Diferentemente das chamadas de API sem estado, o Claude Agent SDK opera como um **processo de longa duração** que:

41 

42* **Executa comandos** em um ambiente de shell persistente

43* **Gerencia operações de arquivo** dentro de um diretório de trabalho

44* **Manipula execução de ferramentas** com contexto de interações anteriores

45 

46## Opções de Provedor de Sandbox

47 

48Vários provedores se especializam em ambientes de container seguro para execução de código de IA:

49 

50* **[Modal Sandbox](https://modal.com/docs/guide/sandbox)** - [implementação de demonstração](https://modal.com/docs/examples/claude-slack-gif-creator)

51* **[Cloudflare Sandboxes](https://github.com/cloudflare/sandbox-sdk)**

52* **[Daytona](https://www.daytona.io/)**

53* **[E2B](https://e2b.dev/)**

54* **[Fly Machines](https://fly.io/docs/machines/)**

55* **[Vercel Sandbox](https://vercel.com/docs/functions/sandbox)**

56 

57Para opções auto-hospedadas (Docker, gVisor, Firecracker) e configuração de isolamento detalhada, consulte [Tecnologias de Isolamento](/pt/agent-sdk/secure-deployment#isolation-technologies).

58 

59## Padrões de Implantação em Produção

60 

61### Padrão 1: Sessões Efêmeras

62 

63Crie um novo container para cada tarefa do usuário e destrua-o quando concluído.

64 

65Melhor para tarefas únicas, o usuário ainda pode interagir com a IA enquanto a tarefa está sendo concluída, mas uma vez concluída, o container é destruído.

66 

67**Exemplos:**

68 

69* Investigação e Correção de Bugs: Depure e resolva um problema específico com contexto relevante

70* Processamento de Faturas: Extraia e estruture dados de recibos/faturas para sistemas contábeis

71* Tarefas de Tradução: Traduza documentos ou lotes de conteúdo entre idiomas

72* Processamento de Imagem/Vídeo: Aplique transformações, otimizações ou extraia metadados de arquivos de mídia

73 

74### Padrão 2: Sessões de Longa Duração

75 

76Mantenha instâncias de container persistentes para tarefas de longa duração. Frequentemente, execute *múltiplos* processos do Claude Agent dentro do container com base na demanda.

77 

78Melhor para agentes proativos que tomam ações sem entrada do usuário, agentes que servem conteúdo ou agentes que processam grandes quantidades de mensagens.

79 

80**Exemplos:**

81 

82* Agente de Email: Monitora emails recebidos e triagem autônoma, responde ou toma ações com base no conteúdo

83* Construtor de Sites: Hospeda sites personalizados por usuário com recursos de edição ao vivo servidos através de portas de container

84* Chatbots de Alta Frequência: Manipula fluxos contínuos de mensagens de plataformas como Slack onde tempos de resposta rápidos são críticos

85 

86### Padrão 3: Sessões Híbridas

87 

88Containers efêmeros que são hidratados com histórico e estado, possivelmente de um banco de dados ou dos recursos de retomada de sessão do SDK.

89 

90Melhor para containers com interação intermitente do usuário que inicia trabalho e desliga quando o trabalho é concluído, mas pode ser continuado.

91 

92**Exemplos:**

93 

94* Gerenciador de Projetos Pessoais: Ajuda a gerenciar projetos em andamento com check-ins intermitentes, mantém contexto de tarefas, decisões e progresso

95* Pesquisa Profunda: Conduz tarefas de pesquisa de várias horas, salva descobertas e retoma a investigação quando o usuário retorna

96* Agente de Suporte ao Cliente: Manipula tickets de suporte que abrangem múltiplas interações, carrega histórico de tickets e contexto do cliente

97 

98### Padrão 4: Containers Únicos

99 

100Execute múltiplos processos do Claude Agent SDK em um container global.

101 

102Melhor para agentes que devem colaborar estreitamente. Este é provavelmente o padrão menos popular porque você terá que impedir que os agentes se sobrescrevam.

103 

104**Exemplos:**

105 

106* **Simulações**: Agentes que interagem entre si em simulações, como videogames.

107 

108## Perguntas Frequentes

109 

110### Como me comunico com meus sandboxes?

111 

112Ao hospedar em containers, exponha portas para se comunicar com suas instâncias do SDK. Sua aplicação pode expor endpoints HTTP/WebSocket para clientes externos enquanto o SDK é executado internamente dentro do container.

113 

114### Qual é o custo de hospedar um container?

115 

116O custo dominante de servir agentes são os tokens; containers variam com base no que você provisiona, mas um custo mínimo é aproximadamente 5 centavos por hora de execução.

117 

118### Quando devo desligar containers ociosos versus mantê-los aquecidos?

119 

120Isso provavelmente depende do provedor, diferentes provedores de sandbox permitirão que você defina critérios diferentes para tempos limite de ociosidade após os quais um sandbox pode desligar.

121Você desejará ajustar esse tempo limite com base na frequência com que acha que a resposta do usuário pode ocorrer.

122 

123### Com que frequência devo atualizar o Claude Code CLI?

124 

125O Claude Code CLI é versionado com semver, portanto, quaisquer alterações significativas serão versionadas.

126 

127### Como monitoro a saúde do container e o desempenho do agente?

128 

129Como containers são apenas servidores, a mesma infraestrutura de logging que você usa para o backend funcionará para containers.

130 

131### Quanto tempo uma sessão de agente pode ser executada antes de atingir o tempo limite?

132 

133Uma sessão de agente não atingirá o tempo limite, mas considere definir uma propriedade 'maxTurns' para impedir que Claude fique preso em um loop.

134 

135## Próximas Etapas

136 

137* [Implantação Segura](/pt/agent-sdk/secure-deployment) - Controles de rede, gerenciamento de credenciais e endurecimento de isolamento

138* [SDK TypeScript - Configurações de Sandbox](/pt/agent-sdk/typescript#sandbox-settings) - Configure sandbox programaticamente

139* [Guia de Sessões](/pt/agent-sdk/sessions) - Saiba mais sobre gerenciamento de sessões

140* [Permissões](/pt/agent-sdk/permissions) - Configure permissões de ferramentas

141* [Rastreamento de Custos](/pt/agent-sdk/cost-tracking) - Monitore o uso da API

142* [Integração MCP](/pt/agent-sdk/mcp) - Estenda com ferramentas personalizadas

agent-sdk/overview.md +607 −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# Visão geral do Agent SDK

6 

7> Construa agentes de IA em produção com Claude Code como uma biblioteca

8 

9<Note>

10 O Claude Code SDK foi renomeado para Claude Agent SDK. Se você está migrando do SDK antigo, consulte o [Guia de Migração](/pt/agent-sdk/migration-guide).

11</Note>

12 

13Construa agentes de IA que leem arquivos autonomamente, executam comandos, pesquisam na web, editam código e muito mais. O Agent SDK oferece as mesmas ferramentas, loop de agente e gerenciamento de contexto que alimentam Claude Code, programável em Python e TypeScript.

14 

15<Note>

16 Opus 4.7 (`claude-opus-4-7`) requer Agent SDK v0.2.111 ou posterior. Se você vir um erro de API `thinking.type.enabled`, consulte [Troubleshooting](/pt/agent-sdk/quickstart#troubleshooting).

17</Note>

18 

19<CodeGroup>

20 ```python Python theme={null}

21 import asyncio

22 from claude_agent_sdk import query, ClaudeAgentOptions

23 

24 

25 async def main():

26 async for message in query(

27 prompt="Find and fix the bug in auth.py",

28 options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),

29 ):

30 print(message) # Claude reads the file, finds the bug, edits it

31 

32 

33 asyncio.run(main())

34 ```

35 

36 ```typescript TypeScript theme={null}

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

38 

39 for await (const message of query({

40 prompt: "Find and fix the bug in auth.ts",

41 options: { allowedTools: ["Read", "Edit", "Bash"] }

42 })) {

43 console.log(message); // Claude reads the file, finds the bug, edits it

44 }

45 ```

46</CodeGroup>

47 

48O Agent SDK inclui ferramentas integradas para ler arquivos, executar comandos e editar código, para que seu agente possa começar a trabalhar imediatamente sem você implementar a execução de ferramentas. Mergulhe no guia de início rápido ou explore agentes reais construídos com o SDK:

49 

50<CardGroup cols={2}>

51 <Card title="Guia de Início Rápido" icon="play" href="/pt/agent-sdk/quickstart">

52 Construa um agente de correção de bugs em minutos

53 </Card>

54 

55 <Card title="Agentes de exemplo" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

56 Assistente de email, agente de pesquisa e muito mais

57 </Card>

58</CardGroup>

59 

60## Comece agora

61 

62<Steps>

63 <Step title="Instale o SDK">

64 <Tabs>

65 <Tab title="TypeScript">

66 ```bash theme={null}

67 npm install @anthropic-ai/claude-agent-sdk

68 ```

69 </Tab>

70 

71 <Tab title="Python">

72 ```bash theme={null}

73 pip install claude-agent-sdk

74 ```

75 </Tab>

76 </Tabs>

77 

78 <Note>

79 O SDK TypeScript agrupa um binário nativo do Claude Code para sua plataforma como uma dependência opcional, portanto você não precisa instalar Claude Code separadamente.

80 </Note>

81 </Step>

82 

83 <Step title="Defina sua chave de API">

84 Obtenha uma chave de API do [Console](https://platform.claude.com/), depois defina-a como uma variável de ambiente:

85 

86 ```bash theme={null}

87 export ANTHROPIC_API_KEY=your-api-key

88 ```

89 

90 O SDK também suporta autenticação via provedores de API de terceiros:

91 

92 * **Amazon Bedrock**: defina a variável de ambiente `CLAUDE_CODE_USE_BEDROCK=1` e configure as credenciais da AWS

93 * **Google Vertex AI**: defina a variável de ambiente `CLAUDE_CODE_USE_VERTEX=1` e configure as credenciais do Google Cloud

94 * **Microsoft Azure**: defina a variável de ambiente `CLAUDE_CODE_USE_FOUNDRY=1` e configure as credenciais do Azure

95 

96 Consulte os guias de configuração para [Bedrock](/pt/amazon-bedrock), [Vertex AI](/pt/google-vertex-ai) ou [Azure AI Foundry](/pt/microsoft-foundry) para obter detalhes.

97 

98 <Note>

99 A menos que previamente aprovado, a Anthropic não permite que desenvolvedores terceirizados ofereçam login claude.ai ou limites de taxa para seus produtos, incluindo agentes construídos no Claude Agent SDK. Use os métodos de autenticação de chave de API descritos neste documento.

100 </Note>

101 </Step>

102 

103 <Step title="Execute seu primeiro agente">

104 Este exemplo cria um agente que lista arquivos em seu diretório atual usando ferramentas integradas.

105 

106 <CodeGroup>

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query, ClaudeAgentOptions

110 

111 

112 async def main():

113 async for message in query(

114 prompt="What files are in this directory?",

115 options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),

116 ):

117 if hasattr(message, "result"):

118 print(message.result)

119 

120 

121 asyncio.run(main())

122 ```

123 

124 ```typescript TypeScript theme={null}

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

126 

127 for await (const message of query({

128 prompt: "What files are in this directory?",

129 options: { allowedTools: ["Bash", "Glob"] }

130 })) {

131 if ("result" in message) console.log(message.result);

132 }

133 ```

134 </CodeGroup>

135 </Step>

136</Steps>

137 

138**Pronto para construir?** Siga o [Guia de Início Rápido](/pt/agent-sdk/quickstart) para criar um agente que encontra e corrige bugs em minutos.

139 

140## Capacidades

141 

142Tudo o que torna Claude Code poderoso está disponível no SDK:

143 

144<Tabs>

145 <Tab title="Ferramentas integradas">

146 Seu agente pode ler arquivos, executar comandos e pesquisar bases de código imediatamente. As ferramentas principais incluem:

147 

148 | Ferramenta | O que faz |

149 | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |

150 | **Read** | Ler qualquer arquivo no diretório de trabalho |

151 | **Write** | Criar novos arquivos |

152 | **Edit** | Fazer edições precisas em arquivos existentes |

153 | **Bash** | Executar comandos de terminal, scripts, operações git |

154 | **Monitor** | Observar um script em segundo plano e reagir a cada linha de saída como um evento |

155 | **Glob** | Encontrar arquivos por padrão (`**/*.ts`, `src/**/*.py`) |

156 | **Grep** | Pesquisar conteúdo de arquivos com regex |

157 | **WebSearch** | Pesquisar na web por informações atuais |

158 | **WebFetch** | Buscar e analisar conteúdo de páginas da web |

159 | **[AskUserQuestion](/pt/agent-sdk/user-input#handle-clarifying-questions)** | Fazer perguntas de esclarecimento ao usuário com opções de múltipla escolha |

160 

161 Este exemplo cria um agente que pesquisa sua base de código por comentários TODO:

162 

163 <CodeGroup>

164 ```python Python theme={null}

165 import asyncio

166 from claude_agent_sdk import query, ClaudeAgentOptions

167 

168 

169 async def main():

170 async for message in query(

171 prompt="Find all TODO comments and create a summary",

172 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]),

173 ):

174 if hasattr(message, "result"):

175 print(message.result)

176 

177 

178 asyncio.run(main())

179 ```

180 

181 ```typescript TypeScript theme={null}

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

183 

184 for await (const message of query({

185 prompt: "Find all TODO comments and create a summary",

186 options: { allowedTools: ["Read", "Glob", "Grep"] }

187 })) {

188 if ("result" in message) console.log(message.result);

189 }

190 ```

191 </CodeGroup>

192 </Tab>

193 

194 <Tab title="hooks">

195 Execute código personalizado em pontos-chave do ciclo de vida do agente. Os hooks do SDK usam funções de retorno de chamada para validar, registrar, bloquear ou transformar o comportamento do agente.

196 

197 **Hooks disponíveis:** `PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit` e muito mais.

198 

199 Este exemplo registra todas as alterações de arquivo em um arquivo de auditoria:

200 

201 <CodeGroup>

202 ```python Python theme={null}

203 import asyncio

204 from datetime import datetime

205 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher

206 

207 

208 async def log_file_change(input_data, tool_use_id, context):

209 file_path = input_data.get("tool_input", {}).get("file_path", "unknown")

210 with open("./audit.log", "a") as f:

211 f.write(f"{datetime.now()}: modified {file_path}\n")

212 return {}

213 

214 

215 async def main():

216 async for message in query(

217 prompt="Refactor utils.py to improve readability",

218 options=ClaudeAgentOptions(

219 permission_mode="acceptEdits",

220 hooks={

221 "PostToolUse": [

222 HookMatcher(matcher="Edit|Write", hooks=[log_file_change])

223 ]

224 },

225 ),

226 ):

227 if hasattr(message, "result"):

228 print(message.result)

229 

230 

231 asyncio.run(main())

232 ```

233 

234 ```typescript TypeScript theme={null}

235 import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk";

236 import { appendFile } from "fs/promises";

237 

238 const logFileChange: HookCallback = async (input) => {

239 const filePath = (input as any).tool_input?.file_path ?? "unknown";

240 await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`);

241 return {};

242 };

243 

244 for await (const message of query({

245 prompt: "Refactor utils.py to improve readability",

246 options: {

247 permissionMode: "acceptEdits",

248 hooks: {

249 PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }]

250 }

251 }

252 })) {

253 if ("result" in message) console.log(message.result);

254 }

255 ```

256 </CodeGroup>

257 

258 [Saiba mais sobre hooks →](/pt/agent-sdk/hooks)

259 </Tab>

260 

261 <Tab title="Subagentes">

262 Crie agentes especializados para lidar com subtarefas focadas. Seu agente principal delega trabalho e os subagentes relatam resultados.

263 

264 Defina agentes personalizados com instruções especializadas. Inclua `Agent` em `allowedTools` já que os subagentes são invocados via a ferramenta Agent:

265 

266 <CodeGroup>

267 ```python Python theme={null}

268 import asyncio

269 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition

270 

271 

272 async def main():

273 async for message in query(

274 prompt="Use the code-reviewer agent to review this codebase",

275 options=ClaudeAgentOptions(

276 allowed_tools=["Read", "Glob", "Grep", "Agent"],

277 agents={

278 "code-reviewer": AgentDefinition(

279 description="Expert code reviewer for quality and security reviews.",

280 prompt="Analyze code quality and suggest improvements.",

281 tools=["Read", "Glob", "Grep"],

282 )

283 },

284 ),

285 ):

286 if hasattr(message, "result"):

287 print(message.result)

288 

289 

290 asyncio.run(main())

291 ```

292 

293 ```typescript TypeScript theme={null}

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

295 

296 for await (const message of query({

297 prompt: "Use the code-reviewer agent to review this codebase",

298 options: {

299 allowedTools: ["Read", "Glob", "Grep", "Agent"],

300 agents: {

301 "code-reviewer": {

302 description: "Expert code reviewer for quality and security reviews.",

303 prompt: "Analyze code quality and suggest improvements.",

304 tools: ["Read", "Glob", "Grep"]

305 }

306 }

307 }

308 })) {

309 if ("result" in message) console.log(message.result);

310 }

311 ```

312 </CodeGroup>

313 

314 As mensagens dentro do contexto de um subagente incluem um campo `parent_tool_use_id`, permitindo que você rastreie quais mensagens pertencem a qual execução de subagente.

315 

316 [Saiba mais sobre subagentes →](/pt/agent-sdk/subagents)

317 </Tab>

318 

319 <Tab title="MCP">

320 Conecte-se a sistemas externos via Model Context Protocol: bancos de dados, navegadores, APIs e [centenas mais](https://github.com/modelcontextprotocol/servers).

321 

322 Este exemplo conecta o [servidor Playwright MCP](https://github.com/microsoft/playwright-mcp) para dar ao seu agente capacidades de automação de navegador:

323 

324 <CodeGroup>

325 ```python Python theme={null}

326 import asyncio

327 from claude_agent_sdk import query, ClaudeAgentOptions

328 

329 

330 async def main():

331 async for message in query(

332 prompt="Open example.com and describe what you see",

333 options=ClaudeAgentOptions(

334 mcp_servers={

335 "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}

336 }

337 ),

338 ):

339 if hasattr(message, "result"):

340 print(message.result)

341 

342 

343 asyncio.run(main())

344 ```

345 

346 ```typescript TypeScript theme={null}

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

348 

349 for await (const message of query({

350 prompt: "Open example.com and describe what you see",

351 options: {

352 mcpServers: {

353 playwright: { command: "npx", args: ["@playwright/mcp@latest"] }

354 }

355 }

356 })) {

357 if ("result" in message) console.log(message.result);

358 }

359 ```

360 </CodeGroup>

361 

362 [Saiba mais sobre MCP →](/pt/agent-sdk/mcp)

363 </Tab>

364 

365 <Tab title="Permissões">

366 Controle exatamente quais ferramentas seu agente pode usar. Permita operações seguras, bloqueie operações perigosas ou exija aprovação para ações sensíveis.

367 

368 <Note>

369 Para prompts de aprovação interativa e a ferramenta `AskUserQuestion`, consulte [Lidar com aprovações e entrada do usuário](/pt/agent-sdk/user-input).

370 </Note>

371 

372 Este exemplo cria um agente somente leitura que pode analisar mas não modificar código. `allowed_tools` pré-aprova `Read`, `Glob` e `Grep`.

373 

374 <CodeGroup>

375 ```python Python theme={null}

376 import asyncio

377 from claude_agent_sdk import query, ClaudeAgentOptions

378 

379 

380 async def main():

381 async for message in query(

382 prompt="Review this code for best practices",

383 options=ClaudeAgentOptions(

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

385 ),

386 ):

387 if hasattr(message, "result"):

388 print(message.result)

389 

390 

391 asyncio.run(main())

392 ```

393 

394 ```typescript TypeScript theme={null}

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

396 

397 for await (const message of query({

398 prompt: "Review this code for best practices",

399 options: {

400 allowedTools: ["Read", "Glob", "Grep"]

401 }

402 })) {

403 if ("result" in message) console.log(message.result);

404 }

405 ```

406 </CodeGroup>

407 

408 [Saiba mais sobre permissões →](/pt/agent-sdk/permissions)

409 </Tab>

410 

411 <Tab title="Sessões">

412 Mantenha contexto em múltiplas trocas. Claude se lembra de arquivos lidos, análises feitas e histórico de conversa. Retome sessões depois ou divida-as para explorar diferentes abordagens.

413 

414 Este exemplo captura o ID da sessão da primeira consulta, depois retoma para continuar com contexto completo:

415 

416 <CodeGroup>

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage

420 

421 

422 async def main():

423 session_id = None

424 

425 # First query: capture the session ID

426 async for message in query(

427 prompt="Read the authentication module",

428 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]),

429 ):

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

431 session_id = message.data["session_id"]

432 

433 # Resume with full context from the first query

434 async for message in query(

435 prompt="Now find all places that call it", # "it" = auth module

436 options=ClaudeAgentOptions(resume=session_id),

437 ):

438 if isinstance(message, ResultMessage):

439 print(message.result)

440 

441 

442 asyncio.run(main())

443 ```

444 

445 ```typescript TypeScript theme={null}

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

447 

448 let sessionId: string | undefined;

449 

450 // First query: capture the session ID

451 for await (const message of query({

452 prompt: "Read the authentication module",

453 options: { allowedTools: ["Read", "Glob"] }

454 })) {

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

456 sessionId = message.session_id;

457 }

458 }

459 

460 // Resume with full context from the first query

461 for await (const message of query({

462 prompt: "Now find all places that call it", // "it" = auth module

463 options: { resume: sessionId }

464 })) {

465 if ("result" in message) console.log(message.result);

466 }

467 ```

468 </CodeGroup>

469 

470 [Saiba mais sobre sessões →](/pt/agent-sdk/sessions)

471 </Tab>

472</Tabs>

473 

474### Recursos do Claude Code

475 

476O SDK também suporta a configuração baseada em sistema de arquivos do Claude Code. Com opções padrão, o SDK carrega estas do `.claude/` em seu diretório de trabalho e `~/.claude/`. Para restringir quais fontes carregam, defina `setting_sources` (Python) ou `settingSources` (TypeScript) em suas opções.

477 

478| Recurso | Descrição | Localização |

479| ------------------------------------------------ | ------------------------------------------------------------- | ---------------------------------- |

480| [Skills](/pt/agent-sdk/skills) | Capacidades especializadas definidas em Markdown | `.claude/skills/*/SKILL.md` |

481| [Slash commands](/pt/agent-sdk/slash-commands) | Comandos personalizados para tarefas comuns | `.claude/commands/*.md` |

482| [Memory](/pt/agent-sdk/modifying-system-prompts) | Contexto do projeto e instruções | `CLAUDE.md` ou `.claude/CLAUDE.md` |

483| [Plugins](/pt/agent-sdk/plugins) | Estenda com comandos personalizados, agentes e servidores MCP | Programático via opção `plugins` |

484 

485## Compare o Agent SDK com outras ferramentas Claude

486 

487A Plataforma Claude oferece múltiplas maneiras de construir com Claude. Aqui está como o Agent SDK se encaixa:

488 

489<Tabs>

490 <Tab title="Agent SDK vs Client SDK">

491 O [Anthropic Client SDK](https://platform.claude.com/docs/pt/api/client-sdks) oferece acesso direto à API: você envia prompts e implementa a execução de ferramentas você mesmo. O **Agent SDK** oferece Claude com execução de ferramentas integrada.

492 

493 Com o Client SDK, você implementa um loop de ferramentas. Com o Agent SDK, Claude o manipula:

494 

495 <CodeGroup>

496 ```python Python theme={null}

497 # Client SDK: You implement the tool loop

498 response = client.messages.create(...)

499 while response.stop_reason == "tool_use":

500 result = your_tool_executor(response.tool_use)

501 response = client.messages.create(tool_result=result, **params)

502 

503 # Agent SDK: Claude handles tools autonomously

504 async for message in query(prompt="Fix the bug in auth.py"):

505 print(message)

506 ```

507 

508 ```typescript TypeScript theme={null}

509 // Client SDK: You implement the tool loop

510 let response = await client.messages.create({ ...params });

511 while (response.stop_reason === "tool_use") {

512 const result = yourToolExecutor(response.tool_use);

513 response = await client.messages.create({ tool_result: result, ...params });

514 }

515 

516 // Agent SDK: Claude handles tools autonomously

517 for await (const message of query({ prompt: "Fix the bug in auth.ts" })) {

518 console.log(message);

519 }

520 ```

521 </CodeGroup>

522 </Tab>

523 

524 <Tab title="Agent SDK vs Claude Code CLI">

525 Mesmas capacidades, interface diferente:

526 

527 | Caso de uso | Melhor escolha |

528 | -------------------------- | -------------- |

529 | Desenvolvimento interativo | CLI |

530 | Pipelines CI/CD | SDK |

531 | Aplicações personalizadas | SDK |

532 | Tarefas únicas | CLI |

533 | Automação em produção | SDK |

534 

535 Muitas equipes usam ambas: CLI para desenvolvimento diário, SDK para produção. Os fluxos de trabalho se traduzem diretamente entre eles.

536 </Tab>

537 

538 <Tab title="Agent SDK vs Managed Agents">

539 [Managed Agents](https://platform.claude.com/docs/pt/managed-agents/overview) é uma API REST hospedada: a Anthropic executa o agente e a sandbox, e sua aplicação envia eventos e transmite resultados de volta. O **Agent SDK** é uma biblioteca que executa o loop do agente dentro de seu próprio processo.

540 

541 | | Agent SDK | Managed Agents |

542 | ------------------------------ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |

543 | **Executa em** | Seu processo, sua infraestrutura | Infraestrutura gerenciada pela Anthropic |

544 | **Interface** | Biblioteca Python ou TypeScript | API REST |

545 | **O agente trabalha em** | Arquivos em sua infraestrutura | Uma sandbox gerenciada por sessão |

546 | **Estado da sessão** | JSONL em seu sistema de arquivos | Log de eventos hospedado pela Anthropic |

547 | **Ferramentas personalizadas** | Funções Python ou TypeScript em processo | Claude dispara a ferramenta; você executa e retorna resultados |

548 | **Melhor para** | Prototipagem local, agentes que trabalham diretamente em seu sistema de arquivos e serviços | Agentes de produção sem operar infraestrutura de sandbox ou sessão, sessões de longa duração e assíncronas |

549 

550 Um caminho comum é fazer prototipagem com o Agent SDK localmente e depois migrar para Managed Agents para produção.

551 </Tab>

552</Tabs>

553 

554## Changelog

555 

556Veja o changelog completo para atualizações do SDK, correções de bugs e novos recursos:

557 

558* **TypeScript SDK**: [ver CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)

559* **Python SDK**: [ver CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)

560 

561## Relatando bugs

562 

563Se você encontrar bugs ou problemas com o Agent SDK:

564 

565* **TypeScript SDK**: [relatar problemas no GitHub](https://github.com/anthropics/claude-agent-sdk-typescript/issues)

566* **Python SDK**: [relatar problemas no GitHub](https://github.com/anthropics/claude-agent-sdk-python/issues)

567 

568## Diretrizes de marca

569 

570Para parceiros integrando o Claude Agent SDK, o uso de marca Claude é opcional. Ao fazer referência a Claude em seu produto:

571 

572**Permitido:**

573 

574* "Claude Agent" (preferido para menus suspensos)

575* "Claude" (quando dentro de um menu já rotulado "Agents")

576* "{YourAgentName} Powered by Claude" (se você tiver um nome de agente existente)

577 

578**Não permitido:**

579 

580* "Claude Code" ou "Claude Code Agent"

581* Arte ASCII com marca Claude Code ou elementos visuais que imitam Claude Code

582 

583Seu produto deve manter sua própria marca e não parecer ser Claude Code ou qualquer produto Anthropic. Para perguntas sobre conformidade de marca, entre em contato com a [equipe de vendas](https://www.anthropic.com/contact-sales) da Anthropic.

584 

585## Licença e termos

586 

587O uso do Claude Agent SDK é regido pelos [Termos de Serviço Comercial da Anthropic](https://www.anthropic.com/legal/commercial-terms), incluindo quando você o usa para alimentar produtos e serviços que você disponibiliza para seus próprios clientes e usuários finais, exceto na medida em que um componente específico ou dependência seja coberto por uma licença diferente conforme indicado no arquivo LICENSE desse componente.

588 

589## Próximos passos

590 

591<CardGroup cols={2}>

592 <Card title="Guia de Início Rápido" icon="play" href="/pt/agent-sdk/quickstart">

593 Construa um agente que encontra e corrige bugs em minutos

594 </Card>

595 

596 <Card title="Agentes de exemplo" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

597 Assistente de email, agente de pesquisa e muito mais

598 </Card>

599 

600 <Card title="TypeScript SDK" icon="code" href="/pt/agent-sdk/typescript">

601 Referência completa da API TypeScript e exemplos

602 </Card>

603 

604 <Card title="Python SDK" icon="code" href="/pt/agent-sdk/python">

605 Referência completa da API Python e exemplos

606 </Card>

607</CardGroup>

agent-sdk/plugins.md +342 −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# Plugins no SDK

6 

7> Carregue plugins personalizados para estender Claude Code com comandos, agentes, skills e hooks através do Agent SDK

8 

9Plugins permitem que você estenda Claude Code com funcionalidade personalizada que pode ser compartilhada entre projetos. Através do Agent SDK, você pode carregar programaticamente plugins de diretórios locais para adicionar comandos slash personalizados, agentes, skills, hooks e servidores MCP às suas sessões de agente.

10 

11## O que são plugins?

12 

13Plugins são pacotes de extensões Claude Code que podem incluir:

14 

15* **Skills**: Capacidades invocadas pelo modelo que Claude usa autonomamente (também podem ser invocadas com `/skill-name`)

16* **Agents**: Subagentes especializados para tarefas específicas

17* **Hooks**: Manipuladores de eventos que respondem ao uso de ferramentas e outros eventos

18* **MCP servers**: Integrações de ferramentas externas via Model Context Protocol

19 

20<Note>

21 O diretório `commands/` é um formato legado. Use `skills/` para novos plugins. Claude Code continua suportando ambos os formatos para compatibilidade com versões anteriores.

22</Note>

23 

24Para informações completas sobre a estrutura de plugins e como criar plugins, consulte [Plugins](/pt/plugins).

25 

26## Carregando plugins

27 

28Carregue plugins fornecendo seus caminhos do sistema de arquivos local na configuração de opções. O campo `type` deve ser `"local"`, o único valor que o SDK aceita. Para usar um plugin distribuído através de um [marketplace](/pt/plugin-marketplaces) ou repositório remoto, baixe-o primeiro e forneça o caminho do diretório local. O SDK suporta carregamento de múltiplos plugins de diferentes locais.

29 

30<CodeGroup>

31 ```typescript TypeScript theme={null}

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

33 

34 for await (const message of query({

35 prompt: "Hello",

36 options: {

37 plugins: [

38 { type: "local", path: "./my-plugin" },

39 { type: "local", path: "/absolute/path/to/another-plugin" }

40 ]

41 }

42 })) {

43 // Plugin commands, agents, and other features are now available

44 }

45 ```

46 

47 ```python Python theme={null}

48 import asyncio

49 from claude_agent_sdk import query

50 

51 

52 async def main():

53 async for message in query(

54 prompt="Hello",

55 options={

56 "plugins": [

57 {"type": "local", "path": "./my-plugin"},

58 {"type": "local", "path": "/absolute/path/to/another-plugin"},

59 ]

60 },

61 ):

62 # Plugin commands, agents, and other features are now available

63 pass

64 

65 

66 asyncio.run(main())

67 ```

68</CodeGroup>

69 

70### Especificações de caminho

71 

72Os caminhos de plugin podem ser:

73 

74* **Caminhos relativos**: Resolvidos relativamente ao seu diretório de trabalho atual (por exemplo, `"./plugins/my-plugin"`)

75* **Caminhos absolutos**: Caminhos completos do sistema de arquivos (por exemplo, `"/home/user/plugins/my-plugin"`)

76 

77<Note>

78 O caminho deve apontar para o diretório raiz do plugin (o diretório contendo `.claude-plugin/plugin.json`).

79</Note>

80 

81## Verificando a instalação do plugin

82 

83Quando os plugins carregam com sucesso, eles aparecem na mensagem de inicialização do sistema. Você pode verificar que seus plugins estão disponíveis:

84 

85<CodeGroup>

86 ```typescript TypeScript theme={null}

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

88 

89 for await (const message of query({

90 prompt: "Hello",

91 options: {

92 plugins: [{ type: "local", path: "./my-plugin" }]

93 }

94 })) {

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

96 // Check loaded plugins

97 console.log("Plugins:", message.plugins);

98 // Example: [{ name: "my-plugin", path: "./my-plugin" }]

99 

100 // Check available commands from plugins

101 console.log("Commands:", message.slash_commands);

102 // Example: ["/help", "/compact", "my-plugin:custom-command"]

103 }

104 }

105 ```

106 

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query

110 

111 

112 async def main():

113 async for message in query(

114 prompt="Hello", options={"plugins": [{"type": "local", "path": "./my-plugin"}]}

115 ):

116 if message.type == "system" and message.subtype == "init":

117 # Check loaded plugins

118 print("Plugins:", message.data.get("plugins"))

119 # Example: [{"name": "my-plugin", "path": "./my-plugin"}]

120 

121 # Check available commands from plugins

122 print("Commands:", message.data.get("slash_commands"))

123 # Example: ["/help", "/compact", "my-plugin:custom-command"]

124 

125 

126 asyncio.run(main())

127 ```

128</CodeGroup>

129 

130## Usando skills de plugins

131 

132Skills de plugins são automaticamente nomeados com o nome do plugin para evitar conflitos. Quando invocados como comandos slash, o formato é `plugin-name:skill-name`.

133 

134<CodeGroup>

135 ```typescript TypeScript theme={null}

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

137 

138 // Load a plugin with a custom /greet skill

139 for await (const message of query({

140 prompt: "/my-plugin:greet", // Use plugin skill with namespace

141 options: {

142 plugins: [{ type: "local", path: "./my-plugin" }]

143 }

144 })) {

145 // Claude executes the custom greeting skill from the plugin

146 if (message.type === "assistant") {

147 console.log(message.message.content);

148 }

149 }

150 ```

151 

152 ```python Python theme={null}

153 import asyncio

154 from claude_agent_sdk import query, AssistantMessage, TextBlock

155 

156 

157 async def main():

158 # Load a plugin with a custom /greet skill

159 async for message in query(

160 prompt="/demo-plugin:greet", # Use plugin skill with namespace

161 options={"plugins": [{"type": "local", "path": "./plugins/demo-plugin"}]},

162 ):

163 # Claude executes the custom greeting skill from the plugin

164 if isinstance(message, AssistantMessage):

165 for block in message.content:

166 if isinstance(block, TextBlock):

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

168 

169 

170 asyncio.run(main())

171 ```

172</CodeGroup>

173 

174<Note>

175 Se você instalou um plugin via CLI (por exemplo, `/plugin install my-plugin@marketplace`), você ainda pode usá-lo no SDK fornecendo seu caminho de instalação. Verifique `~/.claude/plugins/` para plugins instalados via CLI.

176</Note>

177 

178## Exemplo completo

179 

180Aqui está um exemplo completo demonstrando carregamento e uso de plugins:

181 

182<CodeGroup>

183 ```typescript TypeScript theme={null}

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

185 import * as path from "path";

186 

187 async function runWithPlugin() {

188 const pluginPath = path.join(__dirname, "plugins", "my-plugin");

189 

190 console.log("Loading plugin from:", pluginPath);

191 

192 for await (const message of query({

193 prompt: "What custom commands do you have available?",

194 options: {

195 plugins: [{ type: "local", path: pluginPath }],

196 maxTurns: 3

197 }

198 })) {

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

200 console.log("Loaded plugins:", message.plugins);

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

202 }

203 

204 if (message.type === "assistant") {

205 console.log("Assistant:", message.message.content);

206 }

207 }

208 }

209 

210 runWithPlugin().catch(console.error);

211 ```

212 

213 ```python Python theme={null}

214 #!/usr/bin/env python3

215 """Example demonstrating how to use plugins with the Agent SDK."""

216 

217 from pathlib import Path

218 import anyio

219 from claude_agent_sdk import (

220 AssistantMessage,

221 ClaudeAgentOptions,

222 TextBlock,

223 query,

224 )

225 

226 

227 async def run_with_plugin():

228 """Example using a custom plugin."""

229 plugin_path = Path(__file__).parent / "plugins" / "demo-plugin"

230 

231 print(f"Loading plugin from: {plugin_path}")

232 

233 options = ClaudeAgentOptions(

234 plugins=[{"type": "local", "path": str(plugin_path)}],

235 max_turns=3,

236 )

237 

238 async for message in query(

239 prompt="What custom commands do you have available?", options=options

240 ):

241 if message.type == "system" and message.subtype == "init":

242 print(f"Loaded plugins: {message.data.get('plugins')}")

243 print(f"Available commands: {message.data.get('slash_commands')}")

244 

245 if isinstance(message, AssistantMessage):

246 for block in message.content:

247 if isinstance(block, TextBlock):

248 print(f"Assistant: {block.text}")

249 

250 

251 if __name__ == "__main__":

252 anyio.run(run_with_plugin)

253 ```

254</CodeGroup>

255 

256## Referência de estrutura de plugin

257 

258Um diretório de plugin deve conter um arquivo de manifesto `.claude-plugin/plugin.json`. Pode opcionalmente incluir:

259 

260```text theme={null}

261my-plugin/

262├── .claude-plugin/

263│ └── plugin.json # Required: plugin manifest

264├── skills/ # Agent Skills (invoked autonomously or via /skill-name)

265│ └── my-skill/

266│ └── SKILL.md

267├── commands/ # Legacy: use skills/ instead

268│ └── custom-cmd.md

269├── agents/ # Custom agents

270│ └── specialist.md

271├── hooks/ # Event handlers

272│ └── hooks.json

273└── .mcp.json # MCP server definitions

274```

275 

276Para informações detalhadas sobre como criar plugins, consulte:

277 

278* [Plugins](/pt/plugins) - Guia completo de desenvolvimento de plugins

279* [Plugins reference](/pt/plugins-reference) - Especificações técnicas e esquemas

280 

281## Casos de uso comuns

282 

283### Desenvolvimento e testes

284 

285Carregue plugins durante o desenvolvimento sem instalá-los globalmente:

286 

287```typescript theme={null}

288plugins: [{ type: "local", path: "./dev-plugins/my-plugin" }];

289```

290 

291### Extensões específicas do projeto

292 

293Inclua plugins no seu repositório de projeto para consistência em toda a equipe:

294 

295```typescript theme={null}

296plugins: [{ type: "local", path: "./project-plugins/team-workflows" }];

297```

298 

299### Múltiplas fontes de plugin

300 

301Combine plugins de diferentes locais:

302 

303```typescript theme={null}

304plugins: [

305 { type: "local", path: "./local-plugin" },

306 { type: "local", path: "~/.claude/custom-plugins/shared-plugin" }

307];

308```

309 

310## Troubleshooting

311 

312### Plugin não carregando

313 

314Se seu plugin não aparecer na mensagem de inicialização:

315 

3161. **Verifique o caminho**: Certifique-se de que o caminho aponta para o diretório raiz do plugin (contendo `.claude-plugin/`)

3172. **Valide plugin.json**: Certifique-se de que seu arquivo de manifesto tem sintaxe JSON válida

3183. **Verifique permissões de arquivo**: Certifique-se de que o diretório do plugin é legível

319 

320### Skills não aparecendo

321 

322Se skills de plugins não funcionarem:

323 

3241. **Use o namespace**: Skills de plugins requerem o formato `plugin-name:skill-name` quando invocados como comandos slash

3252. **Verifique mensagem de inicialização**: Verifique se a skill aparece em `slash_commands` com o namespace correto

3263. **Valide arquivos de skill**: Certifique-se de que cada skill tem um arquivo `SKILL.md` em seu próprio subdiretório sob `skills/` (por exemplo, `skills/my-skill/SKILL.md`)

327 

328### Problemas de resolução de caminho

329 

330Se caminhos relativos não funcionarem:

331 

3321. **Verifique diretório de trabalho**: Caminhos relativos são resolvidos a partir do seu diretório de trabalho atual

3332. **Use caminhos absolutos**: Para confiabilidade, considere usar caminhos absolutos

3343. **Normalize caminhos**: Use utilitários de caminho para construir caminhos corretamente

335 

336## Veja também

337 

338* [Plugins](/pt/plugins) - Guia completo de desenvolvimento de plugins

339* [Plugins reference](/pt/plugins-reference) - Especificações técnicas

340* [Slash Commands](/pt/agent-sdk/slash-commands) - Usando comandos slash no SDK

341* [Subagents](/pt/agent-sdk/subagents) - Trabalhando com agentes especializados

342* [Skills](/pt/agent-sdk/skills) - Usando Agent Skills

agent-sdk/python.md +3274 −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# Referência do Agent SDK - Python

6 

7> Referência completa da API para o Python Agent SDK, incluindo todas as funções, tipos e classes.

8 

9## Instalação

10 

11```bash theme={null}

12pip install claude-agent-sdk

13```

14 

15## Escolhendo entre `query()` e `ClaudeSDKClient`

16 

17O SDK Python fornece duas maneiras de interagir com Claude Code:

18 

19### Comparação rápida

20 

21| Recurso | `query()` | `ClaudeSDKClient` |

22| :----------------------------- | :------------------------- | :--------------------------------- |

23| **Sessão** | Cria nova sessão cada vez | Reutiliza a mesma sessão |

24| **Conversa** | Troca única | Múltiplas trocas no mesmo contexto |

25| **Conexão** | Gerenciada automaticamente | Controle manual |

26| **Entrada em Streaming** | ✅ Suportado | ✅ Suportado |

27| **Interrupções** | ❌ Não suportado | ✅ Suportado |

28| **hooks** | ✅ Suportado | ✅ Suportado |

29| **Ferramentas Personalizadas** | ✅ Suportado | ✅ Suportado |

30| **Continuar Chat** | ❌ Nova sessão cada vez | ✅ Mantém conversa |

31| **Caso de Uso** | Tarefas únicas | Conversas contínuas |

32 

33### Quando usar `query()` (nova sessão cada vez)

34 

35**Melhor para:**

36 

37* Perguntas únicas onde você não precisa do histórico de conversa

38* Tarefas independentes que não requerem contexto de trocas anteriores

39* Scripts de automação simples

40* Quando você quer um novo começo cada vez

41 

42### Quando usar `ClaudeSDKClient` (conversa contínua)

43 

44**Melhor para:**

45 

46* **Continuando conversas** - Quando você precisa que Claude se lembre do contexto

47* **Perguntas de acompanhamento** - Construindo sobre respostas anteriores

48* **Aplicações interativas** - Interfaces de chat, REPLs

49* **Lógica orientada por resposta** - Quando a próxima ação depende da resposta de Claude

50* **Controle de sessão** - Gerenciando o ciclo de vida da conversa explicitamente

51 

52## Funções

53 

54### `query()`

55 

56Cria uma nova sessão para cada interação com Claude Code. Retorna um iterador assíncrono que produz mensagens conforme chegam. Cada chamada para `query()` começa do zero sem memória de interações anteriores.

57 

58```python theme={null}

59async def query(

60 *,

61 prompt: str | AsyncIterable[dict[str, Any]],

62 options: ClaudeAgentOptions | None = None,

63 transport: Transport | None = None

64) -> AsyncIterator[Message]

65```

66 

67#### Parâmetros

68 

69| Parâmetro | Tipo | Descrição |

70| :---------- | :--------------------------- | :-------------------------------------------------------------------------------- |

71| `prompt` | `str \| AsyncIterable[dict]` | O prompt de entrada como uma string ou iterável assíncrono para modo de streaming |

72| `options` | `ClaudeAgentOptions \| None` | Objeto de configuração opcional (padrão para `ClaudeAgentOptions()` se None) |

73| `transport` | `Transport \| None` | Transport personalizado opcional para comunicação com o processo CLI |

74 

75#### Retorna

76 

77Retorna um `AsyncIterator[Message]` que produz mensagens da conversa.

78 

79#### Exemplo - Com opções

80 

81```python theme={null}

82import asyncio

83from claude_agent_sdk import query, ClaudeAgentOptions

84 

85 

86async def main():

87 options = ClaudeAgentOptions(

88 system_prompt="You are an expert Python developer",

89 permission_mode="acceptEdits",

90 cwd="/home/user/project",

91 )

92 

93 async for message in query(prompt="Create a Python web server", options=options):

94 print(message)

95 

96 

97asyncio.run(main())

98```

99 

100### `tool()`

101 

102Decorador para definir ferramentas MCP com segurança de tipo.

103 

104```python theme={null}

105def tool(

106 name: str,

107 description: str,

108 input_schema: type | dict[str, Any],

109 annotations: ToolAnnotations | None = None

110) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]

111```

112 

113#### Parâmetros

114 

115| Parâmetro | Tipo | Descrição |

116| :------------- | :----------------------------------------------- | :--------------------------------------------------------------------- |

117| `name` | `str` | Identificador único para a ferramenta |

118| `description` | `str` | Descrição legível por humanos do que a ferramenta faz |

119| `input_schema` | `type \| dict[str, Any]` | Schema definindo os parâmetros de entrada da ferramenta (veja abaixo) |

120| `annotations` | [`ToolAnnotations`](#tool-annotations)` \| None` | Anotações MCP opcionais fornecendo dicas de comportamento aos clientes |

121 

122#### Opções de schema de entrada

123 

1241. **Mapeamento de tipo simples** (recomendado):

125 

126 ```python theme={null}

127 {"text": str, "count": int, "enabled": bool}

128 ```

129 

1302. **Formato JSON Schema** (para validação complexa):

131 ```python theme={null}

132 {

133 "type": "object",

134 "properties": {

135 "text": {"type": "string"},

136 "count": {"type": "integer", "minimum": 0},

137 },

138 "required": ["text"],

139 }

140 ```

141 

142#### Retorna

143 

144Uma função decoradora que envolve a implementação da ferramenta e retorna uma instância `SdkMcpTool`.

145 

146#### Exemplo

147 

148```python theme={null}

149from claude_agent_sdk import tool

150from typing import Any

151 

152 

153@tool("greet", "Greet a user", {"name": str})

154async def greet(args: dict[str, Any]) -> dict[str, Any]:

155 return {"content": [{"type": "text", "text": f"Hello, {args['name']}!"}]}

156```

157 

158#### `ToolAnnotations`

159 

160Re-exportado de `mcp.types` (também disponível como `from claude_agent_sdk import ToolAnnotations`). Todos os campos são dicas opcionais; clientes não devem confiar neles para decisões de segurança.

161 

162| Campo | Tipo | Padrão | Descrição |

163| :---------------- | :------------- | :------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

164| `title` | `str \| None` | `None` | Título legível por humanos para a ferramenta |

165| `readOnlyHint` | `bool \| None` | `False` | Se `True`, a ferramenta não modifica seu ambiente |

166| `destructiveHint` | `bool \| None` | `True` | Se `True`, a ferramenta pode realizar atualizações destrutivas (apenas significativo quando `readOnlyHint` é `False`) |

167| `idempotentHint` | `bool \| None` | `False` | Se `True`, chamadas repetidas com os mesmos argumentos não têm efeito adicional (apenas significativo quando `readOnlyHint` é `False`) |

168| `openWorldHint` | `bool \| None` | `True` | Se `True`, a ferramenta interage com entidades externas (por exemplo, busca na web). Se `False`, o domínio da ferramenta é fechado (por exemplo, uma ferramenta de memória) |

169 

170```python theme={null}

171from claude_agent_sdk import tool, ToolAnnotations

172from typing import Any

173 

174 

175@tool(

176 "search",

177 "Search the web",

178 {"query": str},

179 annotations=ToolAnnotations(readOnlyHint=True, openWorldHint=True),

180)

181async def search(args: dict[str, Any]) -> dict[str, Any]:

182 return {"content": [{"type": "text", "text": f"Results for: {args['query']}"}]}

183```

184 

185### `create_sdk_mcp_server()`

186 

187Cria um servidor MCP em processo que é executado dentro de sua aplicação Python.

188 

189```python theme={null}

190def create_sdk_mcp_server(

191 name: str,

192 version: str = "1.0.0",

193 tools: list[SdkMcpTool[Any]] | None = None

194) -> McpSdkServerConfig

195```

196 

197#### Parâmetros

198 

199| Parâmetro | Tipo | Padrão | Descrição |

200| :-------- | :------------------------------ | :-------- | :----------------------------------------------------------- |

201| `name` | `str` | - | Identificador único para o servidor |

202| `version` | `str` | `"1.0.0"` | String de versão do servidor |

203| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | Lista de funções de ferramenta criadas com decorador `@tool` |

204 

205#### Retorna

206 

207Retorna um objeto `McpSdkServerConfig` que pode ser passado para `ClaudeAgentOptions.mcp_servers`.

208 

209#### Exemplo

210 

211```python theme={null}

212from claude_agent_sdk import tool, create_sdk_mcp_server

213 

214 

215@tool("add", "Add two numbers", {"a": float, "b": float})

216async def add(args):

217 return {"content": [{"type": "text", "text": f"Sum: {args['a'] + args['b']}"}]}

218 

219 

220@tool("multiply", "Multiply two numbers", {"a": float, "b": float})

221async def multiply(args):

222 return {"content": [{"type": "text", "text": f"Product: {args['a'] * args['b']}"}]}

223 

224 

225calculator = create_sdk_mcp_server(

226 name="calculator",

227 version="2.0.0",

228 tools=[add, multiply], # Pass decorated functions

229)

230 

231# Use with Claude

232options = ClaudeAgentOptions(

233 mcp_servers={"calc": calculator},

234 allowed_tools=["mcp__calc__add", "mcp__calc__multiply"],

235)

236```

237 

238### `list_sessions()`

239 

240Lista sessões passadas com metadados. Filtre por diretório de projeto ou liste sessões em todos os projetos. Síncrono; retorna imediatamente.

241 

242```python theme={null}

243def list_sessions(

244 directory: str | None = None,

245 limit: int | None = None,

246 include_worktrees: bool = True

247) -> list[SDKSessionInfo]

248```

249 

250#### Parâmetros

251 

252| Parâmetro | Tipo | Padrão | Descrição |

253| :------------------ | :------------ | :----- | :---------------------------------------------------------------------------------------------------- |

254| `directory` | `str \| None` | `None` | Diretório para listar sessões. Quando omitido, retorna sessões em todos os projetos |

255| `limit` | `int \| None` | `None` | Número máximo de sessões a retornar |

256| `include_worktrees` | `bool` | `True` | Quando `directory` está dentro de um repositório git, inclua sessões de todos os caminhos de worktree |

257 

258#### Tipo de retorno: `SDKSessionInfo`

259 

260| Propriedade | Tipo | Descrição |

261| :-------------- | :------------ | :----------------------------------------------------------------------------------------- |

262| `session_id` | `str` | Identificador único de sessão |

263| `summary` | `str` | Título de exibição: título personalizado, resumo gerado automaticamente ou primeiro prompt |

264| `last_modified` | `int` | Hora da última modificação em milissegundos desde a época |

265| `file_size` | `int \| None` | Tamanho do arquivo de sessão em bytes (`None` para backends de armazenamento remoto) |

266| `custom_title` | `str \| None` | Título de sessão definido pelo usuário |

267| `first_prompt` | `str \| None` | Primeiro prompt de usuário significativo na sessão |

268| `git_branch` | `str \| None` | Branch Git no final da sessão |

269| `cwd` | `str \| None` | Diretório de trabalho para a sessão |

270| `tag` | `str \| None` | Tag de sessão definida pelo usuário (veja [`tag_session()`](#tag-session)) |

271| `created_at` | `int \| None` | Hora de criação da sessão em milissegundos desde a época |

272 

273#### Exemplo

274 

275Imprima as 10 sessões mais recentes para um projeto. Os resultados são classificados por `last_modified` descendente, então o primeiro item é o mais novo. Omita `directory` para pesquisar em todos os projetos.

276 

277```python theme={null}

278from claude_agent_sdk import list_sessions

279 

280for session in list_sessions(directory="/path/to/project", limit=10):

281 print(f"{session.summary} ({session.session_id})")

282```

283 

284### `get_session_messages()`

285 

286Recupera mensagens de uma sessão passada. Síncrono; retorna imediatamente.

287 

288```python theme={null}

289def get_session_messages(

290 session_id: str,

291 directory: str | None = None,

292 limit: int | None = None,

293 offset: int = 0

294) -> list[SessionMessage]

295```

296 

297#### Parâmetros

298 

299| Parâmetro | Tipo | Padrão | Descrição |

300| :----------- | :------------ | :---------- | :----------------------------------------------------------------------------- |

301| `session_id` | `str` | obrigatório | O ID da sessão para recuperar mensagens |

302| `directory` | `str \| None` | `None` | Diretório do projeto para procurar. Quando omitido, pesquisa todos os projetos |

303| `limit` | `int \| None` | `None` | Número máximo de mensagens a retornar |

304| `offset` | `int` | `0` | Número de mensagens a pular do início |

305 

306#### Tipo de retorno: `SessionMessage`

307 

308| Propriedade | Tipo | Descrição |

309| :------------------- | :----------------------------- | :------------------------------ |

310| `type` | `Literal["user", "assistant"]` | Papel da mensagem |

311| `uuid` | `str` | Identificador único de mensagem |

312| `session_id` | `str` | Identificador de sessão |

313| `message` | `Any` | Conteúdo bruto da mensagem |

314| `parent_tool_use_id` | `None` | Reservado para uso futuro |

315 

316#### Exemplo

317 

318```python theme={null}

319from claude_agent_sdk import list_sessions, get_session_messages

320 

321sessions = list_sessions(limit=1)

322if sessions:

323 messages = get_session_messages(sessions[0].session_id)

324 for msg in messages:

325 print(f"[{msg.type}] {msg.uuid}")

326```

327 

328### `get_session_info()`

329 

330Lê metadados para uma única sessão por ID sem verificar o diretório do projeto completo. Síncrono; retorna imediatamente.

331 

332```python theme={null}

333def get_session_info(

334 session_id: str,

335 directory: str | None = None,

336) -> SDKSessionInfo | None

337```

338 

339#### Parâmetros

340 

341| Parâmetro | Tipo | Padrão | Descrição |

342| :----------- | :------------ | :---------- | :--------------------------------------------------------------------------------------- |

343| `session_id` | `str` | obrigatório | UUID da sessão a procurar |

344| `directory` | `str \| None` | `None` | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |

345 

346Retorna [`SDKSessionInfo`](#return-type-sdk-session-info), ou `None` se a sessão não for encontrada.

347 

348#### Exemplo

349 

350Procure os metadados de uma única sessão sem verificar o diretório do projeto. Útil quando você já tem um ID de sessão de uma execução anterior.

351 

352```python theme={null}

353from claude_agent_sdk import get_session_info

354 

355info = get_session_info("550e8400-e29b-41d4-a716-446655440000")

356if info:

357 print(f"{info.summary} (branch: {info.git_branch}, tag: {info.tag})")

358```

359 

360### `rename_session()`

361 

362Renomeia uma sessão anexando uma entrada de título personalizado. Chamadas repetidas são seguras; o título mais recente vence. Síncrono.

363 

364```python theme={null}

365def rename_session(

366 session_id: str,

367 title: str,

368 directory: str | None = None,

369) -> None

370```

371 

372#### Parâmetros

373 

374| Parâmetro | Tipo | Padrão | Descrição |

375| :----------- | :------------ | :---------- | :--------------------------------------------------------------------------------------- |

376| `session_id` | `str` | obrigatório | UUID da sessão a renomear |

377| `title` | `str` | obrigatório | Novo título. Deve ser não vazio após remover espaços em branco |

378| `directory` | `str \| None` | `None` | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |

379 

380Lança `ValueError` se `session_id` não for um UUID válido ou `title` estiver vazio; `FileNotFoundError` se a sessão não puder ser encontrada.

381 

382#### Exemplo

383 

384Renomeie a sessão mais recente para que seja mais fácil encontrá-la depois. O novo título aparece em [`SDKSessionInfo.custom_title`](#return-type-sdk-session-info) em leituras subsequentes.

385 

386```python theme={null}

387from claude_agent_sdk import list_sessions, rename_session

388 

389sessions = list_sessions(directory="/path/to/project", limit=1)

390if sessions:

391 rename_session(sessions[0].session_id, "Refactor auth module")

392```

393 

394### `tag_session()`

395 

396Marca uma sessão. Passe `None` para limpar a tag. Chamadas repetidas são seguras; a tag mais recente vence. Síncrono.

397 

398```python theme={null}

399def tag_session(

400 session_id: str,

401 tag: str | None,

402 directory: str | None = None,

403) -> None

404```

405 

406#### Parâmetros

407 

408| Parâmetro | Tipo | Padrão | Descrição |

409| :----------- | :------------ | :---------- | :--------------------------------------------------------------------------------------- |

410| `session_id` | `str` | obrigatório | UUID da sessão a marcar |

411| `tag` | `str \| None` | obrigatório | String de tag, ou `None` para limpar. Unicode-sanitizado antes de armazenar |

412| `directory` | `str \| None` | `None` | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |

413 

414Lança `ValueError` se `session_id` não for um UUID válido ou `tag` estiver vazio após sanitização; `FileNotFoundError` se a sessão não puder ser encontrada.

415 

416#### Exemplo

417 

418Marque uma sessão e depois filtre por essa tag em uma leitura posterior. Passe `None` para limpar uma tag existente.

419 

420```python theme={null}

421from claude_agent_sdk import list_sessions, tag_session

422 

423# Tag a session

424tag_session("550e8400-e29b-41d4-a716-446655440000", "needs-review")

425 

426# Later: find all sessions with that tag

427for session in list_sessions(directory="/path/to/project"):

428 if session.tag == "needs-review":

429 print(session.summary)

430```

431 

432## Classes

433 

434### `ClaudeSDKClient`

435 

436**Mantém uma sessão de conversa em múltiplas trocas.** Este é o equivalente Python de como a função `query()` do SDK TypeScript funciona internamente - cria um objeto cliente que pode continuar conversas.

437 

438#### Recursos principais

439 

440* **Continuidade de sessão**: Mantém contexto de conversa em múltiplas chamadas `query()`

441* **Mesma conversa**: A sessão retém mensagens anteriores

442* **Suporte a interrupção**: Pode parar a execução no meio da tarefa

443* **Ciclo de vida explícito**: Você controla quando a sessão começa e termina

444* **Fluxo orientado por resposta**: Pode reagir a respostas e enviar acompanhamentos

445* **Ferramentas e hooks personalizados**: Suporta ferramentas personalizadas (criadas com decorador `@tool`) e hooks

446 

447```python theme={null}

448class ClaudeSDKClient:

449 def __init__(self, options: ClaudeAgentOptions | None = None, transport: Transport | None = None)

450 async def connect(self, prompt: str | AsyncIterable[dict] | None = None) -> None

451 async def query(self, prompt: str | AsyncIterable[dict], session_id: str = "default") -> None

452 async def receive_messages(self) -> AsyncIterator[Message]

453 async def receive_response(self) -> AsyncIterator[Message]

454 async def interrupt(self) -> None

455 async def set_permission_mode(self, mode: str) -> None

456 async def set_model(self, model: str | None = None) -> None

457 async def rewind_files(self, user_message_id: str) -> None

458 async def get_mcp_status(self) -> McpStatusResponse

459 async def reconnect_mcp_server(self, server_name: str) -> None

460 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None

461 async def stop_task(self, task_id: str) -> None

462 async def get_server_info(self) -> dict[str, Any] | None

463 async def disconnect(self) -> None

464```

465 

466#### Métodos

467 

468| Método | Descrição |

469| :---------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

470| `__init__(options)` | Inicializa o cliente com configuração opcional |

471| `connect(prompt)` | Conecta a Claude com um prompt inicial opcional ou fluxo de mensagem |

472| `query(prompt, session_id)` | Envia uma nova solicitação em modo de streaming |

473| `receive_messages()` | Recebe todas as mensagens de Claude como um iterador assíncrono |

474| `receive_response()` | Recebe mensagens até e incluindo uma ResultMessage |

475| `interrupt()` | Envia sinal de interrupção (funciona apenas em modo de streaming) |

476| `set_permission_mode(mode)` | Altera o modo de permissão para a sessão atual |

477| `set_model(model)` | Altera o modelo para a sessão atual. Passe `None` para redefinir para padrão |

478| `rewind_files(user_message_id)` | Restaura arquivos para seu estado na mensagem de usuário especificada. Requer `enable_file_checkpointing=True`. Veja [File checkpointing](/pt/agent-sdk/file-checkpointing) |

479| `get_mcp_status()` | Obtém o status de todos os servidores MCP configurados. Retorna [`McpStatusResponse`](#mcp-status-response) |

480| `reconnect_mcp_server(server_name)` | Tenta reconectar a um servidor MCP que falhou ou foi desconectado |

481| `toggle_mcp_server(server_name, enabled)` | Ativa ou desativa um servidor MCP no meio da sessão. Desativar remove suas ferramentas |

482| `stop_task(task_id)` | Para uma tarefa de fundo em execução. Uma [`TaskNotificationMessage`](#task-notification-message) com status `"stopped"` segue no fluxo de mensagens |

483| `get_server_info()` | Obtém informações do servidor incluindo ID de sessão e capacidades |

484| `disconnect()` | Desconecta de Claude |

485 

486#### Suporte a Gerenciador de Contexto

487 

488O cliente pode ser usado como um gerenciador de contexto assíncrono para gerenciamento automático de conexão:

489 

490```python theme={null}

491async with ClaudeSDKClient() as client:

492 await client.query("Hello Claude")

493 async for message in client.receive_response():

494 print(message)

495```

496 

497> **Importante:** Ao iterar sobre mensagens, evite usar `break` para sair cedo, pois isso pode causar problemas de limpeza do asyncio. Em vez disso, deixe a iteração ser concluída naturalmente ou use sinalizadores para rastrear quando você encontrou o que precisa.

498 

499#### Exemplo - Continuando uma conversa

500 

501```python theme={null}

502import asyncio

503from claude_agent_sdk import ClaudeSDKClient, AssistantMessage, TextBlock, ResultMessage

504 

505 

506async def main():

507 async with ClaudeSDKClient() as client:

508 # First question

509 await client.query("What's the capital of France?")

510 

511 # Process response

512 async for message in client.receive_response():

513 if isinstance(message, AssistantMessage):

514 for block in message.content:

515 if isinstance(block, TextBlock):

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

517 

518 # Follow-up question - the session retains the previous context

519 await client.query("What's the population of that city?")

520 

521 async for message in client.receive_response():

522 if isinstance(message, AssistantMessage):

523 for block in message.content:

524 if isinstance(block, TextBlock):

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

526 

527 # Another follow-up - still in the same conversation

528 await client.query("What are some famous landmarks there?")

529 

530 async for message in client.receive_response():

531 if isinstance(message, AssistantMessage):

532 for block in message.content:

533 if isinstance(block, TextBlock):

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

535 

536 

537asyncio.run(main())

538```

539 

540#### Exemplo - Entrada em streaming com ClaudeSDKClient

541 

542```python theme={null}

543import asyncio

544from claude_agent_sdk import ClaudeSDKClient

545 

546 

547async def message_stream():

548 """Generate messages dynamically."""

549 yield {

550 "type": "user",

551 "message": {"role": "user", "content": "Analyze the following data:"},

552 }

553 await asyncio.sleep(0.5)

554 yield {

555 "type": "user",

556 "message": {"role": "user", "content": "Temperature: 25°C, Humidity: 60%"},

557 }

558 await asyncio.sleep(0.5)

559 yield {

560 "type": "user",

561 "message": {"role": "user", "content": "What patterns do you see?"},

562 }

563 

564 

565async def main():

566 async with ClaudeSDKClient() as client:

567 # Stream input to Claude

568 await client.query(message_stream())

569 

570 # Process response

571 async for message in client.receive_response():

572 print(message)

573 

574 # Follow-up in same session

575 await client.query("Should we be concerned about these readings?")

576 

577 async for message in client.receive_response():

578 print(message)

579 

580 

581asyncio.run(main())

582```

583 

584#### Exemplo - Usando interrupções

585 

586```python theme={null}

587import asyncio

588from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, ResultMessage

589 

590 

591async def interruptible_task():

592 options = ClaudeAgentOptions(allowed_tools=["Bash"], permission_mode="acceptEdits")

593 

594 async with ClaudeSDKClient(options=options) as client:

595 # Start a long-running task

596 await client.query("Count from 1 to 100 slowly, using the bash sleep command")

597 

598 # Let it run for a bit

599 await asyncio.sleep(2)

600 

601 # Interrupt the task

602 await client.interrupt()

603 print("Task interrupted!")

604 

605 # Drain the interrupted task's messages (including its ResultMessage)

606 async for message in client.receive_response():

607 if isinstance(message, ResultMessage):

608 print(f"Interrupted task finished with subtype={message.subtype!r}")

609 # subtype is "error_during_execution" for interrupted tasks

610 

611 # Send a new command

612 await client.query("Just say hello instead")

613 

614 # Now receive the new response

615 async for message in client.receive_response():

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

617 print(f"New result: {message.result}")

618 

619 

620asyncio.run(interruptible_task())

621```

622 

623<Note>

624 **Comportamento do buffer após interrupção:** `interrupt()` envia um sinal de parada mas não limpa o buffer de mensagens. Mensagens já produzidas pela tarefa interrompida, incluindo sua `ResultMessage` (com `subtype="error_during_execution"`), permanecem no fluxo. Você deve drená-las com `receive_response()` antes de ler a resposta a uma nova consulta. Se você enviar uma nova consulta imediatamente após `interrupt()` e chamar `receive_response()` apenas uma vez, você receberá as mensagens da tarefa interrompida, não a resposta da nova consulta.

625</Note>

626 

627#### Exemplo - Controle avançado de permissão

628 

629```python theme={null}

630from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

631from claude_agent_sdk.types import (

632 PermissionResultAllow,

633 PermissionResultDeny,

634 ToolPermissionContext,

635)

636 

637 

638async def custom_permission_handler(

639 tool_name: str, input_data: dict, context: ToolPermissionContext

640) -> PermissionResultAllow | PermissionResultDeny:

641 """Custom logic for tool permissions."""

642 

643 # Block writes to system directories

644 if tool_name == "Write" and input_data.get("file_path", "").startswith("/system/"):

645 return PermissionResultDeny(

646 message="System directory write not allowed", interrupt=True

647 )

648 

649 # Redirect sensitive file operations

650 if tool_name in ["Write", "Edit"] and "config" in input_data.get("file_path", ""):

651 safe_path = f"./sandbox/{input_data['file_path']}"

652 return PermissionResultAllow(

653 updated_input={**input_data, "file_path": safe_path}

654 )

655 

656 # Allow everything else

657 return PermissionResultAllow(updated_input=input_data)

658 

659 

660async def main():

661 options = ClaudeAgentOptions(

662 can_use_tool=custom_permission_handler, allowed_tools=["Read", "Write", "Edit"]

663 )

664 

665 async with ClaudeSDKClient(options=options) as client:

666 await client.query("Update the system config file")

667 

668 async for message in client.receive_response():

669 # Will use sandbox path instead

670 print(message)

671 

672 

673asyncio.run(main())

674```

675 

676## Tipos

677 

678<Note>

679 **`@dataclass` vs `TypedDict`:** Este SDK usa dois tipos de tipos. Classes decoradas com `@dataclass` (como `ResultMessage`, `AgentDefinition`, `TextBlock`) são instâncias de objeto em tempo de execução e suportam acesso a atributos: `msg.result`. Classes definidas com `TypedDict` (como `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) são **dicts simples em tempo de execução** e requerem acesso a chave: `config["budget_tokens"]`, não `config.budget_tokens`. A sintaxe de chamada `ClassName(field=value)` funciona para ambos, mas apenas dataclasses produzem objetos com atributos.

680</Note>

681 

682### `SdkMcpTool`

683 

684Definição para uma ferramenta SDK MCP criada com o decorador `@tool`.

685 

686```python theme={null}

687@dataclass

688class SdkMcpTool(Generic[T]):

689 name: str

690 description: str

691 input_schema: type[T] | dict[str, Any]

692 handler: Callable[[T], Awaitable[dict[str, Any]]]

693 annotations: ToolAnnotations | None = None

694```

695 

696| Propriedade | Tipo | Descrição |

697| :------------- | :----------------------------------------- | :-------------------------------------------------------------------------------------------------------- |

698| `name` | `str` | Identificador único para a ferramenta |

699| `description` | `str` | Descrição legível por humanos |

700| `input_schema` | `type[T] \| dict[str, Any]` | Schema para validação de entrada |

701| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Função assíncrona que manipula a execução da ferramenta |

702| `annotations` | `ToolAnnotations \| None` | Anotações MCP opcionais (por exemplo, `readOnlyHint`, `destructiveHint`, `openWorldHint`). De `mcp.types` |

703 

704### `Transport`

705 

706Classe base abstrata para implementações de transport personalizado. Use isso para comunicar com o processo Claude sobre um canal personalizado (por exemplo, uma conexão remota em vez de um subprocess local).

707 

708<Warning>

709 Esta é uma API interna de baixo nível. A interface pode mudar em versões futuras. Implementações personalizadas devem ser atualizadas para corresponder a qualquer mudança de interface.

710</Warning>

711 

712```python theme={null}

713from abc import ABC, abstractmethod

714from collections.abc import AsyncIterator

715from typing import Any

716 

717 

718class Transport(ABC):

719 @abstractmethod

720 async def connect(self) -> None: ...

721 

722 @abstractmethod

723 async def write(self, data: str) -> None: ...

724 

725 @abstractmethod

726 def read_messages(self) -> AsyncIterator[dict[str, Any]]: ...

727 

728 @abstractmethod

729 async def close(self) -> None: ...

730 

731 @abstractmethod

732 def is_ready(self) -> bool: ...

733 

734 @abstractmethod

735 async def end_input(self) -> None: ...

736```

737 

738| Método | Descrição |

739| :---------------- | :--------------------------------------------------------------------------------- |

740| `connect()` | Conecta o transport e prepara para comunicação |

741| `write(data)` | Escreve dados brutos (JSON + nova linha) para o transport |

742| `read_messages()` | Iterador assíncrono que produz mensagens JSON analisadas |

743| `close()` | Fecha a conexão e limpa recursos |

744| `is_ready()` | Retorna `True` se o transport pode enviar e receber |

745| `end_input()` | Fecha o fluxo de entrada (por exemplo, fechar stdin para transports de subprocess) |

746 

747Importação: `from claude_agent_sdk import Transport`

748 

749### `ClaudeAgentOptions`

750 

751Dataclass de configuração para consultas Claude Code.

752 

753```python theme={null}

754@dataclass

755class ClaudeAgentOptions:

756 tools: list[str] | ToolsPreset | None = None

757 allowed_tools: list[str] = field(default_factory=list)

758 system_prompt: str | SystemPromptPreset | None = None

759 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)

760 permission_mode: PermissionMode | None = None

761 continue_conversation: bool = False

762 resume: str | None = None

763 max_turns: int | None = None

764 max_budget_usd: float | None = None

765 disallowed_tools: list[str] = field(default_factory=list)

766 model: str | None = None

767 fallback_model: str | None = None

768 betas: list[SdkBeta] = field(default_factory=list)

769 output_format: dict[str, Any] | None = None

770 permission_prompt_tool_name: str | None = None

771 cwd: str | Path | None = None

772 cli_path: str | Path | None = None

773 settings: str | None = None

774 add_dirs: list[str | Path] = field(default_factory=list)

775 env: dict[str, str] = field(default_factory=dict)

776 extra_args: dict[str, str | None] = field(default_factory=dict)

777 max_buffer_size: int | None = None

778 debug_stderr: Any = sys.stderr # Deprecated

779 stderr: Callable[[str], None] | None = None

780 can_use_tool: CanUseTool | None = None

781 hooks: dict[HookEvent, list[HookMatcher]] | None = None

782 user: str | None = None

783 include_partial_messages: bool = False

784 fork_session: bool = False

785 agents: dict[str, AgentDefinition] | None = None

786 setting_sources: list[SettingSource] | None = None

787 sandbox: SandboxSettings | None = None

788 plugins: list[SdkPluginConfig] = field(default_factory=list)

789 max_thinking_tokens: int | None = None # Deprecated: use thinking instead

790 thinking: ThinkingConfig | None = None

791 effort: Literal["low", "medium", "high", "max"] | None = None

792 enable_file_checkpointing: bool = False

793 session_store: SessionStore | None = None

794```

795 

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

797| :---------------------------- | :------------------------------------------------------------------------------------- | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

798| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configuração de ferramentas. Use `{"type": "preset", "preset": "claude_code"}` para as ferramentas padrão do Claude Code |

799| `allowed_tools` | `list[str]` | `[]` | Ferramentas para auto-aprovar sem solicitar. Isso não restringe Claude apenas a essas ferramentas; ferramentas não listadas caem através de `permission_mode` e `can_use_tool`. Use `disallowed_tools` para bloquear ferramentas. Veja [Permissions](/pt/agent-sdk/permissions#allow-and-deny-rules) |

800| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | Configuração de prompt do sistema. Passe uma string para prompt personalizado, ou use `{"type": "preset", "preset": "claude_code"}` para o prompt do sistema do Claude Code. Adicione `"append"` para estender o preset |

801| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configurações de servidor MCP ou caminho para arquivo de configuração |

802| `permission_mode` | `PermissionMode \| None` | `None` | Modo de permissão para uso de ferramentas |

803| `continue_conversation` | `bool` | `False` | Continua a conversa mais recente |

804| `resume` | `str \| None` | `None` | ID de sessão para retomar |

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

806| `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](/pt/agent-sdk/cost-tracking) para ressalvas de precisão |

807| `disallowed_tools` | `list[str]` | `[]` | Ferramentas para sempre negar. Regras de negação são verificadas primeiro e substituem `allowed_tools` e `permission_mode` (incluindo `bypassPermissions`) |

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

809| `model` | `str \| None` | `None` | Modelo Claude a usar |

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

811| `betas` | `list[SdkBeta]` | `[]` | Recursos beta para ativar. Veja [`SdkBeta`](#sdk-beta) para opções disponíveis |

812| `output_format` | `dict[str, Any] \| None` | `None` | Formato de saída para respostas estruturadas (por exemplo, `{"type": "json_schema", "schema": {...}}`). Veja [Structured outputs](/pt/agent-sdk/structured-outputs) para detalhes |

813| `permission_prompt_tool_name` | `str \| None` | `None` | Nome da ferramenta MCP para prompts de permissão |

814| `cwd` | `str \| Path \| None` | `None` | Diretório de trabalho atual |

815| `cli_path` | `str \| Path \| None` | `None` | Caminho personalizado para o executável CLI do Claude Code |

816| `settings` | `str \| None` | `None` | Caminho para arquivo de configurações |

817| `add_dirs` | `list[str \| Path]` | `[]` | Diretórios adicionais que Claude pode acessar |

818| `env` | `dict[str, str]` | `{}` | Variáveis de ambiente mescladas no topo do ambiente de processo herdado. Veja [Environment variables](/pt/env-vars) para variáveis que o CLI subjacente lê |

819| `extra_args` | `dict[str, str \| None]` | `{}` | Argumentos CLI adicionais a passar diretamente para o CLI |

820| `max_buffer_size` | `int \| None` | `None` | Bytes máximos ao fazer buffer da saída padrão do CLI |

821| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - Objeto semelhante a arquivo para saída de depuração. Use callback `stderr` em vez disso |

822| `stderr` | `Callable[[str], None] \| None` | `None` | Função de callback para saída stderr do CLI |

823| `can_use_tool` | [`CanUseTool`](#can-use-tool) ` \| None` | `None` | Função de callback de permissão de ferramenta. Veja [Permission types](#can-use-tool) para detalhes |

824| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configurações de hook para interceptar eventos |

825| `user` | `str \| None` | `None` | Identificador de usuário |

826| `include_partial_messages` | `bool` | `False` | Inclua eventos de streaming de mensagem parcial. Quando ativado, mensagens [`StreamEvent`](#stream-event) são produzidas |

827| `fork_session` | `bool` | `False` | Ao retomar com `resume`, bifurque para um novo ID de sessão em vez de continuar a sessão original |

828| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Subagentes definidos programaticamente |

829| `plugins` | `list[SdkPluginConfig]` | `[]` | Carregue plugins personalizados de caminhos locais. Veja [Plugins](/pt/agent-sdk/plugins) para detalhes |

830| `sandbox` | [`SandboxSettings`](#sandbox-settings) ` \| None` | `None` | Configure o comportamento do sandbox programaticamente. Veja [Sandbox settings](#sandbox-settings) para detalhes |

831| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Controle quais configurações do sistema de arquivos carregar. Passe `[]` para desabilitar configurações de usuário, projeto e local. Configurações de política gerenciada carregam independentemente. Veja [Use Claude Code features](/pt/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

832| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Tokens máximos para blocos de pensamento. Use `thinking` em vez disso |

833| `thinking` | [`ThinkingConfig`](#thinking-config) ` \| None` | `None` | Controla o comportamento de pensamento estendido. Tem precedência sobre `max_thinking_tokens` |

834| `effort` | `Literal["low", "medium", "high", "max"] \| None` | `None` | Nível de esforço para profundidade de pensamento |

835| `session_store` | [`SessionStore`](/pt/agent-sdk/session-storage#the-session-store-interface) ` \| None` | `None` | Espelhe transcrições de sessão para um backend externo para que qualquer host possa retomá-las. Veja [Persist sessions to external storage](/pt/agent-sdk/session-storage) |

836 

837### `OutputFormat`

838 

839Configuração para validação de saída estruturada. Passe isso como um `dict` para o campo `output_format` em `ClaudeAgentOptions`:

840 

841```python theme={null}

842# Expected dict shape for output_format

843{

844 "type": "json_schema",

845 "schema": {...}, # Your JSON Schema definition

846}

847```

848 

849| Campo | Obrigatório | Descrição |

850| :------- | :---------- | :-------------------------------------------------- |

851| `type` | Sim | Deve ser `"json_schema"` para validação JSON Schema |

852| `schema` | Sim | Definição JSON Schema para validação de saída |

853 

854### `SystemPromptPreset`

855 

856Configuração para usar o prompt do sistema preset do Claude Code com adições opcionais.

857 

858```python theme={null}

859class SystemPromptPreset(TypedDict):

860 type: Literal["preset"]

861 preset: Literal["claude_code"]

862 append: NotRequired[str]

863 exclude_dynamic_sections: NotRequired[bool]

864```

865 

866| Campo | Obrigatório | Descrição |

867| :------------------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

868| `type` | Sim | Deve ser `"preset"` para usar um prompt do sistema preset |

869| `preset` | Sim | Deve ser `"claude_code"` para usar o prompt do sistema do Claude Code |

870| `append` | Não | Instruções adicionais para anexar ao prompt do sistema preset |

871| `exclude_dynamic_sections` | Não | Mova contexto por sessão como diretório de trabalho, status git e caminhos de memória da prompt do sistema para a primeira mensagem do usuário. Melhora a reutilização de cache de prompt entre usuários e máquinas. Veja [Modify system prompts](/pt/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

872 

873### `SettingSource`

874 

875Controla quais fontes de configuração baseadas em sistema de arquivos o SDK carrega configurações.

876 

877```python theme={null}

878SettingSource = Literal["user", "project", "local"]

879```

880 

881| Valor | Descrição | Localização |

882| :---------- | :--------------------------------------------------------------- | :---------------------------- |

883| `"user"` | Configurações globais do usuário | `~/.claude/settings.json` |

884| `"project"` | Configurações de projeto compartilhadas (controladas por versão) | `.claude/settings.json` |

885| `"local"` | Configurações de projeto local (gitignored) | `.claude/settings.local.json` |

886 

887#### Comportamento padrão

888 

889Quando `setting_sources` é omitido ou `None`, `query()` carrega as mesmas configurações do sistema de arquivos que o CLI do Claude Code: usuário, projeto e local. Configurações de política gerenciada são carregadas em todos os casos. Veja [What settingSources does not control](/pt/agent-sdk/claude-code-features#what-settingsources-does-not-control) para entradas que são lidas independentemente desta opção, e como desabilitá-las.

890 

891#### Por que usar setting\_sources

892 

893**Desabilitar configurações do sistema de arquivos:**

894 

895```python theme={null}

896# Do not load user, project, or local settings from disk

897from claude_agent_sdk import query, ClaudeAgentOptions

898 

899async for message in query(

900 prompt="Analyze this code",

901 options=ClaudeAgentOptions(

902 setting_sources=[]

903 ),

904):

905 print(message)

906```

907 

908<Note>

909 No Python SDK 0.1.59 e anterior, uma lista vazia era tratada da mesma forma que omitir a opção, então `setting_sources=[]` não desabilitava configurações do sistema de arquivos. Atualize para uma versão mais recente se você precisar que uma lista vazia tenha efeito. O SDK TypeScript não é afetado.

910</Note>

911 

912**Carregue todas as configurações do sistema de arquivos explicitamente:**

913 

914```python theme={null}

915from claude_agent_sdk import query, ClaudeAgentOptions

916 

917async for message in query(

918 prompt="Analyze this code",

919 options=ClaudeAgentOptions(

920 setting_sources=["user", "project", "local"]

921 ),

922):

923 print(message)

924```

925 

926**Carregue apenas fontes de configuração específicas:**

927 

928```python theme={null}

929# Load only project settings, ignore user and local

930async for message in query(

931 prompt="Run CI checks",

932 options=ClaudeAgentOptions(

933 setting_sources=["project"] # Only .claude/settings.json

934 ),

935):

936 print(message)

937```

938 

939**Ambientes de teste e CI:**

940 

941```python theme={null}

942# Ensure consistent behavior in CI by excluding local settings

943async for message in query(

944 prompt="Run tests",

945 options=ClaudeAgentOptions(

946 setting_sources=["project"], # Only team-shared settings

947 permission_mode="bypassPermissions",

948 ),

949):

950 print(message)

951```

952 

953**Aplicações apenas SDK:**

954 

955```python theme={null}

956# Define everything programmatically.

957# Pass [] to opt out of filesystem setting sources.

958async for message in query(

959 prompt="Review this PR",

960 options=ClaudeAgentOptions(

961 setting_sources=[],

962 agents={...},

963 mcp_servers={...},

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

965 ),

966):

967 print(message)

968```

969 

970**Carregando instruções de projeto CLAUDE.md:**

971 

972```python theme={null}

973# Load project settings to include CLAUDE.md files

974async for message in query(

975 prompt="Add a new feature following project conventions",

976 options=ClaudeAgentOptions(

977 system_prompt={

978 "type": "preset",

979 "preset": "claude_code", # Use Claude Code's system prompt

980 },

981 setting_sources=["project"], # Loads CLAUDE.md from project

982 allowed_tools=["Read", "Write", "Edit"],

983 ),

984):

985 print(message)

986```

987 

988#### Precedência de configurações

989 

990Quando múltiplas fontes são carregadas, as configurações são mescladas com esta precedência (maior para menor):

991 

9921. Configurações locais (`.claude/settings.local.json`)

9932. Configurações de projeto (`.claude/settings.json`)

9943. Configurações de usuário (`~/.claude/settings.json`)

995 

996Opções programáticas como `agents` e `allowed_tools` substituem configurações do sistema de arquivos de usuário, projeto e local. Configurações de política gerenciada têm precedência sobre opções programáticas.

997 

998### `AgentDefinition`

999 

1000Configuração para um subagente definido programaticamente.

1001 

1002```python theme={null}

1003@dataclass

1004class AgentDefinition:

1005 description: str

1006 prompt: str

1007 tools: list[str] | None = None

1008 disallowedTools: list[str] | None = None

1009 model: str | None = None

1010 skills: list[str] | None = None

1011 memory: Literal["user", "project", "local"] | None = None

1012 mcpServers: list[str | dict[str, Any]] | None = None

1013 initialPrompt: str | None = None

1014 maxTurns: int | None = None

1015 background: bool | None = None

1016 effort: Literal["low", "medium", "high", "max"] | int | None = None

1017 permissionMode: PermissionMode | None = None

1018```

1019 

1020| Campo | Obrigatório | Descrição |

1021| :---------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1022| `description` | Sim | Descrição em linguagem natural de quando usar este agente |

1023| `prompt` | Sim | O prompt do sistema do agente |

1024| `tools` | Não | Array de nomes de ferramentas permitidas. Se omitido, herda todas as ferramentas |

1025| `disallowedTools` | Não | Array de nomes de ferramentas a remover do conjunto de ferramentas do agente |

1026| `model` | Não | Substituição de modelo para este agente. Aceita um alias como `"sonnet"`, `"opus"`, `"haiku"`, ou `"inherit"`, ou um ID de modelo completo. Se omitido, usa o modelo principal |

1027| `skills` | Não | Lista de nomes de skills disponíveis para este agente |

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

1029| `mcpServers` | Não | Servidores MCP disponíveis para este agente. Cada entrada é um nome de servidor ou um dict `{name: config}` inline |

1030| `initialPrompt` | Não | Auto-enviado como o primeiro turno de usuário quando este agente é executado como o agente de thread principal |

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

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

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

1034| `permissionMode` | Não | Modo de permissão para execução de ferramenta dentro deste agente. Veja [`PermissionMode`](#permission-mode) |

1035 

1036<Note>

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

1038</Note>

1039 

1040### `PermissionMode`

1041 

1042Modos de permissão para controlar a execução de ferramentas.

1043 

1044```python theme={null}

1045PermissionMode = Literal[

1046 "default", # Standard permission behavior

1047 "acceptEdits", # Auto-accept file edits

1048 "plan", # Planning mode - no execution

1049 "dontAsk", # Deny anything not pre-approved instead of prompting

1050 "bypassPermissions", # Bypass all permission checks (use with caution)

1051]

1052```

1053 

1054### `CanUseTool`

1055 

1056Alias de tipo para funções de callback de permissão de ferramenta.

1057 

1058```python theme={null}

1059CanUseTool = Callable[

1060 [str, dict[str, Any], ToolPermissionContext], Awaitable[PermissionResult]

1061]

1062```

1063 

1064O callback recebe:

1065 

1066* `tool_name`: Nome da ferramenta sendo chamada

1067* `input_data`: Os parâmetros de entrada da ferramenta

1068* `context`: Um `ToolPermissionContext` com informações adicionais

1069 

1070Retorna um `PermissionResult` (ou `PermissionResultAllow` ou `PermissionResultDeny`).

1071 

1072### `ToolPermissionContext`

1073 

1074Informações de contexto passadas para callbacks de permissão de ferramenta.

1075 

1076```python theme={null}

1077@dataclass

1078class ToolPermissionContext:

1079 signal: Any | None = None # Future: abort signal support

1080 suggestions: list[PermissionUpdate] = field(default_factory=list)

1081```

1082 

1083| Campo | Tipo | Descrição |

1084| :------------ | :----------------------- | :----------------------------------------------- |

1085| `signal` | `Any \| None` | Reservado para suporte futuro de sinal de aborto |

1086| `suggestions` | `list[PermissionUpdate]` | Sugestões de atualização de permissão do CLI |

1087 

1088### `PermissionResult`

1089 

1090Tipo de união para resultados de callback de permissão.

1091 

1092```python theme={null}

1093PermissionResult = PermissionResultAllow | PermissionResultDeny

1094```

1095 

1096### `PermissionResultAllow`

1097 

1098Resultado indicando que a chamada de ferramenta deve ser permitida.

1099 

1100```python theme={null}

1101@dataclass

1102class PermissionResultAllow:

1103 behavior: Literal["allow"] = "allow"

1104 updated_input: dict[str, Any] | None = None

1105 updated_permissions: list[PermissionUpdate] | None = None

1106```

1107 

1108| Campo | Tipo | Padrão | Descrição |

1109| :-------------------- | :------------------------------- | :-------- | :------------------------------------------- |

1110| `behavior` | `Literal["allow"]` | `"allow"` | Deve ser "allow" |

1111| `updated_input` | `dict[str, Any] \| None` | `None` | Entrada modificada a usar em vez da original |

1112| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Atualizações de permissão a aplicar |

1113 

1114### `PermissionResultDeny`

1115 

1116Resultado indicando que a chamada de ferramenta deve ser negada.

1117 

1118```python theme={null}

1119@dataclass

1120class PermissionResultDeny:

1121 behavior: Literal["deny"] = "deny"

1122 message: str = ""

1123 interrupt: bool = False

1124```

1125 

1126| Campo | Tipo | Padrão | Descrição |

1127| :---------- | :---------------- | :------- | :-------------------------------------------------- |

1128| `behavior` | `Literal["deny"]` | `"deny"` | Deve ser "deny" |

1129| `message` | `str` | `""` | Mensagem explicando por que a ferramenta foi negada |

1130| `interrupt` | `bool` | `False` | Se deve interromper a execução atual |

1131 

1132### `PermissionUpdate`

1133 

1134Configuração para atualizar permissões programaticamente.

1135 

1136```python theme={null}

1137@dataclass

1138class PermissionUpdate:

1139 type: Literal[

1140 "addRules",

1141 "replaceRules",

1142 "removeRules",

1143 "setMode",

1144 "addDirectories",

1145 "removeDirectories",

1146 ]

1147 rules: list[PermissionRuleValue] | None = None

1148 behavior: Literal["allow", "deny", "ask"] | None = None

1149 mode: PermissionMode | None = None

1150 directories: list[str] | None = None

1151 destination: (

1152 Literal["userSettings", "projectSettings", "localSettings", "session"] | None

1153 ) = None

1154```

1155 

1156| Campo | Tipo | Descrição |

1157| :------------ | :---------------------------------------- | :------------------------------------------------------- |

1158| `type` | `Literal[...]` | O tipo de operação de atualização de permissão |

1159| `rules` | `list[PermissionRuleValue] \| None` | Regras para operações de adicionar/substituir/remover |

1160| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Comportamento para operações baseadas em regras |

1161| `mode` | `PermissionMode \| None` | Modo para operação setMode |

1162| `directories` | `list[str] \| None` | Diretórios para operações de adicionar/remover diretório |

1163| `destination` | `Literal[...] \| None` | Onde aplicar a atualização de permissão |

1164 

1165### `PermissionRuleValue`

1166 

1167Uma regra a adicionar, substituir ou remover em uma atualização de permissão.

1168 

1169```python theme={null}

1170@dataclass

1171class PermissionRuleValue:

1172 tool_name: str

1173 rule_content: str | None = None

1174```

1175 

1176### `ToolsPreset`

1177 

1178Configuração de ferramentas preset para usar o conjunto de ferramentas padrão do Claude Code.

1179 

1180```python theme={null}

1181class ToolsPreset(TypedDict):

1182 type: Literal["preset"]

1183 preset: Literal["claude_code"]

1184```

1185 

1186### `ThinkingConfig`

1187 

1188Controla o comportamento de pensamento estendido. Uma união de três configurações:

1189 

1190```python theme={null}

1191class ThinkingConfigAdaptive(TypedDict):

1192 type: Literal["adaptive"]

1193 

1194 

1195class ThinkingConfigEnabled(TypedDict):

1196 type: Literal["enabled"]

1197 budget_tokens: int

1198 

1199 

1200class ThinkingConfigDisabled(TypedDict):

1201 type: Literal["disabled"]

1202 

1203 

1204ThinkingConfig = ThinkingConfigAdaptive | ThinkingConfigEnabled | ThinkingConfigDisabled

1205```

1206 

1207| Variante | Campos | Descrição |

1208| :--------- | :---------------------- | :---------------------------------------------------- |

1209| `adaptive` | `type` | Claude decide adaptativamente quando pensar |

1210| `enabled` | `type`, `budget_tokens` | Ativa pensamento com um orçamento de token específico |

1211| `disabled` | `type` | Desativa pensamento |

1212 

1213Como estas são classes `TypedDict`, são dicts simples em tempo de execução. Construa-as como literais de dict ou chame a classe como um construtor; ambos produzem um `dict`. Acesse campos com `config["budget_tokens"]`, não `config.budget_tokens`:

1214 

1215```python theme={null}

1216from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled

1217 

1218# Option 1: dict literal (recommended, no import needed)

1219options = ClaudeAgentOptions(thinking={"type": "enabled", "budget_tokens": 20000})

1220 

1221# Option 2: constructor-style (returns a plain dict)

1222config = ThinkingConfigEnabled(type="enabled", budget_tokens=20000)

1223print(config["budget_tokens"]) # 20000

1224# config.budget_tokens would raise AttributeError

1225```

1226 

1227### `SdkBeta`

1228 

1229Tipo literal para recursos beta do SDK.

1230 

1231```python theme={null}

1232SdkBeta = Literal["context-1m-2025-08-07"]

1233```

1234 

1235Use com o campo `betas` em `ClaudeAgentOptions` para ativar recursos beta.

1236 

1237<Warning>

1238 O beta `context-1m-2025-08-07` foi descontinuado a partir de 30 de abril de 2026. Passar este cabeçalho com Claude Sonnet 4.5 ou Sonnet 4 não tem efeito, e solicitações que excedem a janela de contexto padrão de 200k-token retornam um erro. Para usar uma janela de contexto de 1M-token, migre para [Claude Sonnet 4.6, Claude Opus 4.6, ou Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview), que incluem contexto de 1M a preços padrão sem cabeçalho beta necessário.

1239</Warning>

1240 

1241### `McpSdkServerConfig`

1242 

1243Configuração para servidores MCP do SDK criados com `create_sdk_mcp_server()`.

1244 

1245```python theme={null}

1246class McpSdkServerConfig(TypedDict):

1247 type: Literal["sdk"]

1248 name: str

1249 instance: Any # MCP Server instance

1250```

1251 

1252### `McpServerConfig`

1253 

1254Tipo de união para configurações de servidor MCP.

1255 

1256```python theme={null}

1257McpServerConfig = (

1258 McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig

1259)

1260```

1261 

1262#### `McpStdioServerConfig`

1263 

1264```python theme={null}

1265class McpStdioServerConfig(TypedDict):

1266 type: NotRequired[Literal["stdio"]] # Optional for backwards compatibility

1267 command: str

1268 args: NotRequired[list[str]]

1269 env: NotRequired[dict[str, str]]

1270```

1271 

1272#### `McpSSEServerConfig`

1273 

1274```python theme={null}

1275class McpSSEServerConfig(TypedDict):

1276 type: Literal["sse"]

1277 url: str

1278 headers: NotRequired[dict[str, str]]

1279```

1280 

1281#### `McpHttpServerConfig`

1282 

1283```python theme={null}

1284class McpHttpServerConfig(TypedDict):

1285 type: Literal["http"]

1286 url: str

1287 headers: NotRequired[dict[str, str]]

1288```

1289 

1290### `McpServerStatusConfig`

1291 

1292A configuração de um servidor MCP conforme relatado por [`get_mcp_status()`](#methods). Esta é a união de todas as variantes de transporte [`McpServerConfig`](#mcp-server-config) mais uma variante de saída apenas `claudeai-proxy` para servidores proxied através de claude.ai.

1293 

1294```python theme={null}

1295McpServerStatusConfig = (

1296 McpStdioServerConfig

1297 | McpSSEServerConfig

1298 | McpHttpServerConfig

1299 | McpSdkServerConfigStatus

1300 | McpClaudeAIProxyServerConfig

1301)

1302```

1303 

1304`McpSdkServerConfigStatus` é a forma serializável de [`McpSdkServerConfig`](#mcp-sdk-server-config) com apenas campos `type` (`"sdk"`) e `name` (`str`); a `instance` em processo é omitida. `McpClaudeAIProxyServerConfig` tem campos `type` (`"claudeai-proxy"`), `url` (`str`), e `id` (`str`).

1305 

1306### `McpStatusResponse`

1307 

1308Resposta de [`ClaudeSDKClient.get_mcp_status()`](#methods). Envolve a lista de status de servidor sob a chave `mcpServers`.

1309 

1310```python theme={null}

1311class McpStatusResponse(TypedDict):

1312 mcpServers: list[McpServerStatus]

1313```

1314 

1315### `McpServerStatus`

1316 

1317Status de um servidor MCP conectado, contido em [`McpStatusResponse`](#mcp-status-response).

1318 

1319```python theme={null}

1320class McpServerStatus(TypedDict):

1321 name: str

1322 status: McpServerConnectionStatus # "connected" | "failed" | "needs-auth" | "pending" | "disabled"

1323 serverInfo: NotRequired[McpServerInfo]

1324 error: NotRequired[str]

1325 config: NotRequired[McpServerStatusConfig]

1326 scope: NotRequired[str]

1327 tools: NotRequired[list[McpToolInfo]]

1328```

1329 

1330| Campo | Tipo | Descrição |

1331| :----------- | :-------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1332| `name` | `str` | Nome do servidor |

1333| `status` | `str` | Um de `"connected"`, `"failed"`, `"needs-auth"`, `"pending"`, ou `"disabled"` |

1334| `serverInfo` | `dict` (opcional) | Nome e versão do servidor (`{"name": str, "version": str}`) |

1335| `error` | `str` (opcional) | Mensagem de erro se o servidor falhou ao conectar |

1336| `config` | [`McpServerStatusConfig`](#mcp-server-status-config) (opcional) | Configuração do servidor. Mesma forma que [`McpServerConfig`](#mcp-server-config) (stdio, SSE, HTTP, ou SDK), mais uma variante `claudeai-proxy` para servidores conectados através de claude.ai |

1337| `scope` | `str` (opcional) | Escopo de configuração |

1338| `tools` | `list` (opcional) | Ferramentas fornecidas por este servidor, cada uma com campos `name`, `description`, e `annotations` |

1339 

1340### `SdkPluginConfig`

1341 

1342Configuração para carregar plugins no SDK.

1343 

1344```python theme={null}

1345class SdkPluginConfig(TypedDict):

1346 type: Literal["local"]

1347 path: str

1348```

1349 

1350| Campo | Tipo | Descrição |

1351| :----- | :----------------- | :--------------------------------------------------------------- |

1352| `type` | `Literal["local"]` | Deve ser `"local"` (apenas plugins locais atualmente suportados) |

1353| `path` | `str` | Caminho absoluto ou relativo para o diretório do plugin |

1354 

1355**Exemplo:**

1356 

1357```python theme={null}

1358plugins = [

1359 {"type": "local", "path": "./my-plugin"},

1360 {"type": "local", "path": "/absolute/path/to/plugin"},

1361]

1362```

1363 

1364Para informações completas sobre criação e uso de plugins, veja [Plugins](/pt/agent-sdk/plugins).

1365 

1366## Tipos de Mensagem

1367 

1368### `Message`

1369 

1370Tipo de união de todas as mensagens possíveis.

1371 

1372```python theme={null}

1373Message = (

1374 UserMessage

1375 | AssistantMessage

1376 | SystemMessage

1377 | ResultMessage

1378 | StreamEvent

1379 | RateLimitEvent

1380)

1381```

1382 

1383### `UserMessage`

1384 

1385Mensagem de entrada do usuário.

1386 

1387```python theme={null}

1388@dataclass

1389class UserMessage:

1390 content: str | list[ContentBlock]

1391 uuid: str | None = None

1392 parent_tool_use_id: str | None = None

1393 tool_use_result: dict[str, Any] | None = None

1394```

1395 

1396| Campo | Tipo | Descrição |

1397| :------------------- | :-------------------------- | :--------------------------------------------------------------------------------- |

1398| `content` | `str \| list[ContentBlock]` | Conteúdo da mensagem como texto ou blocos de conteúdo |

1399| `uuid` | `str \| None` | Identificador único de mensagem |

1400| `parent_tool_use_id` | `str \| None` | ID de uso de ferramenta se esta mensagem é uma resposta de resultado de ferramenta |

1401| `tool_use_result` | `dict[str, Any] \| None` | Dados de resultado de ferramenta se aplicável |

1402 

1403### `AssistantMessage`

1404 

1405Mensagem de resposta do assistente com blocos de conteúdo.

1406 

1407```python theme={null}

1408@dataclass

1409class AssistantMessage:

1410 content: list[ContentBlock]

1411 model: str

1412 parent_tool_use_id: str | None = None

1413 error: AssistantMessageError | None = None

1414 usage: dict[str, Any] | None = None

1415 message_id: str | None = None

1416```

1417 

1418| Campo | Tipo | Descrição |

1419| :------------------- | :------------------------------------------------------------- | :------------------------------------------------------------------------------------- |

1420| `content` | `list[ContentBlock]` | Lista de blocos de conteúdo na resposta |

1421| `model` | `str` | Modelo que gerou a resposta |

1422| `parent_tool_use_id` | `str \| None` | ID de uso de ferramenta se esta é uma resposta aninhada |

1423| `error` | [`AssistantMessageError`](#assistant-message-error) ` \| None` | Tipo de erro se a resposta encontrou um erro |

1424| `usage` | `dict[str, Any] \| None` | Uso de token por mensagem (mesmas chaves que [`ResultMessage.usage`](#result-message)) |

1425| `message_id` | `str \| None` | ID de mensagem da API. Múltiplas mensagens de um turno compartilham o mesmo ID |

1426 

1427### `AssistantMessageError`

1428 

1429Possíveis tipos de erro para mensagens do assistente.

1430 

1431```python theme={null}

1432AssistantMessageError = Literal[

1433 "authentication_failed",

1434 "billing_error",

1435 "rate_limit",

1436 "invalid_request",

1437 "server_error",

1438 "max_output_tokens",

1439 "unknown",

1440]

1441```

1442 

1443### `SystemMessage`

1444 

1445Mensagem do sistema com metadados.

1446 

1447```python theme={null}

1448@dataclass

1449class SystemMessage:

1450 subtype: str

1451 data: dict[str, Any]

1452```

1453 

1454### `ResultMessage`

1455 

1456Mensagem de resultado final com informações de custo e uso.

1457 

1458```python theme={null}

1459@dataclass

1460class ResultMessage:

1461 subtype: str

1462 duration_ms: int

1463 duration_api_ms: int

1464 is_error: bool

1465 num_turns: int

1466 session_id: str

1467 total_cost_usd: float | None = None

1468 usage: dict[str, Any] | None = None

1469 result: str | None = None

1470 stop_reason: str | None = None

1471 structured_output: Any = None

1472 model_usage: dict[str, Any] | None = None

1473```

1474 

1475O dict `usage` contém as seguintes chaves quando presentes:

1476 

1477| Chave | Tipo | Descrição |

1478| ----------------------------- | ----- | ------------------------------------------------- |

1479| `input_tokens` | `int` | Total de tokens de entrada consumidos. |

1480| `output_tokens` | `int` | Total de tokens de saída gerados. |

1481| `cache_creation_input_tokens` | `int` | Tokens usados para criar novas entradas de cache. |

1482| `cache_read_input_tokens` | `int` | Tokens lidos de entradas de cache existentes. |

1483 

1484O dict `model_usage` mapeia nomes de modelo para uso por modelo. As chaves do dict interno usam camelCase porque o valor é passado sem modificação do processo CLI subjacente, correspondendo ao tipo TypeScript [`ModelUsage`](/pt/agent-sdk/typescript#model-usage):

1485 

1486| Chave | Tipo | Descrição |

1487| -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1488| `inputTokens` | `int` | Tokens de entrada para este modelo. |

1489| `outputTokens` | `int` | Tokens de saída para este modelo. |

1490| `cacheReadInputTokens` | `int` | Tokens de leitura de cache para este modelo. |

1491| `cacheCreationInputTokens` | `int` | Tokens de criação de cache para este modelo. |

1492| `webSearchRequests` | `int` | Solicitações de busca na web feitas por este modelo. |

1493| `costUSD` | `float` | Custo estimado em USD para este modelo, computado no lado do cliente. Veja [Track cost and usage](/pt/agent-sdk/cost-tracking) para ressalvas de faturamento. |

1494| `contextWindow` | `int` | Tamanho da janela de contexto para este modelo. |

1495| `maxOutputTokens` | `int` | Limite máximo de token de saída para este modelo. |

1496 

1497### `StreamEvent`

1498 

1499Evento de fluxo para atualizações de mensagem parcial durante streaming. Apenas recebido quando `include_partial_messages=True` em `ClaudeAgentOptions`. Importe via `from claude_agent_sdk.types import StreamEvent`.

1500 

1501```python theme={null}

1502@dataclass

1503class StreamEvent:

1504 uuid: str

1505 session_id: str

1506 event: dict[str, Any] # The raw Claude API stream event

1507 parent_tool_use_id: str | None = None

1508```

1509 

1510| Campo | Tipo | Descrição |

1511| :------------------- | :--------------- | :----------------------------------------------------------- |

1512| `uuid` | `str` | Identificador único para este evento |

1513| `session_id` | `str` | Identificador de sessão |

1514| `event` | `dict[str, Any]` | Os dados brutos do evento de fluxo da API Claude |

1515| `parent_tool_use_id` | `str \| None` | ID de uso de ferramenta pai se este evento é de um subagente |

1516 

1517### `RateLimitEvent`

1518 

1519Emitido quando o status do limite de taxa muda (por exemplo, de `"allowed"` para `"allowed_warning"`). Use isso para avisar usuários antes de atingirem um limite rígido, ou para recuar quando o status é `"rejected"`.

1520 

1521```python theme={null}

1522@dataclass

1523class RateLimitEvent:

1524 rate_limit_info: RateLimitInfo

1525 uuid: str

1526 session_id: str

1527```

1528 

1529| Campo | Tipo | Descrição |

1530| :---------------- | :---------------------------------- | :----------------------------- |

1531| `rate_limit_info` | [`RateLimitInfo`](#rate-limit-info) | Estado de limite de taxa atual |

1532| `uuid` | `str` | Identificador único de evento |

1533| `session_id` | `str` | Identificador de sessão |

1534 

1535### `RateLimitInfo`

1536 

1537Estado de limite de taxa carregado por [`RateLimitEvent`](#rate-limit-event).

1538 

1539```python theme={null}

1540RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]

1541RateLimitType = Literal[

1542 "five_hour", "seven_day", "seven_day_opus", "seven_day_sonnet", "overage"

1543]

1544 

1545 

1546@dataclass

1547class RateLimitInfo:

1548 status: RateLimitStatus

1549 resets_at: int | None = None

1550 rate_limit_type: RateLimitType | None = None

1551 utilization: float | None = None

1552 overage_status: RateLimitStatus | None = None

1553 overage_resets_at: int | None = None

1554 overage_disabled_reason: str | None = None

1555 raw: dict[str, Any] = field(default_factory=dict)

1556```

1557 

1558| Campo | Tipo | Descrição |

1559| :------------------------ | :------------------------ | :--------------------------------------------------------------------------------------------------------------------- |

1560| `status` | `RateLimitStatus` | Status atual. `"allowed_warning"` significa aproximando-se do limite; `"rejected"` significa que o limite foi atingido |

1561| `resets_at` | `int \| None` | Timestamp Unix quando a janela de limite de taxa é redefinida |

1562| `rate_limit_type` | `RateLimitType \| None` | Qual janela de limite de taxa se aplica |

1563| `utilization` | `float \| None` | Fração do limite de taxa consumido (0.0 a 1.0) |

1564| `overage_status` | `RateLimitStatus \| None` | Status do uso de excedente pré-pago, se aplicável |

1565| `overage_resets_at` | `int \| None` | Timestamp Unix quando a janela de excedente é redefinida |

1566| `overage_disabled_reason` | `str \| None` | Por que o excedente está indisponível, se o status é `"rejected"` |

1567| `raw` | `dict[str, Any]` | Dict bruto completo do CLI, incluindo campos não modelados acima |

1568 

1569### `TaskStartedMessage`

1570 

1571Emitido quando uma tarefa de fundo começa. Uma tarefa de fundo é qualquer coisa rastreada fora do turno principal: um comando Bash em fundo, um watch de [Monitor](#monitor), um subagente gerado via ferramenta Agent, ou um agente remoto. O campo `task_type` diz qual. Esta nomenclatura não está relacionada à renomeação de ferramenta `Task`-para-`Agent`.

1572 

1573```python theme={null}

1574@dataclass

1575class TaskStartedMessage(SystemMessage):

1576 task_id: str

1577 description: str

1578 uuid: str

1579 session_id: str

1580 tool_use_id: str | None = None

1581 task_type: str | None = None

1582```

1583 

1584| Campo | Tipo | Descrição |

1585| :------------ | :------------ | :------------------------------------------------------------------------------------------------------------------------ |

1586| `task_id` | `str` | Identificador único para a tarefa |

1587| `description` | `str` | Descrição da tarefa |

1588| `uuid` | `str` | Identificador único de mensagem |

1589| `session_id` | `str` | Identificador de sessão |

1590| `tool_use_id` | `str \| None` | ID de uso de ferramenta associado |

1591| `task_type` | `str \| None` | Que tipo de tarefa de fundo: `"local_bash"` para Bash em fundo e watches de Monitor, `"local_agent"`, ou `"remote_agent"` |

1592 

1593### `TaskUsage`

1594 

1595Dados de token e tempo para uma tarefa de fundo.

1596 

1597```python theme={null}

1598class TaskUsage(TypedDict):

1599 total_tokens: int

1600 tool_uses: int

1601 duration_ms: int

1602```

1603 

1604### `TaskProgressMessage`

1605 

1606Emitido periodicamente com atualizações de progresso para uma tarefa de fundo em execução.

1607 

1608```python theme={null}

1609@dataclass

1610class TaskProgressMessage(SystemMessage):

1611 task_id: str

1612 description: str

1613 usage: TaskUsage

1614 uuid: str

1615 session_id: str

1616 tool_use_id: str | None = None

1617 last_tool_name: str | None = None

1618```

1619 

1620| Campo | Tipo | Descrição |

1621| :--------------- | :------------ | :------------------------------------------ |

1622| `task_id` | `str` | Identificador único para a tarefa |

1623| `description` | `str` | Descrição de status atual |

1624| `usage` | `TaskUsage` | Uso de token para esta tarefa até agora |

1625| `uuid` | `str` | Identificador único de mensagem |

1626| `session_id` | `str` | Identificador de sessão |

1627| `tool_use_id` | `str \| None` | ID de uso de ferramenta associado |

1628| `last_tool_name` | `str \| None` | Nome da última ferramenta que a tarefa usou |

1629 

1630### `TaskNotificationMessage`

1631 

1632Emitido quando uma tarefa de fundo é concluída, falha ou é parada. Tarefas de fundo incluem comandos Bash `run_in_background`, watches de Monitor e subagentes em fundo.

1633 

1634```python theme={null}

1635@dataclass

1636class TaskNotificationMessage(SystemMessage):

1637 task_id: str

1638 status: TaskNotificationStatus # "completed" | "failed" | "stopped"

1639 output_file: str

1640 summary: str

1641 uuid: str

1642 session_id: str

1643 tool_use_id: str | None = None

1644 usage: TaskUsage | None = None

1645```

1646 

1647| Campo | Tipo | Descrição |

1648| :------------ | :----------------------- | :---------------------------------------------- |

1649| `task_id` | `str` | Identificador único para a tarefa |

1650| `status` | `TaskNotificationStatus` | Um de `"completed"`, `"failed"`, ou `"stopped"` |

1651| `output_file` | `str` | Caminho para o arquivo de saída da tarefa |

1652| `summary` | `str` | Resumo do resultado da tarefa |

1653| `uuid` | `str` | Identificador único de mensagem |

1654| `session_id` | `str` | Identificador de sessão |

1655| `tool_use_id` | `str \| None` | ID de uso de ferramenta associado |

1656| `usage` | `TaskUsage \| None` | Uso de token final para a tarefa |

1657 

1658## Tipos de Bloco de Conteúdo

1659 

1660### `ContentBlock`

1661 

1662Tipo de união de todos os blocos de conteúdo.

1663 

1664```python theme={null}

1665ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock

1666```

1667 

1668### `TextBlock`

1669 

1670Bloco de conteúdo de texto.

1671 

1672```python theme={null}

1673@dataclass

1674class TextBlock:

1675 text: str

1676```

1677 

1678### `ThinkingBlock`

1679 

1680Bloco de conteúdo de pensamento (para modelos com capacidade de pensamento).

1681 

1682```python theme={null}

1683@dataclass

1684class ThinkingBlock:

1685 thinking: str

1686 signature: str

1687```

1688 

1689### `ToolUseBlock`

1690 

1691Bloco de solicitação de uso de ferramenta.

1692 

1693```python theme={null}

1694@dataclass

1695class ToolUseBlock:

1696 id: str

1697 name: str

1698 input: dict[str, Any]

1699```

1700 

1701### `ToolResultBlock`

1702 

1703Bloco de resultado de execução de ferramenta.

1704 

1705```python theme={null}

1706@dataclass

1707class ToolResultBlock:

1708 tool_use_id: str

1709 content: str | list[dict[str, Any]] | None = None

1710 is_error: bool | None = None

1711```

1712 

1713## Tipos de Erro

1714 

1715### `ClaudeSDKError`

1716 

1717Classe de exceção base para todos os erros do SDK.

1718 

1719```python theme={null}

1720class ClaudeSDKError(Exception):

1721 """Base error for Claude SDK."""

1722```

1723 

1724### `CLINotFoundError`

1725 

1726Levantado quando Claude Code CLI não está instalado ou não é encontrado.

1727 

1728```python theme={null}

1729class CLINotFoundError(CLIConnectionError):

1730 def __init__(

1731 self, message: str = "Claude Code not found", cli_path: str | None = None

1732 ):

1733 """

1734 Args:

1735 message: Error message (default: "Claude Code not found")

1736 cli_path: Optional path to the CLI that was not found

1737 """

1738```

1739 

1740### `CLIConnectionError`

1741 

1742Levantado quando a conexão com Claude Code falha.

1743 

1744```python theme={null}

1745class CLIConnectionError(ClaudeSDKError):

1746 """Failed to connect to Claude Code."""

1747```

1748 

1749### `ProcessError`

1750 

1751Levantado quando o processo Claude Code falha.

1752 

1753```python theme={null}

1754class ProcessError(ClaudeSDKError):

1755 def __init__(

1756 self, message: str, exit_code: int | None = None, stderr: str | None = None

1757 ):

1758 self.exit_code = exit_code

1759 self.stderr = stderr

1760```

1761 

1762### `CLIJSONDecodeError`

1763 

1764Levantado quando a análise JSON falha.

1765 

1766```python theme={null}

1767class CLIJSONDecodeError(ClaudeSDKError):

1768 def __init__(self, line: str, original_error: Exception):

1769 """

1770 Args:

1771 line: The line that failed to parse

1772 original_error: The original JSON decode exception

1773 """

1774 self.line = line

1775 self.original_error = original_error

1776```

1777 

1778## Tipos de Hook

1779 

1780Para um guia abrangente sobre o uso de hooks com exemplos e padrões comuns, veja o [Hooks guide](/pt/agent-sdk/hooks).

1781 

1782### `HookEvent`

1783 

1784Tipos de evento de hook suportados.

1785 

1786```python theme={null}

1787HookEvent = Literal[

1788 "PreToolUse", # Called before tool execution

1789 "PostToolUse", # Called after tool execution

1790 "PostToolUseFailure", # Called when a tool execution fails

1791 "UserPromptSubmit", # Called when user submits a prompt

1792 "Stop", # Called when stopping execution

1793 "SubagentStop", # Called when a subagent stops

1794 "PreCompact", # Called before message compaction

1795 "Notification", # Called for notification events

1796 "SubagentStart", # Called when a subagent starts

1797 "PermissionRequest", # Called when a permission decision is needed

1798]

1799```

1800 

1801<Note>

1802 O SDK TypeScript suporta eventos de hook adicionais não disponíveis ainda em Python: `SessionStart`, `SessionEnd`, `Setup`, `TeammateIdle`, `TaskCompleted`, `ConfigChange`, `WorktreeCreate`, `WorktreeRemove`, e `PostToolBatch`.

1803</Note>

1804 

1805### `HookCallback`

1806 

1807Definição de tipo para funções de callback de hook.

1808 

1809```python theme={null}

1810HookCallback = Callable[[HookInput, str | None, HookContext], Awaitable[HookJSONOutput]]

1811```

1812 

1813Parâmetros:

1814 

1815* `input`: Entrada de hook fortemente tipada com uniões discriminadas baseadas em `hook_event_name` (veja [`HookInput`](#hook-input))

1816* `tool_use_id`: Identificador de uso de ferramenta opcional (para hooks relacionados a ferramentas)

1817* `context`: Contexto de hook com informações adicionais

1818 

1819Retorna um [`HookJSONOutput`](#hook-json-output) que pode conter:

1820 

1821* `decision`: `"block"` para bloquear a ação

1822* `systemMessage`: Mensagem do sistema a adicionar à transcrição

1823* `hookSpecificOutput`: Dados de saída específicos do hook

1824 

1825### `HookContext`

1826 

1827Informações de contexto passadas para callbacks de hook.

1828 

1829```python theme={null}

1830class HookContext(TypedDict):

1831 signal: Any | None # Future: abort signal support

1832```

1833 

1834### `HookMatcher`

1835 

1836Configuração para corresponder hooks a eventos ou ferramentas específicas.

1837 

1838```python theme={null}

1839@dataclass

1840class HookMatcher:

1841 matcher: str | None = (

1842 None # Tool name or pattern to match (e.g., "Bash", "Write|Edit")

1843 )

1844 hooks: list[HookCallback] = field(

1845 default_factory=list

1846 ) # List of callbacks to execute

1847 timeout: float | None = (

1848 None # Timeout in seconds for all hooks in this matcher (default: 60)

1849 )

1850```

1851 

1852### `HookInput`

1853 

1854Tipo de união de todos os tipos de entrada de hook. O tipo real depende do campo `hook_event_name`.

1855 

1856```python theme={null}

1857HookInput = (

1858 PreToolUseHookInput

1859 | PostToolUseHookInput

1860 | PostToolUseFailureHookInput

1861 | UserPromptSubmitHookInput

1862 | StopHookInput

1863 | SubagentStopHookInput

1864 | PreCompactHookInput

1865 | NotificationHookInput

1866 | SubagentStartHookInput

1867 | PermissionRequestHookInput

1868)

1869```

1870 

1871### `BaseHookInput`

1872 

1873Campos base presentes em todos os tipos de entrada de hook.

1874 

1875```python theme={null}

1876class BaseHookInput(TypedDict):

1877 session_id: str

1878 transcript_path: str

1879 cwd: str

1880 permission_mode: NotRequired[str]

1881```

1882 

1883| Campo | Tipo | Descrição |

1884| :---------------- | :--------------- | :---------------------------------------------- |

1885| `session_id` | `str` | Identificador de sessão atual |

1886| `transcript_path` | `str` | Caminho para o arquivo de transcrição da sessão |

1887| `cwd` | `str` | Diretório de trabalho atual |

1888| `permission_mode` | `str` (opcional) | Modo de permissão atual |

1889 

1890### `PreToolUseHookInput`

1891 

1892Dados de entrada para eventos de hook `PreToolUse`.

1893 

1894```python theme={null}

1895class PreToolUseHookInput(BaseHookInput):

1896 hook_event_name: Literal["PreToolUse"]

1897 tool_name: str

1898 tool_input: dict[str, Any]

1899 tool_use_id: str

1900 agent_id: NotRequired[str]

1901 agent_type: NotRequired[str]

1902```

1903 

1904| Campo | Tipo | Descrição |

1905| :---------------- | :---------------------- | :-------------------------------------------------------------------------------- |

1906| `hook_event_name` | `Literal["PreToolUse"]` | Sempre "PreToolUse" |

1907| `tool_name` | `str` | Nome da ferramenta prestes a ser executada |

1908| `tool_input` | `dict[str, Any]` | Parâmetros de entrada para a ferramenta |

1909| `tool_use_id` | `str` | Identificador único para este uso de ferramenta |

1910| `agent_id` | `str` (opcional) | Identificador de subagente, presente quando o hook dispara dentro de um subagente |

1911| `agent_type` | `str` (opcional) | Tipo de subagente, presente quando o hook dispara dentro de um subagente |

1912 

1913### `PostToolUseHookInput`

1914 

1915Dados de entrada para eventos de hook `PostToolUse`.

1916 

1917```python theme={null}

1918class PostToolUseHookInput(BaseHookInput):

1919 hook_event_name: Literal["PostToolUse"]

1920 tool_name: str

1921 tool_input: dict[str, Any]

1922 tool_response: Any

1923 tool_use_id: str

1924 agent_id: NotRequired[str]

1925 agent_type: NotRequired[str]

1926```

1927 

1928| Campo | Tipo | Descrição |

1929| :---------------- | :----------------------- | :-------------------------------------------------------------------------------- |

1930| `hook_event_name` | `Literal["PostToolUse"]` | Sempre "PostToolUse" |

1931| `tool_name` | `str` | Nome da ferramenta que foi executada |

1932| `tool_input` | `dict[str, Any]` | Parâmetros de entrada que foram usados |

1933| `tool_response` | `Any` | Resposta da execução da ferramenta |

1934| `tool_use_id` | `str` | Identificador único para este uso de ferramenta |

1935| `agent_id` | `str` (opcional) | Identificador de subagente, presente quando o hook dispara dentro de um subagente |

1936| `agent_type` | `str` (opcional) | Tipo de subagente, presente quando o hook dispara dentro de um subagente |

1937 

1938### `PostToolUseFailureHookInput`

1939 

1940Dados de entrada para eventos de hook `PostToolUseFailure`. Chamado quando uma execução de ferramenta falha.

1941 

1942```python theme={null}

1943class PostToolUseFailureHookInput(BaseHookInput):

1944 hook_event_name: Literal["PostToolUseFailure"]

1945 tool_name: str

1946 tool_input: dict[str, Any]

1947 tool_use_id: str

1948 error: str

1949 is_interrupt: NotRequired[bool]

1950 agent_id: NotRequired[str]

1951 agent_type: NotRequired[str]

1952```

1953 

1954| Campo | Tipo | Descrição |

1955| :---------------- | :------------------------------ | :-------------------------------------------------------------------------------- |

1956| `hook_event_name` | `Literal["PostToolUseFailure"]` | Sempre "PostToolUseFailure" |

1957| `tool_name` | `str` | Nome da ferramenta que falhou |

1958| `tool_input` | `dict[str, Any]` | Parâmetros de entrada que foram usados |

1959| `tool_use_id` | `str` | Identificador único para este uso de ferramenta |

1960| `error` | `str` | Mensagem de erro da execução falhada |

1961| `is_interrupt` | `bool` (opcional) | Se a falha foi causada por uma interrupção |

1962| `agent_id` | `str` (opcional) | Identificador de subagente, presente quando o hook dispara dentro de um subagente |

1963| `agent_type` | `str` (opcional) | Tipo de subagente, presente quando o hook dispara dentro de um subagente |

1964 

1965### `UserPromptSubmitHookInput`

1966 

1967Dados de entrada para eventos de hook `UserPromptSubmit`.

1968 

1969```python theme={null}

1970class UserPromptSubmitHookInput(BaseHookInput):

1971 hook_event_name: Literal["UserPromptSubmit"]

1972 prompt: str

1973```

1974 

1975| Campo | Tipo | Descrição |

1976| :---------------- | :---------------------------- | :---------------------------- |

1977| `hook_event_name` | `Literal["UserPromptSubmit"]` | Sempre "UserPromptSubmit" |

1978| `prompt` | `str` | O prompt enviado pelo usuário |

1979 

1980### `StopHookInput`

1981 

1982Dados de entrada para eventos de hook `Stop`.

1983 

1984```python theme={null}

1985class StopHookInput(BaseHookInput):

1986 hook_event_name: Literal["Stop"]

1987 stop_hook_active: bool

1988```

1989 

1990| Campo | Tipo | Descrição |

1991| :----------------- | :---------------- | :----------------------------- |

1992| `hook_event_name` | `Literal["Stop"]` | Sempre "Stop" |

1993| `stop_hook_active` | `bool` | Se o hook de parada está ativo |

1994 

1995### `SubagentStopHookInput`

1996 

1997Dados de entrada para eventos de hook `SubagentStop`.

1998 

1999```python theme={null}

2000class SubagentStopHookInput(BaseHookInput):

2001 hook_event_name: Literal["SubagentStop"]

2002 stop_hook_active: bool

2003 agent_id: str

2004 agent_transcript_path: str

2005 agent_type: str

2006```

2007 

2008| Campo | Tipo | Descrição |

2009| :---------------------- | :------------------------ | :------------------------------------------------- |

2010| `hook_event_name` | `Literal["SubagentStop"]` | Sempre "SubagentStop" |

2011| `stop_hook_active` | `bool` | Se o hook de parada está ativo |

2012| `agent_id` | `str` | Identificador único para o subagente |

2013| `agent_transcript_path` | `str` | Caminho para o arquivo de transcrição do subagente |

2014| `agent_type` | `str` | Tipo do subagente |

2015 

2016### `PreCompactHookInput`

2017 

2018Dados de entrada para eventos de hook `PreCompact`.

2019 

2020```python theme={null}

2021class PreCompactHookInput(BaseHookInput):

2022 hook_event_name: Literal["PreCompact"]

2023 trigger: Literal["manual", "auto"]

2024 custom_instructions: str | None

2025```

2026 

2027| Campo | Tipo | Descrição |

2028| :-------------------- | :-------------------------- | :----------------------------------------- |

2029| `hook_event_name` | `Literal["PreCompact"]` | Sempre "PreCompact" |

2030| `trigger` | `Literal["manual", "auto"]` | O que acionou a compactação |

2031| `custom_instructions` | `str \| None` | Instruções personalizadas para compactação |

2032 

2033### `NotificationHookInput`

2034 

2035Dados de entrada para eventos de hook `Notification`.

2036 

2037```python theme={null}

2038class NotificationHookInput(BaseHookInput):

2039 hook_event_name: Literal["Notification"]

2040 message: str

2041 title: NotRequired[str]

2042 notification_type: str

2043```

2044 

2045| Campo | Tipo | Descrição |

2046| :------------------ | :------------------------ | :---------------------------------- |

2047| `hook_event_name` | `Literal["Notification"]` | Sempre "Notification" |

2048| `message` | `str` | Conteúdo da mensagem de notificação |

2049| `title` | `str` (opcional) | Título da notificação |

2050| `notification_type` | `str` | Tipo de notificação |

2051 

2052### `SubagentStartHookInput`

2053 

2054Dados de entrada para eventos de hook `SubagentStart`.

2055 

2056```python theme={null}

2057class SubagentStartHookInput(BaseHookInput):

2058 hook_event_name: Literal["SubagentStart"]

2059 agent_id: str

2060 agent_type: str

2061```

2062 

2063| Campo | Tipo | Descrição |

2064| :---------------- | :------------------------- | :----------------------------------- |

2065| `hook_event_name` | `Literal["SubagentStart"]` | Sempre "SubagentStart" |

2066| `agent_id` | `str` | Identificador único para o subagente |

2067| `agent_type` | `str` | Tipo do subagente |

2068 

2069### `PermissionRequestHookInput`

2070 

2071Dados de entrada para eventos de hook `PermissionRequest`. Permite que hooks manipulem decisões de permissão programaticamente.

2072 

2073```python theme={null}

2074class PermissionRequestHookInput(BaseHookInput):

2075 hook_event_name: Literal["PermissionRequest"]

2076 tool_name: str

2077 tool_input: dict[str, Any]

2078 permission_suggestions: NotRequired[list[Any]]

2079```

2080 

2081| Campo | Tipo | Descrição |

2082| :----------------------- | :----------------------------- | :----------------------------------------- |

2083| `hook_event_name` | `Literal["PermissionRequest"]` | Sempre "PermissionRequest" |

2084| `tool_name` | `str` | Nome da ferramenta solicitando permissão |

2085| `tool_input` | `dict[str, Any]` | Parâmetros de entrada para a ferramenta |

2086| `permission_suggestions` | `list[Any]` (opcional) | Atualizações de permissão sugeridas do CLI |

2087 

2088### `HookJSONOutput`

2089 

2090Tipo de união para valores de retorno de callback de hook.

2091 

2092```python theme={null}

2093HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput

2094```

2095 

2096#### `SyncHookJSONOutput`

2097 

2098Saída de hook síncrona com campos de controle e decisão.

2099 

2100```python theme={null}

2101class SyncHookJSONOutput(TypedDict):

2102 # Control fields

2103 continue_: NotRequired[bool] # Whether to proceed (default: True)

2104 suppressOutput: NotRequired[bool] # Hide stdout from transcript

2105 stopReason: NotRequired[str] # Message when continue is False

2106 

2107 # Decision fields

2108 decision: NotRequired[Literal["block"]]

2109 systemMessage: NotRequired[str] # Warning message for user

2110 reason: NotRequired[str] # Feedback for Claude

2111 

2112 # Hook-specific output

2113 hookSpecificOutput: NotRequired[HookSpecificOutput]

2114```

2115 

2116<Note>

2117 Use `continue_` (com underscore) no código Python. É automaticamente convertido para `continue` quando enviado para o CLI.

2118</Note>

2119 

2120#### `HookSpecificOutput`

2121 

2122Um `TypedDict` contendo o nome do evento de hook e campos específicos do evento. A forma depende do valor `hookEventName`. Para detalhes completos sobre campos disponíveis por evento de hook, veja [Control execution with hooks](/pt/agent-sdk/hooks#outputs).

2123 

2124Uma união discriminada de tipos de saída específicos do evento. O campo `hookEventName` determina quais campos são válidos.

2125 

2126```python theme={null}

2127class PreToolUseHookSpecificOutput(TypedDict):

2128 hookEventName: Literal["PreToolUse"]

2129 permissionDecision: NotRequired[Literal["allow", "deny", "ask"]]

2130 permissionDecisionReason: NotRequired[str]

2131 updatedInput: NotRequired[dict[str, Any]]

2132 additionalContext: NotRequired[str]

2133 

2134 

2135class PostToolUseHookSpecificOutput(TypedDict):

2136 hookEventName: Literal["PostToolUse"]

2137 additionalContext: NotRequired[str]

2138 updatedMCPToolOutput: NotRequired[Any]

2139 

2140 

2141class PostToolUseFailureHookSpecificOutput(TypedDict):

2142 hookEventName: Literal["PostToolUseFailure"]

2143 additionalContext: NotRequired[str]

2144 

2145 

2146class UserPromptSubmitHookSpecificOutput(TypedDict):

2147 hookEventName: Literal["UserPromptSubmit"]

2148 additionalContext: NotRequired[str]

2149 

2150 

2151class NotificationHookSpecificOutput(TypedDict):

2152 hookEventName: Literal["Notification"]

2153 additionalContext: NotRequired[str]

2154 

2155 

2156class SubagentStartHookSpecificOutput(TypedDict):

2157 hookEventName: Literal["SubagentStart"]

2158 additionalContext: NotRequired[str]

2159 

2160 

2161class PermissionRequestHookSpecificOutput(TypedDict):

2162 hookEventName: Literal["PermissionRequest"]

2163 decision: dict[str, Any]

2164 

2165 

2166HookSpecificOutput = (

2167 PreToolUseHookSpecificOutput

2168 | PostToolUseHookSpecificOutput

2169 | PostToolUseFailureHookSpecificOutput

2170 | UserPromptSubmitHookSpecificOutput

2171 | NotificationHookSpecificOutput

2172 | SubagentStartHookSpecificOutput

2173 | PermissionRequestHookSpecificOutput

2174)

2175```

2176 

2177#### `AsyncHookJSONOutput`

2178 

2179Saída de hook assíncrona que adia a execução do hook.

2180 

2181```python theme={null}

2182class AsyncHookJSONOutput(TypedDict):

2183 async_: Literal[True] # Set to True to defer execution

2184 asyncTimeout: NotRequired[int] # Timeout in milliseconds

2185```

2186 

2187<Note>

2188 Use `async_` (com underscore) no código Python. É automaticamente convertido para `async` quando enviado para o CLI.

2189</Note>

2190 

2191### Exemplo de Uso de Hook

2192 

2193Este exemplo registra dois hooks: um que bloqueia comandos bash perigosos como `rm -rf /`, e outro que registra todo o uso de ferramenta para auditoria. O hook de segurança funciona apenas em comandos Bash (via `matcher`), enquanto o hook de registro funciona em todas as ferramentas.

2194 

2195```python theme={null}

2196from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, HookContext

2197from typing import Any

2198 

2199 

2200async def validate_bash_command(

2201 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2202) -> dict[str, Any]:

2203 """Validate and potentially block dangerous bash commands."""

2204 if input_data["tool_name"] == "Bash":

2205 command = input_data["tool_input"].get("command", "")

2206 if "rm -rf /" in command:

2207 return {

2208 "hookSpecificOutput": {

2209 "hookEventName": "PreToolUse",

2210 "permissionDecision": "deny",

2211 "permissionDecisionReason": "Dangerous command blocked",

2212 }

2213 }

2214 return {}

2215 

2216 

2217async def log_tool_use(

2218 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2219) -> dict[str, Any]:

2220 """Log all tool usage for auditing."""

2221 print(f"Tool used: {input_data.get('tool_name')}")

2222 return {}

2223 

2224 

2225options = ClaudeAgentOptions(

2226 hooks={

2227 "PreToolUse": [

2228 HookMatcher(

2229 matcher="Bash", hooks=[validate_bash_command], timeout=120

2230 ), # 2 min for validation

2231 HookMatcher(

2232 hooks=[log_tool_use]

2233 ), # Applies to all tools (default 60s timeout)

2234 ],

2235 "PostToolUse": [HookMatcher(hooks=[log_tool_use])],

2236 }

2237)

2238 

2239async for message in query(prompt="Analyze this codebase", options=options):

2240 print(message)

2241```

2242 

2243## Tipos de Entrada/Saída de Ferramenta

2244 

2245Documentação de schemas de entrada/saída para todas as ferramentas Claude Code integradas. Embora o SDK Python não exporte esses como tipos, eles representam a estrutura de entradas e saídas de ferramenta em mensagens.

2246 

2247### Agent

2248 

2249**Nome da ferramenta:** `Agent` (anteriormente `Task`, que ainda é aceito como alias)

2250 

2251**Entrada:**

2252 

2253```python theme={null}

2254{

2255 "description": str, # A short (3-5 word) description of the task

2256 "prompt": str, # The task for the agent to perform

2257 "subagent_type": str, # The type of specialized agent to use

2258}

2259```

2260 

2261**Saída:**

2262 

2263```python theme={null}

2264{

2265 "result": str, # Final result from the subagent

2266 "usage": dict | None, # Token usage statistics

2267 "total_cost_usd": float | None, # Estimated total cost in USD

2268 "duration_ms": int | None, # Execution duration in milliseconds

2269}

2270```

2271 

2272### AskUserQuestion

2273 

2274**Nome da ferramenta:** `AskUserQuestion`

2275 

2276Faz perguntas de esclarecimento ao usuário durante a execução. Veja [Handle approvals and user input](/pt/agent-sdk/user-input#handle-clarifying-questions) para detalhes de uso.

2277 

2278**Entrada:**

2279 

2280```python theme={null}

2281{

2282 "questions": [ # Questions to ask the user (1-4 questions)

2283 {

2284 "question": str, # The complete question to ask the user

2285 "header": str, # Very short label displayed as a chip/tag (max 12 chars)

2286 "options": [ # The available choices (2-4 options)

2287 {

2288 "label": str, # Display text for this option (1-5 words)

2289 "description": str, # Explanation of what this option means

2290 }

2291 ],

2292 "multiSelect": bool, # Set to true to allow multiple selections

2293 }

2294 ],

2295 "answers": dict | None, # User answers populated by the permission system

2296}

2297```

2298 

2299**Saída:**

2300 

2301```python theme={null}

2302{

2303 "questions": [ # The questions that were asked

2304 {

2305 "question": str,

2306 "header": str,

2307 "options": [{"label": str, "description": str}],

2308 "multiSelect": bool,

2309 }

2310 ],

2311 "answers": dict[str, str], # Maps question text to answer string

2312 # Multi-select answers are comma-separated

2313}

2314```

2315 

2316### Bash

2317 

2318**Nome da ferramenta:** `Bash`

2319 

2320**Entrada:**

2321 

2322```python theme={null}

2323{

2324 "command": str, # The command to execute

2325 "timeout": int | None, # Optional timeout in milliseconds (max 600000)

2326 "description": str | None, # Clear, concise description (5-10 words)

2327 "run_in_background": bool | None, # Set to true to run in background

2328}

2329```

2330 

2331**Saída:**

2332 

2333```python theme={null}

2334{

2335 "output": str, # Combined stdout and stderr output

2336 "exitCode": int, # Exit code of the command

2337 "killed": bool | None, # Whether command was killed due to timeout

2338 "shellId": str | None, # Shell ID for background processes

2339}

2340```

2341 

2342### Monitor

2343 

2344**Nome da ferramenta:** `Monitor`

2345 

2346Executa um script de fundo e entrega cada linha stdout para Claude como um evento para que ele possa reagir sem polling. Monitor segue as mesmas regras de permissão que Bash. Veja a [Monitor tool reference](/pt/tools-reference#monitor-tool) para comportamento e disponibilidade de provedor.

2347 

2348**Entrada:**

2349 

2350```python theme={null}

2351{

2352 "command": str, # Shell script; each stdout line is an event, exit ends the watch

2353 "description": str, # Short description shown in notifications

2354 "timeout_ms": int | None, # Kill after this deadline (default 300000, max 3600000)

2355 "persistent": bool | None, # Run for the lifetime of the session; stop with TaskStop

2356}

2357```

2358 

2359**Saída:**

2360 

2361```python theme={null}

2362{

2363 "taskId": str, # ID of the background monitor task

2364 "timeoutMs": int, # Timeout deadline in milliseconds (0 when persistent)

2365 "persistent": bool | None, # True when running until TaskStop or session end

2366}

2367```

2368 

2369### Edit

2370 

2371**Nome da ferramenta:** `Edit`

2372 

2373**Entrada:**

2374 

2375```python theme={null}

2376{

2377 "file_path": str, # The absolute path to the file to modify

2378 "old_string": str, # The text to replace

2379 "new_string": str, # The text to replace it with

2380 "replace_all": bool | None, # Replace all occurrences (default False)

2381}

2382```

2383 

2384**Saída:**

2385 

2386```python theme={null}

2387{

2388 "message": str, # Confirmation message

2389 "replacements": int, # Number of replacements made

2390 "file_path": str, # File path that was edited

2391}

2392```

2393 

2394### Read

2395 

2396**Nome da ferramenta:** `Read`

2397 

2398**Entrada:**

2399 

2400```python theme={null}

2401{

2402 "file_path": str, # The absolute path to the file to read

2403 "offset": int | None, # The line number to start reading from

2404 "limit": int | None, # The number of lines to read

2405}

2406```

2407 

2408**Saída (Arquivos de texto):**

2409 

2410```python theme={null}

2411{

2412 "content": str, # File contents with line numbers

2413 "total_lines": int, # Total number of lines in file

2414 "lines_returned": int, # Lines actually returned

2415}

2416```

2417 

2418**Saída (Imagens):**

2419 

2420```python theme={null}

2421{

2422 "image": str, # Base64 encoded image data

2423 "mime_type": str, # Image MIME type

2424 "file_size": int, # File size in bytes

2425}

2426```

2427 

2428### Write

2429 

2430**Nome da ferramenta:** `Write`

2431 

2432**Entrada:**

2433 

2434```python theme={null}

2435{

2436 "file_path": str, # The absolute path to the file to write

2437 "content": str, # The content to write to the file

2438}

2439```

2440 

2441**Saída:**

2442 

2443```python theme={null}

2444{

2445 "message": str, # Success message

2446 "bytes_written": int, # Number of bytes written

2447 "file_path": str, # File path that was written

2448}

2449```

2450 

2451### Glob

2452 

2453**Nome da ferramenta:** `Glob`

2454 

2455**Entrada:**

2456 

2457```python theme={null}

2458{

2459 "pattern": str, # The glob pattern to match files against

2460 "path": str | None, # The directory to search in (defaults to cwd)

2461}

2462```

2463 

2464**Saída:**

2465 

2466```python theme={null}

2467{

2468 "matches": list[str], # Array of matching file paths

2469 "count": int, # Number of matches found

2470 "search_path": str, # Search directory used

2471}

2472```

2473 

2474### Grep

2475 

2476**Nome da ferramenta:** `Grep`

2477 

2478**Entrada:**

2479 

2480```python theme={null}

2481{

2482 "pattern": str, # The regular expression pattern

2483 "path": str | None, # File or directory to search in

2484 "glob": str | None, # Glob pattern to filter files

2485 "type": str | None, # File type to search

2486 "output_mode": str | None, # "content", "files_with_matches", or "count"

2487 "-i": bool | None, # Case insensitive search

2488 "-n": bool | None, # Show line numbers

2489 "-B": int | None, # Lines to show before each match

2490 "-A": int | None, # Lines to show after each match

2491 "-C": int | None, # Lines to show before and after

2492 "head_limit": int | None, # Limit output to first N lines/entries

2493 "multiline": bool | None, # Enable multiline mode

2494}

2495```

2496 

2497**Saída (modo content):**

2498 

2499```python theme={null}

2500{

2501 "matches": [

2502 {

2503 "file": str,

2504 "line_number": int | None,

2505 "line": str,

2506 "before_context": list[str] | None,

2507 "after_context": list[str] | None,

2508 }

2509 ],

2510 "total_matches": int,

2511}

2512```

2513 

2514**Saída (modo files\_with\_matches):**

2515 

2516```python theme={null}

2517{

2518 "files": list[str], # Files containing matches

2519 "count": int, # Number of files with matches

2520}

2521```

2522 

2523### NotebookEdit

2524 

2525**Nome da ferramenta:** `NotebookEdit`

2526 

2527**Entrada:**

2528 

2529```python theme={null}

2530{

2531 "notebook_path": str, # Absolute path to the Jupyter notebook

2532 "cell_id": str | None, # The ID of the cell to edit

2533 "new_source": str, # The new source for the cell

2534 "cell_type": "code" | "markdown" | None, # The type of the cell

2535 "edit_mode": "replace" | "insert" | "delete" | None, # Edit operation type

2536}

2537```

2538 

2539**Saída:**

2540 

2541```python theme={null}

2542{

2543 "message": str, # Success message

2544 "edit_type": "replaced" | "inserted" | "deleted", # Type of edit performed

2545 "cell_id": str | None, # Cell ID that was affected

2546 "total_cells": int, # Total cells in notebook after edit

2547}

2548```

2549 

2550### WebFetch

2551 

2552**Nome da ferramenta:** `WebFetch`

2553 

2554**Entrada:**

2555 

2556```python theme={null}

2557{

2558 "url": str, # The URL to fetch content from

2559 "prompt": str, # The prompt to run on the fetched content

2560}

2561```

2562 

2563**Saída:**

2564 

2565```python theme={null}

2566{

2567 "response": str, # AI model's response to the prompt

2568 "url": str, # URL that was fetched

2569 "final_url": str | None, # Final URL after redirects

2570 "status_code": int | None, # HTTP status code

2571}

2572```

2573 

2574### WebSearch

2575 

2576**Nome da ferramenta:** `WebSearch`

2577 

2578**Entrada:**

2579 

2580```python theme={null}

2581{

2582 "query": str, # The search query to use

2583 "allowed_domains": list[str] | None, # Only include results from these domains

2584 "blocked_domains": list[str] | None, # Never include results from these domains

2585}

2586```

2587 

2588**Saída:**

2589 

2590```python theme={null}

2591{

2592 "results": [{"title": str, "url": str, "snippet": str, "metadata": dict | None}],

2593 "total_results": int,

2594 "query": str,

2595}

2596```

2597 

2598### TodoWrite

2599 

2600**Nome da ferramenta:** `TodoWrite`

2601 

2602**Entrada:**

2603 

2604```python theme={null}

2605{

2606 "todos": [

2607 {

2608 "content": str, # The task description

2609 "status": "pending" | "in_progress" | "completed", # Task status

2610 "activeForm": str, # Active form of the description

2611 }

2612 ]

2613}

2614```

2615 

2616**Saída:**

2617 

2618```python theme={null}

2619{

2620 "message": str, # Success message

2621 "stats": {"total": int, "pending": int, "in_progress": int, "completed": int},

2622}

2623```

2624 

2625### BashOutput

2626 

2627**Nome da ferramenta:** `BashOutput`

2628 

2629**Entrada:**

2630 

2631```python theme={null}

2632{

2633 "bash_id": str, # The ID of the background shell

2634 "filter": str | None, # Optional regex to filter output lines

2635}

2636```

2637 

2638**Saída:**

2639 

2640```python theme={null}

2641{

2642 "output": str, # New output since last check

2643 "status": "running" | "completed" | "failed", # Current shell status

2644 "exitCode": int | None, # Exit code when completed

2645}

2646```

2647 

2648### KillBash

2649 

2650**Nome da ferramenta:** `KillBash`

2651 

2652**Entrada:**

2653 

2654```python theme={null}

2655{

2656 "shell_id": str # The ID of the background shell to kill

2657}

2658```

2659 

2660**Saída:**

2661 

2662```python theme={null}

2663{

2664 "message": str, # Success message

2665 "shell_id": str, # ID of the killed shell

2666}

2667```

2668 

2669### ExitPlanMode

2670 

2671**Nome da ferramenta:** `ExitPlanMode`

2672 

2673**Entrada:**

2674 

2675```python theme={null}

2676{

2677 "plan": str # The plan to run by the user for approval

2678}

2679```

2680 

2681**Saída:**

2682 

2683```python theme={null}

2684{

2685 "message": str, # Confirmation message

2686 "approved": bool | None, # Whether user approved the plan

2687}

2688```

2689 

2690### ListMcpResources

2691 

2692**Nome da ferramenta:** `ListMcpResources`

2693 

2694**Entrada:**

2695 

2696```python theme={null}

2697{

2698 "server": str | None # Optional server name to filter resources by

2699}

2700```

2701 

2702**Saída:**

2703 

2704```python theme={null}

2705{

2706 "resources": [

2707 {

2708 "uri": str,

2709 "name": str,

2710 "description": str | None,

2711 "mimeType": str | None,

2712 "server": str,

2713 }

2714 ],

2715 "total": int,

2716}

2717```

2718 

2719### ReadMcpResource

2720 

2721**Nome da ferramenta:** `ReadMcpResource`

2722 

2723**Entrada:**

2724 

2725```python theme={null}

2726{

2727 "server": str, # The MCP server name

2728 "uri": str, # The resource URI to read

2729}

2730```

2731 

2732**Saída:**

2733 

2734```python theme={null}

2735{

2736 "contents": [

2737 {"uri": str, "mimeType": str | None, "text": str | None, "blob": str | None}

2738 ],

2739 "server": str,

2740}

2741```

2742 

2743## Recursos Avançados com ClaudeSDKClient

2744 

2745### Construindo uma Interface de Conversa Contínua

2746 

2747```python theme={null}

2748from claude_agent_sdk import (

2749 ClaudeSDKClient,

2750 ClaudeAgentOptions,

2751 AssistantMessage,

2752 TextBlock,

2753)

2754import asyncio

2755 

2756 

2757class ConversationSession:

2758 """Maintains a single conversation session with Claude."""

2759 

2760 def __init__(self, options: ClaudeAgentOptions | None = None):

2761 self.client = ClaudeSDKClient(options)

2762 self.turn_count = 0

2763 

2764 async def start(self):

2765 await self.client.connect()

2766 print("Starting conversation session. Claude will remember context.")

2767 print(

2768 "Commands: 'exit' to quit, 'interrupt' to stop current task, 'new' for new session"

2769 )

2770 

2771 while True:

2772 user_input = input(f"\n[Turn {self.turn_count + 1}] You: ")

2773 

2774 if user_input.lower() == "exit":

2775 break

2776 elif user_input.lower() == "interrupt":

2777 await self.client.interrupt()

2778 print("Task interrupted!")

2779 continue

2780 elif user_input.lower() == "new":

2781 # Disconnect and reconnect for a fresh session

2782 await self.client.disconnect()

2783 await self.client.connect()

2784 self.turn_count = 0

2785 print("Started new conversation session (previous context cleared)")

2786 continue

2787 

2788 # Send message - the session retains all previous messages

2789 await self.client.query(user_input)

2790 self.turn_count += 1

2791 

2792 # Process response

2793 print(f"[Turn {self.turn_count}] Claude: ", end="")

2794 async for message in self.client.receive_response():

2795 if isinstance(message, AssistantMessage):

2796 for block in message.content:

2797 if isinstance(block, TextBlock):

2798 print(block.text, end="")

2799 print() # New line after response

2800 

2801 await self.client.disconnect()

2802 print(f"Conversation ended after {self.turn_count} turns.")

2803 

2804 

2805async def main():

2806 options = ClaudeAgentOptions(

2807 allowed_tools=["Read", "Write", "Bash"], permission_mode="acceptEdits"

2808 )

2809 session = ConversationSession(options)

2810 await session.start()

2811 

2812 

2813# Example conversation:

2814# Turn 1 - You: "Create a file called hello.py"

2815# Turn 1 - Claude: "I'll create a hello.py file for you..."

2816# Turn 2 - You: "What's in that file?"

2817# Turn 2 - Claude: "The hello.py file I just created contains..." (remembers!)

2818# Turn 3 - You: "Add a main function to it"

2819# Turn 3 - Claude: "I'll add a main function to hello.py..." (knows which file!)

2820 

2821asyncio.run(main())

2822```

2823 

2824### Usando Hooks para Modificação de Comportamento

2825 

2826```python theme={null}

2827from claude_agent_sdk import (

2828 ClaudeSDKClient,

2829 ClaudeAgentOptions,

2830 HookMatcher,

2831 HookContext,

2832)

2833import asyncio

2834from typing import Any

2835 

2836 

2837async def pre_tool_logger(

2838 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2839) -> dict[str, Any]:

2840 """Log all tool usage before execution."""

2841 tool_name = input_data.get("tool_name", "unknown")

2842 print(f"[PRE-TOOL] About to use: {tool_name}")

2843 

2844 # You can modify or block the tool execution here

2845 if tool_name == "Bash" and "rm -rf" in str(input_data.get("tool_input", {})):

2846 return {

2847 "hookSpecificOutput": {

2848 "hookEventName": "PreToolUse",

2849 "permissionDecision": "deny",

2850 "permissionDecisionReason": "Dangerous command blocked",

2851 }

2852 }

2853 return {}

2854 

2855 

2856async def post_tool_logger(

2857 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2858) -> dict[str, Any]:

2859 """Log results after tool execution."""

2860 tool_name = input_data.get("tool_name", "unknown")

2861 print(f"[POST-TOOL] Completed: {tool_name}")

2862 return {}

2863 

2864 

2865async def user_prompt_modifier(

2866 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2867) -> dict[str, Any]:

2868 """Add context to user prompts."""

2869 original_prompt = input_data.get("prompt", "")

2870 

2871 # Add a timestamp as additional context for Claude to see

2872 from datetime import datetime

2873 

2874 timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

2875 

2876 return {

2877 "hookSpecificOutput": {

2878 "hookEventName": "UserPromptSubmit",

2879 "additionalContext": f"[Submitted at {timestamp}] Original prompt: {original_prompt}",

2880 }

2881 }

2882 

2883 

2884async def main():

2885 options = ClaudeAgentOptions(

2886 hooks={

2887 "PreToolUse": [

2888 HookMatcher(hooks=[pre_tool_logger]),

2889 HookMatcher(matcher="Bash", hooks=[pre_tool_logger]),

2890 ],

2891 "PostToolUse": [HookMatcher(hooks=[post_tool_logger])],

2892 "UserPromptSubmit": [HookMatcher(hooks=[user_prompt_modifier])],

2893 },

2894 allowed_tools=["Read", "Write", "Bash"],

2895 )

2896 

2897 async with ClaudeSDKClient(options=options) as client:

2898 await client.query("List files in current directory")

2899 

2900 async for message in client.receive_response():

2901 # Hooks will automatically log tool usage

2902 pass

2903 

2904 

2905asyncio.run(main())

2906```

2907 

2908### Monitoramento de Progresso em Tempo Real

2909 

2910```python theme={null}

2911from claude_agent_sdk import (

2912 ClaudeSDKClient,

2913 ClaudeAgentOptions,

2914 AssistantMessage,

2915 ToolUseBlock,

2916 ToolResultBlock,

2917 TextBlock,

2918)

2919import asyncio

2920 

2921 

2922async def monitor_progress():

2923 options = ClaudeAgentOptions(

2924 allowed_tools=["Write", "Bash"], permission_mode="acceptEdits"

2925 )

2926 

2927 async with ClaudeSDKClient(options=options) as client:

2928 await client.query("Create 5 Python files with different sorting algorithms")

2929 

2930 # Monitor progress in real-time

2931 async for message in client.receive_response():

2932 if isinstance(message, AssistantMessage):

2933 for block in message.content:

2934 if isinstance(block, ToolUseBlock):

2935 if block.name == "Write":

2936 file_path = block.input.get("file_path", "")

2937 print(f"Creating: {file_path}")

2938 elif isinstance(block, ToolResultBlock):

2939 print("Completed tool execution")

2940 elif isinstance(block, TextBlock):

2941 print(f"Claude says: {block.text[:100]}...")

2942 

2943 print("Task completed!")

2944 

2945 

2946asyncio.run(monitor_progress())

2947```

2948 

2949## Uso de Exemplo

2950 

2951### Operações básicas de arquivo (usando query)

2952 

2953```python theme={null}

2954from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock

2955import asyncio

2956 

2957 

2958async def create_project():

2959 options = Cl audeAgentOptions(

2960 allowed_tools=["Read", "Write", "Bash"],

2961 permission_mode="acceptEdits",

2962 cwd="/home/user/project",

2963 )

2964 

2965 async for message in query(

2966 prompt="Create a Python project structure with setup.py", options=options

2967 ):

2968 if isinstance(message, AssistantMessage):

2969 for block in message.content:

2970 if isinstance(block, ToolUseBlock):

2971 print(f"Using tool: {block.name}")

2972 

2973 

2974asyncio.run(create_project())

2975```

2976 

2977### Tratamento de erros

2978 

2979```python theme={null}

2980from claude_agent_sdk import query, CLINotFoundError, ProcessError, CLIJSONDecodeError

2981 

2982try:

2983 async for message in query(prompt="Hello"):

2984 print(message)

2985except CLINotFoundError:

2986 print(

2987 "Claude Code CLI not found. Try reinstalling: pip install --force-reinstall claude-agent-sdk"

2988 )

2989except ProcessError as e:

2990 print(f"Process failed with exit code: {e.exit_code}")

2991except CLIJSONDecodeError as e:

2992 print(f"Failed to parse response: {e}")

2993```

2994 

2995### Modo de streaming com cliente

2996 

2997```python theme={null}

2998from claude_agent_sdk import ClaudeSDKClient

2999import asyncio

3000 

3001 

3002async def interactive_session():

3003 async with ClaudeSDKClient() as client:

3004 # Send initial message

3005 await client.query("What's the weather like?")

3006 

3007 # Process responses

3008 async for msg in client.receive_response():

3009 print(msg)

3010 

3011 # Send follow-up

3012 await client.query("Tell me more about that")

3013 

3014 # Process follow-up response

3015 async for msg in client.receive_response():

3016 print(msg)

3017 

3018 

3019asyncio.run(interactive_session())

3020```

3021 

3022### Usando ferramentas personalizadas com ClaudeSDKClient

3023 

3024```python theme={null}

3025from claude_agent_sdk import (

3026 ClaudeSDKClient,

3027 ClaudeAgentOptions,

3028 tool,

3029 create_sdk_mcp_server,

3030 AssistantMessage,

3031 TextBlock,

3032)

3033import asyncio

3034from typing import Any

3035 

3036 

3037# Define custom tools with @tool decorator

3038@tool("calculate", "Perform mathematical calculations", {"expression": str})

3039async def calculate(args: dict[str, Any]) -> dict[str, Any]:

3040 try:

3041 result = eval(args["expression"], {"__builtins__": {}})

3042 return {"content": [{"type": "text", "text": f"Result: {result}"}]}

3043 except Exception as e:

3044 return {

3045 "content": [{"type": "text", "text": f"Error: {str(e)}"}],

3046 "is_error": True,

3047 }

3048 

3049 

3050@tool("get_time", "Get current time", {})

3051async def get_time(args: dict[str, Any]) -> dict[str, Any]:

3052 from datetime import datetime

3053 

3054 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

3055 return {"content": [{"type": "text", "text": f"Current time: {current_time}"}]}

3056 

3057 

3058async def main():

3059 # Create SDK MCP server with custom tools

3060 my_server = create_sdk_mcp_server(

3061 name="utilities", version="1.0.0", tools=[calculate, get_time]

3062 )

3063 

3064 # Configure options with the server

3065 options = ClaudeAgentOptions(

3066 mcp_servers={"utils": my_server},

3067 allowed_tools=["mcp__utils__calculate", "mcp__utils__get_time"],

3068 )

3069 

3070 # Use ClaudeSDKClient for interactive tool usage

3071 async with ClaudeSDKClient(options=options) as client:

3072 await client.query("What's 123 * 456?")

3073 

3074 # Process calculation response

3075 async for message in client.receive_response():

3076 if isinstance(message, AssistantMessage):

3077 for block in message.content:

3078 if isinstance(block, TextBlock):

3079 print(f"Calculation: {block.text}")

3080 

3081 # Follow up with time query

3082 await client.query("What time is it now?")

3083 

3084 async for message in client.receive_response():

3085 if isinstance(message, AssistantMessage):

3086 for block in message.content:

3087 if isinstance(block, TextBlock):

3088 print(f"Time: {block.text}")

3089 

3090 

3091asyncio.run(main())

3092```

3093 

3094## Configuração de Sandbox

3095 

3096### `SandboxSettings`

3097 

3098Configuração para comportamento de sandbox. Use isso para ativar sandboxing de comando e configurar restrições de rede programaticamente.

3099 

3100```python theme={null}

3101class SandboxSettings(TypedDict, total=False):

3102 enabled: bool

3103 autoAllowBashIfSandboxed: bool

3104 excludedCommands: list[str]

3105 allowUnsandboxedCommands: bool

3106 network: SandboxNetworkConfig

3107 ignoreViolations: SandboxIgnoreViolations

3108 enableWeakerNestedSandbox: bool

3109```

3110 

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

3112| :-------------------------- | :------------------------------------------------------ | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3113| `enabled` | `bool` | `False` | Ativa modo sandbox para execução de comando |

3114| `autoAllowBashIfSandboxed` | `bool` | `True` | Auto-aprova comandos bash quando sandbox está ativado |

3115| `excludedCommands` | `list[str]` | `[]` | Comandos que sempre contornam restrições de sandbox (por exemplo, `["docker"]`). Esses executam sem sandbox automaticamente sem envolvimento do modelo |

3116| `allowUnsandboxedCommands` | `bool` | `True` | Permite que o modelo solicite executar comandos fora do sandbox. Quando `True`, o modelo pode definir `dangerouslyDisableSandbox` na entrada da ferramenta, que volta para o [sistema de permissões](#permissions-fallback-for-unsandboxed-commands) |

3117| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `None` | Configuração de sandbox específica de rede |

3118| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandbox-ignore-violations) | `None` | Configure quais violações de sandbox ignorar |

3119| `enableWeakerNestedSandbox` | `bool` | `False` | Ativa um sandbox aninhado mais fraco para compatibilidade |

3120 

3121#### Exemplo de uso

3122 

3123```python theme={null}

3124from claude_agent_sdk import query, ClaudeAgentOptions, SandboxSettings

3125 

3126sandbox_settings: SandboxSettings = {

3127 "enabled": True,

3128 "autoAllowBashIfSandboxed": True,

3129 "network": {"allowLocalBinding": True},

3130}

3131 

3132async for message in query(

3133 prompt="Build and test my project",

3134 options=ClaudeAgentOptions(sandbox=sandbox_settings),

3135):

3136 print(message)

3137```

3138 

3139<Warning>

3140 **Segurança de socket Unix**: A opção `allowUnixSockets` pode conceder acesso a serviços de sistema poderosos. Por exemplo, permitir `/var/run/docker.sock` efetivamente concede acesso completo ao sistema host através da API Docker, contornando isolamento de sandbox. Apenas permita sockets Unix que são estritamente necessários e entenda as implicações de segurança de cada um.

3141</Warning>

3142 

3143### `SandboxNetworkConfig`

3144 

3145Configuração específica de rede para modo sandbox.

3146 

3147```python theme={null}

3148class SandboxNetworkConfig(TypedDict, total=False):

3149 allowedDomains: list[str]

3150 deniedDomains: list[str]

3151 allowManagedDomainsOnly: bool

3152 allowUnixSockets: list[str]

3153 allowAllUnixSockets: bool

3154 allowLocalBinding: bool

3155 allowMachLookup: list[str]

3156 httpProxyPort: int

3157 socksProxyPort: int

3158```

3159 

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

3161| :------------------------ | :---------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

3162| `allowedDomains` | `list[str]` | `[]` | Nomes de domínio que processos em sandbox podem acessar |

3163| `deniedDomains` | `list[str]` | `[]` | Nomes de domínio que processos em sandbox não podem acessar. Tem precedência sobre `allowedDomains` |

3164| `allowManagedDomainsOnly` | `bool` | `False` | Apenas configurações gerenciadas: quando definido em configurações gerenciadas, ignore `allowedDomains` de fontes de configurações não gerenciadas. Não tem efeito quando definido via opções SDK |

3165| `allowUnixSockets` | `list[str]` | `[]` | Caminhos de socket Unix que processos podem acessar (por exemplo, socket Docker) |

3166| `allowAllUnixSockets` | `bool` | `False` | Permite acesso a todos os sockets Unix |

3167| `allowLocalBinding` | `bool` | `False` | Permite que processos se vinculem a portas locais (por exemplo, para servidores dev) |

3168| `allowMachLookup` | `list[str]` | `[]` | Apenas macOS: nomes de serviço XPC/Mach para permitir. Suporta um curinga à direita |

3169| `httpProxyPort` | `int` | `None` | Porta de proxy HTTP para solicitações de rede |

3170| `socksProxyPort` | `int` | `None` | Porta de proxy SOCKS para solicitações de rede |

3171 

3172<Note>

3173 O proxy de sandbox integrado aplica a lista de permissões de rede com base no nome de host solicitado e não encerra ou inspeciona tráfego TLS, portanto técnicas como [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) podem potencialmente contorná-lo. Veja [Limitações de segurança de Sandboxing](/pt/sandboxing#security-limitations) para detalhes e [Implantação segura](/pt/agent-sdk/secure-deployment#traffic-forwarding) para configurar um proxy que encerra TLS.

3174</Note>

3175 

3176### `SandboxIgnoreViolations`

3177 

3178Configuração para ignorar violações de sandbox específicas.

3179 

3180```python theme={null}

3181class SandboxIgnoreViolations(TypedDict, total=False):

3182 file: list[str]

3183 network: list[str]

3184```

3185 

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

3187| :---------- | :---------- | :----- | :--------------------------------------------------- |

3188| `file` | `list[str]` | `[]` | Padrões de caminho de arquivo para ignorar violações |

3189| `network` | `list[str]` | `[]` | Padrões de rede para ignorar violações |

3190 

3191### Fallback de Permissões para Comandos Sem Sandbox

3192 

3193Quando `allowUnsandboxedCommands` está ativado, o modelo pode solicitar executar comandos fora do sandbox definindo `dangerouslyDisableSandbox: True` na entrada da ferramenta. Essas solicitações voltam para o sistema de permissões existente, significando que seu manipulador `can_use_tool` será invocado, permitindo que você implemente lógica de autorização personalizada.

3194 

3195<Note>

3196 **`excludedCommands` vs `allowUnsandboxedCommands`:**

3197 

3198 * `excludedCommands`: Uma lista estática de comandos que sempre contornam o sandbox automaticamente (por exemplo, `["docker"]`). O modelo não tem controle sobre isso.

3199 * `allowUnsandboxedCommands`: Permite que o modelo decida em tempo de execução se deve solicitar execução sem sandbox definindo `dangerouslyDisableSandbox: True` na entrada da ferramenta.

3200</Note>

3201 

3202```python theme={null}

3203from claude_agent_sdk import (

3204 query,

3205 ClaudeAgentOptions,

3206 HookMatcher,

3207 PermissionResultAllow,

3208 PermissionResultDeny,

3209 ToolPermissionContext,

3210)

3211 

3212 

3213async def can_use_tool(

3214 tool: str, input: dict, context: ToolPermissionContext

3215) -> PermissionResultAllow | PermissionResultDeny:

3216 # Check if the model is requesting to bypass the sandbox

3217 if tool == "Bash" and input.get("dangerouslyDisableSandbox"):

3218 # The model is requesting to run this command outside the sandbox

3219 print(f"Unsandboxed command requested: {input.get('command')}")

3220 

3221 if is_command_authorized(input.get("command")):

3222 return PermissionResultAllow()

3223 return PermissionResultDeny(

3224 message="Command not authorized for unsandboxed execution"

3225 )

3226 return PermissionResultAllow()

3227 

3228 

3229# Required: dummy hook keeps the stream open for can_use_tool

3230async def dummy_hook(input_data, tool_use_id, context):

3231 return {"continue_": True}

3232 

3233 

3234async def prompt_stream():

3235 yield {

3236 "type": "user",

3237 "message": {"role": "user", "content": "Deploy my application"},

3238 }

3239 

3240 

3241async def main():

3242 async for message in query(

3243 prompt=prompt_stream(),

3244 options=ClaudeAgentOptions(

3245 sandbox={

3246 "enabled": True,

3247 "allowUnsandboxedCommands": True, # Model can request unsandboxed execution

3248 },

3249 permission_mode="default",

3250 can_use_tool=can_use_tool,

3251 hooks={"PreToolUse": [HookMatcher(matcher=None, hooks=[dummy_hook])]},

3252 ),

3253 ):

3254 print(message)

3255```

3256 

3257Este padrão permite que você:

3258 

3259* **Audite solicitações de modelo**: Registre quando o modelo solicita execução sem sandbox

3260* **Implemente listas de permissão**: Apenas permita comandos específicos executarem sem sandbox

3261* **Adicione fluxos de trabalho de aprovação**: Exija autorização explícita para operações privilegiadas

3262 

3263<Warning>

3264 Comandos executando com `dangerouslyDisableSandbox: True` têm acesso completo ao sistema. Certifique-se de que seu manipulador `can_use_tool` valida essas solicitações cuidadosamente.

3265 

3266 Se `permission_mode` está definido para `bypassPermissions` e `allow_unsandboxed_commands` está ativado, o modelo pode autonomamente executar comandos fora do sandbox sem qualquer prompt de aprovação. Esta combinação efetivamente permite que o modelo escape do isolamento de sandbox silenciosamente.

3267</Warning>

3268 

3269## Veja também

3270 

3271* [SDK overview](/pt/agent-sdk/overview) - Conceitos gerais do SDK

3272* [TypeScript SDK reference](/pt/agent-sdk/typescript) - Documentação do SDK TypeScript

3273* [CLI reference](/pt/cli-reference) - Interface de linha de comando

3274* [Common workflows](/pt/common-workflows) - Guias passo a passo

agent-sdk/quickstart.md +333 −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# Início Rápido

6 

7> Comece com o Agent SDK Python ou TypeScript para construir agentes de IA que funcionam autonomamente

8 

9Use o Agent SDK para construir um agente de IA que leia seu código, encontre bugs e os corrija, tudo sem intervenção manual.

10 

11**O que você fará:**

12 

131. Configurar um projeto com o Agent SDK

142. Criar um arquivo com código com bugs

153. Executar um agente que encontra e corrige os bugs automaticamente

16 

17## Pré-requisitos

18 

19* **Node.js 18+** ou **Python 3.10+**

20* Uma **conta Anthropic** ([inscreva-se aqui](https://platform.claude.com/))

21 

22## Configuração

23 

24<Steps>

25 <Step title="Criar uma pasta de projeto">

26 Crie um novo diretório para este início rápido:

27 

28 ```bash theme={null}

29 mkdir my-agent && cd my-agent

30 ```

31 

32 Para seus próprios projetos, você pode executar o SDK de qualquer pasta; ele terá acesso aos arquivos nesse diretório e seus subdiretórios por padrão.

33 </Step>

34 

35 <Step title="Instalar o SDK">

36 Instale o pacote Agent SDK para sua linguagem:

37 

38 <Tabs>

39 <Tab title="TypeScript">

40 ```bash theme={null}

41 npm install @anthropic-ai/claude-agent-sdk

42 ```

43 </Tab>

44 

45 <Tab title="Python (uv)">

46 [uv Python package manager](https://docs.astral.sh/uv/) é um gerenciador de pacotes Python rápido que lida com ambientes virtuais automaticamente:

47 

48 ```bash theme={null}

49 uv init && uv add claude-agent-sdk

50 ```

51 </Tab>

52 

53 <Tab title="Python (pip)">

54 Crie um ambiente virtual primeiro, depois instale:

55 

56 ```bash theme={null}

57 python3 -m venv .venv && source .venv/bin/activate

58 pip3 install claude-agent-sdk

59 ```

60 </Tab>

61 </Tabs>

62 

63 <Note>

64 O SDK TypeScript agrupa um binário nativo Claude Code para sua plataforma como uma dependência opcional, portanto você não precisa instalar Claude Code separadamente.

65 </Note>

66 </Step>

67 

68 <Step title="Defina sua chave de API">

69 Obtenha uma chave de API no [Claude Console](https://platform.claude.com/), depois crie um arquivo `.env` no diretório do seu projeto:

70 

71 ```bash theme={null}

72 ANTHROPIC_API_KEY=your-api-key

73 ```

74 

75 O SDK também suporta autenticação através de provedores de API de terceiros:

76 

77 * **Amazon Bedrock**: defina a variável de ambiente `CLAUDE_CODE_USE_BEDROCK=1` e configure as credenciais AWS

78 * **Google Vertex AI**: defina a variável de ambiente `CLAUDE_CODE_USE_VERTEX=1` e configure as credenciais Google Cloud

79 * **Microsoft Azure**: defina a variável de ambiente `CLAUDE_CODE_USE_FOUNDRY=1` e configure as credenciais Azure

80 

81 Consulte os guias de configuração para [Bedrock](/pt/amazon-bedrock), [Vertex AI](/pt/google-vertex-ai), ou [Azure AI Foundry](/pt/microsoft-foundry) para detalhes.

82 

83 <Note>

84 A menos que previamente aprovado, a Anthropic não permite que desenvolvedores terceirizados ofereçam login claude.ai ou limites de taxa para seus produtos, incluindo agentes construídos no Agent SDK Claude. Use os métodos de autenticação de chave de API descritos neste documento.

85 </Note>

86 </Step>

87</Steps>

88 

89## Criar um arquivo com bugs

90 

91Este início rápido o orienta na construção de um agente que pode encontrar e corrigir bugs no código. Primeiro, você precisa de um arquivo com alguns bugs intencionais para o agente corrigir. Crie `utils.py` no diretório `my-agent` e cole o seguinte código:

92 

93```python theme={null}

94def calculate_average(numbers):

95 total = 0

96 for num in numbers:

97 total += num

98 return total / len(numbers)

99 

100 

101def get_user_name(user):

102 return user["name"].upper()

103```

104 

105Este código tem dois bugs:

106 

1071. `calculate_average([])` falha com divisão por zero

1082. `get_user_name(None)` falha com um TypeError

109 

110## Construir um agente que encontra e corrige bugs

111 

112Crie `agent.py` se estiver usando o SDK Python, ou `agent.ts` para TypeScript:

113 

114<CodeGroup>

115 ```python Python theme={null}

116 import asyncio

117 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

118 

119 

120 async def main():

121 # Agentic loop: streams messages as Claude works

122 async for message in query(

123 prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",

124 options=ClaudeAgentOptions(

125 allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use

126 permission_mode="acceptEdits", # Auto-approve file edits

127 ),

128 ):

129 # Print human-readable output

130 if isinstance(message, AssistantMessage):

131 for block in message.content:

132 if hasattr(block, "text"):

133 print(block.text) # Claude's reasoning

134 elif hasattr(block, "name"):

135 print(f"Tool: {block.name}") # Tool being called

136 elif isinstance(message, ResultMessage):

137 print(f"Done: {message.subtype}") # Final result

138 

139 

140 asyncio.run(main())

141 ```

142 

143 ```typescript TypeScript theme={null}

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

145 

146 // Agentic loop: streams messages as Claude works

147 for await (const message of query({

148 prompt: "Review utils.py for bugs that would cause crashes. Fix any issues you find.",

149 options: {

150 allowedTools: ["Read", "Edit", "Glob"], // Tools Claude can use

151 permissionMode: "acceptEdits" // Auto-approve file edits

152 }

153 })) {

154 // Print human-readable output

155 if (message.type === "assistant" && message.message?.content) {

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

157 if ("text" in block) {

158 console.log(block.text); // Claude's reasoning

159 } else if ("name" in block) {

160 console.log(`Tool: ${block.name}`); // Tool being called

161 }

162 }

163 } else if (message.type === "result") {

164 console.log(`Done: ${message.subtype}`); // Final result

165 }

166 }

167 ```

168</CodeGroup>

169 

170Este código tem três partes principais:

171 

1721. **`query`**: o ponto de entrada principal que cria o loop agentic. Ele retorna um iterador assíncrono, então você usa `async for` para transmitir mensagens enquanto Claude trabalha. Veja a API completa na referência do SDK [Python](/pt/agent-sdk/python#query) ou [TypeScript](/pt/agent-sdk/typescript#query).

173 

1742. **`prompt`**: o que você quer que Claude faça. Claude descobre quais ferramentas usar com base na tarefa.

175 

1763. **`options`**: configuração para o agente. Este exemplo usa `allowedTools` para pré-aprovar `Read`, `Edit` e `Glob`, e `permissionMode: "acceptEdits"` para auto-aprovar alterações de arquivo. Outras opções incluem `systemPrompt`, `mcpServers` e muito mais. Veja todas as opções para [Python](/pt/agent-sdk/python#claude-agent-options) ou [TypeScript](/pt/agent-sdk/typescript#options).

177 

178O loop `async for` continua executando enquanto Claude pensa, chama ferramentas, observa resultados e decide o que fazer a seguir. Cada iteração produz uma mensagem: o raciocínio de Claude, uma chamada de ferramenta, um resultado de ferramenta ou o resultado final. O SDK lida com a orquestração (execução de ferramentas, gerenciamento de contexto, tentativas) para que você apenas consuma o fluxo. O loop termina quando Claude conclui a tarefa ou encontra um erro.

179 

180O tratamento de mensagens dentro do loop filtra a saída legível por humanos. Sem filtragem, você veria objetos de mensagem brutos, incluindo inicialização do sistema e estado interno, o que é útil para depuração, mas barulhento caso contrário.

181 

182<Note>

183 Este exemplo usa streaming para mostrar o progresso em tempo real. Se você não precisar de saída ao vivo (por exemplo, para trabalhos em segundo plano ou pipelines de CI), você pode coletar todas as mensagens de uma vez. Veja [Streaming vs. modo de turno único](/pt/agent-sdk/streaming-vs-single-mode) para detalhes.

184</Note>

185 

186### Execute seu agente

187 

188Seu agente está pronto. Execute-o com o seguinte comando:

189 

190<Tabs>

191 <Tab title="Python">

192 ```bash theme={null}

193 python3 agent.py

194 ```

195 </Tab>

196 

197 <Tab title="TypeScript">

198 ```bash theme={null}

199 npx tsx agent.ts

200 ```

201 </Tab>

202</Tabs>

203 

204Após executar, verifique `utils.py`. Você verá código defensivo tratando listas vazias e usuários nulos. Seu agente autonomamente:

205 

2061. **Leu** `utils.py` para entender o código

2072. **Analisou** a lógica e identificou casos extremos que causariam falhas

2083. **Editou** o arquivo para adicionar tratamento de erros apropriado

209 

210Isto é o que torna o Agent SDK diferente: Claude executa ferramentas diretamente em vez de pedir que você as implemente.

211 

212<Note>

213 Se você vir "API key not found", certifique-se de que definiu a variável de ambiente `ANTHROPIC_API_KEY` no seu arquivo `.env` ou ambiente shell. Veja o [guia completo de solução de problemas](/pt/troubleshooting) para mais ajuda.

214</Note>

215 

216### Tente outros prompts

217 

218Agora que seu agente está configurado, tente alguns prompts diferentes:

219 

220* `"Add docstrings to all functions in utils.py"`

221* `"Add type hints to all functions in utils.py"`

222* `"Create a README.md documenting the functions in utils.py"`

223 

224### Personalize seu agente

225 

226Você pode modificar o comportamento do seu agente alterando as opções. Aqui estão alguns exemplos:

227 

228**Adicionar capacidade de busca na web:**

229 

230<CodeGroup>

231 ```python Python theme={null}

232 options = ClaudeAgentOptions(

233 allowed_tools=["Read", "Edit", "Glob", "WebSearch"], permission_mode="acceptEdits"

234 )

235 ```

236 

237 ```typescript TypeScript hidelines={1,-1} theme={null}

238 const _ = {

239 options: {

240 allowedTools: ["Read", "Edit", "Glob", "WebSearch"],

241 permissionMode: "acceptEdits"

242 }

243 };

244 ```

245</CodeGroup>

246 

247**Dê a Claude um prompt de sistema personalizado:**

248 

249<CodeGroup>

250 ```python Python theme={null}

251 options = ClaudeAgentOptions(

252 allowed_tools=["Read", "Edit", "Glob"],

253 permission_mode="acceptEdits",

254 system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines.",

255 )

256 ```

257 

258 ```typescript TypeScript hidelines={1,-1} theme={null}

259 const _ = {

260 options: {

261 allowedTools: ["Read", "Edit", "Glob"],

262 permissionMode: "acceptEdits",

263 systemPrompt: "You are a senior Python developer. Always follow PEP 8 style guidelines."

264 }

265 };

266 ```

267</CodeGroup>

268 

269**Execute comandos no terminal:**

270 

271<CodeGroup>

272 ```python Python theme={null}

273 options = ClaudeAgentOptions(

274 allowed_tools=["Read", "Edit", "Glob", "Bash"], permission_mode="acceptEdits"

275 )

276 ```

277 

278 ```typescript TypeScript hidelines={1,-1} theme={null}

279 const _ = {

280 options: {

281 allowedTools: ["Read", "Edit", "Glob", "Bash"],

282 permissionMode: "acceptEdits"

283 }

284 };

285 ```

286</CodeGroup>

287 

288Com `Bash` ativado, tente: `"Write unit tests for utils.py, run them, and fix any failures"`

289 

290## Conceitos-chave

291 

292**Ferramentas** controlam o que seu agente pode fazer:

293 

294| Ferramentas | O que o agente pode fazer |

295| -------------------------------------- | --------------------------- |

296| `Read`, `Glob`, `Grep` | Análise somente leitura |

297| `Read`, `Edit`, `Glob` | Analisar e modificar código |

298| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Automação completa |

299 

300**Modos de permissão** controlam quanto de supervisão humana você deseja:

301 

302| Modo | Comportamento | Caso de uso |

303| -------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------ |

304| `acceptEdits` | Auto-aprova edições de arquivo e comandos comuns do sistema de arquivos, pede outras ações | Fluxos de trabalho de desenvolvimento confiáveis |

305| `dontAsk` | Nega qualquer coisa não em `allowedTools` | Agentes headless bloqueados |

306| `auto` (apenas TypeScript) | Um classificador de modelo aprova ou nega cada chamada de ferramenta | Agentes autônomos com proteções de segurança |

307| `bypassPermissions` | Executa cada ferramenta sem prompts | CI em sandbox, ambientes totalmente confiáveis |

308| `default` | Requer um callback `canUseTool` para lidar com aprovação | Fluxos de aprovação personalizados |

309 

310O exemplo acima usa o modo `acceptEdits`, que auto-aprova operações de arquivo para que o agente possa executar sem prompts interativos. Se você quiser solicitar aprovação dos usuários, use o modo `default` e forneça um callback [`canUseTool`](/pt/agent-sdk/user-input) que coleta entrada do usuário. Para mais controle, veja [Permissões](/pt/agent-sdk/permissions).

311 

312## Solução de problemas

313 

314### Erro de API `thinking.type.enabled` não é suportado para este modelo

315 

316Claude Opus 4.7 substitui `thinking.type.enabled` por `thinking.type.adaptive`. Versões mais antigas do Agent SDK falham com o seguinte erro de API quando você seleciona `claude-opus-4-7`:

317 

318```text theme={null}

319API Error: 400 {"type":"invalid_request_error","message":"\"thinking.type.enabled\" is not supported for this model. Use \"thinking.type.adaptive\" and \"output_config.effort\" to control thinking behavior."}

320```

321 

322Atualize para Agent SDK v0.2.111 ou posterior para usar Opus 4.7.

323 

324## Próximos passos

325 

326Agora que você criou seu primeiro agente, aprenda como estender suas capacidades e adaptá-lo ao seu caso de uso:

327 

328* **[Permissões](/pt/agent-sdk/permissions)**: controle o que seu agente pode fazer e quando precisa de aprovação

329* **[Hooks](/pt/agent-sdk/hooks)**: execute código personalizado antes ou depois de chamadas de ferramenta

330* **[Sessões](/pt/agent-sdk/sessions)**: construa agentes multi-turno que mantêm contexto

331* **[Servidores MCP](/pt/agent-sdk/mcp)**: conecte-se a bancos de dados, navegadores, APIs e outros sistemas externos

332* **[Hospedagem](/pt/agent-sdk/hosting)**: implante agentes no Docker, nuvem e CI/CD

333* **[Agentes de exemplo](https://github.com/anthropics/claude-agent-sdk-demos)**: veja exemplos completos: assistente de email, agente de pesquisa e muito mais

agent-sdk/slash-commands.md +444 −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# Slash Commands no SDK

6 

7> Aprenda como usar slash commands para controlar sessões do Claude Code através do SDK

8 

9Slash commands fornecem uma maneira de controlar sessões do Claude Code com comandos especiais que começam com `/`. Esses comandos podem ser enviados através do SDK para executar ações como compactar contexto, listar uso de contexto ou invocar comandos personalizados. Apenas comandos que funcionam sem um terminal interativo são despachados através do SDK; a mensagem `system/init` lista os disponíveis em sua sessão.

10 

11## Descobrindo Slash Commands Disponíveis

12 

13O Claude Agent SDK fornece informações sobre slash commands disponíveis na mensagem de inicialização do sistema. Acesse essas informações quando sua sessão começar:

14 

15<CodeGroup>

16 ```typescript TypeScript theme={null}

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

18 

19 for await (const message of query({

20 prompt: "Hello Claude",

21 options: { maxTurns: 1 }

22 })) {

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

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

25 // Example output: ["/compact", "/context", "/usage"]

26 }

27 }

28 ```

29 

30 ```python Python theme={null}

31 import asyncio

32 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

33 

34 

35 async def main():

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

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

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

39 # Example output: ["/compact", "/context", "/usage"]

40 

41 

42 asyncio.run(main())

43 ```

44</CodeGroup>

45 

46## Enviando Slash Commands

47 

48Envie slash commands incluindo-os em sua string de prompt, assim como texto regular:

49 

50<CodeGroup>

51 ```typescript TypeScript theme={null}

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

53 

54 // Send a slash command

55 for await (const message of query({

56 prompt: "/compact",

57 options: { maxTurns: 1 }

58 })) {

59 if (message.type === "result") {

60 console.log("Command executed:", message.result);

61 }

62 }

63 ```

64 

65 ```python Python theme={null}

66 import asyncio

67 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

68 

69 

70 async def main():

71 # Send a slash command

72 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

73 if isinstance(message, ResultMessage):

74 print("Command executed:", message.result)

75 

76 

77 asyncio.run(main())

78 ```

79</CodeGroup>

80 

81## Slash Commands Comuns

82 

83### `/compact` - Compactar Histórico de Conversa

84 

85O comando `/compact` reduz o tamanho do seu histórico de conversa resumindo mensagens antigas enquanto preserva contexto importante:

86 

87<CodeGroup>

88 ```typescript TypeScript theme={null}

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

90 

91 for await (const message of query({

92 prompt: "/compact",

93 options: { maxTurns: 1 }

94 })) {

95 if (message.type === "system" && message.subtype === "compact_boundary") {

96 console.log("Compaction completed");

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

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

99 }

100 }

101 ```

102 

103 ```python Python theme={null}

104 import asyncio

105 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

106 

107 

108 async def main():

109 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

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

111 print("Compaction completed")

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

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

114 

115 

116 asyncio.run(main())

117 ```

118</CodeGroup>

119 

120### Limpando a conversa

121 

122O comando interativo `/clear` não está disponível no SDK. Cada chamada `query()` já inicia uma conversa nova, então para limpar contexto, termine a `query()` atual e inicie uma nova. A conversa anterior fica no disco e pode ser retomada passando seu ID de sessão para a [opção `resume`](/pt/agent-sdk/sessions#resume-by-id).

123 

124## Criando Slash Commands Personalizados

125 

126Além de usar slash commands integrados, você pode criar seus próprios comandos personalizados que estão disponíveis através do SDK. Comandos personalizados são definidos como arquivos markdown em diretórios específicos, similar a como subagentes são configurados.

127 

128<Note>

129 O diretório `.claude/commands/` é o formato legado. O formato recomendado é `.claude/skills/<name>/SKILL.md`, que suporta a mesma invocação de slash command (`/name`) mais invocação autônoma pelo Claude. Veja [Skills](/pt/agent-sdk/skills) para o formato atual. O CLI continua suportando ambos os formatos, e os exemplos abaixo permanecem precisos para `.claude/commands/`.

130</Note>

131 

132### Localizações de Arquivo

133 

134Slash commands personalizados são armazenados em diretórios designados baseado em seu escopo:

135 

136* **Comandos de projeto**: `.claude/commands/` - Disponíveis apenas no projeto atual (legado; prefira `.claude/skills/`)

137* **Comandos pessoais**: `~/.claude/commands/` - Disponíveis em todos seus projetos (legado; prefira `~/.claude/skills/`)

138 

139### Formato de Arquivo

140 

141Cada comando personalizado é um arquivo markdown onde:

142 

143* O nome do arquivo (sem extensão `.md`) se torna o nome do comando

144* O conteúdo do arquivo define o que o comando faz

145* Frontmatter YAML opcional fornece configuração

146 

147#### Exemplo Básico

148 

149Crie `.claude/commands/refactor.md`:

150 

151```markdown theme={null}

152Refactor the selected code to improve readability and maintainability.

153Focus on clean code principles and best practices.

154```

155 

156Isso cria o comando `/refactor` que você pode usar através do SDK.

157 

158#### Com Frontmatter

159 

160Crie `.claude/commands/security-check.md`:

161 

162```markdown theme={null}

163---

164allowed-tools: Read, Grep, Glob

165description: Run security vulnerability scan

166model: claude-opus-4-7

167---

168 

169Analyze the codebase for security vulnerabilities including:

170- SQL injection risks

171- XSS vulnerabilities

172- Exposed credentials

173- Insecure configurations

174```

175 

176### Usando Slash Commands Personalizados no SDK

177 

178Uma vez definidos no sistema de arquivos, comandos personalizados estão automaticamente disponíveis através do SDK:

179 

180<CodeGroup>

181 ```typescript TypeScript theme={null}

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

183 

184 // Use a custom command

185 for await (const message of query({

186 prompt: "/refactor src/auth/login.ts",

187 options: { maxTurns: 3 }

188 })) {

189 if (message.type === "assistant") {

190 console.log("Refactoring suggestions:", message.message);

191 }

192 }

193 

194 // Custom commands appear in the slash_commands list

195 for await (const message of query({

196 prompt: "Hello",

197 options: { maxTurns: 1 }

198 })) {

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

200 // Will include both built-in and custom commands

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

202 // Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

203 }

204 }

205 ```

206 

207 ```python Python theme={null}

208 import asyncio

209 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, SystemMessage

210 

211 

212 async def main():

213 # Use a custom command

214 async for message in query(

215 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)

216 ):

217 if isinstance(message, AssistantMessage):

218 for block in message.content:

219 if hasattr(block, "text"):

220 print("Refactoring suggestions:", block.text)

221 

222 # Custom commands appear in the slash_commands list

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

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

225 # Will include both built-in and custom commands

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

227 # Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

228 

229 

230 asyncio.run(main())

231 ```

232</CodeGroup>

233 

234### Recursos Avançados

235 

236#### Argumentos e Placeholders

237 

238Comandos personalizados suportam argumentos dinâmicos usando placeholders:

239 

240Crie `.claude/commands/fix-issue.md`:

241 

242```markdown theme={null}

243---

244argument-hint: [issue-number] [priority]

245description: Fix a GitHub issue

246---

247 

248Fix issue #$1 with priority $2.

249Check the issue description and implement the necessary changes.

250```

251 

252Use no SDK:

253 

254<CodeGroup>

255 ```typescript TypeScript theme={null}

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

257 

258 // Pass arguments to custom command

259 for await (const message of query({

260 prompt: "/fix-issue 123 high",

261 options: { maxTurns: 5 }

262 })) {

263 // Command will process with $1="123" and $2="high"

264 if (message.type === "result") {

265 console.log("Issue fixed:", message.result);

266 }

267 }

268 ```

269 

270 ```python Python theme={null}

271 import asyncio

272 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

273 

274 

275 async def main():

276 # Pass arguments to custom command

277 async for message in query(prompt="/fix-issue 123 high", options=ClaudeAgentOptions(max_turns=5)):

278 # Command will process with $1="123" and $2="high"

279 if isinstance(message, ResultMessage):

280 print("Issue fixed:", message.result)

281 

282 

283 asyncio.run(main())

284 ```

285</CodeGroup>

286 

287#### Execução de Comando Bash

288 

289Comandos personalizados podem executar comandos bash e incluir sua saída:

290 

291Crie `.claude/commands/git-commit.md`:

292 

293```markdown theme={null}

294---

295allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)

296description: Create a git commit

297---

298 

299## Context

300 

301- Current status: !`git status`

302- Current diff: !`git diff HEAD`

303 

304## Task

305 

306Create a git commit with appropriate message based on the changes.

307```

308 

309#### Referências de Arquivo

310 

311Inclua conteúdos de arquivo usando o prefixo `@`:

312 

313Crie `.claude/commands/review-config.md`:

314 

315```markdown theme={null}

316---

317description: Review configuration files

318---

319 

320Review the following configuration files for issues:

321- Package config: @package.json

322- TypeScript config: @tsconfig.json

323- Environment config: @.env

324 

325Check for security issues, outdated dependencies, and misconfigurations.

326```

327 

328### Organização com Namespacing

329 

330Organize comandos em subdiretórios para melhor estrutura:

331 

332```bash theme={null}

333.claude/commands/

334├── frontend/

335│ ├── component.md # Creates /component (project:frontend)

336│ └── style-check.md # Creates /style-check (project:frontend)

337├── backend/

338│ ├── api-test.md # Creates /api-test (project:backend)

339│ └── db-migrate.md # Creates /db-migrate (project:backend)

340└── review.md # Creates /review (project)

341```

342 

343O subdiretório aparece na descrição do comando mas não afeta o nome do comando em si.

344 

345### Exemplos Práticos

346 

347#### Comando de Revisão de Código

348 

349Crie `.claude/commands/code-review.md`:

350 

351```markdown theme={null}

352---

353allowed-tools: Read, Grep, Glob, Bash(git diff *)

354description: Comprehensive code review

355---

356 

357## Changed Files

358!`git diff --name-only HEAD~1`

359 

360## Detailed Changes

361!`git diff HEAD~1`

362 

363## Review Checklist

364 

365Review the above changes for:

3661. Code quality and readability

3672. Security vulnerabilities

3683. Performance implications

3694. Test coverage

3705. Documentation completeness

371 

372Provide specific, actionable feedback organized by priority.

373```

374 

375#### Comando Test Runner

376 

377Crie `.claude/commands/test.md`:

378 

379```markdown theme={null}

380---

381allowed-tools: Bash, Read, Edit

382argument-hint: [test-pattern]

383description: Run tests with optional pattern

384---

385 

386Run tests matching pattern: $ARGUMENTS

387 

3881. Detect the test framework (Jest, pytest, etc.)

3892. Run tests with the provided pattern

3903. If tests fail, analyze and fix them

3914. Re-run to verify fixes

392```

393 

394Use esses comandos através do SDK:

395 

396<CodeGroup>

397 ```typescript TypeScript theme={null}

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

399 

400 // Run code review

401 for await (const message of query({

402 prompt: "/code-review",

403 options: { maxTurns: 3 }

404 })) {

405 // Process review feedback

406 }

407 

408 // Run specific tests

409 for await (const message of query({

410 prompt: "/test auth",

411 options: { maxTurns: 5 }

412 })) {

413 // Handle test results

414 }

415 ```

416 

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions

420 

421 

422 async def main():

423 # Run code review

424 async for message in query(prompt="/code-review", options=ClaudeAgentOptions(max_turns=3)):

425 # Process review feedback

426 pass

427 

428 # Run specific tests

429 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):

430 # Handle test results

431 pass

432 

433 

434 asyncio.run(main())

435 ```

436</CodeGroup>

437 

438## Veja Também

439 

440* [Slash Commands](/pt/skills) - Documentação completa de slash commands

441* [Subagentes no SDK](/pt/agent-sdk/subagents) - Configuração similar baseada em sistema de arquivos para subagentes

442* [Referência TypeScript SDK](/pt/agent-sdk/typescript) - Documentação completa da API

443* [Visão geral do SDK](/pt/agent-sdk/overview) - Conceitos gerais do SDK

444* [Referência CLI](/pt/cli-reference) - Interface de linha de comando

agent-sdk/typescript.md +2975 −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# Referência do Agent SDK - TypeScript

6 

7> Referência completa da API para o Agent SDK TypeScript, incluindo todas as funções, tipos e interfaces.

8 

9<script src="/components/typescript-sdk-type-links.js" defer />

10 

11<Note>

12 **Experimente a nova interface V2 (prévia):** Uma interface simplificada com padrões `send()` e `stream()` agora está disponível, facilitando conversas multi-turno. [Saiba mais sobre a prévia do TypeScript V2](/pt/agent-sdk/typescript-v2-preview)

13</Note>

14 

15## Instalação

16 

17```bash theme={null}

18npm install @anthropic-ai/claude-agent-sdk

19```

20 

21<Note>

22 O SDK agrupa um binário nativo do Claude Code para sua plataforma como uma dependência opcional, como `@anthropic-ai/claude-agent-sdk-darwin-arm64`. Você não precisa instalar o Claude Code separadamente. Se seu gerenciador de pacotes pular dependências opcionais, o SDK lança `Native CLI binary for <platform> not found`; defina [`pathToClaudeCodeExecutable`](#options) para um binário `claude` instalado separadamente.

23</Note>

24 

25## Funções

26 

27### `query()`

28 

29A função principal para interagir com o Claude Code. Cria um gerador assíncrono que transmite mensagens conforme chegam.

30 

31```typescript theme={null}

32function query({

33 prompt,

34 options

35}: {

36 prompt: string | AsyncIterable<SDKUserMessage>;

37 options?: Options;

38}): Query;

39```

40 

41#### Parâmetros

42 

43| Parâmetro | Tipo | Descrição |

44| :-------- | :---------------------------------------------------------------- | :---------------------------------------------------------------------------------- |

45| `prompt` | `string \| AsyncIterable<`[`SDKUserMessage`](#sdkuser-message)`>` | O prompt de entrada como uma string ou iterável assíncrono para modo de transmissão |

46| `options` | [`Options`](#options) | Objeto de configuração opcional (veja o tipo Options abaixo) |

47 

48#### Retorna

49 

50Retorna um objeto [`Query`](#query-object) que estende `AsyncGenerator<`[`SDKMessage`](#sdk-message)`, void>` com métodos adicionais.

51 

52### `startup()`

53 

54Pré-aquece o subprocesso CLI gerando-o e completando o handshake de inicialização antes de um prompt estar disponível. O handle [`WarmQuery`](#warm-query) retornado aceita um prompt depois e o escreve em um processo já pronto, então a primeira chamada `query()` é resolvida sem pagar o custo de geração e inicialização do subprocesso inline.

55 

56```typescript theme={null}

57function startup(params?: {

58 options?: Options;

59 initializeTimeoutMs?: number;

60}): Promise<WarmQuery>;

61```

62 

63#### Parâmetros

64 

65| Parâmetro | Tipo | Descrição |

66| :-------------------- | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

67| `options` | [`Options`](#options) | Objeto de configuração opcional. Igual ao parâmetro `options` para `query()` |

68| `initializeTimeoutMs` | `number` | Tempo máximo em milissegundos para aguardar a inicialização do subprocesso. Padrão é `60000`. Se a inicialização não for concluída no tempo, a promise é rejeitada com um erro de timeout |

69 

70#### Retorna

71 

72Retorna uma `Promise<`[`WarmQuery`](#warm-query)`>` que é resolvida assim que o subprocesso é gerado e completa seu handshake de inicialização.

73 

74#### Exemplo

75 

76Chame `startup()` cedo, por exemplo no boot da aplicação, depois chame `.query()` no handle retornado assim que um prompt estiver pronto. Isso move a geração do subprocesso e inicialização para fora do caminho crítico.

77 

78```typescript theme={null}

79import { startup } from "@anthropic-ai/claude-agent-sdk";

80 

81// Pague o custo de inicialização antecipadamente

82const warm = await startup({ options: { maxTurns: 3 } });

83 

84// Depois, quando um prompt estiver pronto, isso é imediato

85for await (const message of warm.query("What files are here?")) {

86 console.log(message);

87}

88```

89 

90### `tool()`

91 

92Cria uma definição de ferramenta MCP type-safe para uso com servidores MCP do SDK.

93 

94```typescript theme={null}

95function tool<Schema extends AnyZodRawShape>(

96 name: string,

97 description: string,

98 inputSchema: Schema,

99 handler: (args: InferShape<Schema>, extra: unknown) => Promise<CallToolResult>,

100 extras?: { annotations?: ToolAnnotations }

101): SdkMcpToolDefinition<Schema>;

102```

103 

104#### Parâmetros

105 

106| Parâmetro | Tipo | Descrição |

107| :------------ | :------------------------------------------------------------------ | :---------------------------------------------------------------------------------- |

108| `name` | `string` | O nome da ferramenta |

109| `description` | `string` | Uma descrição do que a ferramenta faz |

110| `inputSchema` | `Schema extends AnyZodRawShape` | Schema Zod definindo os parâmetros de entrada da ferramenta (suporta Zod 3 e Zod 4) |

111| `handler` | `(args, extra) => Promise<`[`CallToolResult`](#call-tool-result)`>` | Função assíncrona que executa a lógica da ferramenta |

112| `extras` | `{ annotations?: `[`ToolAnnotations`](#tool-annotations)` }` | Anotações MCP opcionais da ferramenta fornecendo dicas comportamentais aos clientes |

113 

114#### `ToolAnnotations`

115 

116Re-exportado de `@modelcontextprotocol/sdk/types.js`. Todos os campos são dicas opcionais; os clientes não devem confiar neles para decisões de segurança.

117 

118| Campo | Tipo | Padrão | Descrição |

119| :---------------- | :-------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

120| `title` | `string` | `undefined` | Título legível para a ferramenta |

121| `readOnlyHint` | `boolean` | `false` | Se `true`, a ferramenta não modifica seu ambiente |

122| `destructiveHint` | `boolean` | `true` | Se `true`, a ferramenta pode realizar atualizações destrutivas (apenas significativo quando `readOnlyHint` é `false`) |

123| `idempotentHint` | `boolean` | `false` | Se `true`, chamadas repetidas com os mesmos argumentos não têm efeito adicional (apenas significativo quando `readOnlyHint` é `false`) |

124| `openWorldHint` | `boolean` | `true` | Se `true`, a ferramenta interage com entidades externas (por exemplo, busca na web). Se `false`, o domínio da ferramenta é fechado (por exemplo, uma ferramenta de memória) |

125 

126```typescript theme={null}

127import { tool } from "@anthropic-ai/claude-agent-sdk";

128import { z } from "zod";

129 

130const searchTool = tool(

131 "search",

132 "Search the web",

133 { query: z.string() },

134 async ({ query }) => {

135 return { content: [{ type: "text", text: `Results for: ${query}` }] };

136 },

137 { annotations: { readOnlyHint: true, openWorldHint: true } }

138);

139```

140 

141### `createSdkMcpServer()`

142 

143Cria uma instância de servidor MCP que é executada no mesmo processo que sua aplicação.

144 

145```typescript theme={null}

146function createSdkMcpServer(options: {

147 name: string;

148 version?: string;

149 tools?: Array<SdkMcpToolDefinition<any>>;

150}): McpSdkServerConfigWithInstance;

151```

152 

153#### Parâmetros

154 

155| Parâmetro | Tipo | Descrição |

156| :---------------- | :---------------------------- | :--------------------------------------------------------------- |

157| `options.name` | `string` | O nome do servidor MCP |

158| `options.version` | `string` | String de versão opcional |

159| `options.tools` | `Array<SdkMcpToolDefinition>` | Array de definições de ferramentas criadas com [`tool()`](#tool) |

160 

161### `listSessions()`

162 

163Descobre e lista sessões passadas com metadados leves. Filtre por diretório de projeto ou liste sessões em todos os projetos.

164 

165```typescript theme={null}

166function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

167```

168 

169#### Parâmetros

170 

171| Parâmetro | Tipo | Padrão | Descrição |

172| :------------------------- | :-------- | :---------- | :---------------------------------------------------------------------------------------------- |

173| `options.dir` | `string` | `undefined` | Diretório para listar sessões. Quando omitido, retorna sessões em todos os projetos |

174| `options.limit` | `number` | `undefined` | Número máximo de sessões a retornar |

175| `options.includeWorktrees` | `boolean` | `true` | Quando `dir` está dentro de um repositório git, inclua sessões de todos os caminhos de worktree |

176 

177#### Tipo de retorno: `SDKSessionInfo`

178 

179| Propriedade | Tipo | Descrição |

180| :------------- | :-------------------- | :----------------------------------------------------------------------------------------- |

181| `sessionId` | `string` | Identificador único de sessão (UUID) |

182| `summary` | `string` | Título de exibição: título personalizado, resumo gerado automaticamente ou primeiro prompt |

183| `lastModified` | `number` | Tempo da última modificação em milissegundos desde a época |

184| `fileSize` | `number \| undefined` | Tamanho do arquivo de sessão em bytes. Apenas preenchido para armazenamento JSONL local |

185| `customTitle` | `string \| undefined` | Título de sessão definido pelo usuário (via `/rename`) |

186| `firstPrompt` | `string \| undefined` | Primeiro prompt de usuário significativo na sessão |

187| `gitBranch` | `string \| undefined` | Branch git no final da sessão |

188| `cwd` | `string \| undefined` | Diretório de trabalho para a sessão |

189| `tag` | `string \| undefined` | Tag de sessão definida pelo usuário (veja [`tagSession()`](#tag-session)) |

190| `createdAt` | `number \| undefined` | Tempo de criação em milissegundos desde a época, do timestamp da primeira entrada |

191 

192#### Exemplo

193 

194Imprima as 10 sessões mais recentes para um projeto. Os resultados são classificados por `lastModified` descendente, então o primeiro item é o mais novo. Omita `dir` para pesquisar em todos os projetos.

195 

196```typescript theme={null}

197import { listSessions } from "@anthropic-ai/claude-agent-sdk";

198 

199const sessions = await listSessions({ dir: "/path/to/project", limit: 10 });

200 

201for (const session of sessions) {

202 console.log(`${session.summary} (${session.sessionId})`);

203}

204```

205 

206### `getSessionMessages()`

207 

208Lê mensagens de usuário e assistente de uma transcrição de sessão passada.

209 

210```typescript theme={null}

211function getSessionMessages(

212 sessionId: string,

213 options?: GetSessionMessagesOptions

214): Promise<SessionMessage[]>;

215```

216 

217#### Parâmetros

218 

219| Parâmetro | Tipo | Padrão | Descrição |

220| :--------------- | :------- | :---------- | :--------------------------------------------------------------------------------------- |

221| `sessionId` | `string` | obrigatório | UUID da sessão a ler (veja `listSessions()`) |

222| `options.dir` | `string` | `undefined` | Diretório do projeto para encontrar a sessão. Quando omitido, pesquisa todos os projetos |

223| `options.limit` | `number` | `undefined` | Número máximo de mensagens a retornar |

224| `options.offset` | `number` | `undefined` | Número de mensagens a pular do início |

225 

226#### Tipo de retorno: `SessionMessage`

227 

228| Propriedade | Tipo | Descrição |

229| :------------------- | :---------------------- | :--------------------------------------- |

230| `type` | `"user" \| "assistant"` | Papel da mensagem |

231| `uuid` | `string` | Identificador único de mensagem |

232| `session_id` | `string` | Sessão a que esta mensagem pertence |

233| `message` | `unknown` | Payload de mensagem bruta da transcrição |

234| `parent_tool_use_id` | `null` | Reservado |

235 

236#### Exemplo

237 

238```typescript theme={null}

239import { listSessions, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";

240 

241const [latest] = await listSessions({ dir: "/path/to/project", limit: 1 });

242 

243if (latest) {

244 const messages = await getSessionMessages(latest.sessionId, {

245 dir: "/path/to/project",

246 limit: 20

247 });

248 

249 for (const msg of messages) {

250 console.log(`[${msg.type}] ${msg.uuid}`);

251 }

252}

253```

254 

255### `getSessionInfo()`

256 

257Lê metadados para uma única sessão por ID sem verificar o diretório do projeto completo.

258 

259```typescript theme={null}

260function getSessionInfo(

261 sessionId: string,

262 options?: GetSessionInfoOptions

263): Promise<SDKSessionInfo | undefined>;

264```

265 

266#### Parâmetros

267 

268| Parâmetro | Tipo | Padrão | Descrição |

269| :------------ | :------- | :---------- | :--------------------------------------------------------------------------------------- |

270| `sessionId` | `string` | obrigatório | UUID da sessão a procurar |

271| `options.dir` | `string` | `undefined` | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |

272 

273Retorna [`SDKSessionInfo`](#return-type-sdk-session-info), ou `undefined` se a sessão não for encontrada.

274 

275### `renameSession()`

276 

277Renomeia uma sessão anexando uma entrada de título personalizado. Chamadas repetidas são seguras; o título mais recente vence.

278 

279```typescript theme={null}

280function renameSession(

281 sessionId: string,

282 title: string,

283 options?: SessionMutationOptions

284): Promise<void>;

285```

286 

287#### Parâmetros

288 

289| Parâmetro | Tipo | Padrão | Descrição |

290| :------------ | :------- | :---------- | :--------------------------------------------------------------------------------------- |

291| `sessionId` | `string` | obrigatório | UUID da sessão a renomear |

292| `title` | `string` | obrigatório | Novo título. Deve ser não-vazio após aparar espaços em branco |

293| `options.dir` | `string` | `undefined` | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |

294 

295### `tagSession()`

296 

297Marca uma sessão. Passe `null` para limpar a tag. Chamadas repetidas são seguras; a tag mais recente vence.

298 

299```typescript theme={null}

300function tagSession(

301 sessionId: string,

302 tag: string | null,

303 options?: SessionMutationOptions

304): Promise<void>;

305```

306 

307#### Parâmetros

308 

309| Parâmetro | Tipo | Padrão | Descrição |

310| :------------ | :--------------- | :---------- | :--------------------------------------------------------------------------------------- |

311| `sessionId` | `string` | obrigatório | UUID da sessão a marcar |

312| `tag` | `string \| null` | obrigatório | String de tag, ou `null` para limpar |

313| `options.dir` | `string` | `undefined` | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |

314 

315## Tipos

316 

317### `Options`

318 

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

320 

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

322| :-------------------------------- | :------------------------------------------------------------------------------------------------------- | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

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

324| `additionalDirectories` | `string[]` | `[]` | Diretórios adicionais que Claude pode acessar |

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

326| `agents` | `Record<string, [`AgentDefinition`](#agent-definition)>` | `undefined` | Defina subagentes programaticamente |

327| `allowDangerouslySkipPermissions` | `boolean` | `false` | Ativar bypass de permissões. Obrigatório ao usar `permissionMode: 'bypassPermissions'` |

328| `allowedTools` | `string[]` | `[]` | Ferramentas para auto-aprovar sem solicitar. Isso não restringe Claude apenas a essas ferramentas; ferramentas não listadas caem em `permissionMode` e `canUseTool`. Use `disallowedTools` para bloquear ferramentas. Veja [Permissões](/pt/agent-sdk/permissions#allow-and-deny-rules) |

329| `betas` | [`SdkBeta`](#sdk-beta)`[]` | `[]` | Ativar recursos beta |

330| `canUseTool` | [`CanUseTool`](#can-use-tool) | `undefined` | Função de permissão personalizada para uso de ferramentas |

331| `continue` | `boolean` | `false` | Continuar a conversa mais recente |

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

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

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

335| `disallowedTools` | `string[]` | `[]` | Ferramentas para sempre negar. Regras de negação são verificadas primeiro e substituem `allowedTools` e `permissionMode` (incluindo `bypassPermissions`) |

336| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | Controla quanto esforço Claude coloca em sua resposta. Funciona com pensamento adaptativo para guiar a profundidade do pensamento |

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

338| `env` | `Record<string, string \| undefined>` | `process.env` | Variáveis de ambiente. Veja [Variáveis de ambiente](/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 |

339| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detectado | Runtime JavaScript a usar |

340| `executableArgs` | `string[]` | `[]` | Argumentos a passar para o executável |

341| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumentos adicionais |

342| `fallbackModel` | `string` | `undefined` | Modelo a usar se o primário falhar |

343| `forkSession` | `boolean` | `false` | Ao retomar com `resume`, bifurcar para um novo ID de sessão em vez de continuar a sessão original |

344| `hooks` | `Partial<Record<`[`HookEvent`](#hook-event)`, `[`HookCallbackMatcher`](#hook-callback-matcher)`[]>>` | `{}` | Callbacks de hook para eventos |

345| `includePartialMessages` | `boolean` | `false` | Incluir eventos de mensagem parcial |

346| `maxBudgetUsd` | `number` | `undefined` | Parar a consulta quando a estimativa de custo do lado do cliente atingir este valor em USD. Comparado com a mesma estimativa que `total_cost_usd`; veja [Rastrear custo e uso](/pt/agent-sdk/cost-tracking) para ressalvas de precisão |

347| `maxThinkingTokens` | `number` | `undefined` | *Descontinuado:* Use `thinking` em vez disso. Tokens máximos para processo de pensamento |

348| `maxTurns` | `number` | `undefined` | Turnos agênticos máximos (round trips de uso de ferramenta) |

349| `mcpServers` | `Record<string, [`McpServerConfig`](#mcp-server-config)>` | `{}` | Configurações de servidor MCP |

350| `model` | `string` | Padrão da CLI | Modelo Claude a usar |

351| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Defina o formato de saída para resultados de agente. Veja [Structured outputs](/pt/agent-sdk/structured-outputs) para detalhes |

352| `pathToClaudeCodeExecutable` | `string` | Auto-resolvido do binário nativo agrupado | Caminho para executável Claude Code. Apenas necessário se dependências opcionais foram puladas durante a instalação ou sua plataforma não está no conjunto suportado |

353| `permissionMode` | [`PermissionMode`](#permission-mode) | `'default'` | Modo de permissão para a sessão |

354| `permissionPromptToolName` | `string` | `undefined` | Nome da ferramenta MCP para prompts de permissão |

355| `persistSession` | `boolean` | `true` | Quando `false`, desativa persistência de sessão em disco. Sessões não podem ser retomadas depois |

356| `plugins` | [`SdkPluginConfig`](#sdk-plugin-config)`[]` | `[]` | Carregar plugins personalizados de caminhos locais. Veja [Plugins](/pt/agent-sdk/plugins) para detalhes |

357| `promptSuggestions` | `boolean` | `false` | Ativar sugestões de prompt. Emite uma mensagem `prompt_suggestion` após cada turno com um prompt de usuário previsto |

358| `resume` | `string` | `undefined` | ID de sessão a retomar |

359| `resumeSessionAt` | `string` | `undefined` | Retomar sessão em um UUID de mensagem específico |

360| `sandbox` | [`SandboxSettings`](#sandbox-settings) | `undefined` | Configurar comportamento de sandbox programaticamente. Veja [Sandbox settings](#sandbox-settings) para detalhes |

361| `sessionId` | `string` | Auto-gerado | Use um UUID específico para a sessão em vez de auto-gerar um |

362| `sessionStore` | [`SessionStore`](/pt/agent-sdk/session-storage#the-session-store-interface) | `undefined` | Espelhar transcrições de sessão para um backend externo para que qualquer host possa retomá-las. Veja [Persist sessions to external storage](/pt/agent-sdk/session-storage) |

363| `settingSources` | [`SettingSource`](#setting-source)`[]` | Padrões da CLI (todas as fontes) | Controle quais configurações do sistema de arquivos carregar. Passe `[]` para desativar configurações de usuário, projeto e local. Configurações de política gerenciada carregam independentemente. Veja [Use Claude Code features](/pt/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

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

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

366| `strictMcpConfig` | `boolean` | `false` | Aplicar validação MCP rigorosa |

367| `systemPrompt` | `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. 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](/pt/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

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

369| `toolConfig` | [`ToolConfig`](#tool-config) | `undefined` | Configuração para comportamento de ferramenta integrada. Veja [`ToolConfig`](#tool-config) para detalhes |

370| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Configuração de ferramenta. Passe um array de nomes de ferramentas ou use o preset para obter as ferramentas padrão do Claude Code |

371 

372### Objeto `Query`

373 

374Interface retornada pela função `query()`.

375 

376```typescript theme={null}

377interface Query extends AsyncGenerator<SDKMessage, void> {

378 interrupt(): Promise<void>;

379 rewindFiles(

380 userMessageId: string,

381 options?: { dryRun?: boolean }

382 ): Promise<RewindFilesResult>;

383 setPermissionMode(mode: PermissionMode): Promise<void>;

384 setModel(model?: string): Promise<void>;

385 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;

386 initializationResult(): Promise<SDKControlInitializeResponse>;

387 supportedCommands(): Promise<SlashCommand[]>;

388 supportedModels(): Promise<ModelInfo[]>;

389 supportedAgents(): Promise<AgentInfo[]>;

390 mcpServerStatus(): Promise<McpServerStatus[]>;

391 accountInfo(): Promise<AccountInfo>;

392 reconnectMcpServer(serverName: string): Promise<void>;

393 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;

394 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;

395 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;

396 stopTask(taskId: string): Promise<void>;

397 close(): void;

398}

399```

400 

401#### Métodos

402 

403| Método | Descrição |

404| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

405| `interrupt()` | Interrompe a consulta (apenas disponível em modo de entrada de transmissão) |

406| `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](/pt/agent-sdk/file-checkpointing) |

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

408| `setModel()` | Altera o modelo (apenas disponível em modo de entrada de transmissão) |

409| `setMaxThinkingTokens()` | *Descontinuado:* Use a opção `thinking` em vez disso. Altera os tokens de pensamento máximos |

410| `initializationResult()` | Retorna o resultado de inicialização completo incluindo comandos suportados, modelos, informações de conta e configuração de estilo de saída |

411| `supportedCommands()` | Retorna comandos slash disponíveis |

412| `supportedModels()` | Retorna modelos disponíveis com informações de exibição |

413| `supportedAgents()` | Retorna subagentes disponíveis como [`AgentInfo`](#agent-info)`[]` |

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

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

416| `reconnectMcpServer(serverName)` | Reconectar um servidor MCP por nome |

417| `toggleMcpServer(serverName, enabled)` | Ativar ou desativar um servidor MCP por nome |

418| `setMcpServers(servers)` | Substituir dinamicamente o conjunto de servidores MCP para esta sessão. Retorna informações sobre quais servidores foram adicionados, removidos e quaisquer erros |

419| `streamInput(stream)` | Transmitir mensagens de entrada para a consulta para conversas multi-turno |

420| `stopTask(taskId)` | Parar uma tarefa de fundo em execução por ID |

421| `close()` | Fechar a consulta e encerrar o processo subjacente. Força o término da consulta e limpa todos os recursos |

422 

423### `WarmQuery`

424 

425Handle retornado por [`startup()`](#startup). O subprocesso já está gerado e inicializado, então chamar `query()` neste handle escreve o prompt diretamente em um processo pronto sem latência de inicialização.

426 

427```typescript theme={null}

428interface WarmQuery extends AsyncDisposable {

429 query(prompt: string | AsyncIterable<SDKUserMessage>): Query;

430 close(): void;

431}

432```

433 

434#### Métodos

435 

436| Método | Descrição |

437| :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |

438| `query(prompt)` | Enviar um prompt para o subprocesso pré-aquecido e retornar uma [`Query`](#query-object). Pode ser chamado apenas uma vez por `WarmQuery` |

439| `close()` | Fechar o subprocesso sem enviar um prompt. Use isso para descartar uma consulta quente que não é mais necessária |

440 

441`WarmQuery` implementa `AsyncDisposable`, então pode ser usado com `await using` para limpeza automática.

442 

443### `SDKControlInitializeResponse`

444 

445Tipo de retorno de `initializationResult()`. Contém dados de inicialização de sessão.

446 

447```typescript theme={null}

448type SDKControlInitializeResponse = {

449 commands: SlashCommand[];

450 agents: AgentInfo[];

451 output_style: string;

452 available_output_styles: string[];

453 models: ModelInfo[];

454 account: AccountInfo;

455 fast_mode_state?: "off" | "cooldown" | "on";

456};

457```

458 

459### `AgentDefinition`

460 

461Configuração para um subagente definido programaticamente.

462 

463```typescript theme={null}

464type AgentDefinition = {

465 description: string;

466 tools?: string[];

467 disallowedTools?: string[];

468 prompt: string;

469 model?: string;

470 mcpServers?: AgentMcpServerSpec[];

471 skills?: string[];

472 initialPrompt?: string;

473 maxTurns?: number;

474 background?: boolean;

475 memory?: "user" | "project" | "local";

476 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;

477 permissionMode?: PermissionMode;

478 criticalSystemReminder_EXPERIMENTAL?: string;

479};

480```

481 

482| Campo | Obrigatório | Descrição |

483| :------------------------------------ | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

484| `description` | Sim | Descrição em linguagem natural de quando usar este agente |

485| `tools` | Não | Array de nomes de ferramentas permitidas. Se omitido, herda todas as ferramentas do pai |

486| `disallowedTools` | Não | Array de nomes de ferramentas para explicitamente desallocar para este agente |

487| `prompt` | Sim | O prompt do sistema do agente |

488| `model` | Não | Substituição de modelo para este agente. Aceita um alias como `'sonnet'`, `'opus'`, `'haiku'`, `'inherit'`, ou um ID de modelo completo. Se omitido ou `'inherit'`, usa o modelo principal |

489| `mcpServers` | Não | Especificações de servidor MCP para este agente |

490| `skills` | Não | Array de nomes de skills para pré-carregar no contexto do agente |

491| `initialPrompt` | Não | Auto-enviado como o primeiro turno de usuário quando este agente é executado como o agente da thread principal |

492| `maxTurns` | Não | Número máximo de turnos agênticos (round-trips de API) antes de parar |

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

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

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

496| `permissionMode` | Não | Modo de permissão para execução de ferramenta dentro deste agente. Veja [`PermissionMode`](#permission-mode) |

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

498 

499### `AgentMcpServerSpec`

500 

501Especifica servidores MCP disponíveis para um subagente. Pode ser um nome de servidor (string referenciando um servidor da configuração `mcpServers` do pai) ou um registro de configuração de servidor inline mapeando nomes de servidor para configs.

502 

503```typescript theme={null}

504type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;

505```

506 

507Onde `McpServerConfigForProcessTransport` é `McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig`.

508 

509### `SettingSource`

510 

511Controla quais fontes de configuração baseadas em sistema de arquivos o SDK carrega configurações.

512 

513```typescript theme={null}

514type SettingSource = "user" | "project" | "local";

515```

516 

517| Valor | Descrição | Localização |

518| :---------- | :--------------------------------------------------------------- | :---------------------------- |

519| `'user'` | Configurações globais do usuário | `~/.claude/settings.json` |

520| `'project'` | Configurações de projeto compartilhadas (controladas por versão) | `.claude/settings.json` |

521| `'local'` | Configurações de projeto local (gitignored) | `.claude/settings.local.json` |

522 

523#### Comportamento padrão

524 

525Quando `settingSources` é omitido ou `undefined`, `query()` carrega as mesmas configurações do sistema de arquivos que a CLI do Claude Code: usuário, projeto e local. Configurações de política gerenciada são carregadas em todos os casos. Veja [What settingSources does not control](/pt/agent-sdk/claude-code-features#what-settingsources-does-not-control) para entradas que são lidas independentemente desta opção, e como desativá-las.

526 

527#### Por que usar settingSources

528 

529**Desativar configurações do sistema de arquivos:**

530 

531```typescript theme={null}

532// Não carregar configurações de usuário, projeto ou local do disco

533const result = query({

534 prompt: "Analyze this code",

535 options: { settingSources: [] }

536});

537```

538 

539**Carregar todas as configurações do sistema de arquivos explicitamente:**

540 

541```typescript theme={null}

542const result = query({

543 prompt: "Analyze this code",

544 options: {

545 settingSources: ["user", "project", "local"] // Carregar todas as configurações

546 }

547});

548```

549 

550**Carregar apenas fontes de configuração específicas:**

551 

552```typescript theme={null}

553// Carregar apenas configurações de projeto, ignorar usuário e local

554const result = query({

555 prompt: "Run CI checks",

556 options: {

557 settingSources: ["project"] // Apenas .claude/settings.json

558 }

559});

560```

561 

562**Ambientes de teste e CI:**

563 

564```typescript theme={null}

565// Garantir comportamento consistente em CI excluindo configurações locais

566const result = query({

567 prompt: "Run tests",

568 options: {

569 settingSources: ["project"], // Apenas configurações compartilhadas da equipe

570 permissionMode: "bypassPermissions"

571 }

572});

573```

574 

575**Aplicações apenas SDK:**

576 

577```typescript theme={null}

578// Defina tudo programaticamente.

579// Passe [] para optar por não usar fontes de configuração do sistema de arquivos.

580const result = query({

581 prompt: "Review this PR",

582 options: {

583 settingSources: [],

584 agents: {

585 /* ... */

586 },

587 mcpServers: {

588 /* ... */

589 },

590 allowedTools: ["Read", "Grep", "Glob"]

591 }

592});

593```

594 

595**Carregando instruções de projeto CLAUDE.md:**

596 

597```typescript theme={null}

598// Carregar configurações de projeto para incluir arquivos CLAUDE.md

599const result = query({

600 prompt: "Add a new feature following project conventions",

601 options: {

602 systemPrompt: {

603 type: "preset",

604 preset: "claude_code" // Usar o prompt do sistema do Claude Code

605 },

606 settingSources: ["project"], // Carrega CLAUDE.md do diretório do projeto

607 allowedTools: ["Read", "Write", "Edit"]

608 }

609});

610```

611 

612#### Precedência de configurações

613 

614Quando múltiplas fontes são carregadas, as configurações são mescladas com esta precedência (maior para menor):

615 

6161. Configurações locais (`.claude/settings.local.json`)

6172. Configurações de projeto (`.claude/settings.json`)

6183. Configurações do usuário (`~/.claude/settings.json`)

619 

620Opções programáticas como `agents` e `allowedTools` substituem configurações do sistema de arquivos de usuário, projeto e local. Configurações de política gerenciada têm precedência sobre opções programáticas.

621 

622### `PermissionMode`

623 

624```typescript theme={null}

625type PermissionMode =

626 | "default" // Comportamento de permissão padrão

627 | "acceptEdits" // Auto-aceitar edições de arquivo

628 | "bypassPermissions" // Bypass de todas as verificações de permissão

629 | "plan" // Modo de planejamento - sem execução

630 | "dontAsk" // Não solicitar permissões, negar se não pré-aprovado

631 | "auto"; // Usar um classificador de modelo para aprovar ou negar cada chamada de ferramenta

632```

633 

634### `CanUseTool`

635 

636Tipo de função de permissão personalizada para controlar o uso de ferramentas.

637 

638```typescript theme={null}

639type CanUseTool = (

640 toolName: string,

641 input: Record<string, unknown>,

642 options: {

643 signal: AbortSignal;

644 suggestions?: PermissionUpdate[];

645 blockedPath?: string;

646 decisionReason?: string;

647 toolUseID: string;

648 agentID?: string;

649 }

650) => Promise<PermissionResult>;

651```

652 

653| Opção | Tipo | Descrição |

654| :--------------- | :------------------------------------------- | :-------------------------------------------------------------------------------------------------------- |

655| `signal` | `AbortSignal` | Sinalizado se a operação deve ser abortada |

656| `suggestions` | [`PermissionUpdate`](#permission-update)`[]` | Atualizações de permissão sugeridas para que o usuário não seja solicitado novamente para esta ferramenta |

657| `blockedPath` | `string` | O caminho do arquivo que acionou a solicitação de permissão, se aplicável |

658| `decisionReason` | `string` | Explica por que esta solicitação de permissão foi acionada |

659| `toolUseID` | `string` | Identificador único para esta chamada de ferramenta específica dentro da mensagem do assistente |

660| `agentID` | `string` | Se executando dentro de um sub-agente, o ID do sub-agente |

661 

662### `PermissionResult`

663 

664Resultado de uma verificação de permissão.

665 

666```typescript theme={null}

667type PermissionResult =

668 | {

669 behavior: "allow";

670 updatedInput?: Record<string, unknown>;

671 updatedPermissions?: PermissionUpdate[];

672 toolUseID?: string;

673 }

674 | {

675 behavior: "deny";

676 message: string;

677 interrupt?: boolean;

678 toolUseID?: string;

679 };

680```

681 

682### `ToolConfig`

683 

684Configuração para comportamento de ferramenta integrada.

685 

686```typescript theme={null}

687type ToolConfig = {

688 askUserQuestion?: {

689 previewFormat?: "markdown" | "html";

690 };

691};

692```

693 

694| Campo | Tipo | Descrição |

695| :------------------------------ | :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

696| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Opta pelo campo `preview` em opções [`AskUserQuestion`](/pt/agent-sdk/user-input#question-format) e define seu formato de conteúdo. Quando não definido, Claude não emite visualizações |

697 

698### `McpServerConfig`

699 

700Configuração para servidores MCP.

701 

702```typescript theme={null}

703type McpServerConfig =

704 | McpStdioServerConfig

705 | McpSSEServerConfig

706 | McpHttpServerConfig

707 | McpSdkServerConfigWithInstance;

708```

709 

710#### `McpStdioServerConfig`

711 

712```typescript theme={null}

713type McpStdioServerConfig = {

714 type?: "stdio";

715 command: string;

716 args?: string[];

717 env?: Record<string, string>;

718};

719```

720 

721#### `McpSSEServerConfig`

722 

723```typescript theme={null}

724type McpSSEServerConfig = {

725 type: "sse";

726 url: string;

727 headers?: Record<string, string>;

728};

729```

730 

731#### `McpHttpServerConfig`

732 

733```typescript theme={null}

734type McpHttpServerConfig = {

735 type: "http";

736 url: string;

737 headers?: Record<string, string>;

738};

739```

740 

741#### `McpSdkServerConfigWithInstance`

742 

743```typescript theme={null}

744type McpSdkServerConfigWithInstance = {

745 type: "sdk";

746 name: string;

747 instance: McpServer;

748};

749```

750 

751#### `McpClaudeAIProxyServerConfig`

752 

753```typescript theme={null}

754type McpClaudeAIProxyServerConfig = {

755 type: "claudeai-proxy";

756 url: string;

757 id: string;

758};

759```

760 

761### `SdkPluginConfig`

762 

763Configuração para carregar plugins no SDK.

764 

765```typescript theme={null}

766type SdkPluginConfig = {

767 type: "local";

768 path: string;

769};

770```

771 

772| Campo | Tipo | Descrição |

773| :----- | :-------- | :--------------------------------------------------------------- |

774| `type` | `'local'` | Deve ser `'local'` (apenas plugins locais atualmente suportados) |

775| `path` | `string` | Caminho absoluto ou relativo para o diretório do plugin |

776 

777**Exemplo:**

778 

779```typescript theme={null}

780plugins: [

781 { type: "local", path: "./my-plugin" },

782 { type: "local", path: "/absolute/path/to/plugin" }

783];

784```

785 

786Para informações completas sobre criação e uso de plugins, veja [Plugins](/pt/agent-sdk/plugins).

787 

788## Tipos de Mensagem

789 

790### `SDKMessage`

791 

792Tipo de união de todas as mensagens possíveis retornadas pela consulta.

793 

794```typescript theme={null}

795type SDKMessage =

796 | SDKAssistantMessage

797 | SDKUserMessage

798 | SDKUserMessageReplay

799 | SDKResultMessage

800 | SDKSystemMessage

801 | SDKPartialAssistantMessage

802 | SDKCompactBoundaryMessage

803 | SDKStatusMessage

804 | SDKLocalCommandOutputMessage

805 | SDKHookStartedMessage

806 | SDKHookProgressMessage

807 | SDKHookResponseMessage

808 | SDKPluginInstallMessage

809 | SDKToolProgressMessage

810 | SDKAuthStatusMessage

811 | SDKTaskNotificationMessage

812 | SDKTaskStartedMessage

813 | SDKTaskProgressMessage

814 | SDKTaskUpdatedMessage

815 | SDKFilesPersistedEvent

816 | SDKToolUseSummaryMessage

817 | SDKRateLimitEvent

818 | SDKPromptSuggestionMessage;

819```

820 

821### `SDKAssistantMessage`

822 

823Mensagem de resposta do assistente.

824 

825```typescript theme={null}

826type SDKAssistantMessage = {

827 type: "assistant";

828 uuid: UUID;

829 session_id: string;

830 message: BetaMessage; // Do SDK Anthropic

831 parent_tool_use_id: string | null;

832 error?: SDKAssistantMessageError;

833};

834```

835 

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

837 

838`SDKAssistantMessageError` é um de: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'billing_error'`, `'rate_limit'`, `'invalid_request'`, `'server_error'`, `'max_output_tokens'`, ou `'unknown'`.

839 

840### `SDKUserMessage`

841 

842Mensagem de entrada do usuário.

843 

844```typescript theme={null}

845type SDKUserMessage = {

846 type: "user";

847 uuid?: UUID;

848 session_id: string;

849 message: MessageParam; // Do SDK Anthropic

850 parent_tool_use_id: string | null;

851 isSynthetic?: boolean;

852 shouldQuery?: boolean;

853 tool_use_result?: unknown;

854 origin?: SDKMessageOrigin;

855};

856```

857 

858Defina `shouldQuery` como `false` para anexar a mensagem à transcrição sem acionar um turno do assistente. A mensagem é mantida e mesclada na próxima mensagem do usuário que aciona um turno. Use isso para injetar contexto, como a saída de um comando que você executou fora de banda, sem gastar uma chamada de modelo nela.

859 

860### `SDKUserMessageReplay`

861 

862Mensagem de usuário repetida com UUID obrigatório.

863 

864```typescript theme={null}

865type SDKUserMessageReplay = {

866 type: "user";

867 uuid: UUID;

868 session_id: string;

869 message: MessageParam;

870 parent_tool_use_id: string | null;

871 isSynthetic?: boolean;

872 tool_use_result?: unknown;

873 origin?: SDKMessageOrigin;

874 isReplay: true;

875};

876```

877 

878### `SDKResultMessage`

879 

880Mensagem de resultado final.

881 

882```typescript theme={null}

883type SDKResultMessage =

884 | {

885 type: "result";

886 subtype: "success";

887 uuid: UUID;

888 session_id: string;

889 duration_ms: number;

890 duration_api_ms: number;

891 is_error: boolean;

892 num_turns: number;

893 result: string;

894 stop_reason: string | null;

895 total_cost_usd: number;

896 usage: NonNullableUsage;

897 modelUsage: { [modelName: string]: ModelUsage };

898 permission_denials: SDKPermissionDenial[];

899 structured_output?: unknown;

900 deferred_tool_use?: { id: string; name: string; input: Record<string, unknown> };

901 origin?: SDKMessageOrigin;

902 }

903 | {

904 type: "result";

905 subtype:

906 | "error_max_turns"

907 | "error_during_execution"

908 | "error_max_budget_usd"

909 | "error_max_structured_output_retries";

910 uuid: UUID;

911 session_id: string;

912 duration_ms: number;

913 duration_api_ms: number;

914 is_error: boolean;

915 num_turns: number;

916 stop_reason: string | null;

917 total_cost_usd: number;

918 usage: NonNullableUsage;

919 modelUsage: { [modelName: string]: ModelUsage };

920 permission_denials: SDKPermissionDenial[];

921 errors: string[];

922 origin?: SDKMessageOrigin;

923 };

924```

925 

926O campo `origin` encaminha a [`SDKMessageOrigin`](#sdkmessageorigin) da mensagem do usuário que acionou este resultado. Quando uma tarefa em segundo plano é concluída e o SDK injeta um turno de acompanhamento sintético, a `SDKResultMessage` resultante carrega `origin: { kind: "task-notification" }`. Verifique este campo para distinguir resultados que respondem ao seu prompt de resultados emitidos para acompanhamentos de tarefas em segundo plano, para que você possa rotear ou suprimir os últimos. O campo está ausente para resultados emitidos antes de qualquer turno do usuário, como erros de inicialização.

927 

928Quando um hook `PreToolUse` retorna `permissionDecision: "defer"`, o resultado tem `stop_reason: "tool_deferred"` e `deferred_tool_use` carrega o `id`, `name` e `input` da ferramenta pendente. Leia este campo para exibir a solicitação em sua própria interface do usuário, depois retome com o mesmo `session_id` para continuar. Consulte [Adiar uma chamada de ferramenta para mais tarde](/pt/hooks#defer-a-tool-call-for-later) para a volta completa.

929 

930### `SDKSystemMessage`

931 

932Mensagem de inicialização do sistema.

933 

934```typescript theme={null}

935type SDKSystemMessage = {

936 type: "system";

937 subtype: "init";

938 uuid: UUID;

939 session_id: string;

940 agents?: string[];

941 apiKeySource: ApiKeySource;

942 betas?: string[];

943 claude_code_version: string;

944 cwd: string;

945 tools: string[];

946 mcp_servers: {

947 name: string;

948 status: string;

949 }[];

950 model: string;

951 permissionMode: PermissionMode;

952 slash_commands: string[];

953 output_style: string;

954 skills: string[];

955 plugins: { name: string; path: string }[];

956};

957```

958 

959### `SDKPartialAssistantMessage`

960 

961Mensagem parcial de transmissão (apenas quando `includePartialMessages` é true).

962 

963```typescript theme={null}

964type SDKPartialAssistantMessage = {

965 type: "stream_event";

966 event: BetaRawMessageStreamEvent; // Do SDK Anthropic

967 parent_tool_use_id: string | null;

968 uuid: UUID;

969 session_id: string;

970};

971```

972 

973### `SDKCompactBoundaryMessage`

974 

975Mensagem indicando um limite de compactação de conversa.

976 

977```typescript theme={null}

978type SDKCompactBoundaryMessage = {

979 type: "system";

980 subtype: "compact_boundary";

981 uuid: UUID;

982 session_id: string;

983 compact_metadata: {

984 trigger: "manual" | "auto";

985 pre_tokens: number;

986 };

987};

988```

989 

990### `SDKPluginInstallMessage`

991 

992Evento de progresso de instalação de plugin. Emitido quando [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/pt/env-vars) está definido, para que sua aplicação Agent SDK possa rastrear a instalação de plugin do marketplace antes do primeiro turno. Os status `started` e `completed` delimitam a instalação geral. Os status `installed` e `failed` relatam marketplaces individuais e incluem `name`.

993 

994```typescript theme={null}

995type SDKPluginInstallMessage = {

996 type: "system";

997 subtype: "plugin_install";

998 status: "started" | "installed" | "failed" | "completed";

999 name?: string;

1000 error?: string;

1001 uuid: UUID;

1002 session_id: string;

1003};

1004```

1005 

1006### `SDKPermissionDenial`

1007 

1008Informações sobre um uso de ferramenta negado.

1009 

1010```typescript theme={null}

1011type SDKPermissionDenial = {

1012 tool_name: string;

1013 tool_use_id: string;

1014 tool_input: Record<string, unknown>;

1015};

1016```

1017 

1018### `SDKMessageOrigin`

1019 

1020Proveniência de uma mensagem com função de usuário. Isso aparece como `origin` em [`SDKUserMessage`](#sdkusermessage) e é encaminhado para a [`SDKResultMessage`](#sdkresultmessage) correspondente para que você possa dizer o que acionou um determinado turno.

1021 

1022```typescript theme={null}

1023type SDKMessageOrigin =

1024 | { kind: "human" }

1025 | { kind: "channel"; server: string }

1026 | { kind: "peer"; from: string; name?: string }

1027 | { kind: "task-notification" }

1028 | { kind: "coordinator" };

1029```

1030 

1031| `kind` | Significado |

1032| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |

1033| `human` | Entrada direta do usuário final. Em mensagens de usuário, uma `origin` ausente também significa entrada humana. |

1034| `channel` | Mensagem chegando em um [canal](/pt/channels). `server` é o nome do servidor MCP de origem. |

1035| `peer` | Mensagem de outra sessão de agente via `SendMessage`. `from` é o endereço do remetente; `name` é o nome de exibição do remetente quando disponível. |

1036| `task-notification` | Turno sintético injetado após a conclusão de uma tarefa em segundo plano. Consulte [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). |

1037| `coordinator` | Mensagem de um coordenador de equipe em uma [equipe de agente](/pt/agent-teams). |

1038 

1039## Tipos de Hook

1040 

1041Para um guia abrangente sobre o uso de hooks com exemplos e padrões comuns, veja o [guia de Hooks](/pt/agent-sdk/hooks).

1042 

1043### `HookEvent`

1044 

1045Eventos de hook disponíveis.

1046 

1047```typescript theme={null}

1048type HookEvent =

1049 | "PreToolUse"

1050 | "PostToolUse"

1051 | "PostToolUseFailure"

1052 | "PostToolBatch"

1053 | "Notification"

1054 | "UserPromptSubmit"

1055 | "SessionStart"

1056 | "SessionEnd"

1057 | "Stop"

1058 | "SubagentStart"

1059 | "SubagentStop"

1060 | "PreCompact"

1061 | "PermissionRequest"

1062 | "Setup"

1063 | "TeammateIdle"

1064 | "TaskCompleted"

1065 | "ConfigChange"

1066 | "WorktreeCreate"

1067 | "WorktreeRemove";

1068```

1069 

1070### `HookCallback`

1071 

1072Tipo de função de callback de hook.

1073 

1074```typescript theme={null}

1075type HookCallback = (

1076 input: HookInput, // União de todos os tipos de entrada de hook

1077 toolUseID: string | undefined,

1078 options: { signal: AbortSignal }

1079) => Promise<HookJSONOutput>;

1080```

1081 

1082### `HookCallbackMatcher`

1083 

1084Configuração de hook com matcher opcional.

1085 

1086```typescript theme={null}

1087interface HookCallbackMatcher {

1088 matcher?: string;

1089 hooks: HookCallback[];

1090 timeout?: number; // Timeout em segundos para todos os hooks neste matcher

1091}

1092```

1093 

1094### `HookInput`

1095 

1096Tipo de união de todos os tipos de entrada de hook.

1097 

1098```typescript theme={null}

1099type HookInput =

1100 | PreToolUseHookInput

1101 | PostToolUseHookInput

1102 | PostToolUseFailureHookInput

1103 | PostToolBatchHookInput

1104 | NotificationHookInput

1105 | UserPromptSubmitHookInput

1106 | SessionStartHookInput

1107 | SessionEndHookInput

1108 | StopHookInput

1109 | SubagentStartHookInput

1110 | SubagentStopHookInput

1111 | PreCompactHookInput

1112 | PermissionRequestHookInput

1113 | SetupHookInput

1114 | TeammateIdleHookInput

1115 | TaskCompletedHookInput

1116 | ConfigChangeHookInput

1117 | WorktreeCreateHookInput

1118 | WorktreeRemoveHookInput;

1119```

1120 

1121### `BaseHookInput`

1122 

1123Interface base que todos os tipos de entrada de hook estendem.

1124 

1125```typescript theme={null}

1126type BaseHookInput = {

1127 session_id: string;

1128 transcript_path: string;

1129 cwd: string;

1130 permission_mode?: string;

1131 agent_id?: string;

1132 agent_type?: string;

1133};

1134```

1135 

1136#### `PreToolUseHookInput`

1137 

1138```typescript theme={null}

1139type PreToolUseHookInput = BaseHookInput & {

1140 hook_event_name: "PreToolUse";

1141 tool_name: string;

1142 tool_input: unknown;

1143 tool_use_id: string;

1144};

1145```

1146 

1147#### `PostToolUseHookInput`

1148 

1149```typescript theme={null}

1150type PostToolUseHookInput = BaseHookInput & {

1151 hook_event_name: "PostToolUse";

1152 tool_name: string;

1153 tool_input: unknown;

1154 tool_response: unknown;

1155 tool_use_id: string;

1156 duration_ms?: number;

1157};

1158```

1159 

1160#### `PostToolUseFailureHookInput`

1161 

1162```typescript theme={null}

1163type PostToolUseFailureHookInput = BaseHookInput & {

1164 hook_event_name: "PostToolUseFailure";

1165 tool_name: string;

1166 tool_input: unknown;

1167 tool_use_id: string;

1168 error: string;

1169 is_interrupt?: boolean;

1170 duration_ms?: number;

1171};

1172```

1173 

1174#### `PostToolBatchHookInput`

1175 

1176Dispara uma vez após cada chamada de ferramenta em um lote ter sido resolvida, antes da próxima solicitação do modelo. `tool_response` carrega o conteúdo serializado de `tool_result` que o modelo vê; a forma difere do objeto estruturado `Output` de `PostToolUseHookInput`.

1177 

1178```typescript theme={null}

1179type PostToolBatchHookInput = BaseHookInput & {

1180 hook_event_name: "PostToolBatch";

1181 tool_calls: PostToolBatchToolCall[];

1182};

1183 

1184type PostToolBatchToolCall = {

1185 tool_name: string;

1186 tool_input: unknown;

1187 tool_use_id: string;

1188 tool_response?: unknown;

1189};

1190```

1191 

1192#### `NotificationHookInput`

1193 

1194```typescript theme={null}

1195type NotificationHookInput = BaseHookInput & {

1196 hook_event_name: "Notification";

1197 message: string;

1198 title?: string;

1199 notification_type: string;

1200};

1201```

1202 

1203#### `UserPromptSubmitHookInput`

1204 

1205```typescript theme={null}

1206type UserPromptSubmitHookInput = BaseHookInput & {

1207 hook_event_name: "UserPromptSubmit";

1208 prompt: string;

1209};

1210```

1211 

1212#### `SessionStartHookInput`

1213 

1214```typescript theme={null}

1215type SessionStartHookInput = BaseHookInput & {

1216 hook_event_name: "SessionStart";

1217 source: "startup" | "resume" | "clear" | "compact";

1218 agent_type?: string;

1219 model?: string;

1220};

1221```

1222 

1223#### `SessionEndHookInput`

1224 

1225```typescript theme={null}

1226type SessionEndHookInput = BaseHookInput & {

1227 hook_event_name: "SessionEnd";

1228 reason: ExitReason; // String do array EXIT_REASONS

1229};

1230```

1231 

1232#### `StopHookInput`

1233 

1234```typescript theme={null}

1235type StopHookInput = BaseHookInput & {

1236 hook_event_name: "Stop";

1237 stop_hook_active: boolean;

1238 last_assistant_message?: string;

1239};

1240```

1241 

1242#### `SubagentStartHookInput`

1243 

1244```typescript theme={null}

1245type SubagentStartHookInput = BaseHookInput & {

1246 hook_event_name: "SubagentStart";

1247 agent_id: string;

1248 agent_type: string;

1249};

1250```

1251 

1252#### `SubagentStopHookInput`

1253 

1254```typescript theme={null}

1255type SubagentStopHookInput = BaseHookInput & {

1256 hook_event_name: "SubagentStop";

1257 stop_hook_active: boolean;

1258 agent_id: string;

1259 agent_transcript_path: string;

1260 agent_type: string;

1261 last_assistant_message?: string;

1262};

1263```

1264 

1265#### `PreCompactHookInput`

1266 

1267```typescript theme={null}

1268type PreCompactHookInput = BaseHookInput & {

1269 hook_event_name: "PreCompact";

1270 trigger: "manual" | "auto";

1271 custom_instructions: string | null;

1272};

1273```

1274 

1275#### `PermissionRequestHookInput`

1276 

1277```typescript theme={null}

1278type PermissionRequestHookInput = BaseHookInput & {

1279 hook_event_name: "PermissionRequest";

1280 tool_name: string;

1281 tool_input: unknown;

1282 permission_suggestions?: PermissionUpdate[];

1283};

1284```

1285 

1286#### `SetupHookInput`

1287 

1288```typescript theme={null}

1289type SetupHookInput = BaseHookInput & {

1290 hook_event_name: "Setup";

1291 trigger: "init" | "maintenance";

1292};

1293```

1294 

1295#### `TeammateIdleHookInput`

1296 

1297```typescript theme={null}

1298type TeammateIdleHookInput = BaseHookInput & {

1299 hook_event_name: "TeammateIdle";

1300 teammate_name: string;

1301 team_name: string;

1302};

1303```

1304 

1305#### `TaskCompletedHookInput`

1306 

1307```typescript theme={null}

1308type TaskCompletedHookInput = BaseHookInput & {

1309 hook_event_name: "TaskCompleted";

1310 task_id: string;

1311 task_subject: string;

1312 task_description?: string;

1313 teammate_name?: string;

1314 team_name?: string;

1315};

1316```

1317 

1318#### `ConfigChangeHookInput`

1319 

1320```typescript theme={null}

1321type ConfigChangeHookInput = BaseHookInput & {

1322 hook_event_name: "ConfigChange";

1323 source:

1324 | "user_settings"

1325 | "project_settings"

1326 | "local_settings"

1327 | "policy_settings"

1328 | "skills";

1329 file_path?: string;

1330};

1331```

1332 

1333#### `WorktreeCreateHookInput`

1334 

1335```typescript theme={null}

1336type WorktreeCreateHookInput = BaseHookInput & {

1337 hook_event_name: "WorktreeCreate";

1338 name: string;

1339};

1340```

1341 

1342#### `WorktreeRemoveHookInput`

1343 

1344```typescript theme={null}

1345type WorktreeRemoveHookInput = BaseHookInput & {

1346 hook_event_name: "WorktreeRemove";

1347 worktree_path: string;

1348};

1349```

1350 

1351### `HookJSONOutput`

1352 

1353Valor de retorno de hook.

1354 

1355```typescript theme={null}

1356type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

1357```

1358 

1359#### `AsyncHookJSONOutput`

1360 

1361```typescript theme={null}

1362type AsyncHookJSONOutput = {

1363 async: true;

1364 asyncTimeout?: number;

1365};

1366```

1367 

1368#### `SyncHookJSONOutput`

1369 

1370```typescript theme={null}

1371type SyncHookJSONOutput = {

1372 continue?: boolean;

1373 suppressOutput?: boolean;

1374 stopReason?: string;

1375 decision?: "approve" | "block";

1376 systemMessage?: string;

1377 reason?: string;

1378 hookSpecificOutput?:

1379 | {

1380 hookEventName: "PreToolUse";

1381 permissionDecision?: "allow" | "deny" | "ask" | "defer";

1382 permissionDecisionReason?: string;

1383 updatedInput?: Record<string, unknown>;

1384 additionalContext?: string;

1385 }

1386 | {

1387 hookEventName: "UserPromptSubmit";

1388 additionalContext?: string;

1389 }

1390 | {

1391 hookEventName: "SessionStart";

1392 additionalContext?: string;

1393 }

1394 | {

1395 hookEventName: "Setup";

1396 additionalContext?: string;

1397 }

1398 | {

1399 hookEventName: "SubagentStart";

1400 additionalContext?: string;

1401 }

1402 | {

1403 hookEventName: "PostToolUse";

1404 additionalContext?: string;

1405 updatedToolOutput?: unknown;

1406 /** @deprecated Use `updatedToolOutput`, which works for all tools. */

1407 updatedMCPToolOutput?: unknown;

1408 }

1409 | {

1410 hookEventName: "PostToolUseFailure";

1411 additionalContext?: string;

1412 }

1413 | {

1414 hookEventName: "PostToolBatch";

1415 additionalContext?: string;

1416 }

1417 | {

1418 hookEventName: "Notification";

1419 additionalContext?: string;

1420 }

1421 | {

1422 hookEventName: "PermissionRequest";

1423 decision:

1424 | {

1425 behavior: "allow";

1426 updatedInput?: Record<string, unknown>;

1427 updatedPermissions?: PermissionUpdate[];

1428 }

1429 | {

1430 behavior: "deny";

1431 message?: string;

1432 interrupt?: boolean;

1433 };

1434 };

1435};

1436```

1437 

1438## Tipos de Entrada de Ferramenta

1439 

1440Documentação de esquemas de entrada para todas as ferramentas integradas do Claude Code. Esses tipos são exportados de `@anthropic-ai/claude-agent-sdk` e podem ser usados para interações de ferramenta type-safe.

1441 

1442### `ToolInputSchemas`

1443 

1444União de todos os tipos de entrada de ferramenta, exportada de `@anthropic-ai/claude-agent-sdk`.

1445 

1446```typescript theme={null}

1447type ToolInputSchemas =

1448 | AgentInput

1449 | AskUserQuestionInput

1450 | BashInput

1451 | TaskOutputInput

1452 | EnterWorktreeInput

1453 | ExitPlanModeInput

1454 | FileEditInput

1455 | FileReadInput

1456 | FileWriteInput

1457 | GlobInput

1458 | GrepInput

1459 | ListMcpResourcesInput

1460 | McpInput

1461 | MonitorInput

1462 | NotebookEditInput

1463 | ReadMcpResourceInput

1464 | SubscribeMcpResourceInput

1465 | SubscribePollingInput

1466 | TaskStopInput

1467 | TodoWriteInput

1468 | UnsubscribeMcpResourceInput

1469 | UnsubscribePollingInput

1470 | WebFetchInput

1471 | WebSearchInput;

1472```

1473 

1474### Agent

1475 

1476**Nome da ferramenta:** `Agent` (anteriormente `Task`, que ainda é aceito como alias)

1477 

1478```typescript theme={null}

1479type AgentInput = {

1480 description: string;

1481 prompt: string;

1482 subagent_type: string;

1483 model?: "sonnet" | "opus" | "haiku";

1484 resume?: string;

1485 run_in_background?: boolean;

1486 max_turns?: number;

1487 name?: string;

1488 team_name?: string;

1489 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";

1490 isolation?: "worktree";

1491};

1492```

1493 

1494Lança um novo agente para lidar com tarefas complexas e multi-etapas autonomamente.

1495 

1496### AskUserQuestion

1497 

1498**Nome da ferramenta:** `AskUserQuestion`

1499 

1500```typescript theme={null}

1501type AskUserQuestionInput = {

1502 questions: Array<{

1503 question: string;

1504 header: string;

1505 options: Array<{ label: string; description: string; preview?: string }>;

1506 multiSelect: boolean;

1507 }>;

1508};

1509```

1510 

1511Faz perguntas de esclarecimento ao usuário durante a execução. Veja [Lidar com aprovações e entrada do usuário](/pt/agent-sdk/user-input#handle-clarifying-questions) para detalhes de uso.

1512 

1513### Bash

1514 

1515**Nome da ferramenta:** `Bash`

1516 

1517```typescript theme={null}

1518type BashInput = {

1519 command: string;

1520 timeout?: number;

1521 description?: string;

1522 run_in_background?: boolean;

1523 dangerouslyDisableSandbox?: boolean;

1524};

1525```

1526 

1527Executa comandos bash em uma sessão de shell persistente com timeout opcional e execução em background.

1528 

1529### Monitor

1530 

1531**Nome da ferramenta:** `Monitor`

1532 

1533```typescript theme={null}

1534type MonitorInput = {

1535 command: string;

1536 description: string;

1537 timeout_ms?: number;

1538 persistent?: boolean;

1539};

1540```

1541 

1542Executa um script de background e entrega cada linha stdout para Claude como um evento para que possa reagir sem polling. Defina `persistent: true` para watches de comprimento de sessão, como tails de log. Monitor segue as mesmas regras de permissão que Bash. Veja a [referência da ferramenta Monitor](/pt/tools-reference#monitor-tool) para comportamento e disponibilidade de provedor.

1543 

1544### TaskOutput

1545 

1546**Nome da ferramenta:** `TaskOutput`

1547 

1548```typescript theme={null}

1549type TaskOutputInput = {

1550 task_id: string;

1551 block: boolean;

1552 timeout: number;

1553};

1554```

1555 

1556Recupera saída de uma tarefa de background em execução ou concluída.

1557 

1558### Edit

1559 

1560**Nome da ferramenta:** `Edit`

1561 

1562```typescript theme={null}

1563type FileEditInput = {

1564 file_path: string;

1565 old_string: string;

1566 new_string: string;

1567 replace_all?: boolean;

1568};

1569```

1570 

1571Realiza substituições exatas de string em arquivos.

1572 

1573### Read

1574 

1575**Nome da ferramenta:** `Read`

1576 

1577```typescript theme={null}

1578type FileReadInput = {

1579 file_path: string;

1580 offset?: number;

1581 limit?: number;

1582 pages?: string;

1583};

1584```

1585 

1586Lê arquivos do sistema de arquivos local, incluindo texto, imagens, PDFs e notebooks Jupyter. Use `pages` para intervalos de página PDF (por exemplo, `"1-5"`).

1587 

1588### Write

1589 

1590**Nome da ferramenta:** `Write`

1591 

1592```typescript theme={null}

1593type FileWriteInput = {

1594 file_path: string;

1595 content: string;

1596};

1597```

1598 

1599Escreve um arquivo no sistema de arquivos local, sobrescrevendo se existir.

1600 

1601### Glob

1602 

1603**Nome da ferramenta:** `Glob`

1604 

1605```typescript theme={null}

1606type GlobInput = {

1607 pattern: string;

1608 path?: string;

1609};

1610```

1611 

1612Correspondência rápida de padrão de arquivo que funciona com qualquer tamanho de codebase.

1613 

1614### Grep

1615 

1616**Nome da ferramenta:** `Grep`

1617 

1618```typescript theme={null}

1619type GrepInput = {

1620 pattern: string;

1621 path?: string;

1622 glob?: string;

1623 type?: string;

1624 output_mode?: "content" | "files_with_matches" | "count";

1625 "-i"?: boolean;

1626 "-n"?: boolean;

1627 "-B"?: number;

1628 "-A"?: number;

1629 "-C"?: number;

1630 context?: number;

1631 head_limit?: number;

1632 offset?: number;

1633 multiline?: boolean;

1634};

1635```

1636 

1637Ferramenta de busca poderosa construída em ripgrep com suporte a regex.

1638 

1639### TaskStop

1640 

1641**Nome da ferramenta:** `TaskStop`

1642 

1643```typescript theme={null}

1644type TaskStopInput = {

1645 task_id?: string;

1646 shell_id?: string; // Descontinuado: use task_id

1647};

1648```

1649 

1650Para uma tarefa de background em execução ou shell por ID.

1651 

1652### NotebookEdit

1653 

1654**Nome da ferramenta:** `NotebookEdit`

1655 

1656```typescript theme={null}

1657type NotebookEditInput = {

1658 notebook_path: string;

1659 cell_id?: string;

1660 new_source: string;

1661 cell_type?: "code" | "markdown";

1662 edit_mode?: "replace" | "insert" | "delete";

1663};

1664```

1665 

1666Edita células em arquivos de notebook Jupyter.

1667 

1668### WebFetch

1669 

1670**Nome da ferramenta:** `WebFetch`

1671 

1672```typescript theme={null}

1673type WebFetchInput = {

1674 url: string;

1675 prompt: string;

1676};

1677```

1678 

1679Busca conteúdo de uma URL e o processa com um modelo de IA.

1680 

1681### WebSearch

1682 

1683**Nome da ferramenta:** `WebSearch`

1684 

1685```typescript theme={null}

1686type WebSearchInput = {

1687 query: string;

1688 allowed_domains?: string[];

1689 blocked_domains?: string[];

1690};

1691```

1692 

1693Pesquisa a web e retorna resultados formatados.

1694 

1695### TodoWrite

1696 

1697**Nome da ferramenta:** `TodoWrite`

1698 

1699```typescript theme={null}

1700type TodoWriteInput = {

1701 todos: Array<{

1702 content: string;

1703 status: "pending" | "in_progress" | "completed";

1704 activeForm: string;

1705 }>;

1706};

1707```

1708 

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

1710 

1711### ExitPlanMode

1712 

1713**Nome da ferramenta:** `ExitPlanMode`

1714 

1715```typescript theme={null}

1716type ExitPlanModeInput = {

1717 allowedPrompts?: Array<{

1718 tool: "Bash";

1719 prompt: string;

1720 }>;

1721};

1722```

1723 

1724Sai do modo de planejamento. Opcionalmente especifica permissões baseadas em prompt necessárias para implementar o plano.

1725 

1726### ListMcpResources

1727 

1728**Nome da ferramenta:** `ListMcpResources`

1729 

1730```typescript theme={null}

1731type ListMcpResourcesInput = {

1732 server?: string;

1733};

1734```

1735 

1736Lista recursos MCP disponíveis de servidores conectados.

1737 

1738### ReadMcpResource

1739 

1740**Nome da ferramenta:** `ReadMcpResource`

1741 

1742```typescript theme={null}

1743type ReadMcpResourceInput = {

1744 server: string;

1745 uri: string;

1746};

1747```

1748 

1749Lê um recurso MCP específico de um servidor.

1750 

1751### EnterWorktree

1752 

1753**Nome da ferramenta:** `EnterWorktree`

1754 

1755```typescript theme={null}

1756type EnterWorktreeInput = {

1757 name?: string;

1758 path?: string;

1759};

1760```

1761 

1762Cria e entra em um worktree git temporário para trabalho isolado. Passe `path` para mudar para um worktree existente do repositório atual em vez de criar um novo. `name` e `path` são mutuamente exclusivos.

1763 

1764## Tipos de Saída de Ferramenta

1765 

1766Documentação de esquemas de saída para todas as ferramentas integradas do Claude Code. Esses tipos são exportados de `@anthropic-ai/claude-agent-sdk` e representam os dados de resposta reais retornados por cada ferramenta.

1767 

1768### `ToolOutputSchemas`

1769 

1770União de todos os tipos de saída de ferramenta.

1771 

1772```typescript theme={null}

1773type ToolOutputSchemas =

1774 | AgentOutput

1775 | AskUserQuestionOutput

1776 | BashOutput

1777 | EnterWorktreeOutput

1778 | ExitPlanModeOutput

1779 | FileEditOutput

1780 | FileReadOutput

1781 | FileWriteOutput

1782 | GlobOutput

1783 | GrepOutput

1784 | ListMcpResourcesOutput

1785 | MonitorOutput

1786 | NotebookEditOutput

1787 | ReadMcpResourceOutput

1788 | TaskStopOutput

1789 | TodoWriteOutput

1790 | WebFetchOutput

1791 | WebSearchOutput;

1792```

1793 

1794### Agent

1795 

1796**Nome da ferramenta:** `Agent` (anteriormente `Task`, que ainda é aceito como alias)

1797 

1798```typescript theme={null}

1799type AgentOutput =

1800 | {

1801 status: "completed";

1802 agentId: string;

1803 content: Array<{ type: "text"; text: string }>;

1804 totalToolUseCount: number;

1805 totalDurationMs: number;

1806 totalTokens: number;

1807 usage: {

1808 input_tokens: number;

1809 output_tokens: number;

1810 cache_creation_input_tokens: number | null;

1811 cache_read_input_tokens: number | null;

1812 server_tool_use: {

1813 web_search_requests: number;

1814 web_fetch_requests: number;

1815 } | null;

1816 service_tier: ("standard" | "priority" | "batch") | null;

1817 cache_creation: {

1818 ephemeral_1h_input_tokens: number;

1819 ephemeral_5m_input_tokens: number;

1820 } | null;

1821 };

1822 prompt: string;

1823 }

1824 | {

1825 status: "async_launched";

1826 agentId: string;

1827 description: string;

1828 prompt: string;

1829 outputFile: string;

1830 canReadOutputFile?: boolean;

1831 }

1832 | {

1833 status: "sub_agent_entered";

1834 description: string;

1835 message: string;

1836 };

1837```

1838 

1839Retorna o resultado do subagente. Discriminado no campo `status`: `"completed"` para tarefas concluídas, `"async_launched"` para tarefas de background e `"sub_agent_entered"` para subagentes interativos.

1840 

1841### AskUserQuestion

1842 

1843**Nome da ferramenta:** `AskUserQuestion`

1844 

1845```typescript theme={null}

1846type AskUserQuestionOutput = {

1847 questions: Array<{

1848 question: string;

1849 header: string;

1850 options: Array<{ label: string; description: string; preview?: string }>;

1851 multiSelect: boolean;

1852 }>;

1853 answers: Record<string, string>;

1854};

1855```

1856 

1857Retorna as perguntas feitas e as respostas do usuário.

1858 

1859### Bash

1860 

1861**Nome da ferramenta:** `Bash`

1862 

1863```typescript theme={null}

1864type BashOutput = {

1865 stdout: string;

1866 stderr: string;

1867 rawOutputPath?: string;

1868 interrupted: boolean;

1869 isImage?: boolean;

1870 backgroundTaskId?: string;

1871 backgroundedByUser?: boolean;

1872 dangerouslyDisableSandbox?: boolean;

1873 returnCodeInterpretation?: string;

1874 structuredContent?: unknown[];

1875 persistedOutputPath?: string;

1876 persistedOutputSize?: number;

1877};

1878```

1879 

1880Retorna saída de comando com stdout/stderr divididos. Comandos de background incluem um `backgroundTaskId`.

1881 

1882### Monitor

1883 

1884**Nome da ferramenta:** `Monitor`

1885 

1886```typescript theme={null}

1887type MonitorOutput = {

1888 taskId: string;

1889 timeoutMs: number;

1890 persistent?: boolean;

1891};

1892```

1893 

1894Retorna o ID da tarefa de background para o monitor em execução. Use este ID com `TaskStop` para cancelar a watch antecipadamente.

1895 

1896### Edit

1897 

1898**Nome da ferramenta:** `Edit`

1899 

1900```typescript theme={null}

1901type FileEditOutput = {

1902 filePath: string;

1903 oldString: string;

1904 newString: string;

1905 originalFile: string;

1906 structuredPatch: Array<{

1907 oldStart: number;

1908 oldLines: number;

1909 newStart: number;

1910 newLines: number;

1911 lines: string[];

1912 }>;

1913 userModified: boolean;

1914 replaceAll: boolean;

1915 gitDiff?: {

1916 filename: string;

1917 status: "modified" | "added";

1918 additions: number;

1919 deletions: number;

1920 changes: number;

1921 patch: string;

1922 };

1923};

1924```

1925 

1926Retorna o diff estruturado da operação de edição.

1927 

1928### Read

1929 

1930**Nome da ferramenta:** `Read`

1931 

1932```typescript theme={null}

1933type FileReadOutput =

1934 | {

1935 type: "text";

1936 file: {

1937 filePath: string;

1938 content: string;

1939 numLines: number;

1940 startLine: number;

1941 totalLines: number;

1942 };

1943 }

1944 | {

1945 type: "image";

1946 file: {

1947 base64: string;

1948 type: "image/jpeg" | "image/png" | "image/gif" | "image/webp";

1949 originalSize: number;

1950 dimensions?: {

1951 originalWidth?: number;

1952 originalHeight?: number;

1953 displayWidth?: number;

1954 displayHeight?: number;

1955 };

1956 };

1957 }

1958 | {

1959 type: "notebook";

1960 file: {

1961 filePath: string;

1962 cells: unknown[];

1963 };

1964 }

1965 | {

1966 type: "pdf";

1967 file: {

1968 filePath: string;

1969 base64: string;

1970 originalSize: number;

1971 };

1972 }

1973 | {

1974 type: "parts";

1975 file: {

1976 filePath: string;

1977 originalSize: number;

1978 count: number;

1979 outputDir: string;

1980 };

1981 };

1982```

1983 

1984Retorna conteúdo do arquivo em um formato apropriado ao tipo de arquivo. Discriminado no campo `type`.

1985 

1986### Write

1987 

1988**Nome da ferramenta:** `Write`

1989 

1990```typescript theme={null}

1991type FileWriteOutput = {

1992 type: "create" | "update";

1993 filePath: string;

1994 content: string;

1995 structuredPatch: Array<{

1996 oldStart: number;

1997 oldLines: number;

1998 newStart: number;

1999 newLines: number;

2000 lines: string[];

2001 }>;

2002 originalFile: string | null;

2003 gitDiff?: {

2004 filename: string;

2005 status: "modified" | "added";

2006 additions: number;

2007 deletions: number;

2008 changes: number;

2009 patch: string;

2010 };

2011};

2012```

2013 

2014Retorna o resultado da escrita com informações de diff estruturado.

2015 

2016### Glob

2017 

2018**Nome da ferramenta:** `Glob`

2019 

2020```typescript theme={null}

2021type GlobOutput = {

2022 durationMs: number;

2023 numFiles: number;

2024 filenames: string[];

2025 truncated: boolean;

2026};

2027```

2028 

2029Retorna caminhos de arquivo correspondentes ao padrão glob, classificados por tempo de modificação.

2030 

2031### Grep

2032 

2033**Nome da ferramenta:** `Grep`

2034 

2035```typescript theme={null}

2036type GrepOutput = {

2037 mode?: "content" | "files_with_matches" | "count";

2038 numFiles: number;

2039 filenames: string[];

2040 content?: string;

2041 numLines?: number;

2042 numMatches?: number;

2043 appliedLimit?: number;

2044 appliedOffset?: number;

2045};

2046```

2047 

2048Retorna resultados de busca. A forma varia por `mode`: lista de arquivo, conteúdo com correspondências ou contagens de correspondência.

2049 

2050### TaskStop

2051 

2052**Nome da ferramenta:** `TaskStop`

2053 

2054```typescript theme={null}

2055type TaskStopOutput = {

2056 message: string;

2057 task_id: string;

2058 task_type: string;

2059 command?: string;

2060};

2061```

2062 

2063Retorna confirmação após parar a tarefa de background.

2064 

2065### NotebookEdit

2066 

2067**Nome da ferramenta:** `NotebookEdit`

2068 

2069```typescript theme={null}

2070type NotebookEditOutput = {

2071 new_source: string;

2072 cell_id?: string;

2073 cell_type: "code" | "markdown";

2074 language: string;

2075 edit_mode: string;

2076 error?: string;

2077 notebook_path: string;

2078 original_file: string;

2079 updated_file: string;

2080};

2081```

2082 

2083Retorna o resultado da edição do notebook com conteúdo de arquivo original e atualizado.

2084 

2085### WebFetch

2086 

2087**Nome da ferramenta:** `WebFetch`

2088 

2089```typescript theme={null}

2090type WebFetchOutput = {

2091 bytes: number;

2092 code: number;

2093 codeText: string;

2094 result: string;

2095 durationMs: number;

2096 url: string;

2097};

2098```

2099 

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

2101 

2102### WebSearch

2103 

2104**Nome da ferramenta:** `WebSearch`

2105 

2106```typescript theme={null}

2107type WebSearchOutput = {

2108 query: string;

2109 results: Array<

2110 | {

2111 tool_use_id: string;

2112 content: Array<{ title: string; url: string }>;

2113 }

2114 | string

2115 >;

2116 durationSeconds: number;

2117};

2118```

2119 

2120Retorna resultados de busca da web.

2121 

2122### TodoWrite

2123 

2124**Nome da ferramenta:** `TodoWrite`

2125 

2126```typescript theme={null}

2127type TodoWriteOutput = {

2128 oldTodos: Array<{

2129 content: string;

2130 status: "pending" | "in_progress" | "completed";

2131 activeForm: string;

2132 }>;

2133 newTodos: Array<{

2134 content: string;

2135 status: "pending" | "in_progress" | "completed";

2136 activeForm: string;

2137 }>;

2138};

2139```

2140 

2141Retorna as listas de tarefas anteriores e atualizadas.

2142 

2143### ExitPlanMode

2144 

2145**Nome da ferramenta:** `ExitPlanMode`

2146 

2147```typescript theme={null}

2148type ExitPlanModeOutput = {

2149 plan: string | null;

2150 isAgent: boolean;

2151 filePath?: string;

2152 hasTaskTool?: boolean;

2153 awaitingLeaderApproval?: boolean;

2154 requestId?: string;

2155};

2156```

2157 

2158Retorna o estado do plano após sair do modo de planejamento.

2159 

2160### ListMcpResources

2161 

2162**Nome da ferramenta:** `ListMcpResources`

2163 

2164```typescript theme={null}

2165type ListMcpResourcesOutput = Array<{

2166 uri: string;

2167 name: string;

2168 mimeType?: string;

2169 description?: string;

2170 server: string;

2171}>;

2172```

2173 

2174Retorna um array de recursos MCP disponíveis.

2175 

2176### ReadMcpResource

2177 

2178**Nome da ferramenta:** `ReadMcpResource`

2179 

2180```typescript theme={null}

2181type ReadMcpResourceOutput = {

2182 contents: Array<{

2183 uri: string;

2184 mimeType?: string;

2185 text?: string;

2186 }>;

2187};

2188```

2189 

2190Retorna o conteúdo do recurso MCP solicitado.

2191 

2192### EnterWorktree

2193 

2194**Nome da ferramenta:** `EnterWorktree`

2195 

2196```typescript theme={null}

2197type EnterWorktreeOutput = {

2198 worktreePath: string;

2199 worktreeBranch?: string;

2200 message: string;

2201};

2202```

2203 

2204Retorna informações sobre o worktree git.

2205 

2206## Tipos de Permissão

2207 

2208### `PermissionUpdate`

2209 

2210Operações para atualizar permissões.

2211 

2212```typescript theme={null}

2213type PermissionUpdate =

2214 | {

2215 type: "addRules";

2216 rules: PermissionRuleValue[];

2217 behavior: PermissionBehavior;

2218 destination: PermissionUpdateDestination;

2219 }

2220 | {

2221 type: "replaceRules";

2222 rules: PermissionRuleValue[];

2223 behavior: PermissionBehavior;

2224 destination: PermissionUpdateDestination;

2225 }

2226 | {

2227 type: "removeRules";

2228 rules: PermissionRuleValue[];

2229 behavior: PermissionBehavior;

2230 destination: PermissionUpdateDestination;

2231 }

2232 | {

2233 type: "setMode";

2234 mode: PermissionMode;

2235 destination: PermissionUpdateDestination;

2236 }

2237 | {

2238 type: "addDirectories";

2239 directories: string[];

2240 destination: PermissionUpdateDestination;

2241 }

2242 | {

2243 type: "removeDirectories";

2244 directories: string[];

2245 destination: PermissionUpdateDestination;

2246 };

2247```

2248 

2249### `PermissionBehavior`

2250 

2251```typescript theme={null}

2252type PermissionBehavior = "allow" | "deny" | "ask";

2253```

2254 

2255### `PermissionUpdateDestination`

2256 

2257```typescript theme={null}

2258type PermissionUpdateDestination =

2259 | "userSettings" // Configurações globais do usuário

2260 | "projectSettings" // Configurações de projeto por diretório

2261 | "localSettings" // Configurações locais gitignored

2262 | "session" // Apenas sessão atual

2263 | "cliArg"; // Argumento CLI

2264```

2265 

2266### `PermissionRuleValue`

2267 

2268```typescript theme={null}

2269type PermissionRuleValue = {

2270 toolName: string;

2271 ruleContent?: string;

2272};

2273```

2274 

2275## Outros Tipos

2276 

2277### `ApiKeySource`

2278 

2279```typescript theme={null}

2280type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth";

2281```

2282 

2283### `SdkBeta`

2284 

2285Recursos beta disponíveis que podem ser ativados via opção `betas`. Veja [Beta headers](https://platform.claude.com/docs/pt/api/beta-headers) para mais informações.

2286 

2287```typescript theme={null}

2288type SdkBeta = "context-1m-2025-08-07";

2289```

2290 

2291<Warning>

2292 O beta `context-1m-2025-08-07` foi descontinuado a partir de 30 de abril de 2026. Passar este valor com Claude Sonnet 4.5 ou Sonnet 4 não tem efeito, e requisições que excedem a janela de contexto padrão de 200k-token retornam um erro. Para usar uma janela de contexto de 1M-token, migre para [Claude Sonnet 4.6, Claude Opus 4.6, ou Claude Opus 4.7](https://platform.claude.com/docs/pt/about-claude/models/overview), que incluem contexto de 1M a preço padrão sem header beta necessário.

2293</Warning>

2294 

2295### `SlashCommand`

2296 

2297Informações sobre um comando slash disponível.

2298 

2299```typescript theme={null}

2300type SlashCommand = {

2301 name: string;

2302 description: string;

2303 argumentHint: string;

2304 aliases?: string[];

2305};

2306```

2307 

2308### `ModelInfo`

2309 

2310Informações sobre um modelo disponível.

2311 

2312```typescript theme={null}

2313type ModelInfo = {

2314 value: string;

2315 displayName: string;

2316 description: string;

2317 supportsEffort?: boolean;

2318 supportedEffortLevels?: ("low" | "medium" | "high" | "xhigh" | "max")[];

2319 supportsAdaptiveThinking?: boolean;

2320 supportsFastMode?: boolean;

2321};

2322```

2323 

2324### `AgentInfo`

2325 

2326Informações sobre um subagente disponível que pode ser invocado via ferramenta Agent.

2327 

2328```typescript theme={null}

2329type AgentInfo = {

2330 name: string;

2331 description: string;

2332 model?: string;

2333};

2334```

2335 

2336| Campo | Tipo | Descrição |

2337| :------------ | :-------------------- | :------------------------------------------------------------------------------ |

2338| `name` | `string` | Identificador de tipo de agente (por exemplo, `"Explore"`, `"general-purpose"`) |

2339| `description` | `string` | Descrição de quando usar este agente |

2340| `model` | `string \| undefined` | Alias de modelo que este agente usa. Se omitido, herda o modelo do pai |

2341 

2342### `McpServerStatus`

2343 

2344Status de um servidor MCP conectado.

2345 

2346```typescript theme={null}

2347type McpServerStatus = {

2348 name: string;

2349 status: "connected" | "failed" | "needs-auth" | "pending" | "disabled";

2350 serverInfo?: {

2351 name: string;

2352 version: string;

2353 };

2354 error?: string;

2355 config?: McpServerStatusConfig;

2356 scope?: string;

2357 tools?: {

2358 name: string;

2359 description?: string;

2360 annotations?: {

2361 readOnly?: boolean;

2362 destructive?: boolean;

2363 openWorld?: boolean;

2364 };

2365 }[];

2366};

2367```

2368 

2369### `McpServerStatusConfig`

2370 

2371A configuração de um servidor MCP conforme relatado por `mcpServerStatus()`. Esta é a união de todos os tipos de transporte de servidor MCP.

2372 

2373```typescript theme={null}

2374type McpServerStatusConfig =

2375 | McpStdioServerConfig

2376 | McpSSEServerConfig

2377 | McpHttpServerConfig

2378 | McpSdkServerConfig

2379 | McpClaudeAIProxyServerConfig;

2380```

2381 

2382Veja [`McpServerConfig`](#mcp-server-config) para detalhes sobre cada tipo de transporte.

2383 

2384### `AccountInfo`

2385 

2386Informações de conta para o usuário autenticado.

2387 

2388```typescript theme={null}

2389type AccountInfo = {

2390 email?: string;

2391 organization?: string;

2392 subscriptionType?: string;

2393 tokenSource?: string;

2394 apiKeySource?: string;

2395};

2396```

2397 

2398### `ModelUsage`

2399 

2400Estatísticas de uso por modelo retornadas em mensagens de resultado. O valor `costUSD` é uma estimativa do lado do cliente. Veja [Rastrear custo e uso](/pt/agent-sdk/cost-tracking) para ressalvas de faturamento.

2401 

2402```typescript theme={null}

2403type ModelUsage = {

2404 inputTokens: number;

2405 outputTokens: number;

2406 cacheReadInputTokens: number;

2407 cacheCreationInputTokens: number;

2408 webSearchRequests: number;

2409 costUSD: number;

2410 contextWindow: number;

2411 maxOutputTokens: number;

2412};

2413```

2414 

2415### `ConfigScope`

2416 

2417```typescript theme={null}

2418type ConfigScope = "local" | "user" | "project";

2419```

2420 

2421### `NonNullableUsage`

2422 

2423Uma versão de [`Usage`](#usage) com todos os campos anuláveis tornados não-anuláveis.

2424 

2425```typescript theme={null}

2426type NonNullableUsage = {

2427 [K in keyof Usage]: NonNullable<Usage[K]>;

2428};

2429```

2430 

2431### `Usage`

2432 

2433Estatísticas de uso de token (de `@anthropic-ai/sdk`).

2434 

2435```typescript theme={null}

2436type Usage = {

2437 input_tokens: number | null;

2438 output_tokens: number | null;

2439 cache_creation_input_tokens?: number | null;

2440 cache_read_input_tokens?: number | null;

2441};

2442```

2443 

2444### `CallToolResult`

2445 

2446Tipo de resultado de ferramenta MCP (de `@modelcontextprotocol/sdk/types.js`).

2447 

2448```typescript theme={null}

2449type CallToolResult = {

2450 content: Array<{

2451 type: "text" | "image" | "resource";

2452 // Campos adicionais variam por tipo

2453 }>;

2454 isError?: boolean;

2455};

2456```

2457 

2458### `ThinkingConfig`

2459 

2460Controla o comportamento de pensamento/raciocínio do Claude. Tem precedência sobre o `maxThinkingTokens` descontinuado.

2461 

2462```typescript theme={null}

2463type ThinkingConfig =

2464 | { type: "adaptive" } // O modelo determina quando e quanto raciocinar (Opus 4.6+)

2465 | { type: "enabled"; budgetTokens?: number } // Orçamento de token de pensamento fixo

2466 | { type: "disabled" }; // Sem pensamento estendido

2467```

2468 

2469### `SpawnedProcess`

2470 

2471Interface para geração de processo personalizado (usada com opção `spawnClaudeCodeProcess`). `ChildProcess` já satisfaz esta interface.

2472 

2473```typescript theme={null}

2474interface SpawnedProcess {

2475 stdin: Writable;

2476 stdout: Readable;

2477 readonly killed: boolean;

2478 readonly exitCode: number | null;

2479 kill(signal: NodeJS.Signals): boolean;

2480 on(

2481 event: "exit",

2482 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2483 ): void;

2484 on(event: "error", listener: (error: Error) => void): void;

2485 once(

2486 event: "exit",

2487 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2488 ): void;

2489 once(event: "error", listener: (error: Error) => void): void;

2490 off(

2491 event: "exit",

2492 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2493 ): void;

2494 off(event: "error", listener: (error: Error) => void): void;

2495}

2496```

2497 

2498### `SpawnOptions`

2499 

2500Opções passadas para a função de geração personalizada.

2501 

2502```typescript theme={null}

2503interface SpawnOptions {

2504 command: string;

2505 args: string[];

2506 cwd?: string;

2507 env: Record<string, string | undefined>;

2508 signal: AbortSignal;

2509}

2510```

2511 

2512### `McpSetServersResult`

2513 

2514Resultado de uma operação `setMcpServers()`.

2515 

2516```typescript theme={null}

2517type McpSetServersResult = {

2518 added: string[];

2519 removed: string[];

2520 errors: Record<string, string>;

2521};

2522```

2523 

2524### `RewindFilesResult`

2525 

2526Resultado de uma operação `rewindFiles()`.

2527 

2528```typescript theme={null}

2529type RewindFilesResult = {

2530 canRewind: boolean;

2531 error?: string;

2532 filesChanged?: string[];

2533 insertions?: number;

2534 deletions?: number;

2535};

2536```

2537 

2538### `SDKStatusMessage`

2539 

2540Mensagem de atualização de status (por exemplo, compactando).

2541 

2542```typescript theme={null}

2543type SDKStatusMessage = {

2544 type: "system";

2545 subtype: "status";

2546 status: "compacting" | null;

2547 permissionMode?: PermissionMode;

2548 uuid: UUID;

2549 session_id: string;

2550};

2551```

2552 

2553### `SDKTaskNotificationMessage`

2554 

2555Notificação quando uma tarefa de background é concluída, falha ou é parada. Tarefas de background incluem comandos Bash `run_in_background`, watches [Monitor](#monitor) e subagentes de background.

2556 

2557```typescript theme={null}

2558type SDKTaskNotificationMessage = {

2559 type: "system";

2560 subtype: "task_notification";

2561 task_id: string;

2562 tool_use_id?: string;

2563 status: "completed" | "failed" | "stopped";

2564 output_file: string;

2565 summary: string;

2566 usage?: {

2567 total_tokens: number;

2568 tool_uses: number;

2569 duration_ms: number;

2570 };

2571 uuid: UUID;

2572 session_id: string;

2573};

2574```

2575 

2576### `SDKToolUseSummaryMessage`

2577 

2578Resumo do uso de ferramenta em uma conversa.

2579 

2580```typescript theme={null}

2581type SDKToolUseSummaryMessage = {

2582 type: "tool_use_summary";

2583 summary: string;

2584 preceding_tool_use_ids: string[];

2585 uuid: UUID;

2586 session_id: string;

2587};

2588```

2589 

2590### `SDKHookStartedMessage`

2591 

2592Emitido quando um hook começa a executar.

2593 

2594```typescript theme={null}

2595type SDKHookStartedMessage = {

2596 type: "system";

2597 subtype: "hook_started";

2598 hook_id: string;

2599 hook_name: string;

2600 hook_event: string;

2601 uuid: UUID;

2602 session_id: string;

2603};

2604```

2605 

2606### `SDKHookProgressMessage`

2607 

2608Emitido enquanto um hook está em execução, com saída stdout/stderr.

2609 

2610```typescript theme={null}

2611type SDKHookProgressMessage = {

2612 type: "system";

2613 subtype: "hook_progress";

2614 hook_id: string;

2615 hook_name: string;

2616 hook_event: string;

2617 stdout: string;

2618 stderr: string;

2619 output: string;

2620 uuid: UUID;

2621 session_id: string;

2622};

2623```

2624 

2625### `SDKHookResponseMessage`

2626 

2627Emitido quando um hook termina de executar.

2628 

2629```typescript theme={null}

2630type SDKHookResponseMessage = {

2631 type: "system";

2632 subtype: "hook_response";

2633 hook_id: string;

2634 hook_name: string;

2635 hook_event: string;

2636 output: string;

2637 stdout: string;

2638 stderr: string;

2639 exit_code?: number;

2640 outcome: "success" | "error" | "cancelled";

2641 uuid: UUID;

2642 session_id: string;

2643};

2644```

2645 

2646### `SDKToolProgressMessage`

2647 

2648Emitido periodicamente enquanto uma ferramenta está sendo executada para indicar progresso.

2649 

2650```typescript theme={null}

2651type SDKToolProgressMessage = {

2652 type: "tool_progress";

2653 tool_use_id: string;

2654 tool_name: string;

2655 parent_tool_use_id: string | null;

2656 elapsed_time_seconds: number;

2657 task_id?: string;

2658 uuid: UUID;

2659 session_id: string;

2660};

2661```

2662 

2663### `SDKAuthStatusMessage`

2664 

2665Emitido durante fluxos de autenticação.

2666 

2667```typescript theme={null}

2668type SDKAuthStatusMessage = {

2669 type: "auth_status";

2670 isAuthenticating: boolean;

2671 output: string[];

2672 error?: string;

2673 uuid: UUID;

2674 session_id: string;

2675};

2676```

2677 

2678### `SDKTaskStartedMessage`

2679 

2680Emitido quando uma tarefa de background começa. O campo `task_type` é `"local_bash"` para comandos Bash de background e watches [Monitor](#monitor), `"local_agent"` para subagentes, ou `"remote_agent"`.

2681 

2682```typescript theme={null}

2683type SDKTaskStartedMessage = {

2684 type: "system";

2685 subtype: "task_started";

2686 task_id: string;

2687 tool_use_id?: string;

2688 description: string;

2689 task_type?: string;

2690 uuid: UUID;

2691 session_id: string;

2692};

2693```

2694 

2695### `SDKTaskProgressMessage`

2696 

2697Emitido periodicamente enquanto uma tarefa de background está em execução.

2698 

2699```typescript theme={null}

2700type SDKTaskProgressMessage = {

2701 type: "system";

2702 subtype: "task_progress";

2703 task_id: string;

2704 tool_use_id?: string;

2705 description: string;

2706 usage: {

2707 total_tokens: number;

2708 tool_uses: number;

2709 duration_ms: number;

2710 };

2711 last_tool_name?: string;

2712 uuid: UUID;

2713 session_id: string;

2714};

2715```

2716 

2717### `SDKTaskUpdatedMessage`

2718 

2719Emitido quando o estado de uma tarefa de background muda, como quando ela faz a transição de `running` para `completed`. Mescle `patch` em seu mapa de tarefas local com chave `task_id`. O campo `end_time` é um timestamp de época Unix em milissegundos, comparável com `Date.now()`.

2720 

2721```typescript theme={null}

2722type SDKTaskUpdatedMessage = {

2723 type: "system";

2724 subtype: "task_updated";

2725 task_id: string;

2726 patch: {

2727 status?: "pending" | "running" | "completed" | "failed" | "killed";

2728 description?: string;

2729 end_time?: number;

2730 total_paused_ms?: number;

2731 error?: string;

2732 is_backgrounded?: boolean;

2733 };

2734 uuid: UUID;

2735 session_id: string;

2736};

2737```

2738 

2739### `SDKFilesPersistedEvent`

2740 

2741Emitido quando checkpoints de arquivo são persistidos em disco.

2742 

2743```typescript theme={null}

2744type SDKFilesPersistedEvent = {

2745 type: "system";

2746 subtype: "files_persisted";

2747 files: { filename: string; file_id: string }[];

2748 failed: { filename: string; error: string }[];

2749 processed_at: string;

2750 uuid: UUID;

2751 session_id: string;

2752};

2753```

2754 

2755### `SDKRateLimitEvent`

2756 

2757Emitido quando a sessão encontra um limite de taxa.

2758 

2759```typescript theme={null}

2760type SDKRateLimitEvent = {

2761 type: "rate_limit_event";

2762 rate_limit_info: {

2763 status: "allowed" | "allowed_warning" | "rejected";

2764 resetsAt?: number;

2765 utilization?: number;

2766 };

2767 uuid: UUID;

2768 session_id: string;

2769};

2770```

2771 

2772### `SDKLocalCommandOutputMessage`

2773 

2774Saída de um comando slash local (por exemplo, `/voice` ou `/usage`). Exibido como texto estilo assistente na transcrição.

2775 

2776```typescript theme={null}

2777type SDKLocalCommandOutputMessage = {

2778 type: "system";

2779 subtype: "local_command_output";

2780 content: string;

2781 uuid: UUID;

2782 session_id: string;

2783};

2784```

2785 

2786### `SDKPromptSuggestionMessage`

2787 

2788Emitido após cada turno quando `promptSuggestions` está ativado. Contém um prompt de usuário previsto.

2789 

2790```typescript theme={null}

2791type SDKPromptSuggestionMessage = {

2792 type: "prompt_suggestion";

2793 suggestion: string;

2794 uuid: UUID;

2795 session_id: string;

2796};

2797```

2798 

2799### `AbortError`

2800 

2801Classe de erro personalizada para operações de abort.

2802 

2803```typescript theme={null}

2804class AbortError extends Error {}

2805```

2806 

2807## Configuração de Sandbox

2808 

2809### `SandboxSettings`

2810 

2811Configuração para comportamento de sandbox. Use isso para ativar sandboxing de comando e configurar restrições de rede programaticamente.

2812 

2813```typescript theme={null}

2814type SandboxSettings = {

2815 enabled?: boolean;

2816 autoAllowBashIfSandboxed?: boolean;

2817 excludedCommands?: string[];

2818 allowUnsandboxedCommands?: boolean;

2819 network?: SandboxNetworkConfig;

2820 filesystem?: SandboxFilesystemConfig;

2821 ignoreViolations?: Record<string, string[]>;

2822 enableWeakerNestedSandbox?: boolean;

2823 ripgrep?: { command: string; args?: string[] };

2824};

2825```

2826 

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

2828| :-------------------------- | :------------------------------------------------------ | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2829| `enabled` | `boolean` | `false` | Ativar modo sandbox para execução de comando |

2830| `autoAllowBashIfSandboxed` | `boolean` | `true` | Auto-aprovar comandos bash quando sandbox está ativado |

2831| `excludedCommands` | `string[]` | `[]` | Comandos que sempre contornam restrições de sandbox (por exemplo, `['docker']`). Esses executam sem sandbox automaticamente sem envolvimento do modelo |

2832| `allowUnsandboxedCommands` | `boolean` | `true` | Permitir que o modelo solicite executar comandos fora do sandbox. Quando `true`, o modelo pode definir `dangerouslyDisableSandbox` na entrada da ferramenta, que volta para o [sistema de permissões](#permissions-fallback-for-unsandboxed-commands) |

2833| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `undefined` | Configuração de sandbox específica de rede |

2834| `filesystem` | [`SandboxFilesystemConfig`](#sandbox-filesystem-config) | `undefined` | Configuração de sandbox específica do sistema de arquivos para restrições de leitura/escrita |

2835| `ignoreViolations` | `Record<string, string[]>` | `undefined` | Mapa de categorias de violação para padrões a ignorar (por exemplo, `{ file: ['/tmp/*'], network: ['localhost'] }`) |

2836| `enableWeakerNestedSandbox` | `boolean` | `false` | Ativar um sandbox aninhado mais fraco para compatibilidade |

2837| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | Configuração de binário ripgrep personalizado para ambientes sandbox |

2838 

2839#### Exemplo de uso

2840 

2841```typescript theme={null}

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

2843 

2844for await (const message of query({

2845 prompt: "Build and test my project",

2846 options: {

2847 sandbox: {

2848 enabled: true,

2849 autoAllowBashIfSandboxed: true,

2850 network: {

2851 allowLocalBinding: true

2852 }

2853 }

2854 }

2855})) {

2856 if ("result" in message) console.log(message.result);

2857}

2858```

2859 

2860<Warning>

2861 **Segurança de socket Unix:** A opção `allowUnixSockets` pode conceder acesso a serviços de sistema poderosos. Por exemplo, permitir `/var/run/docker.sock` efetivamente concede acesso completo ao sistema host através da API Docker, contornando isolamento de sandbox. Apenas permita sockets Unix que são estritamente necessários e entenda as implicações de segurança de cada um.

2862</Warning>

2863 

2864### `SandboxNetworkConfig`

2865 

2866Configuração específica de rede para modo sandbox.

2867 

2868```typescript theme={null}

2869type SandboxNetworkConfig = {

2870 allowedDomains?: string[];

2871 deniedDomains?: string[];

2872 allowManagedDomainsOnly?: boolean;

2873 allowLocalBinding?: boolean;

2874 allowUnixSockets?: string[];

2875 allowAllUnixSockets?: boolean;

2876 httpProxyPort?: number;

2877 socksProxyPort?: number;

2878};

2879```

2880 

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

2882| :------------------------ | :--------- | :---------- | :------------------------------------------------------------------------------------------------- |

2883| `allowedDomains` | `string[]` | `[]` | Nomes de domínio que processos sandboxed podem acessar |

2884| `deniedDomains` | `string[]` | `[]` | Nomes de domínio que processos sandboxed não podem acessar. Tem precedência sobre `allowedDomains` |

2885| `allowManagedDomainsOnly` | `boolean` | `false` | Restringir acesso de rede apenas aos domínios em `allowedDomains` |

2886| `allowLocalBinding` | `boolean` | `false` | Permitir que processos se vinculem a portas locais (por exemplo, para servidores dev) |

2887| `allowUnixSockets` | `string[]` | `[]` | Caminhos de socket Unix que processos podem acessar (por exemplo, socket Docker) |

2888| `allowAllUnixSockets` | `boolean` | `false` | Permitir acesso a todos os sockets Unix |

2889| `httpProxyPort` | `number` | `undefined` | Porta de proxy HTTP para requisições de rede |

2890| `socksProxyPort` | `number` | `undefined` | Porta de proxy SOCKS para requisições de rede |

2891 

2892<Note>

2893 O proxy de sandbox integrado impõe `allowedDomains` com base no nome de host solicitado e não encerra ou inspeciona tráfego TLS, portanto técnicas como [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) podem potencialmente contorná-lo. Veja [Limitações de segurança de sandboxing](/pt/sandboxing#security-limitations) para detalhes e [Implantação segura](/pt/agent-sdk/secure-deployment#traffic-forwarding) para configurar um proxy que encerra TLS.

2894</Note>

2895 

2896### `SandboxFilesystemConfig`

2897 

2898Configuração específica do sistema de arquivos para modo sandbox.

2899 

2900```typescript theme={null}

2901type SandboxFilesystemConfig = {

2902 allowWrite?: string[];

2903 denyWrite?: string[];

2904 denyRead?: string[];

2905};

2906```

2907 

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

2909| :----------- | :--------- | :----- | :------------------------------------------------------------ |

2910| `allowWrite` | `string[]` | `[]` | Padrões de caminho de arquivo para permitir acesso de escrita |

2911| `denyWrite` | `string[]` | `[]` | Padrões de caminho de arquivo para negar acesso de escrita |

2912| `denyRead` | `string[]` | `[]` | Padrões de caminho de arquivo para negar acesso de leitura |

2913 

2914### Fallback de Permissões para Comandos Sem Sandbox

2915 

2916Quando `allowUnsandboxedCommands` está ativado, o modelo pode solicitar executar comandos fora do sandbox definindo `dangerouslyDisableSandbox: true` na entrada da ferramenta. Essas solicitações voltam para o sistema de permissões existente, significando que seu handler `canUseTool` é invocado, permitindo que você implemente lógica de autorização personalizada.

2917 

2918<Note>

2919 **`excludedCommands` vs `allowUnsandboxedCommands`:**

2920 

2921 * `excludedCommands`: Uma lista estática de comandos que sempre contornam o sandbox automaticamente (por exemplo, `['docker']`). O modelo não tem controle sobre isso.

2922 * `allowUnsandboxedCommands`: Permite que o modelo decida em tempo de execução se solicita execução sem sandbox definindo `dangerouslyDisableSandbox: true` na entrada da ferramenta.

2923</Note>

2924 

2925```typescript theme={null}

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

2927 

2928for await (const message of query({

2929 prompt: "Deploy my application",

2930 options: {

2931 sandbox: {

2932 enabled: true,

2933 allowUnsandboxedCommands: true // Modelo pode solicitar execução sem sandbox

2934 },

2935 permissionMode: "default",

2936 canUseTool: async (tool, input) => {

2937 // Verificar se o modelo está solicitando bypass do sandbox

2938 if (tool === "Bash" && input.dangerouslyDisableSandbox) {

2939 // O modelo está solicitando executar este comando fora do sandbox

2940 console.log(`Unsandboxed command requested: ${input.command}`);

2941 

2942 if (isCommandAuthorized(input.command)) {

2943 return { behavior: "allow" as const, updatedInput: input };

2944 }

2945 return {

2946 behavior: "deny" as const,

2947 message: "Command not authorized for unsandboxed execution"

2948 };

2949 }

2950 return { behavior: "allow" as const, updatedInput: input };

2951 }

2952 }

2953})) {

2954 if ("result" in message) console.log(message.result);

2955}

2956```

2957 

2958Este padrão permite que você:

2959 

2960* **Auditar solicitações do modelo:** Registre quando o modelo solicita execução sem sandbox

2961* **Implementar listas de permissão:** Apenas permitir comandos específicos para executar sem sandbox

2962* **Adicionar fluxos de aprovação:** Exigir autorização explícita para operações privilegiadas

2963 

2964<Warning>

2965 Comandos executando com `dangerouslyDisableSandbox: true` têm acesso completo ao sistema. Garanta que seu handler `canUseTool` valide essas solicitações cuidadosamente.

2966 

2967 Se `permissionMode` está definido como `bypassPermissions` e `allowUnsandboxedCommands` está ativado, o modelo pode autonomamente executar comandos fora do sandbox sem quaisquer prompts de aprovação. Esta combinação efetivamente permite que o modelo escape do isolamento de sandbox silenciosamente.

2968</Warning>

2969 

2970## Veja também

2971 

2972* [Visão geral do SDK](/pt/agent-sdk/overview) - Conceitos gerais do SDK

2973* [Referência do SDK Python](/pt/agent-sdk/python) - Documentação do SDK Python

2974* [Referência da CLI](/pt/cli-reference) - Interface de linha de comando

2975* [Fluxos de trabalho comuns](/pt/common-workflows) - Guias passo a passo

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# Interface TypeScript SDK V2 (visualização)

6 

7> Visualização do SDK do Agent TypeScript V2 simplificado, com padrões de envio/stream baseados em sessão para conversas multi-turno.

8 

9<Warning>

10 A interface V2 é uma **visualização instável**. As APIs podem mudar com base em feedback antes de se tornarem estáveis. Alguns recursos como bifurcação de sessão estão disponíveis apenas no [SDK V1](/pt/agent-sdk/typescript).

11</Warning>

12 

13O SDK do Agent TypeScript Claude V2 remove a necessidade de geradores assíncronos e coordenação de yield. Isso torna as conversas multi-turno mais simples, em vez de gerenciar o estado do gerador entre turnos, cada turno é um ciclo `send()`/`stream()` separado. A superfície da API se reduz a três conceitos:

14 

15* `createSession()` / `resumeSession()`: Iniciar ou continuar uma conversa

16* `session.send()`: Enviar uma mensagem

17* `session.stream()`: Obter a resposta

18 

19## Instalação

20 

21A interface V2 está incluída no pacote SDK existente:

22 

23```bash theme={null}

24npm install @anthropic-ai/claude-agent-sdk

25```

26 

27<Note>

28 O SDK agrupa um binário nativo do Claude Code para sua plataforma como uma dependência opcional, portanto você não precisa instalar o Claude Code separadamente.

29</Note>

30 

31## Início rápido

32 

33### Prompt único

34 

35Para consultas simples de turno único onde você não precisa manter uma sessão, use `unstable_v2_prompt()`. Este exemplo envia uma pergunta de matemática e registra a resposta:

36 

37```typescript theme={null}

38import { unstable_v2_prompt } from "@anthropic-ai/claude-agent-sdk";

39 

40const result = await unstable_v2_prompt("What is 2 + 2?", {

41 model: "claude-opus-4-7"

42});

43if (result.subtype === "success") {

44 console.log(result.result);

45}

46```

47 

48<details>

49 <summary>Veja a mesma operação em V1</summary>

50 

51 ```typescript theme={null}

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

53 

54 const q = query({

55 prompt: "What is 2 + 2?",

56 options: { model: "claude-opus-4-7" }

57 });

58 

59 for await (const msg of q) {

60 if (msg.type === "result" && msg.subtype === "success") {

61 console.log(msg.result);

62 }

63 }

64 ```

65</details>

66 

67### Sessão básica

68 

69Para interações além de um único prompt, crie uma sessão. V2 separa envio e streaming em etapas distintas:

70 

71* `send()` envia sua mensagem

72* `stream()` transmite a resposta

73 

74Esta separação explícita torna mais fácil adicionar lógica entre turnos (como processar respostas antes de enviar acompanhamentos).

75 

76O exemplo abaixo cria uma sessão, envia "Hello!" para Claude e imprime a resposta de texto. Ele usa [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management) (TypeScript 5.2+) para fechar automaticamente a sessão quando o bloco sai. Você também pode chamar `session.close()` manualmente.

77 

78```typescript theme={null}

79import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

80 

81await using session = unstable_v2_createSession({

82 model: "claude-opus-4-7"

83});

84 

85await session.send("Hello!");

86for await (const msg of session.stream()) {

87 // Filter for assistant messages to get human-readable output

88 if (msg.type === "assistant") {

89 const text = msg.message.content

90 .filter((block) => block.type === "text")

91 .map((block) => block.text)

92 .join("");

93 console.log(text);

94 }

95}

96```

97 

98<details>

99 <summary>Veja a mesma operação em V1</summary>

100 

101 Em V1, tanto entrada quanto saída fluem através de um único gerador assíncrono. Para um prompt básico, isso parece semelhante, mas adicionar lógica multi-turno requer reestruturação para usar um gerador de entrada.

102 

103 ```typescript theme={null}

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

105 

106 const q = query({

107 prompt: "Hello!",

108 options: { model: "claude-opus-4-7" }

109 });

110 

111 for await (const msg of q) {

112 if (msg.type === "assistant") {

113 const text = msg.message.content

114 .filter((block) => block.type === "text")

115 .map((block) => block.text)

116 .join("");

117 console.log(text);

118 }

119 }

120 ```

121</details>

122 

123### Conversa multi-turno

124 

125As sessões persistem contexto em múltiplas trocas. Para continuar uma conversa, chame `send()` novamente na mesma sessão. Claude se lembra dos turnos anteriores.

126 

127Este exemplo faz uma pergunta de matemática e depois faz um acompanhamento que referencia a resposta anterior:

128 

129```typescript theme={null}

130import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

131 

132await using session = unstable_v2_createSession({

133 model: "claude-opus-4-7"

134});

135 

136// Turn 1

137await session.send("What is 5 + 3?");

138for await (const msg of session.stream()) {

139 // Filter for assistant messages to get human-readable output

140 if (msg.type === "assistant") {

141 const text = msg.message.content

142 .filter((block) => block.type === "text")

143 .map((block) => block.text)

144 .join("");

145 console.log(text);

146 }

147}

148 

149// Turn 2

150await session.send("Multiply that by 2");

151for await (const msg of session.stream()) {

152 if (msg.type === "assistant") {

153 const text = msg.message.content

154 .filter((block) => block.type === "text")

155 .map((block) => block.text)

156 .join("");

157 console.log(text);

158 }

159}

160```

161 

162<details>

163 <summary>Veja a mesma operação em V1</summary>

164 

165 ```typescript theme={null}

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

167 

168 // Must create an async iterable to feed messages

169 async function* createInputStream() {

170 yield {

171 type: "user",

172 session_id: "",

173 message: { role: "user", content: [{ type: "text", text: "What is 5 + 3?" }] },

174 parent_tool_use_id: null

175 };

176 // Must coordinate when to yield next message

177 yield {

178 type: "user",

179 session_id: "",

180 message: { role: "user", content: [{ type: "text", text: "Multiply by 2" }] },

181 parent_tool_use_id: null

182 };

183 }

184 

185 const q = query({

186 prompt: createInputStream(),

187 options: { model: "claude-opus-4-7" }

188 });

189 

190 for await (const msg of q) {

191 if (msg.type === "assistant") {

192 const text = msg.message.content

193 .filter((block) => block.type === "text")

194 .map((block) => block.text)

195 .join("");

196 console.log(text);

197 }

198 }

199 ```

200</details>

201 

202### Retomada de sessão

203 

204Se você tiver um ID de sessão de uma interação anterior, poderá retomá-lo mais tarde. Isso é útil para fluxos de trabalho de longa duração ou quando você precisa persistir conversas entre reinicializações de aplicativo.

205 

206Este exemplo cria uma sessão, armazena seu ID, a fecha e depois retoma a conversa:

207 

208```typescript theme={null}

209import {

210 unstable_v2_createSession,

211 unstable_v2_resumeSession,

212 type SDKMessage

213} from "@anthropic-ai/claude-agent-sdk";

214 

215// Helper to extract text from assistant messages

216function getAssistantText(msg: SDKMessage): string | null {

217 if (msg.type !== "assistant") return null;

218 return msg.message.content

219 .filter((block) => block.type === "text")

220 .map((block) => block.text)

221 .join("");

222}

223 

224// Create initial session and have a conversation

225const session = unstable_v2_createSession({

226 model: "claude-opus-4-7"

227});

228 

229await session.send("Remember this number: 42");

230 

231// Get the session ID from any received message

232let sessionId: string | undefined;

233for await (const msg of session.stream()) {

234 sessionId = msg.session_id;

235 const text = getAssistantText(msg);

236 if (text) console.log("Initial response:", text);

237}

238 

239console.log("Session ID:", sessionId);

240session.close();

241 

242// Later: resume the session using the stored ID

243await using resumedSession = unstable_v2_resumeSession(sessionId!, {

244 model: "claude-opus-4-7"

245});

246 

247await resumedSession.send("What number did I ask you to remember?");

248for await (const msg of resumedSession.stream()) {

249 const text = getAssistantText(msg);

250 if (text) console.log("Resumed response:", text);

251}

252```

253 

254<details>

255 <summary>Veja a mesma operação em V1</summary>

256 

257 ```typescript theme={null}

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

259 

260 // Create initial session

261 const initialQuery = query({

262 prompt: "Remember this number: 42",

263 options: { model: "claude-opus-4-7" }

264 });

265 

266 // Get session ID from any message

267 let sessionId: string | undefined;

268 for await (const msg of initialQuery) {

269 sessionId = msg.session_id;

270 if (msg.type === "assistant") {

271 const text = msg.message.content

272 .filter((block) => block.type === "text")

273 .map((block) => block.text)

274 .join("");

275 console.log("Initial response:", text);

276 }

277 }

278 

279 console.log("Session ID:", sessionId);

280 

281 // Later: resume the session

282 const resumedQuery = query({

283 prompt: "What number did I ask you to remember?",

284 options: {

285 model: "claude-opus-4-7",

286 resume: sessionId

287 }

288 });

289 

290 for await (const msg of resumedQuery) {

291 if (msg.type === "assistant") {

292 const text = msg.message.content

293 .filter((block) => block.type === "text")

294 .map((block) => block.text)

295 .join("");

296 console.log("Resumed response:", text);

297 }

298 }

299 ```

300</details>

301 

302### Limpeza

303 

304As sessões podem ser fechadas manualmente ou automaticamente usando [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management), um recurso do TypeScript 5.2+ para limpeza automática de recursos. Se você estiver usando uma versão mais antiga do TypeScript ou encontrar problemas de compatibilidade, use limpeza manual.

305 

306**Limpeza automática (TypeScript 5.2+):**

307 

308```typescript theme={null}

309import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

310 

311await using session = unstable_v2_createSession({

312 model: "claude-opus-4-7"

313});

314// Session closes automatically when the block exits

315```

316 

317**Limpeza manual:**

318 

319```typescript theme={null}

320import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

321 

322const session = unstable_v2_createSession({

323 model: "claude-opus-4-7"

324});

325// ... use the session ...

326session.close();

327```

328 

329## Referência da API

330 

331### `unstable_v2_createSession()`

332 

333Cria uma nova sessão para conversas multi-turno.

334 

335```typescript theme={null}

336function unstable_v2_createSession(options: {

337 model: string;

338 // Additional options supported

339}): SDKSession;

340```

341 

342### `unstable_v2_resumeSession()`

343 

344Retoma uma sessão existente por ID.

345 

346```typescript theme={null}

347function unstable_v2_resumeSession(

348 sessionId: string,

349 options: {

350 model: string;

351 // Additional options supported

352 }

353): SDKSession;

354```

355 

356### `unstable_v2_prompt()`

357 

358Função de conveniência única para consultas de turno único.

359 

360```typescript theme={null}

361function unstable_v2_prompt(

362 prompt: string,

363 options: {

364 model: string;

365 // Additional options supported

366 }

367): Promise<SDKResultMessage>;

368```

369 

370### Interface SDKSession

371 

372```typescript theme={null}

373interface SDKSession {

374 readonly sessionId: string;

375 send(message: string | SDKUserMessage): Promise<void>;

376 stream(): AsyncGenerator<SDKMessage, void>;

377 close(): void;

378}

379```

380 

381## Disponibilidade de recursos

382 

383Nem todos os recursos V1 estão disponíveis em V2 ainda. Os seguintes requerem o uso do [SDK V1](/pt/agent-sdk/typescript):

384 

385* Bifurcação de sessão (opção `forkSession`)

386* Alguns padrões avançados de entrada de streaming

387 

388## Feedback

389 

390Compartilhe seu feedback sobre a interface V2 antes que ela se torne estável. Relate problemas e sugestões através de [GitHub Issues](https://github.com/anthropics/claude-code/issues).

391 

392## Veja também

393 

394* [Referência do SDK TypeScript (V1)](/pt/agent-sdk/typescript) - Documentação completa do SDK V1

395* [Visão geral do SDK](/pt/agent-sdk/overview) - Conceitos gerais do SDK

396* [Exemplos V2 no GitHub](https://github.com/anthropics/claude-agent-sdk-demos/tree/main/hello-world-v2) - Exemplos de código funcionando

agent-teams.md +424 −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# Orquestre equipes de sessões Claude Code

6 

7> Coordene múltiplas instâncias Claude Code trabalhando juntas como uma equipe, com tarefas compartilhadas, mensagens entre agentes e gerenciamento centralizado.

8 

9<Warning>

10 Equipes de agentes são experimentais e desabilitadas por padrão. Ative-as adicionando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` ao seu [settings.json](/pt/settings) ou ambiente. Equipes de agentes têm [limitações conhecidas](#limitations) em torno de retomada de sessão, coordenação de tarefas e comportamento de encerramento.

11</Warning>

12 

13Equipes de agentes permitem que você coordene múltiplas instâncias Claude Code trabalhando juntas. Uma sessão atua como o líder da equipe, coordenando o trabalho, atribuindo tarefas e sintetizando resultados. Os companheiros de equipe trabalham independentemente, cada um em sua própria context window, e se comunicam diretamente uns com os outros.

14 

15Diferentemente de [subagents](/pt/sub-agents), que são executados dentro de uma única sessão e podem apenas relatar de volta ao agente principal, você também pode interagir com companheiros de equipe individuais diretamente sem passar pelo líder.

16 

17<Note>

18 Equipes de agentes requerem Claude Code v2.1.32 ou posterior. Verifique sua versão com `claude --version`.

19</Note>

20 

21Esta página cobre:

22 

23* [Quando usar equipes de agentes](#when-to-use-agent-teams), incluindo os melhores casos de uso e como elas se comparam com subagents

24* [Iniciando uma equipe](#start-your-first-agent-team)

25* [Controlando companheiros de equipe](#control-your-agent-team), incluindo modos de exibição, atribuição de tarefas e delegação

26* [Melhores práticas para trabalho paralelo](#best-practices)

27 

28## Quando usar equipes de agentes

29 

30Equipes de agentes são mais eficazes para tarefas onde a exploração paralela adiciona valor real. Veja [exemplos de casos de uso](#use-case-examples) para cenários completos. Os casos de uso mais fortes são:

31 

32* **Pesquisa e revisão**: múltiplos companheiros de equipe podem investigar diferentes aspectos de um problema simultaneamente, depois compartilhar e desafiar as descobertas uns dos outros

33* **Novos módulos ou recursos**: companheiros de equipe podem possuir cada um uma peça separada sem se atrapalharem

34* **Depuração com hipóteses concorrentes**: companheiros de equipe testam diferentes teorias em paralelo e convergem para a resposta mais rapidamente

35* **Coordenação entre camadas**: mudanças que abrangem frontend, backend e testes, cada uma de propriedade de um companheiro de equipe diferente

36 

37Equipes de agentes adicionam sobrecarga de coordenação e usam significativamente mais tokens do que uma única sessão. Funcionam melhor quando os companheiros de equipe podem operar independentemente. Para tarefas sequenciais, edições no mesmo arquivo ou trabalho com muitas dependências, uma única sessão ou [subagents](/pt/sub-agents) são mais eficazes.

38 

39### Comparar com subagents

40 

41Tanto equipes de agentes quanto [subagents](/pt/sub-agents) permitem que você paralelizar o trabalho, mas operam de forma diferente. Escolha com base em se seus trabalhadores precisam se comunicar uns com os outros:

42 

43<Frame caption="Subagents apenas relatam resultados de volta ao agente principal e nunca falam uns com os outros. Em equipes de agentes, os companheiros de equipe compartilham uma lista de tarefas, reivindicam trabalho e se comunicam diretamente uns com os outros.">

44 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-light.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=2f8db9b4f3705dd3ab931fbe2d96e42a" className="dark:hidden" alt="Diagrama comparando arquiteturas de subagent e equipe de agentes. Subagents são gerados pelo agente principal, fazem trabalho e relatam resultados de volta. Equipes de agentes coordenam através de uma lista de tarefas compartilhada, com companheiros de equipe se comunicando diretamente uns com os outros." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-light.png" />

45 

46 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-dark.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=d573a037540f2ada6a9ae7d8285b46fd" className="hidden dark:block" alt="Diagrama comparando arquiteturas de subagent e equipe de agentes. Subagents são gerados pelo agente principal, fazem trabalho e relatam resultados de volta. Equipes de agentes coordenam através de uma lista de tarefas compartilhada, com companheiros de equipe se comunicando diretamente uns com os outros." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-dark.png" />

47</Frame>

48 

49| | Subagents | Agent teams |

50| :---------------- | :--------------------------------------------------------- | :---------------------------------------------------------------- |

51| **Context** | Context window própria; resultados retornam ao chamador | Context window própria; totalmente independente |

52| **Communication** | Relatam resultados de volta apenas ao agente principal | Companheiros de equipe se mensageiam diretamente |

53| **Coordination** | Agente principal gerencia todo o trabalho | Lista de tarefas compartilhada com auto-coordenação |

54| **Best for** | Tarefas focadas onde apenas o resultado importa | Trabalho complexo que requer discussão e colaboração |

55| **Token cost** | Menor: resultados resumidos de volta ao contexto principal | Maior: cada companheiro de equipe é uma instância Claude separada |

56 

57Use subagents quando você precisa de trabalhadores rápidos e focados que relatem de volta. Use equipes de agentes quando os companheiros de equipe precisam compartilhar descobertas, desafiar uns aos outros e coordenar por conta própria.

58 

59## Ativar equipes de agentes

60 

61Equipes de agentes são desabilitadas por padrão. Ative-as definindo a variável de ambiente `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` como `1`, seja no seu ambiente de shell ou através de [settings.json](/pt/settings):

62 

63```json settings.json theme={null}

64{

65 "env": {

66 "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"

67 }

68}

69```

70 

71## Inicie sua primeira equipe de agentes

72 

73Após ativar equipes de agentes, diga ao Claude para criar uma equipe de agentes e descreva a tarefa e a estrutura da equipe que você deseja em linguagem natural. Claude cria a equipe, gera companheiros de equipe e coordena o trabalho com base no seu prompt.

74 

75Este exemplo funciona bem porque os três papéis são independentes e podem explorar o problema sem esperar um pelo outro:

76 

77```text theme={null}

78I'm designing a CLI tool that helps developers track TODO comments across

79their codebase. Create an agent team to explore this from different angles: one

80teammate on UX, one on technical architecture, one playing devil's advocate.

81```

82 

83A partir daí, Claude cria uma equipe com uma [lista de tarefas compartilhada](/pt/interactive-mode#task-list), gera companheiros de equipe para cada perspectiva, faz com que explorem o problema, sintetiza descobertas e tenta [limpar a equipe](#clean-up-the-team) quando terminar.

84 

85O terminal do líder lista todos os companheiros de equipe e no que estão trabalhando. Use Shift+Down para percorrer os companheiros de equipe e envie mensagens para eles diretamente. Após o último companheiro de equipe, Shift+Down volta para o líder.

86 

87Se você quiser cada companheiro de equipe em seu próprio painel dividido, veja [Escolha um modo de exibição](#choose-a-display-mode).

88 

89## Controle sua equipe de agentes

90 

91Diga ao líder o que você quer em linguagem natural. Ele lida com coordenação de equipe, atribuição de tarefas e delegação com base em suas instruções.

92 

93### Escolha um modo de exibição

94 

95Equipes de agentes suportam dois modos de exibição:

96 

97* **In-process**: todos os companheiros de equipe são executados dentro do seu terminal principal. Use Shift+Down para percorrer os companheiros de equipe e digite para enviar mensagens para eles diretamente. Funciona em qualquer terminal, nenhuma configuração extra necessária.

98* **Split panes**: cada companheiro de equipe recebe seu próprio painel. Você pode ver a saída de todos de uma vez e clicar em um painel para interagir diretamente. Requer tmux ou iTerm2.

99 

100<Note>

101 `tmux` tem limitações conhecidas em certos sistemas operacionais e tradicionalmente funciona melhor no macOS. Usar `tmux -CC` no iTerm2 é o ponto de entrada sugerido para `tmux`.

102</Note>

103 

104O padrão é `"auto"`, que usa split panes se você já estiver executando dentro de uma sessão tmux, e in-process caso contrário. A configuração `"tmux"` ativa o modo split-pane e detecta automaticamente se deve usar tmux ou iTerm2 com base no seu terminal. Para substituir, defina [`teammateMode`](/pt/settings#available-settings) em `~/.claude/settings.json`:

105 

106```json theme={null}

107{

108 "teammateMode": "in-process"

109}

110```

111 

112Para forçar o modo in-process para uma única sessão, passe como um sinalizador:

113 

114```bash theme={null}

115claude --teammate-mode in-process

116```

117 

118O modo split-pane requer [tmux](https://github.com/tmux/tmux/wiki) ou iTerm2 com o CLI [`it2`](https://github.com/mkusaka/it2). Para instalar manualmente:

119 

120* **tmux**: instale através do gerenciador de pacotes do seu sistema. Veja o [wiki tmux](https://github.com/tmux/tmux/wiki/Installing) para instruções específicas da plataforma.

121* **iTerm2**: instale o CLI [`it2`](https://github.com/mkusaka/it2), depois ative a API Python em **iTerm2 → Settings → General → Magic → Enable Python API**.

122 

123### Especifique companheiros de equipe e modelos

124 

125Claude decide o número de companheiros de equipe a gerar com base em sua tarefa, ou você pode especificar exatamente o que deseja:

126 

127```text theme={null}

128Create a team with 4 teammates to refactor these modules in parallel.

129Use Sonnet for each teammate.

130```

131 

132### Exigir aprovação de plano para companheiros de equipe

133 

134Para tarefas complexas ou arriscadas, você pode exigir que os companheiros de equipe planejem antes de implementar. O companheiro de equipe trabalha em modo de plano somente leitura até que o líder aprove sua abordagem:

135 

136```text theme={null}

137Spawn an architect teammate to refactor the authentication module.

138Require plan approval before they make any changes.

139```

140 

141Quando um companheiro de equipe termina o planejamento, ele envia uma solicitação de aprovação de plano ao líder. O líder revisa o plano e o aprova ou o rejeita com feedback. Se rejeitado, o companheiro de equipe permanece em modo de plano, revisa com base no feedback e resubmete. Uma vez aprovado, o companheiro de equipe sai do modo de plano e começa a implementação.

142 

143O líder toma decisões de aprovação autonomamente. Para influenciar o julgamento do líder, dê a ele critérios no seu prompt, como "apenas aprove planos que incluam cobertura de testes" ou "rejeite planos que modifiquem o esquema do banco de dados".

144 

145### Fale com companheiros de equipe diretamente

146 

147Cada companheiro de equipe é uma sessão Claude Code completa e independente. Você pode enviar mensagens para qualquer companheiro de equipe diretamente para dar instruções adicionais, fazer perguntas de acompanhamento ou redirecionar sua abordagem.

148 

149* **Modo in-process**: use Shift+Down para percorrer os companheiros de equipe, depois digite para enviar uma mensagem. Pressione Enter para visualizar a sessão de um companheiro de equipe, depois Escape para interromper seu turno atual. Pressione Ctrl+T para alternar a lista de tarefas.

150* **Modo split-pane**: clique em um painel de companheiro de equipe para interagir com sua sessão diretamente. Cada companheiro de equipe tem uma visualização completa de seu próprio terminal.

151 

152### Atribuir e reivindicar tarefas

153 

154A lista de tarefas compartilhada coordena o trabalho em toda a equipe. O líder cria tarefas e os companheiros de equipe as trabalham. As tarefas têm três estados: pendente, em progresso e concluída. As tarefas também podem depender de outras tarefas: uma tarefa pendente com dependências não resolvidas não pode ser reivindicada até que essas dependências sejam concluídas.

155 

156O líder pode atribuir tarefas explicitamente ou os companheiros de equipe podem auto-reivindicar:

157 

158* **Líder atribui**: diga ao líder qual tarefa dar a qual companheiro de equipe

159* **Auto-reivindicar**: após terminar uma tarefa, um companheiro de equipe pega a próxima tarefa não atribuída e desbloqueada por conta própria

160 

161A reivindicação de tarefas usa bloqueio de arquivo para evitar condições de corrida quando múltiplos companheiros de equipe tentam reivindicar a mesma tarefa simultaneamente.

162 

163### Encerrar companheiros de equipe

164 

165Para encerrar graciosamente a sessão de um companheiro de equipe:

166 

167```text theme={null}

168Ask the researcher teammate to shut down

169```

170 

171O líder envia uma solicitação de encerramento. O companheiro de equipe pode aprovar, saindo graciosamente, ou rejeitar com uma explicação.

172 

173### Limpar a equipe

174 

175Quando você terminar, peça ao líder para limpar:

176 

177```text theme={null}

178Clean up the team

179```

180 

181Isso remove os recursos compartilhados da equipe. Quando o líder executa a limpeza, ele verifica se há companheiros de equipe ativos e falha se algum ainda estiver em execução, então encerre-os primeiro.

182 

183<Warning>

184 Sempre use o líder para limpar. Os companheiros de equipe não devem executar limpeza porque seu contexto de equipe pode não ser resolvido corretamente, deixando potencialmente recursos em um estado inconsistente.

185</Warning>

186 

187### Aplicar gates de qualidade com hooks

188 

189Use [hooks](/pt/hooks) para aplicar regras quando os companheiros de equipe terminam o trabalho ou as tarefas são criadas ou concluídas:

190 

191* [`TeammateIdle`](/pt/hooks#teammateidle): é executado quando um companheiro de equipe está prestes a ficar ocioso. Saia com código 2 para enviar feedback e manter o companheiro de equipe trabalhando.

192* [`TaskCreated`](/pt/hooks#taskcreated): é executado quando uma tarefa está sendo criada. Saia com código 2 para evitar criação e enviar feedback.

193* [`TaskCompleted`](/pt/hooks#taskcompleted): é executado quando uma tarefa está sendo marcada como concluída. Saia com código 2 para evitar conclusão e enviar feedback.

194 

195## Como funcionam as equipes de agentes

196 

197Esta seção cobre a arquitetura e a mecânica por trás das equipes de agentes. Se você quiser começar a usá-las, veja [Controle sua equipe de agentes](#control-your-agent-team) acima.

198 

199### Como Claude inicia equipes de agentes

200 

201Existem duas maneiras pelas quais as equipes de agentes começam:

202 

203* **Você solicita uma equipe**: dê ao Claude uma tarefa que se beneficie do trabalho paralelo e peça explicitamente uma equipe de agentes. Claude cria uma com base em suas instruções.

204* **Claude propõe uma equipe**: se Claude determinar que sua tarefa se beneficiaria do trabalho paralelo, pode sugerir criar uma equipe. Você confirma antes que ele proceda.

205 

206Em ambos os casos, você permanece no controle. Claude não criará uma equipe sem sua aprovação.

207 

208### Arquitetura

209 

210Uma equipe de agentes consiste em:

211 

212| Componente | Papel |

213| :------------ | :-------------------------------------------------------------------------------------------------- |

214| **Team lead** | A sessão Claude Code principal que cria a equipe, gera companheiros de equipe e coordena o trabalho |

215| **Teammates** | Instâncias Claude Code separadas que cada uma trabalha em tarefas atribuídas |

216| **Task list** | Lista compartilhada de itens de trabalho que os companheiros de equipe reivindicam e completam |

217| **Mailbox** | Sistema de mensagens para comunicação entre agentes |

218 

219Veja [Escolha um modo de exibição](#choose-a-display-mode) para opções de configuração de exibição. As mensagens dos companheiros de equipe chegam ao líder automaticamente.

220 

221O sistema gerencia dependências de tarefas automaticamente. Quando um companheiro de equipe completa uma tarefa da qual outras tarefas dependem, as tarefas bloqueadas são desbloqueadas sem intervenção manual.

222 

223Equipes e tarefas são armazenadas localmente:

224 

225* **Team config**: `~/.claude/teams/{team-name}/config.json`

226* **Task list**: `~/.claude/tasks/{team-name}/`

227 

228Claude Code gera ambas automaticamente quando você cria uma equipe e as atualiza conforme os companheiros de equipe entram, ficam ociosos ou saem. A configuração da equipe contém estado de tempo de execução, como IDs de sessão e IDs de painel tmux, então não a edite manualmente ou a crie previamente: suas alterações são sobrescritas na próxima atualização de estado.

229 

230Para definir papéis de companheiros de equipe reutilizáveis, use [definições de subagent](#use-subagent-definitions-for-teammates) em vez disso.

231 

232A configuração da equipe contém um array `members` com o nome de cada companheiro de equipe, ID do agente e tipo de agente. Os companheiros de equipe podem ler este arquivo para descobrir outros membros da equipe.

233 

234Não há equivalente em nível de projeto da configuração da equipe. Um arquivo como `.claude/teams/teams.json` no seu diretório de projeto não é reconhecido como configuração; Claude o trata como um arquivo ordinário.

235 

236### Usar definições de subagent para companheiros de equipe

237 

238Ao gerar um companheiro de equipe, você pode referenciar um tipo de [subagent](/pt/sub-agents) de qualquer [escopo de subagent](/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.

239 

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

241 

242```text theme={null}

243Spawn a teammate using the security-reviewer agent type to audit the auth module.

244```

245 

246O companheiro de equipe honra a lista de permissão `tools` dessa definição e `model`, e o corpo da definição é anexado ao prompt do sistema do companheiro de equipe como instruções adicionais em vez de substituí-lo. Ferramentas de coordenação de equipe como `SendMessage` e as ferramentas de gerenciamento de tarefas estão sempre disponíveis para um companheiro de equipe, mesmo quando `tools` restringe outras ferramentas.

247 

248<Note>

249 Os campos frontmatter `skills` e `mcpServers` em uma definição de subagent não são aplicados quando essa definição é executada como um companheiro de equipe. Os companheiros de equipe carregam skills e MCP servers de suas configurações de projeto e usuário, assim como uma sessão regular.

250</Note>

251 

252### Permissões

253 

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

255 

256### Context e comunicação

257 

258Cada companheiro de equipe tem sua própria context window. Quando gerado, um companheiro de equipe carrega o mesmo contexto de projeto que uma sessão regular: CLAUDE.md, MCP servers e skills. Ele também recebe o prompt de geração do líder. O histórico de conversa do líder não é transferido.

259 

260**Como os companheiros de equipe compartilham informações:**

261 

262* **Entrega automática de mensagens**: quando os companheiros de equipe enviam mensagens, elas são entregues automaticamente aos destinatários. O líder não precisa fazer polling para atualizações.

263* **Notificações de ociosidade**: quando um companheiro de equipe termina e para, ele notifica automaticamente o líder.

264* **Lista de tarefas compartilhada**: todos os agentes podem ver o status da tarefa e reivindicar trabalho disponível.

265* **Mensagens de companheiros de equipe**: envie uma mensagem para um companheiro de equipe específico pelo nome. Para alcançar todos, envie uma mensagem por destinatário.

266 

267O líder atribui a cada companheiro de equipe um nome quando o gera, e qualquer companheiro de equipe pode enviar mensagens para qualquer outro por esse nome. Para obter nomes previsíveis que você possa referenciar em prompts posteriores, diga ao líder como chamar cada companheiro de equipe em sua instrução de geração.

268 

269### Uso de tokens

270 

271Equipes de agentes usam significativamente mais tokens do que uma única sessão. Cada companheiro de equipe tem sua própria context window, e o uso de tokens escala com o número de companheiros de equipe ativos. Para pesquisa, revisão e trabalho de novos recursos, os tokens extras geralmente valem a pena. Para tarefas rotineiras, uma única sessão é mais econômica. Veja [custos de token de equipe de agentes](/pt/costs#agent-team-token-costs) para orientação de uso.

272 

273## Exemplos de casos de uso

274 

275Estes exemplos mostram como as equipes de agentes lidam com tarefas onde a exploração paralela adiciona valor.

276 

277### Executar uma revisão de código paralela

278 

279Um único revisor tende a gravitar em torno de um tipo de problema por vez. Dividir critérios de revisão em domínios independentes significa que segurança, desempenho e cobertura de testes recebem atenção completa simultaneamente. O prompt atribui a cada companheiro de equipe uma lente distinta para que não se sobreponham:

280 

281```text theme={null}

282Create an agent team to review PR #142. Spawn three reviewers:

283- One focused on security implications

284- One checking performance impact

285- One validating test coverage

286Have them each review and report findings.

287```

288 

289Cada revisor trabalha a partir do mesmo PR, mas aplica um filtro diferente. O líder sintetiza descobertas em todos os três após terminarem.

290 

291### Investigar com hipóteses concorrentes

292 

293Quando a causa raiz é incerta, um único agente tende a encontrar uma explicação plausível e parar de procurar. O prompt combate isso tornando os companheiros de equipe explicitamente adversários: o trabalho de cada um não é apenas investigar sua própria teoria, mas desafiar as dos outros.

294 

295```text theme={null}

296Users report the app exits after one message instead of staying connected.

297Spawn 5 agent teammates to investigate different hypotheses. Have them talk to

298each other to try to disprove each other's theories, like a scientific

299debate. Update the findings doc with whatever consensus emerges.

300```

301 

302A estrutura de debate é o mecanismo-chave aqui. A investigação sequencial sofre de ancoragem: uma vez que uma teoria é explorada, a investigação subsequente é enviesada em relação a ela.

303 

304Com múltiplos investigadores independentes tentando ativamente desprovar uns aos outros, a teoria que sobrevive é muito mais provável de ser a causa raiz real.

305 

306## Melhores práticas

307 

308### Dê aos companheiros de equipe contexto suficiente

309 

310Os companheiros de equipe carregam contexto de projeto automaticamente, incluindo CLAUDE.md, MCP servers e skills, mas não herdam o histórico de conversa do líder. Veja [Context e comunicação](#context-and-communication) para detalhes. Inclua detalhes específicos da tarefa no prompt de geração:

311 

312```text theme={null}

313Spawn a security reviewer teammate with the prompt: "Review the authentication module

314at src/auth/ for security vulnerabilities. Focus on token handling, session

315management, and input validation. The app uses JWT tokens stored in

316httpOnly cookies. Report any issues with severity ratings."

317```

318 

319### Escolha um tamanho de equipe apropriado

320 

321Não há limite rígido no número de companheiros de equipe, mas restrições práticas se aplicam:

322 

323* **Custos de token escalam linearmente**: cada companheiro de equipe tem sua própria context window e consome tokens independentemente. Veja [custos de token de equipe de agentes](/pt/costs#agent-team-token-costs) para detalhes.

324* **Sobrecarga de coordenação aumenta**: mais companheiros de equipe significa mais comunicação, coordenação de tarefas e potencial para conflitos

325* **Retornos decrescentes**: além de um certo ponto, companheiros de equipe adicionais não aceleram o trabalho proporcionalmente

326 

327Comece com 3-5 companheiros de equipe para a maioria dos fluxos de trabalho. Isso equilibra o trabalho paralelo com coordenação gerenciável. Os exemplos neste guia usam 3-5 companheiros de equipe porque esse intervalo funciona bem em diferentes tipos de tarefas.

328 

329Ter 5-6 [tasks](/pt/agent-teams#architecture) por companheiro de equipe mantém todos produtivos sem alternância de contexto excessiva. Se você tiver 15 tarefas independentes, 3 companheiros de equipe é um bom ponto de partida.

330 

331Escale apenas quando o trabalho genuinamente se beneficiar de ter companheiros de equipe trabalhando simultaneamente. Três companheiros de equipe focados frequentemente superam cinco dispersos.

332 

333### Dimensione tarefas apropriadamente

334 

335* **Muito pequeno**: sobrecarga de coordenação excede o benefício

336* **Muito grande**: companheiros de equipe trabalham muito tempo sem check-ins, aumentando o risco de esforço desperdiçado

337* **Bem dimensionado**: unidades auto-contidas que produzem um entregável claro, como uma função, um arquivo de teste ou uma revisão

338 

339<Tip>

340 O líder divide o trabalho em tarefas e as atribui aos companheiros de equipe automaticamente. Se não estiver criando tarefas suficientes, peça a ele para dividir o trabalho em pedaços menores. Ter 5-6 tarefas por companheiro de equipe mantém todos produtivos e permite que o líder reatribua trabalho se alguém ficar preso.

341</Tip>

342 

343### Espere os companheiros de equipe terminarem

344 

345Às vezes, o líder começa a implementar tarefas em vez de esperar pelos companheiros de equipe. Se você notar isso:

346 

347```text theme={null}

348Wait for your teammates to complete their tasks before proceeding

349```

350 

351### Comece com pesquisa e revisão

352 

353Se você é novo em equipes de agentes, comece com tarefas que têm limites claros e não requerem escrever código: revisar um PR, pesquisar uma biblioteca ou investigar um bug. Essas tarefas mostram o valor da exploração paralela sem os desafios de coordenação que vêm com a implementação paralela.

354 

355### Evite conflitos de arquivo

356 

357Dois companheiros de equipe editando o mesmo arquivo leva a sobrescrita. Divida o trabalho para que cada companheiro de equipe possua um conjunto diferente de arquivos.

358 

359### Monitore e direcione

360 

361Verifique o progresso dos companheiros de equipe, redirecione abordagens que não estão funcionando e sintetize descobertas conforme chegam. Deixar uma equipe executar sem supervisão por muito tempo aumenta o risco de esforço desperdiçado.

362 

363## Troubleshooting

364 

365### Companheiros de equipe não aparecem

366 

367Se os companheiros de equipe não aparecerem depois que você pedir ao Claude para criar uma equipe:

368 

369* No modo in-process, os companheiros de equipe podem já estar em execução, mas não visíveis. Pressione Shift+Down para percorrer os companheiros de equipe ativos.

370* Verifique se a tarefa que você deu ao Claude era complexa o suficiente para justificar uma equipe. Claude decide se deve gerar companheiros de equipe com base na tarefa.

371* Se você explicitamente solicitou split panes, certifique-se de que tmux está instalado e disponível no seu PATH:

372 ```bash theme={null}

373 which tmux

374 ```

375* Para iTerm2, verifique se o CLI `it2` está instalado e a API Python está ativada nas preferências do iTerm2.

376 

377### Muitos prompts de permissão

378 

379Solicitações de permissão de companheiros de equipe surgem para o líder, o que pode criar atrito. Pré-aprove operações comuns nas suas [configurações de permissão](/pt/permissions) antes de gerar companheiros de equipe para reduzir interrupções.

380 

381### Companheiros de equipe parando em erros

382 

383Os companheiros de equipe podem parar após encontrar erros em vez de se recuperar. Verifique sua saída usando Shift+Down no modo in-process ou clicando no painel no modo split, depois:

384 

385* Dê a eles instruções adicionais diretamente

386* Gere um companheiro de equipe de substituição para continuar o trabalho

387 

388### Líder encerra antes do trabalho estar pronto

389 

390O líder pode decidir que a equipe terminou antes de todas as tarefas estarem realmente completas. Se isso acontecer, diga a ele para continuar. Você também pode dizer ao líder para esperar os companheiros de equipe terminarem antes de prosseguir se ele começar a fazer trabalho em vez de delegar.

391 

392### Sessões tmux órfãs

393 

394Se uma sessão tmux persistir após a equipe terminar, pode não ter sido totalmente limpa. Liste as sessões e mate a criada pela equipe:

395 

396```bash theme={null}

397tmux ls

398tmux kill-session -t <session-name>

399```

400 

401## Limitações

402 

403Equipes de agentes são experimentais. Limitações atuais a serem observadas:

404 

405* **Sem retomada de sessão com companheiros de equipe in-process**: `/resume` e `/rewind` não restauram companheiros de equipe in-process. Após retomar uma sessão, o líder pode tentar enviar mensagens para companheiros de equipe que não existem mais. Se isso acontecer, diga ao líder para gerar novos companheiros de equipe.

406* **Status da tarefa pode ficar atrasado**: os companheiros de equipe às vezes falham em marcar tarefas como concluídas, o que bloqueia tarefas dependentes. Se uma tarefa parecer presa, verifique se o trabalho está realmente pronto e atualize o status da tarefa manualmente ou diga ao líder para dar um empurrão ao companheiro de equipe.

407* **Encerramento pode ser lento**: os companheiros de equipe terminam sua solicitação atual ou chamada de ferramenta antes de encerrar, o que pode levar tempo.

408* **Uma equipe por sessão**: um líder pode gerenciar apenas uma equipe por vez. Limpe a equipe atual antes de iniciar uma nova.

409* **Sem equipes aninhadas**: os companheiros de equipe não podem gerar suas próprias equipes ou companheiros de equipe. Apenas o líder pode gerenciar a equipe.

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

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

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

413 

414<Tip>

415 **`CLAUDE.md` funciona normalmente**: os companheiros de equipe leem arquivos `CLAUDE.md` de seu diretório de trabalho. Use isso para fornecer orientação específica do projeto a todos os companheiros de equipe.

416</Tip>

417 

418## Próximos passos

419 

420Explore abordagens relacionadas para trabalho paralelo e delegação:

421 

422* **Delegação leve**: [subagents](/pt/sub-agents) geram agentes auxiliares para pesquisa ou verificação dentro de sua sessão, melhor para tarefas que não precisam de coordenação entre agentes

423* **Sessões paralelas manuais**: [Git worktrees](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) permitem que você execute múltiplas sessões Claude Code você mesmo sem coordenação de equipe automatizada

424* **Comparar abordagens**: veja a comparação [subagent vs agent team](/pt/features-overview#compare-similar-features) para um detalhamento lado a lado

amazon-bedrock.md +589 −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 Amazon Bedrock

6 

7> Saiba como configurar Claude Code através do Amazon Bedrock, incluindo configuração, configuração de IAM e resolução de problemas.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="bedrock" />} />

190 

191## Pré-requisitos

192 

193Antes de configurar Claude Code com Bedrock, certifique-se de que você tem:

194 

195* Uma conta AWS com acesso ao Bedrock habilitado

196* Acesso aos modelos Claude desejados (por exemplo, Claude Sonnet 4.6) no Bedrock

197* AWS CLI instalado e configurado (opcional - necessário apenas se você não tiver outro mecanismo para obter credenciais)

198* Permissões IAM apropriadas

199 

200Para entrar com suas próprias credenciais do Bedrock, siga [Entrar com Bedrock](#sign-in-with-bedrock) abaixo. Para implantar Claude Code em toda uma equipe, use as etapas de [configuração manual](#set-up-manually) e [fixe suas versões de modelo](#4-pin-model-versions) antes de fazer o lançamento.

201 

202## Entrar com Bedrock

203 

204Se você tem credenciais AWS e quer começar a usar Claude Code através do Bedrock, o assistente de login o guia através disso. Você completa os pré-requisitos do lado AWS uma vez por conta; o assistente cuida do lado do Claude Code.

205 

206<Steps>

207 <Step title="Habilitar modelos Anthropic em sua conta AWS">

208 No [console do Amazon Bedrock](https://console.aws.amazon.com/bedrock/), abra o catálogo de modelos, selecione um modelo Anthropic e envie o formulário de caso de uso. O acesso é concedido imediatamente após o envio. Veja [Enviar detalhes do caso de uso](#1-submit-use-case-details) para AWS Organizations e [configuração de IAM](#iam-configuration) para as permissões que sua função precisa.

209 </Step>

210 

211 <Step title="Iniciar Claude Code e escolher Bedrock">

212 Execute `claude`. No prompt de login, selecione **plataforma de terceiros**, depois **Amazon Bedrock**.

213 </Step>

214 

215 <Step title="Seguir os prompts do assistente">

216 Escolha como você se autentica na AWS: um perfil AWS detectado do seu diretório `~/.aws`, uma chave de API do Bedrock, uma chave de acesso e segredo, ou credenciais já em seu ambiente. O assistente pega sua região, verifica quais modelos Claude sua conta pode invocar e permite que você os fixe. Ele salva o resultado no bloco `env` do seu [arquivo de configurações do usuário](/pt/settings), para que você não precise exportar variáveis de ambiente você mesmo.

217 </Step>

218</Steps>

219 

220Depois de entrar, execute `/setup-bedrock` a qualquer momento para reabrir o assistente e alterar suas credenciais, região ou fixações de modelo.

221 

222## Configurar manualmente

223 

224Para configurar Bedrock através de variáveis de ambiente em vez do assistente, por exemplo em CI ou um lançamento empresarial com script, siga as etapas abaixo.

225 

226### 1. Enviar detalhes do caso de uso

227 

228Os usuários pela primeira vez dos modelos Anthropic são obrigados a enviar detalhes do caso de uso antes de invocar um modelo. Isso é feito uma vez por conta AWS.

229 

2301. Certifique-se de que você tem as permissões IAM corretas descritas abaixo

2312. Navegue até o [console do Amazon Bedrock](https://console.aws.amazon.com/bedrock/)

2323. Selecione um modelo Anthropic do **catálogo de modelos**

2334. Complete o formulário de caso de uso. O acesso é concedido imediatamente após o envio.

234 

235Se você usar AWS Organizations, você pode enviar o formulário uma vez da conta de gerenciamento usando a [API `PutUseCaseForModelAccess`](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html). Esta chamada requer a permissão IAM `bedrock:PutUseCaseForModelAccess`. A aprovação se estende às contas filhas automaticamente.

236 

237### 2. Configurar credenciais AWS

238 

239Claude Code usa a cadeia de credenciais padrão do AWS SDK. Configure suas credenciais usando um destes métodos:

240 

241**Opção A: Configuração da AWS CLI**

242 

243```bash theme={null}

244aws configure

245```

246 

247**Opção B: Variáveis de ambiente (chave de acesso)**

248 

249```bash theme={null}

250export AWS_ACCESS_KEY_ID=your-access-key-id

251export AWS_SECRET_ACCESS_KEY=your-secret-access-key

252export AWS_SESSION_TOKEN=your-session-token

253```

254 

255**Opção C: Variáveis de ambiente (perfil SSO)**

256 

257```bash theme={null}

258aws sso login --profile=<your-profile-name>

259 

260export AWS_PROFILE=your-profile-name

261```

262 

263**Opção D: Credenciais do AWS Management Console**

264 

265```bash theme={null}

266aws login

267```

268 

269[Saiba mais](https://docs.aws.amazon.com/signin/latest/userguide/command-line-sign-in.html) sobre `aws login`.

270 

271**Opção E: Chaves de API do Bedrock**

272 

273```bash theme={null}

274export AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-key

275```

276 

277As chaves de API do Bedrock fornecem um método de autenticação mais simples sem precisar de credenciais AWS completas. [Saiba mais sobre chaves de API do Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/).

278 

279#### Configuração avançada de credenciais

280 

281Claude Code suporta atualização automática de credenciais para AWS SSO e provedores de identidade corporativa. Adicione estas configurações ao seu arquivo de configurações do Claude Code (veja [Configurações](/pt/settings) para localizações de arquivo).

282 

283Quando Claude Code detecta que suas credenciais AWS expiraram (localmente com base em seu timestamp ou quando Bedrock retorna um erro de credencial), ele executará automaticamente seus comandos `awsAuthRefresh` e/ou `awsCredentialExport` configurados para obter novas credenciais antes de tentar novamente a solicitação.

284 

285##### Exemplo de configuração

286 

287```json theme={null}

288{

289 "awsAuthRefresh": "aws sso login --profile myprofile",

290 "env": {

291 "AWS_PROFILE": "myprofile"

292 }

293}

294```

295 

296##### Configurações explicadas

297 

298**`awsAuthRefresh`**: Use isso para comandos que modificam o diretório `.aws`, como atualizar credenciais, cache SSO ou arquivos de configuração. A saída do comando é exibida ao usuário, mas entrada interativa não é suportada. Isso funciona bem para fluxos SSO baseados em navegador onde a CLI exibe uma URL ou código e você completa a autenticação no navegador.

299 

300**`awsCredentialExport`**: Use apenas se você não puder modificar `.aws` e deve retornar credenciais diretamente. A saída é capturada silenciosamente e não é mostrada ao usuário. O comando deve gerar JSON neste formato:

301 

302```json theme={null}

303{

304 "Credentials": {

305 "AccessKeyId": "value",

306 "SecretAccessKey": "value",

307 "SessionToken": "value"

308 }

309}

310```

311 

312### 3. Configurar Claude Code

313 

314Defina as seguintes variáveis de ambiente para habilitar Bedrock:

315 

316```bash theme={null}

317# Habilitar integração Bedrock

318export CLAUDE_CODE_USE_BEDROCK=1

319export AWS_REGION=us-east-1 # ou sua região preferida

320 

321# Opcional: Substituir a região para o modelo pequeno/rápido (Haiku).

322# Também se aplica ao Bedrock Mantle.

323export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2

324 

325# Opcional: Substituir a URL do endpoint Bedrock para endpoints personalizados ou gateways

326# export ANTHROPIC_BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com

327```

328 

329Ao habilitar Bedrock para Claude Code, tenha em mente o seguinte:

330 

331* `AWS_REGION` é uma variável de ambiente obrigatória. Claude Code não lê do arquivo de configuração `.aws` para esta configuração.

332* Ao usar Bedrock, os comandos `/login` e `/logout` são desabilitados, pois a autenticação é tratada através de credenciais AWS.

333* 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 [Configurações](/pt/settings) para mais informações.

334 

335### 4. Fixar versões de modelo

336 

337<Warning>

338 Fixe versões de modelo específicas ao implantar para vários usuários. Sem fixação, aliases de modelo como `sonnet` e `opus` resolvem para a versão mais recente, que pode não estar disponível em sua conta Bedrock quando Anthropic lançar uma atualização. Claude Code [volta](#startup-model-checks) para a versão anterior na inicialização quando a versão mais recente não está disponível, mas fixação permite que você controle quando seus usuários se movem para um novo modelo.

339</Warning>

340 

341Defina estas variáveis de ambiente para IDs de modelo Bedrock específicos.

342 

343Sem `ANTHROPIC_DEFAULT_OPUS_MODEL`, o alias `opus` no Bedrock resolve para Opus 4.6. Defina-o para o ID do Opus 4.7 para usar o modelo mais recente:

344 

345```bash theme={null}

346export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'

347export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'

348export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

349```

350 

351Estas variáveis usam IDs de perfil de inferência entre regiões (com o prefixo `us.`). Se você usar um prefixo de região diferente ou perfis de inferência de aplicação, ajuste de acordo. Para IDs de modelo atuais e legados, veja [Visão geral de modelos](https://platform.claude.com/docs/en/about-claude/models/overview). Veja [Configuração de modelo](/pt/model-config#pin-models-for-third-party-deployments) para a lista completa de variáveis de ambiente.

352 

353Claude Code usa estes modelos padrão quando nenhuma variável de fixação está definida:

354 

355| Tipo de modelo | Valor padrão |

356| :-------------------- | :--------------------------------------------- |

357| Modelo primário | `us.anthropic.claude-sonnet-4-5-20250929-v1:0` |

358| Modelo pequeno/rápido | `us.anthropic.claude-haiku-4-5-20251001-v1:0` |

359 

360Para personalizar modelos ainda mais, use um destes métodos:

361 

362```bash theme={null}

363# Usando ID de perfil de inferência

364export ANTHROPIC_MODEL='global.anthropic.claude-sonnet-4-6'

365export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

366 

367# Usando ARN de perfil de inferência de aplicação

368export ANTHROPIC_MODEL='arn:aws:bedrock:us-east-2:your-account-id:application-inference-profile/your-model-id'

369 

370# Opcional: Desabilitar cache de prompt se necessário

371export DISABLE_PROMPT_CACHING=1

372 

373# Opcional: Solicitar TTL de cache de prompt de 1 hora em vez do padrão de 5 minutos

374export ENABLE_PROMPT_CACHING_1H=1

375```

376 

377<Note>[Cache de prompt](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) pode não estar disponível em todas as regiões. Gravações de cache com TTL de 1 hora são cobradas a uma taxa mais alta do que gravações de 5 minutos.</Note>

378 

379#### Mapear cada versão de modelo para um perfil de inferência

380 

381As variáveis de ambiente `ANTHROPIC_DEFAULT_*_MODEL` configuram um perfil de inferência por família de modelo. Se sua organização precisa expor várias versões da mesma família no seletor `/model`, cada uma roteada para seu próprio ARN de perfil de inferência de aplicação, use a configuração `modelOverrides` em seu [arquivo de configurações](/pt/settings#settings-files) em vez disso.

382 

383Este exemplo mapeia quatro versões de Opus para ARNs distintos para que os usuários possam alternar entre elas sem contornar os perfis de inferência de sua organização:

384 

385```json theme={null}

386{

387 "modelOverrides": {

388 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-47-prod",

389 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

390 "claude-opus-4-5-20251101": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-45-prod",

391 "claude-opus-4-1-20250805": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-41-prod"

392 }

393}

394```

395 

396Quando um usuário seleciona uma dessas versões em `/model`, Claude Code chama Bedrock com o ARN mapeado. Versões sem uma substituição voltam para o ID de modelo Bedrock integrado ou qualquer perfil de inferência correspondente descoberto na inicialização. Veja [Substituir IDs de modelo por versão](/pt/model-config#override-model-ids-per-version) para detalhes sobre como as substituições interagem com `availableModels` e outras configurações de modelo.

397 

398## Verificações de modelo na inicialização

399 

400Quando Claude Code inicia com Bedrock configurado, ele verifica que os modelos que pretende usar estão acessíveis em sua conta. Esta verificação requer Claude Code v2.1.94 ou posterior.

401 

402Se você fixou uma versão de modelo que é mais antiga do que o padrão atual do Claude Code, e sua conta pode invocar a versão mais recente, Claude Code o solicita a atualizar a fixação. Aceitar escreve o novo ID de modelo em seu [arquivo de configurações do usuário](/pt/settings) e reinicia Claude Code. Recusar é lembrado até a próxima mudança de versão padrão. Fixações que apontam para um [ARN de perfil de inferência de aplicação](#map-each-model-version-to-an-inference-profile) são ignoradas, pois são gerenciadas pelo seu administrador.

403 

404Se você não fixou um modelo e o padrão atual não está disponível em sua conta, Claude Code volta para a versão anterior para a sessão atual e mostra um aviso. O fallback não é persistido. Habilite o modelo mais recente em sua conta Bedrock ou [fixe uma versão](#4-pin-model-versions) para tornar a escolha permanente.

405 

406## Configuração de IAM

407 

408Crie uma política de IAM com as permissões necessárias para Claude Code:

409 

410```json theme={null}

411{

412 "Version": "2012-10-17",

413 "Statement": [

414 {

415 "Sid": "AllowModelAndInferenceProfileAccess",

416 "Effect": "Allow",

417 "Action": [

418 "bedrock:InvokeModel",

419 "bedrock:InvokeModelWithResponseStream",

420 "bedrock:ListInferenceProfiles",

421 "bedrock:GetInferenceProfile"

422 ],

423 "Resource": [

424 "arn:aws:bedrock:*:*:inference-profile/*",

425 "arn:aws:bedrock:*:*:application-inference-profile/*",

426 "arn:aws:bedrock:*:*:foundation-model/*"

427 ]

428 },

429 {

430 "Sid": "AllowMarketplaceSubscription",

431 "Effect": "Allow",

432 "Action": [

433 "aws-marketplace:ViewSubscriptions",

434 "aws-marketplace:Subscribe"

435 ],

436 "Resource": "*",

437 "Condition": {

438 "StringEquals": {

439 "aws:CalledViaLast": "bedrock.amazonaws.com"

440 }

441 }

442 }

443 ]

444}

445```

446 

447Para permissões mais restritivas, você pode limitar o Resource para ARNs de perfil de inferência específicos.

448 

449`bedrock:GetInferenceProfile` permite que Claude Code resolva um [ARN de perfil de inferência de aplicação](#map-each-model-version-to-an-inference-profile) para seu modelo de fundação de suporte, que é usado para selecionar a forma de solicitação correta para esse modelo.

450 

451Se o token não tiver essa permissão, Claude Code se recupera automaticamente tentando novamente uma vez com a forma alternativa, portanto as solicitações ainda têm sucesso, mas cada novo modelo adiciona uma viagem extra. Conceder a permissão evita a tentativa novamente. Isso se aplica com mais frequência a implantações `AWS_BEARER_TOKEN_BEDROCK`, onde a política do token é normalmente mais restrita do que uma função IAM completa.

452 

453Para detalhes, veja [documentação de IAM do Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html).

454 

455<Note>

456 Crie uma conta AWS dedicada para Claude Code para simplificar o rastreamento de custos e controle de acesso.

457</Note>

458 

459## Janela de contexto de 1M de tokens

460 

461Claude Opus 4.7, Opus 4.6 e Sonnet 4.6 suportam a [janela de contexto de 1M de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) no Amazon Bedrock. Claude Code habilita automaticamente a janela de contexto estendida quando você seleciona uma variante de modelo de 1M.

462 

463O [assistente de configuração](#sign-in-with-bedrock) oferece uma opção de contexto de 1M quando fixa modelos. Para habilitá-lo para um modelo fixado manualmente em vez disso, acrescente `[1m]` ao ID do modelo. Veja [Fixar modelos para implantações de terceiros](/pt/model-config#pin-models-for-third-party-deployments) para detalhes.

464 

465## AWS Guardrails

466 

467[Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) permitem que você implemente filtragem de conteúdo para Claude Code. Crie um Guardrail no [console do Amazon Bedrock](https://console.aws.amazon.com/bedrock/), publique uma versão, então adicione os cabeçalhos do Guardrail ao seu [arquivo de configurações](/pt/settings). Habilite inferência entre regiões em seu Guardrail se você estiver usando perfis de inferência entre regiões.

468 

469Exemplo de configuração:

470 

471```json theme={null}

472{

473 "env": {

474 "ANTHROPIC_CUSTOM_HEADERS": "X-Amzn-Bedrock-GuardrailIdentifier: your-guardrail-id\nX-Amzn-Bedrock-GuardrailVersion: 1"

475 }

476}

477```

478 

479## Usar o endpoint Mantle

480 

481Mantle é um endpoint do Amazon Bedrock que serve modelos Claude através da forma de API Anthropic nativa em vez da API Invoke do Bedrock. Ele usa as mesmas credenciais AWS, permissões IAM e configuração `awsAuthRefresh` descritas anteriormente nesta página.

482 

483<Note>

484 Mantle requer Claude Code v2.1.94 ou posterior. Execute `claude --version` para verificar.

485</Note>

486 

487### Habilitar Mantle

488 

489Com credenciais AWS já configuradas, defina `CLAUDE_CODE_USE_MANTLE` para rotear solicitações para o endpoint Mantle:

490 

491```bash theme={null}

492export CLAUDE_CODE_USE_MANTLE=1

493export AWS_REGION=us-east-1

494```

495 

496Claude Code constrói a URL do endpoint a partir de `AWS_REGION`. Para substituí-la por um endpoint personalizado ou gateway, defina `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.

497 

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

499 

500### Selecionar um modelo Mantle

501 

502Mantle usa IDs de modelo com prefixo `anthropic.` e sem sufixo de versão, por exemplo `anthropic.claude-haiku-4-5`. Os modelos disponíveis para sua conta dependem do que sua organização foi concedida; IDs de modelo adicionais estão listados em seus materiais de integração da AWS. Entre em contato com sua equipe de conta AWS para solicitar acesso aos modelos permitidos.

503 

504Defina o modelo com a flag `--model` ou com `/model` dentro do Claude Code:

505 

506```bash theme={null}

507claude --model anthropic.claude-haiku-4-5

508```

509 

510### Executar Mantle junto com a API Invoke

511 

512Os modelos disponíveis para você no Mantle podem não incluir todos os modelos que você usa hoje. Definir tanto `CLAUDE_CODE_USE_BEDROCK` quanto `CLAUDE_CODE_USE_MANTLE` permite que Claude Code chame ambos os endpoints da mesma sessão. IDs de modelo que correspondem ao formato Mantle são roteados para Mantle, e todos os outros IDs de modelo vão para a API Invoke do Bedrock.

513 

514```bash theme={null}

515export CLAUDE_CODE_USE_BEDROCK=1

516export CLAUDE_CODE_USE_MANTLE=1

517```

518 

519Para exibir um modelo Mantle no seletor `/model`, liste seu ID em `availableModels` em seu [arquivo de configurações](/pt/settings). Esta configuração também restringe o seletor às entradas listadas, então inclua cada alias que você quer manter disponível:

520 

521```json theme={null}

522{

523 "availableModels": ["opus", "sonnet", "haiku", "anthropic.claude-haiku-4-5"]

524}

525```

526 

527Entradas com o prefixo `anthropic.` são adicionadas como opções de seletor personalizadas e roteadas para Mantle. Substitua `anthropic.claude-haiku-4-5` pelo ID de modelo que sua conta foi concedida. Veja [Restringir seleção de modelo](/pt/model-config#restrict-model-selection) para como `availableModels` interage com outras configurações de modelo.

528 

529Quando ambos os provedores estão ativos, `/status` mostra `Amazon Bedrock + Amazon Bedrock (Mantle)`.

530 

531### Rotear Mantle através de um gateway

532 

533Se sua organização roteia tráfego de modelo através de um [gateway LLM](/pt/llm-gateway) centralizado que injeta credenciais AWS no lado do servidor, desabilite a autenticação no lado do cliente para que Claude Code envie solicitações sem assinaturas SigV4 ou cabeçalhos `x-api-key`:

534 

535```bash theme={null}

536export CLAUDE_CODE_USE_MANTLE=1

537export CLAUDE_CODE_SKIP_MANTLE_AUTH=1

538export ANTHROPIC_BEDROCK_MANTLE_BASE_URL=https://your-gateway.example.com

539```

540 

541### Variáveis de ambiente Mantle

542 

543Estas variáveis são específicas para o endpoint Mantle. Veja [Variáveis de ambiente](/pt/env-vars) para a lista completa.

544 

545| Variável | Propósito |

546| :-------------------------------------- | :------------------------------------------------------------------------------ |

547| `CLAUDE_CODE_USE_MANTLE` | Habilitar o endpoint Mantle. Defina como `1` ou `true`. |

548| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Substituir a URL do endpoint Mantle padrão |

549| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Pular autenticação no lado do cliente para configurações de proxy |

550| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Substituir região AWS para o modelo da classe Haiku (compartilhado com Bedrock) |

551 

552## Resolução de problemas

553 

554### Loop de autenticação com SSO e proxies corporativos

555 

556Se abas do navegador aparecem repetidamente ao usar AWS SSO, remova a configuração `awsAuthRefresh` do seu [arquivo de configurações](/pt/settings). Isso pode ocorrer quando VPNs corporativas ou proxies de inspeção TLS interrompem o fluxo do navegador SSO. Claude Code trata a conexão interrompida como uma falha de autenticação, executa novamente `awsAuthRefresh` e entra em loop indefinidamente.

557 

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

559 

560### Problemas de região

561 

562Se você encontrar problemas de região:

563 

564* Verifique disponibilidade de modelo: `aws bedrock list-inference-profiles --region your-region`

565* Mude para uma região suportada: `export AWS_REGION=us-east-1`

566* Considere usar perfis de inferência para acesso entre regiões

567 

568Se você receber um erro "on-demand throughput isn't supported":

569 

570* Especifique o modelo como um ID de [perfil de inferência](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

571 

572Claude Code usa a [API Invoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) do Bedrock e não suporta a API Converse.

573 

574### Erros de endpoint Mantle

575 

576Se `/status` não mostra `Amazon Bedrock (Mantle)` depois que você defina `CLAUDE_CODE_USE_MANTLE`, a variável não está chegando ao processo. Confirme que ela é exportada no shell onde você lançou `claude`, ou defina-a no bloco `env` do seu [arquivo de configurações](/pt/settings).

577 

578Um `403` do endpoint Mantle com credenciais válidas significa que sua conta AWS não foi concedida acesso ao modelo que você solicitou. Entre em contato com sua equipe de conta AWS para solicitar acesso.

579 

580Um `400` que nomeia o ID do modelo significa que esse modelo não é servido no Mantle. Mantle tem seu próprio lineup de modelo separado do catálogo Bedrock padrão, então IDs de perfil de inferência como `us.anthropic.claude-sonnet-4-6` não funcionarão. Use um ID de formato Mantle, ou habilite [ambos os endpoints](#run-mantle-alongside-the-invoke-api) para que Claude Code roteia cada solicitação para o endpoint onde o modelo está disponível.

581 

582## Recursos adicionais

583 

584* [Documentação do Bedrock](https://docs.aws.amazon.com/bedrock/)

585* [Preços do Bedrock](https://aws.amazon.com/bedrock/pricing/)

586* [Perfis de inferência do Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

587* [Burndown de token do Bedrock e cotas](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas-token-burndown.html)

588* [Claude Code no Amazon Bedrock: Guia de Configuração Rápida](https://community.aws/content/2tXkZKrZzlrlu0KfH8gST5Dkppq/claude-code-on-amazon-bedrock-quick-setup-guide)

589* [Implementação de Monitoramento do Claude Code (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md)

analytics.md +224 −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# Rastrear o uso da equipe com análise

6 

7> Visualize as métricas de uso do Claude Code, rastreie a adoção e meça a velocidade de engenharia no painel de análise.

8 

9Claude Code fornece painéis de análise para ajudar as organizações a entender os padrões de uso dos desenvolvedores, rastrear métricas de contribuição e medir como Claude Code impacta a velocidade de engenharia. Acesse o painel para seu plano:

10 

11| Plano | URL do Painel | Inclui | Saiba mais |

12| ----------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |

13| Claude for Teams / Enterprise | [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) | Métricas de uso, métricas de contribuição com integração GitHub, leaderboard, exportação de dados | [Detalhes](#access-analytics-for-teams-and-enterprise) |

14| API (Claude Console) | [platform.claude.com/claude-code](https://platform.claude.com/claude-code) | Métricas de uso, rastreamento de gastos, insights da equipe | [Detalhes](#access-analytics-for-api-customers) |

15 

16## Acessar análise para Teams e Enterprise

17 

18Navegue até [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code). Administradores e Proprietários podem visualizar o painel.

19 

20O painel Teams e Enterprise inclui:

21 

22* **Métricas de uso**: linhas de código aceitas, taxa de aceitação de sugestões, usuários ativos diários e sessões

23* **Métricas de contribuição**: PRs e linhas de código enviadas com assistência do Claude Code, com [integração GitHub](#enable-contribution-metrics)

24* **Leaderboard**: principais contribuidores classificados por uso do Claude Code

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

26 

27### Ativar métricas de contribuição

28 

29<Note>

30 As métricas de contribuição estão em beta público e disponíveis nos planos Claude for Teams e Claude for Enterprise. Essas métricas cobrem apenas usuários dentro de sua organização claude.ai. O uso através da API Claude Console ou integrações de terceiros não está incluído.

31</Note>

32 

33Os dados de uso e adoção estão disponíveis para todas as contas Claude for Teams e Claude for Enterprise. As métricas de contribuição requerem configuração adicional para conectar sua organização GitHub.

34 

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

36 

37<Warning>

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

39</Warning>

40 

41<Steps>

42 <Step title="Instalar o aplicativo GitHub">

43 Um administrador GitHub instala o aplicativo Claude GitHub na conta GitHub de sua organização em [github.com/apps/claude](https://github.com/apps/claude).

44 </Step>

45 

46 <Step title="Ativar análise do Claude Code">

47 Um Proprietário Claude navega até [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) e ativa o recurso de análise do Claude Code.

48 </Step>

49 

50 <Step title="Ativar análise do GitHub">

51 Na mesma página, ative o botão "GitHub analytics".

52 </Step>

53 

54 <Step title="Autenticar com GitHub">

55 Conclua o fluxo de autenticação do GitHub e selecione quais organizações GitHub incluir na análise.

56 </Step>

57</Steps>

58 

59Os dados normalmente aparecem dentro de 24 horas após a ativação, com atualizações diárias. Se nenhum dado aparecer, você pode ver uma destas mensagens:

60 

61* **"GitHub app required"**: instale o aplicativo GitHub para visualizar métricas de contribuição

62* **"Data processing in progress"**: verifique novamente em alguns dias e confirme se o aplicativo GitHub está instalado se os dados não aparecerem

63 

64As métricas de contribuição suportam GitHub Cloud e GitHub Enterprise Server.

65 

66### Revisar métricas de resumo

67 

68<Note>

69 Essas métricas são deliberadamente conservadoras e representam uma subestimativa do impacto real do Claude Code. Apenas linhas e PRs onde há alta confiança no envolvimento do Claude Code são contadas.

70</Note>

71 

72O painel exibe essas métricas de resumo no topo:

73 

74* **PRs with CC**: contagem total de pull requests mesclados que contêm pelo menos uma linha de código escrita com Claude Code

75* **Lines of code with CC**: total de linhas de código em todos os PRs mesclados que foram escritos com assistência do Claude Code. Apenas "linhas efetivas" são contadas: linhas com mais de 3 caracteres após normalização, excluindo linhas vazias e linhas com apenas colchetes ou pontuação trivial.

76* **PRs with Claude Code (%)**: percentual de todos os PRs mesclados que contêm código assistido por Claude Code

77* **Suggestion accept rate**: percentual de vezes que os usuários aceitam as sugestões de edição de código do Claude Code, incluindo o uso das ferramentas Edit, Write e NotebookEdit

78* **Lines of code accepted**: total de linhas de código escritas por Claude Code que os usuários aceitaram em suas sessões. Isso exclui sugestões rejeitadas e não rastreia exclusões subsequentes.

79 

80### Explorar os gráficos

81 

82O painel inclui vários gráficos para visualizar tendências ao longo do tempo.

83 

84#### Rastrear adoção

85 

86O gráfico de Adoção mostra tendências de uso diário:

87 

88* **users**: usuários ativos diários

89* **sessions**: número de sessões ativas do Claude Code por dia

90 

91#### Medir PRs por usuário

92 

93Este gráfico exibe a atividade do desenvolvedor individual ao longo do tempo:

94 

95* **PRs per user**: número total de PRs mesclados por dia dividido por usuários ativos diários

96* **users**: usuários ativos diários

97 

98Use isso para entender como a produtividade individual muda conforme a adoção do Claude Code aumenta.

99 

100#### Visualizar detalhamento de pull requests

101 

102O gráfico Pull requests mostra um detalhamento diário de PRs mesclados:

103 

104* **PRs with CC**: pull requests contendo código assistido por Claude Code

105* **PRs without CC**: pull requests sem código assistido por Claude Code

106 

107Alterne para a visualização **Lines of code** para ver o mesmo detalhamento por linhas de código em vez de contagem de PR.

108 

109#### Encontrar principais contribuidores

110 

111O Leaderboard mostra os 10 principais usuários classificados por volume de contribuição. Alterne entre:

112 

113* **Pull requests**: mostra PRs com Claude Code vs Todos os PRs para cada usuário

114* **Lines of code**: mostra linhas com Claude Code vs Todas as linhas para cada usuário

115 

116Clique em **Export all users** para baixar dados de contribuição completos para todos os usuários como um arquivo CSV. A exportação inclui todos os usuários, não apenas os 10 principais exibidos.

117 

118### Atribuição de PR

119 

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

121 

122#### Critérios de marcação

123 

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

125 

126#### Processo de atribuição

127 

128Quando um pull request é mesclado:

129 

1301. Linhas adicionadas são extraídas do diff do PR

1312. Sessões do Claude Code que editaram arquivos correspondentes dentro de uma janela de tempo são identificadas

1323. Linhas de PR são comparadas com a saída do Claude Code usando múltiplas estratégias

1334. Métricas são calculadas para linhas assistidas por IA e linhas totais

134 

135Antes da comparação, as linhas são normalizadas: espaços em branco são aparados, múltiplos espaços são recolhidos, aspas são padronizadas e o texto é convertido para minúsculas.

136 

137Pull requests mesclados contendo linhas assistidas por Claude Code são marcados como `claude-code-assisted` no GitHub.

138 

139#### Janela de tempo

140 

141Sessões de 21 dias antes a 2 dias após a data de mesclagem do PR são consideradas para correspondência de atribuição.

142 

143#### Arquivos excluídos

144 

145Certos arquivos são automaticamente excluídos da análise porque são gerados automaticamente:

146 

147* Arquivos de bloqueio: package-lock.json, yarn.lock, Cargo.lock e similares

148* Código gerado: saídas Protobuf, artefatos de compilação, arquivos minificados

149* Diretórios de compilação: dist/, build/, node\_modules/, target/

150* Fixtures de teste: snapshots, cassettes, dados simulados

151* Linhas com mais de 1.000 caracteres, que provavelmente são minificadas ou geradas

152 

153#### Notas de atribuição

154 

155Tenha em mente esses detalhes adicionais ao interpretar dados de atribuição:

156 

157* Código substancialmente reescrito por desenvolvedores, com mais de 20% de diferença, não é atribuído ao Claude Code

158* Sessões fora da janela de 21 dias não são consideradas

159* O algoritmo não considera o branch de origem ou destino do PR ao executar a atribuição

160 

161### Aproveitar ao máximo a análise

162 

163Use métricas de contribuição para demonstrar ROI, identificar padrões de adoção e encontrar membros da equipe que podem ajudar outros a começar.

164 

165#### Monitorar adoção

166 

167Rastreie o gráfico de Adoção e contagens de usuários para identificar:

168 

169* Usuários ativos que podem compartilhar melhores práticas

170* Tendências gerais de adoção em sua organização

171* Quedas no uso que podem indicar atrito ou problemas

172 

173#### Medir ROI

174 

175As métricas de contribuição ajudam a responder "Esta ferramenta vale o investimento?" com dados de sua própria base de código:

176 

177* Rastreie mudanças em PRs por usuário ao longo do tempo conforme a adoção aumenta

178* Compare PRs e linhas de código enviadas com vs. sem Claude Code

179* Use junto com [métricas DORA](https://dora.dev/), velocidade de sprint ou outros KPIs de engenharia para entender mudanças ao adotar Claude Code

180 

181#### Identificar usuários avançados

182 

183O Leaderboard ajuda você a encontrar membros da equipe com alta adoção do Claude Code que podem:

184 

185* Compartilhar técnicas de prompting e fluxos de trabalho com a equipe

186* Fornecer feedback sobre o que está funcionando bem

187* Ajudar a integrar novos usuários

188 

189#### Acessar dados programaticamente

190 

191Para consultar esses dados através do GitHub, procure por PRs marcados com `claude-code-assisted`.

192 

193## Acessar análise para clientes de API

194 

195Clientes de API usando Claude Console podem acessar análise em [platform.claude.com/claude-code](https://platform.claude.com/claude-code). Você precisa da permissão UsageView para acessar o painel, que é concedida aos papéis Developer, Billing, Admin, Owner e Primary Owner.

196 

197<Note>

198 As métricas de contribuição com integração GitHub não estão disponíveis para clientes de API. O painel Console mostra apenas métricas de uso e gastos.

199</Note>

200 

201O painel Console exibe:

202 

203* **Lines of code accepted**: total de linhas de código escritas por Claude Code que os usuários aceitaram em suas sessões. Isso exclui sugestões rejeitadas e não rastreia exclusões subsequentes.

204* **Suggestion accept rate**: percentual de vezes que os usuários aceitam o uso da ferramenta de edição de código, incluindo as ferramentas Edit, Write e NotebookEdit.

205* **Activity**: usuários ativos diários e sessões mostradas em um gráfico.

206* **Spend**: custos diários da API em dólares ao lado da contagem de usuários.

207 

208### Visualizar insights da equipe

209 

210A tabela de insights da equipe mostra métricas por usuário:

211 

212* **Members**: todos os usuários que se autenticaram no Claude Code. Usuários de chave de API são exibidos por identificador de chave, usuários OAuth são exibidos por endereço de email.

213* **Spend this month**: custos totais da API por usuário para o mês atual.

214* **Lines this month**: total por usuário de linhas de código aceitas para o mês atual.

215 

216<Note>

217 Os valores de gastos no painel Console são estimativas para fins de análise. Para custos reais, consulte sua página de faturamento.

218</Note>

219 

220## Recursos relacionados

221 

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

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

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

authentication.md +155 −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# Autenticação

6 

7> Faça login no Claude Code e configure a autenticação para indivíduos, equipes e organizações.

8 

9Claude Code suporta múltiplos métodos de autenticação dependendo da sua configuração. Usuários individuais podem fazer login com uma conta Claude.ai, enquanto equipes podem usar Claude for Teams ou Enterprise, o Claude Console, ou um provedor de nuvem como Amazon Bedrock, Google Vertex AI ou Microsoft Foundry.

10 

11## Faça login no Claude Code

12 

13Após [instalar Claude Code](/pt/setup#install-claude-code), execute `claude` no seu terminal. No primeiro lançamento, Claude Code abre uma janela do navegador para você fazer login.

14 

15Se o navegador não abrir automaticamente, pressione `c` para copiar a URL de login para sua área de transferência, depois cole-a no seu navegador.

16 

17Se seu navegador mostrar um código de login em vez de redirecionar de volta após você se conectar, cole-o no terminal no prompt `Paste code here if prompted`. Isso acontece quando o navegador não consegue alcançar o servidor de callback local do Claude Code, o que é comum em WSL2, sessões SSH e contêineres.

18 

19Você pode se autenticar com qualquer um destes tipos de conta:

20 

21* **Assinatura Claude Pro ou Max**: faça login com sua conta Claude.ai. Assine em [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max).

22* **Claude for Teams ou Enterprise**: faça login com a conta Claude.ai que seu administrador de equipe o convidou.

23* **Claude Console**: faça login com suas credenciais do Console. Seu administrador deve ter [o convidado](#claude-console-authentication) primeiro.

24* **Provedores de nuvem**: se sua organização usa [Amazon Bedrock](/pt/amazon-bedrock), [Google Vertex AI](/pt/google-vertex-ai) ou [Microsoft Foundry](/pt/microsoft-foundry), defina as variáveis de ambiente necessárias antes de executar `claude`. Nenhum login do navegador é necessário.

25 

26Para fazer logout e se autenticar novamente, digite `/logout` no prompt do Claude Code.

27 

28Se você está tendo problemas para fazer login, consulte [solução de problemas de autenticação](/pt/troubleshoot-install#login-and-authentication).

29 

30## Configure a autenticação da equipe

31 

32Para equipes e organizações, você pode configurar o acesso ao Claude Code de uma destas formas:

33 

34* [Claude for Teams ou Enterprise](#claude-for-teams-or-enterprise), recomendado para a maioria das equipes

35* [Claude Console](#claude-console-authentication)

36* [Amazon Bedrock](/pt/amazon-bedrock)

37* [Google Vertex AI](/pt/google-vertex-ai)

38* [Microsoft Foundry](/pt/microsoft-foundry)

39 

40### Claude for Teams ou Enterprise

41 

42[Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams#team-&-enterprise) e [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise) fornecem a melhor experiência para organizações usando Claude Code. Os membros da equipe obtêm acesso tanto ao Claude Code quanto ao Claude na web com faturamento centralizado e gerenciamento de equipe.

43 

44* **Claude for Teams**: plano de autoatendimento com recursos de colaboração, ferramentas de administração e gerenciamento de faturamento. Melhor para equipes menores.

45* **Claude for Enterprise**: adiciona SSO, captura de domínio, permissões baseadas em funções, API de conformidade e configurações de política gerenciada para configurações de Claude Code em toda a organização. Melhor para organizações maiores com requisitos de segurança e conformidade.

46 

47<Steps>

48 <Step title="Assine">

49 Assine [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams_step#team-&-enterprise) ou entre em contato com vendas para [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise_step).

50 </Step>

51 

52 <Step title="Convide membros da equipe">

53 Convide membros da equipe do painel de administração.

54 </Step>

55 

56 <Step title="Instale e faça login">

57 Os membros da equipe instalam Claude Code e fazem login com suas contas Claude.ai.

58 </Step>

59</Steps>

60 

61### Autenticação do Claude Console

62 

63Para organizações que preferem faturamento baseado em API, você pode configurar o acesso através do Claude Console.

64 

65<Steps>

66 <Step title="Crie ou use uma conta do Console">

67 Use sua conta Claude Console existente ou crie uma nova.

68 </Step>

69 

70 <Step title="Adicione usuários">

71 Você pode adicionar usuários através de qualquer um dos métodos:

72 

73 * Convide usuários em massa de dentro do Console: Settings -> Members -> Invite

74 * [Configure SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)

75 </Step>

76 

77 <Step title="Atribua funções">

78 Ao convidar usuários, atribua uma das seguintes:

79 

80 * **Função Claude Code**: usuários podem apenas criar chaves de API do Claude Code

81 * **Função Developer**: usuários podem criar qualquer tipo de chave de API

82 </Step>

83 

84 <Step title="Usuários completam a configuração">

85 Cada usuário convidado precisa:

86 

87 * Aceitar o convite do Console

88 * [Verificar requisitos do sistema](/pt/setup#system-requirements)

89 * [Instalar Claude Code](/pt/setup#install-claude-code)

90 * Fazer login com credenciais da conta do Console

91 </Step>

92</Steps>

93 

94### Autenticação do provedor de nuvem

95 

96Para equipes usando Amazon Bedrock, Google Vertex AI ou Microsoft Foundry:

97 

98<Steps>

99 <Step title="Siga a configuração do provedor">

100 Siga a [documentação do Bedrock](/pt/amazon-bedrock), [documentação do Vertex](/pt/google-vertex-ai) ou [documentação do Microsoft Foundry](/pt/microsoft-foundry).

101 </Step>

102 

103 <Step title="Distribua a configuração">

104 Distribua as variáveis de ambiente e instruções para gerar credenciais de nuvem para seus usuários. Leia mais sobre como [gerenciar a configuração aqui](/pt/settings).

105 </Step>

106 

107 <Step title="Instale Claude Code">

108 Os usuários podem [instalar Claude Code](/pt/setup#install-claude-code).

109 </Step>

110</Steps>

111 

112## Gerenciamento de credenciais

113 

114Claude Code gerencia com segurança suas credenciais de autenticação:

115 

116* **Local de armazenamento**: no macOS, as credenciais são armazenadas no Keychain do macOS criptografado. No Linux e Windows, as credenciais são armazenadas em `~/.claude/.credentials.json`, ou sob `$CLAUDE_CONFIG_DIR` se essa variável estiver definida. No Linux, o arquivo é escrito com modo `0600`; no Windows, ele herda os controles de acesso do diretório do seu perfil de usuário.

117* **Tipos de autenticação suportados**: credenciais Claude.ai, credenciais da API Claude, Azure Auth, Bedrock Auth e Vertex Auth.

118* **Scripts de credenciais personalizados**: a configuração [`apiKeyHelper`](/pt/settings#available-settings) pode ser configurada para executar um script de shell que retorna uma chave de API.

119* **Intervalos de atualização**: por padrão, `apiKeyHelper` é chamado após 5 minutos ou em resposta HTTP 401. Defina a variável de ambiente `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` para intervalos de atualização personalizados.

120* **Aviso de helper lento**: se `apiKeyHelper` levar mais de 10 segundos para retornar uma chave, Claude Code exibe um aviso na barra de prompt mostrando o tempo decorrido. Se você vir este aviso regularmente, verifique se seu script de credenciais pode ser otimizado.

121 

122`apiKeyHelper`, `ANTHROPIC_API_KEY` e `ANTHROPIC_AUTH_TOKEN` se aplicam apenas a sessões CLI de terminal. Claude Desktop e sessões remotas usam OAuth exclusivamente e não chamam `apiKeyHelper` ou leem variáveis de ambiente de chave de API.

123 

124### Precedência de autenticação

125 

126Quando múltiplas credenciais estão presentes, Claude Code escolhe uma nesta ordem:

127 

1281. Credenciais do provedor de nuvem, quando `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` ou `CLAUDE_CODE_USE_FOUNDRY` está definido. Consulte [integrações de terceiros](/pt/third-party-integrations) para configuração.

1292. Variável de ambiente `ANTHROPIC_AUTH_TOKEN`. Enviada como o cabeçalho `Authorization: Bearer`. Use isso ao rotear através de um [gateway LLM ou proxy](/pt/llm-gateway) que autentica com tokens bearer em vez de chaves de API Anthropic.

1303. Variável de ambiente `ANTHROPIC_API_KEY`. Enviada como o cabeçalho `X-Api-Key`. Use isso para acesso direto à API Anthropic com uma chave do [Claude Console](https://platform.claude.com). No modo interativo, você é solicitado uma vez a aprovar ou recusar a chave, e sua escolha é lembrada. Para alterá-la depois, use o toggle "Use custom API key" em `/config`. No modo não interativo (`-p`), a chave é sempre usada quando presente.

1314. Saída do script [`apiKeyHelper`](/pt/settings#available-settings). Use isso para credenciais dinâmicas ou rotativas, como tokens de curta duração obtidos de um cofre.

1325. Variável de ambiente `CLAUDE_CODE_OAUTH_TOKEN`. Um token OAuth de longa duração gerado por [`claude setup-token`](#generate-a-long-lived-token). Use isso para pipelines de CI e scripts onde login do navegador não está disponível.

1336. Credenciais OAuth de assinatura de `/login`. Este é o padrão para usuários Claude Pro, Max, Team e Enterprise.

134 

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

136 

137[Claude Code na Web](/pt/claude-code-on-the-web) sempre usa suas credenciais de assinatura. `ANTHROPIC_API_KEY` e `ANTHROPIC_AUTH_TOKEN` no ambiente sandbox não as substituem.

138 

139### Gere um token de longa duração

140 

141Para pipelines de CI, scripts ou outros ambientes onde login do navegador interativo não está disponível, gere um token OAuth de um ano com `claude setup-token`:

142 

143```bash theme={null}

144claude setup-token

145```

146 

147O comando o guia através da autorização OAuth e imprime um token no terminal. Ele não salva o token em lugar nenhum; copie-o e defina-o como a variável de ambiente `CLAUDE_CODE_OAUTH_TOKEN` onde você quiser se autenticar:

148 

149```bash theme={null}

150export CLAUDE_CODE_OAUTH_TOKEN=your-token

151```

152 

153Este token se autentica com sua assinatura Claude e requer um plano Pro, Max, Team ou Enterprise. Ele é limitado apenas a inferência e não pode estabelecer sessões de [Remote Control](/pt/remote-control).

154 

155[Bare mode](/pt/headless#start-faster-with-bare-mode) não lê `CLAUDE_CODE_OAUTH_TOKEN`. Se seu script passar `--bare`, autentique com `ANTHROPIC_API_KEY` ou um `apiKeyHelper` em vez disso.

auto-mode-config.md +178 −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 modo automático

6 

7> Diga ao classificador do modo automático quais repositórios, buckets e domínios sua organização confia. Defina o contexto do ambiente, substitua as regras padrão de bloqueio e permissão, e inspecione sua configuração efetiva com os subcomandos CLI do auto mode.

8 

9[Auto mode](/pt/permission-modes#eliminate-prompts-with-auto-mode) permite que Claude Code seja executado sem prompts de permissão, roteando cada chamada de ferramenta através de um classificador que bloqueia qualquer coisa irreversível, destrutiva ou direcionada para fora do seu ambiente. Use o bloco de configurações `autoMode` para dizer ao classificador quais repositórios, buckets e domínios sua organização confia, para que ele pare de bloquear operações internas rotineiras.

10 

11<Note>

12 Auto mode está disponível nos planos Max, Team, Enterprise e API através da API Anthropic. Não está disponível no Pro ou no Bedrock, Vertex ou Foundry. Se Claude Code relatar que o auto mode não está disponível para sua conta, verifique os [requisitos completos](/pt/permission-modes#eliminate-prompts-with-auto-mode), que também cobrem os modelos suportados e a habilitação de administrador nos planos Team e Enterprise.

13</Note>

14 

15Pronto para usar, o classificador confia apenas no diretório de trabalho e nos remotes configurados do repositório atual. Ações como fazer push para a organização de controle de código-fonte da sua empresa ou escrever em um bucket de nuvem de equipe são bloqueadas até que você as adicione a `autoMode.environment`.

16 

17Para saber como ativar o modo automático e o que ele bloqueia por padrão, consulte [Permission modes](/pt/permission-modes#eliminate-prompts-with-auto-mode). Esta página é a referência de configuração.

18 

19Esta página aborda como:

20 

21* [Escolher onde definir regras](#where-the-classifier-reads-configuration) em CLAUDE.md, configurações do usuário e configurações gerenciadas

22* [Definir infraestrutura confiável](#define-trusted-infrastructure) com `autoMode.environment`

23* [Substituir as regras de bloqueio e permissão](#override-the-block-and-allow-rules) quando os padrões não se adequam ao seu pipeline

24* [Inspecionar sua configuração efetiva](#inspect-the-defaults-and-your-effective-config) com os subcomandos `claude auto-mode`

25* [Revisar negações](#review-denials) para saber o que adicionar a seguir

26 

27## Where the classifier reads configuration

28 

29O classificador lê o mesmo conteúdo [CLAUDE.md](/pt/memory) que o próprio Claude carrega, portanto uma instrução como "nunca force push" no CLAUDE.md do seu projeto orienta tanto Claude quanto o classificador ao mesmo tempo. Comece ali para convenções de projeto e regras de comportamento.

30 

31Para regras que se aplicam em todos os projetos, como infraestrutura confiável ou regras de negação em toda a organização, use o bloco de configurações `autoMode`. O classificador lê `autoMode` dos seguintes escopos:

32 

33| Escopo | Arquivo | Use para |

34| :----------------------------- | :---------------------------------------------- | :----------------------------------------------------------------- |

35| Um desenvolvedor | `~/.claude/settings.json` | Infraestrutura confiável pessoal |

36| Um projeto, um desenvolvedor | `.claude/settings.local.json` | Buckets ou serviços confiáveis por projeto, gitignored |

37| Em toda a organização | [Managed settings](/pt/server-managed-settings) | Infraestrutura confiável distribuída para todos os desenvolvedores |

38| Flag `--settings` ou Agent SDK | JSON inline | Substituições por invocação para automação |

39 

40O classificador não lê `autoMode` de configurações de projeto compartilhadas em `.claude/settings.json`, portanto um repositório verificado não pode injetar suas próprias regras de permissão.

41 

42As entradas de cada escopo são combinadas. Um desenvolvedor pode estender `environment`, `allow` e `soft_deny` com entradas pessoais, mas não pode remover entradas que as configurações gerenciadas fornecem. Como as regras de permissão atuam como exceções às regras de bloqueio dentro do classificador, uma entrada `allow` adicionada por um desenvolvedor pode substituir uma entrada `soft_deny` da organização: a combinação é aditiva, não um limite de política rígida.

43 

44<Note>

45 O classificador é um segundo portão que é executado após o [sistema de permissões](/pt/permissions). Para ações que nunca devem ser executadas, independentemente da intenção do usuário ou da configuração do classificador, use `permissions.deny` em configurações gerenciadas, que bloqueia a ação antes do classificador ser consultado e não pode ser substituída.

46</Note>

47 

48## Definir infraestrutura confiável

49 

50Para a maioria das organizações, `autoMode.environment` é o único campo que você precisa definir. Ele diz ao classificador quais repositórios, buckets e domínios são confiáveis: o classificador o usa para decidir o que significa "externo", portanto qualquer destino não listado é um alvo potencial de exfiltração.

51 

52A lista de ambiente padrão confia no repositório de trabalho e seus remotes configurados. Para adicionar suas próprias entradas junto com esse padrão, inclua a string literal `"$defaults"` no array. As entradas padrão são inseridas nessa posição, portanto suas entradas personalizadas podem vir antes ou depois delas.

53 

54```json theme={null}

55{

56 "autoMode": {

57 "environment": [

58 "$defaults",

59 "Source control: github.example.com/acme-corp and all repos under it",

60 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

61 "Trusted internal domains: *.corp.example.com, api.internal.example.com",

62 "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"

63 ]

64 }

65}

66```

67 

68As entradas são prosa, não regex ou padrões de ferramenta. O classificador as lê como regras em linguagem natural. Escreva-as da forma como você descreveria sua infraestrutura para um novo engenheiro. Uma seção de ambiente completa cobre:

69 

70* **Organização**: o nome da sua empresa e para que Claude Code é usado principalmente, como desenvolvimento de software, automação de infraestrutura ou engenharia de dados

71* **Controle de código-fonte**: todas as organizações GitHub, GitLab ou Bitbucket para as quais seus desenvolvedores fazem push

72* **Provedores de nuvem e buckets confiáveis**: nomes de buckets ou prefixos dos quais Claude deve ser capaz de ler e escrever

73* **Domínios internos confiáveis**: nomes de host para APIs, painéis e serviços dentro de sua rede, como `*.internal.example.com`

74* **Serviços internos principais**: CI, registros de artefatos, índices de pacotes internos, ferramentas de incidentes

75* **Contexto adicional**: restrições de indústria regulada, infraestrutura multi-tenant ou requisitos de conformidade que afetam o que o classificador deve tratar como arriscado

76 

77Um modelo inicial útil: preencha os campos entre colchetes e remova as linhas que não se aplicam.

78 

79```json theme={null}

80{

81 "autoMode": {

82 "environment": [

83 "$defaults",

84 "Organization: {COMPANY_NAME}. Primary use: {PRIMARY_USE_CASE, e.g. software development, infrastructure automation}",

85 "Source control: {SOURCE_CONTROL, e.g. GitHub org github.example.com/acme-corp}",

86 "Cloud provider(s): {CLOUD_PROVIDERS, e.g. AWS, GCP, Azure}",

87 "Trusted cloud buckets: {TRUSTED_BUCKETS, e.g. s3://acme-builds, gs://acme-datasets}",

88 "Trusted internal domains: {TRUSTED_DOMAINS, e.g. *.internal.example.com, api.example.com}",

89 "Key internal services: {SERVICES, e.g. Jenkins at ci.example.com, Artifactory at artifacts.example.com}",

90 "Additional context: {EXTRA, e.g. regulated industry, multi-tenant infrastructure, compliance requirements}"

91 ]

92 }

93}

94```

95 

96Quanto mais contexto específico você fornecer, melhor o classificador poderá distinguir operações internas rotineiras de tentativas de exfiltração.

97 

98Você não precisa preencher tudo de uma vez. Um rollout razoável: comece com os padrões e adicione sua organização de controle de código-fonte e serviços internos principais, o que resolve os falsos positivos mais comuns, como fazer push para seus próprios repositórios. Adicione domínios confiáveis e buckets de nuvem a seguir. Preencha o resto conforme os bloqueios surgirem.

99 

100## Substituir as regras de bloqueio e permissão

101 

102Dois campos adicionais permitem que você substitua as listas de regras integradas do classificador: `autoMode.soft_deny` controla o que é bloqueado e `autoMode.allow` controla quais exceções se aplicam. Cada um é uma matriz de descrições em prosa, lidas como regras em linguagem natural. Não há campo `autoMode.deny`; para bloquear uma ação de forma rígida, independentemente da intenção, use [`permissions.deny`](/pt/permissions), que é executado antes do classificador.

103 

104Dentro do classificador, a precedência funciona em três camadas:

105 

106* Regras `soft_deny` bloqueiam primeiro

107* Regras `allow` então substituem bloqueios correspondentes como exceções

108* A intenção explícita do usuário substitui ambas: se a mensagem do usuário descreve direta e especificamente a ação exata que Claude está prestes a executar, o classificador a permite mesmo quando uma regra `soft_deny` corresponde

109 

110Solicitações gerais não contam como intenção explícita. Pedir ao Claude para "limpar o repositório" não autoriza force-push, mas pedir ao Claude para "force-push este branch" autoriza.

111 

112Para afrouxar, adicione a `allow` quando o classificador sinalizar repetidamente um padrão rotineiro que as exceções padrão não cobrem. Para apertar, adicione a `soft_deny` para riscos específicos do seu ambiente que os padrões perdem. Para manter as regras integradas enquanto adiciona as suas próprias, inclua a string literal `"$defaults"` na matriz. As regras padrão são inseridas nessa posição, portanto suas regras personalizadas podem vir antes ou depois delas, e você continua a herdar atualizações conforme a lista integrada muda entre versões.

113 

114```json theme={null}

115{

116 "autoMode": {

117 "environment": [

118 "$defaults",

119 "Source control: github.example.com/acme-corp and all repos under it"

120 ],

121 "allow": [

122 "$defaults",

123 "Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly",

124 "Writing to s3://acme-scratch/ is allowed: ephemeral bucket with a 7-day lifecycle policy"

125 ],

126 "soft_deny": [

127 "$defaults",

128 "Never run database migrations outside the migrations CLI, even against dev databases",

129 "Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow"

130 ]

131 }

132}

133```

134 

135<Danger>

136 Definir qualquer um de `environment`, `allow` ou `soft_deny` sem `"$defaults"` substitui a lista padrão inteira para essa seção. Se você definir `soft_deny` com uma única entrada e omitir `"$defaults"`, todas as regras de bloqueio integradas serão descartadas: force push, exfiltração de dados, `curl | bash`, implantações em produção e todas as outras regras de bloqueio padrão se tornam permitidas. Omita `"$defaults"` apenas quando você pretender assumir a propriedade total da lista. Nesse caso, execute `claude auto-mode defaults` para imprimir as regras integradas, copie-as para seu arquivo de configurações e depois revise cada regra em relação ao seu próprio pipeline e tolerância ao risco.

137</Danger>

138 

139Cada seção é avaliada independentemente, portanto definir `environment` sozinho deixa as listas padrão `allow` e `soft_deny` intactas.

140 

141## Inspecione os padrões e sua configuração efetiva

142 

143Três subcomandos CLI ajudam você a inspecionar e validar sua configuração.

144 

145Imprima as regras `environment`, `allow` e `soft_deny` integradas como JSON:

146 

147```bash theme={null}

148claude auto-mode defaults

149```

150 

151Imprima o que o classificador realmente usa como JSON, com suas configurações aplicadas onde definidas e padrões caso contrário:

152 

153```bash theme={null}

154claude auto-mode config

155```

156 

157Obtenha feedback de IA sobre suas regras `allow` e `soft_deny` personalizadas:

158 

159```bash theme={null}

160claude auto-mode critique

161```

162 

163Execute `claude auto-mode config` após salvar suas configurações para confirmar que as regras efetivas são o que você espera, com `"$defaults"` expandido no lugar. Se você escreveu regras personalizadas, `claude auto-mode critique` as revisa e sinaliza entradas que são ambíguas, redundantes ou provavelmente causarão falsos positivos. Se você precisar remover ou reescrever uma regra integrada em vez de adicionar ao lado dela, salve a saída de `claude auto-mode defaults` em um arquivo, edite as listas e cole o resultado em seu arquivo de configurações no lugar de `"$defaults"`.

164 

165## Review denials

166 

167Quando o modo automático nega uma chamada de ferramenta, a negação é registrada em `/permissions` na aba Recently denied. Pressione `r` em uma ação negada para marcá-la para retry: quando você sair do diálogo, Claude Code envia uma mensagem dizendo ao modelo que ele pode tentar novamente essa chamada de ferramenta e retoma a conversa.

168 

169Negações repetidas para o mesmo destino geralmente significam que o classificador está perdendo contexto. Adicione esse destino a `autoMode.environment`, depois execute `claude auto-mode config` para confirmar que teve efeito.

170 

171Para reagir a negações programaticamente, use o hook [`PermissionDenied`](/pt/hooks#permissiondenied).

172 

173## See also

174 

175* [Permission modes](/pt/permission-modes#eliminate-prompts-with-auto-mode): o que é modo automático, o que ele bloqueia por padrão e como ativá-lo

176* [Managed settings](/pt/server-managed-settings): implante a configuração `autoMode` em toda a sua organização

177* [Permissions](/pt/permissions): regras de permissão, pergunta e negação que se aplicam antes do classificador ser executado

178* [Settings](/pt/settings): a referência de configurações completa, incluindo a chave `autoMode`

best-practices.md +583 −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# Melhores práticas para Claude Code

6 

7> Dicas e padrões para aproveitar ao máximo o Claude Code, desde a configuração do seu ambiente até o dimensionamento em sessões paralelas.

8 

9Claude Code é um ambiente de codificação agentic. Diferentemente de um chatbot que responde perguntas e espera, Claude Code pode ler seus arquivos, executar comandos, fazer alterações e trabalhar autonomamente através de problemas enquanto você observa, redireciona ou se afasta completamente.

10 

11Isso muda a forma como você trabalha. Em vez de escrever código você mesmo e pedir ao Claude para revisá-lo, você descreve o que deseja e Claude descobre como construir. Claude explora, planeja e implementa.

12 

13Mas essa autonomia ainda vem com uma curva de aprendizado. Claude trabalha dentro de certas restrições que você precisa entender.

14 

15Este guia cobre padrões que se mostraram eficazes nas equipes internas da Anthropic e para engenheiros usando Claude Code em vários codebases, linguagens e ambientes. Para saber como o loop agentic funciona nos bastidores, consulte [How Claude Code works](/pt/how-claude-code-works).

16 

17***

18 

19A maioria das melhores práticas é baseada em uma restrição: a janela de contexto do Claude se enche rapidamente e o desempenho se degrada conforme ela se enche.

20 

21A janela de contexto do Claude contém toda a sua conversa, incluindo cada mensagem, cada arquivo que Claude lê e cada saída de comando. No entanto, isso pode se encher rapidamente. Uma única sessão de depuração ou exploração de codebase pode gerar e consumir dezenas de milhares de tokens.

22 

23Isso importa porque o desempenho do LLM se degrada conforme o contexto se enche. Quando a janela de contexto está ficando cheia, Claude pode começar a "esquecer" instruções anteriores ou cometer mais erros. A janela de contexto é o recurso mais importante a gerenciar. Para ver como uma sessão se enche na prática, [assista a um passo a passo interativo](/pt/context-window) do que é carregado na inicialização e quanto cada leitura de arquivo custa. Rastreie o uso de contexto continuamente com uma [custom status line](/pt/statusline), e veja [Reduce token usage](/pt/costs#reduce-token-usage) para estratégias de redução do uso de tokens.

24 

25***

26 

27## Dê ao Claude uma forma de verificar seu trabalho

28 

29<Tip>

30 Inclua testes, capturas de tela ou saídas esperadas para que Claude possa se verificar. Esta é a coisa de maior alavancagem que você pode fazer.

31</Tip>

32 

33Claude funciona dramaticamente melhor quando pode verificar seu próprio trabalho, como executar testes, comparar capturas de tela e validar saídas.

34 

35Sem critérios de sucesso claros, ele pode produzir algo que parece certo mas na verdade não funciona. Você se torna o único loop de feedback, e cada erro requer sua atenção.

36 

37| Estratégia | Antes | Depois |

38| ------------------------------------------ | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

39| **Forneça critérios de verificação** | *"implemente uma função que valida endereços de email"* | *"escreva uma função validateEmail. exemplos de casos de teste: [user@example.com](mailto:user@example.com) é verdadeiro, inválido é falso, [user@.com](mailto:user@.com) é falso. execute os testes após implementar"* |

40| **Verifique mudanças de UI visualmente** | *"faça o dashboard parecer melhor"* | *"\[cole captura de tela] implemente este design. tire uma captura de tela do resultado e compare com o original. liste as diferenças e corrija-as"* |

41| **Aborde as causas raiz, não os sintomas** | *"a compilação está falhando"* | *"a compilação falha com este erro: \[cole erro]. corrija-o e verifique se a compilação é bem-sucedida. aborde a causa raiz, não suprima o erro"* |

42 

43Mudanças de UI podem ser verificadas usando a [Claude in Chrome extension](/pt/chrome). Ela abre novas abas no seu navegador, testa a UI e itera até que o código funcione.

44 

45Sua verificação também pode ser um conjunto de testes, um linter ou um comando Bash que verifica a saída. Invista em tornar sua verificação sólida.

46 

47***

48 

49## Explore primeiro, depois planeje, depois codifique

50 

51<Tip>

52 Separe pesquisa e planejamento da implementação para evitar resolver o problema errado.

53</Tip>

54 

55Deixar Claude pular direto para codificação pode produzir código que resolve o problema errado. Use [Plan Mode](/pt/common-workflows#use-plan-mode-for-safe-code-analysis) para separar exploração de execução.

56 

57O fluxo de trabalho recomendado tem quatro fases:

58 

59<Steps>

60 <Step title="Explore">

61 Entre em Plan Mode. Claude lê arquivos e responde perguntas sem fazer alterações.

62 

63 ```txt claude (Plan Mode) theme={null}

64 read /src/auth and understand how we handle sessions and login.

65 also look at how we manage environment variables for secrets.

66 ```

67 </Step>

68 

69 <Step title="Plan">

70 Peça ao Claude para criar um plano de implementação detalhado.

71 

72 ```txt claude (Plan Mode) theme={null}

73 I want to add Google OAuth. What files need to change?

74 What's the session flow? Create a plan.

75 ```

76 

77 Pressione `Ctrl+G` para abrir o plano no seu editor de texto para edição direta antes de Claude prosseguir.

78 </Step>

79 

80 <Step title="Implement">

81 Volte para Normal Mode e deixe Claude codificar, verificando contra seu plano.

82 

83 ```txt claude (Normal Mode) theme={null}

84 implement the OAuth flow from your plan. write tests for the

85 callback handler, run the test suite and fix any failures.

86 ```

87 </Step>

88 

89 <Step title="Commit">

90 Peça ao Claude para fazer commit com uma mensagem descritiva e criar um PR.

91 

92 ```txt claude (Normal Mode) theme={null}

93 commit with a descriptive message and open a PR

94 ```

95 </Step>

96</Steps>

97 

98<Callout>

99 Plan Mode é útil, mas também adiciona sobrecarga.

100 

101 Para tarefas onde o escopo é claro e a correção é pequena (como corrigir um erro de digitação, adicionar uma linha de log ou renomear uma variável) peça ao Claude para fazer isso diretamente.

102 

103 O planejamento é mais útil quando você está incerto sobre a abordagem, quando a mudança modifica vários arquivos ou quando você não está familiarizado com o código sendo modificado. Se você pudesse descrever o diff em uma frase, pule o plano.

104</Callout>

105 

106***

107 

108## Forneça contexto específico em seus prompts

109 

110<Tip>

111 Quanto mais precisas suas instruções, menos correções você precisará.

112</Tip>

113 

114Claude pode inferir intenção, mas não pode ler sua mente. Referencie arquivos específicos, mencione restrições e aponte para padrões de exemplo.

115 

116| Estratégia | Antes | Depois |

117| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

118| **Escopo a tarefa.** Especifique qual arquivo, qual cenário e preferências de teste. | *"adicione testes para foo.py"* | *"escreva um teste para foo.py cobrindo o caso extremo onde o usuário está desconectado. evite mocks."* |

119| **Aponte para fontes.** Dirija Claude para a fonte que pode responder uma pergunta. | *"por que ExecutionFactory tem uma API tão estranha?"* | *"procure no histórico git do ExecutionFactory e resuma como sua API chegou a ser assim"* |

120| **Referencie padrões existentes.** Aponte Claude para padrões em seu codebase. | *"adicione um widget de calendário"* | *"veja como os widgets existentes são implementados na página inicial para entender os padrões. HotDogWidget.php é um bom exemplo. siga o padrão para implementar um novo widget de calendário que permite ao usuário selecionar um mês e paginar para frente/trás para escolher um ano. construa do zero sem bibliotecas além das já usadas no codebase."* |

121| **Descreva o sintoma.** Forneça o sintoma, a localização provável e como "corrigido" se parece. | *"corrija o bug de login"* | *"usuários relatam que o login falha após timeout de sessão. verifique o fluxo de autenticação em src/auth/, especialmente atualização de token. escreva um teste falhando que reproduz o problema, depois corrija-o"* |

122 

123Prompts vagos podem ser úteis quando você está explorando e pode se dar ao luxo de corrigir o curso. Um prompt como `"o que você melhoraria neste arquivo?"` pode revelar coisas que você não teria pensado em perguntar.

124 

125### Forneça conteúdo rico

126 

127<Tip>

128 Use `@` para referenciar arquivos, cole capturas de tela/imagens ou canalize dados diretamente.

129</Tip>

130 

131Você pode fornecer dados ricos ao Claude de várias maneiras:

132 

133* **Referencie arquivos com `@`** em vez de descrever onde o código vive. Claude lê o arquivo antes de responder.

134* **Cole imagens diretamente**. Copie/cole ou arraste e solte imagens no prompt.

135* **Forneça URLs** para documentação e referências de API. Use `/permissions` para colocar na lista de permissões domínios frequentemente usados.

136* **Canalize dados** executando `cat error.log | claude` para enviar conteúdos de arquivo diretamente.

137* **Deixe Claude buscar o que precisa**. Diga ao Claude para puxar contexto ele mesmo usando comandos Bash, ferramentas MCP ou lendo arquivos.

138 

139***

140 

141## Configure seu ambiente

142 

143Alguns passos de configuração tornam Claude Code significativamente mais eficaz em todas as suas sessões. Para uma visão geral completa dos recursos de extensão e quando usar cada um, consulte [Extend Claude Code](/pt/features-overview).

144 

145### Escreva um CLAUDE.md eficaz

146 

147<Tip>

148 Execute `/init` para gerar um arquivo CLAUDE.md inicial baseado na estrutura do seu projeto atual, depois refine ao longo do tempo.

149</Tip>

150 

151CLAUDE.md é um arquivo especial que Claude lê no início de cada conversa. Inclua comandos Bash, estilo de código e regras de fluxo de trabalho. Isso dá ao Claude contexto persistente que ele não pode inferir apenas do código.

152 

153O comando `/init` analisa seu codebase para detectar sistemas de compilação, frameworks de teste e padrões de código, dando a você uma base sólida para refinar.

154 

155Não há formato obrigatório para arquivos CLAUDE.md, mas mantenha-o curto e legível para humanos. Por exemplo:

156 

157```markdown CLAUDE.md theme={null}

158# Code style

159- Use ES modules (import/export) syntax, not CommonJS (require)

160- Destructure imports when possible (eg. import { foo } from 'bar')

161 

162# Workflow

163- Be sure to typecheck when you're done making a series of code changes

164- Prefer running single tests, and not the whole test suite, for performance

165```

166 

167CLAUDE.md é carregado a cada sessão, então inclua apenas coisas que se aplicam amplamente. Para conhecimento de domínio ou fluxos de trabalho que são apenas relevantes às vezes, use [skills](/pt/skills) em vez disso. Claude os carrega sob demanda sem inchar cada conversa.

168 

169Mantenha-o conciso. Para cada linha, pergunte: *"Remover isso causaria Claude cometer erros?"* Se não, corte. Arquivos CLAUDE.md inchados causam Claude ignorar suas instruções reais!

170 

171| ✅ Inclua | ❌ Exclua |

172| ------------------------------------------------------------------------ | ----------------------------------------------------------- |

173| Comandos Bash que Claude não pode adivinhar | Qualquer coisa que Claude possa descobrir lendo código |

174| Regras de estilo de código que diferem dos padrões | Convenções de linguagem padrão que Claude já conhece |

175| Instruções de teste e executores de teste preferidos | Documentação detalhada de API (link para docs em vez disso) |

176| Etiqueta de repositório (nomenclatura de branch, convenções de PR) | Informações que mudam frequentemente |

177| Decisões arquitetônicas específicas do seu projeto | Explicações longas ou tutoriais |

178| Peculiaridades do ambiente de desenvolvedor (variáveis env obrigatórias) | Descrições arquivo por arquivo do codebase |

179| Armadilhas comuns ou comportamentos não óbvios | Práticas auto-evidentes como "escreva código limpo" |

180 

181Se Claude continua fazendo algo que você não quer apesar de ter uma regra contra isso, o arquivo provavelmente é muito longo e a regra está sendo perdida. Se Claude faz perguntas que são respondidas em CLAUDE.md, a redação pode ser ambígua. Trate CLAUDE.md como código: revise-o quando as coisas dão errado, poda-o regularmente e teste mudanças observando se o comportamento do Claude realmente muda.

182 

183Você pode ajustar instruções adicionando ênfase (por exemplo, "IMPORTANTE" ou "VOCÊ DEVE") para melhorar a adesão. Verifique CLAUDE.md no git para que sua equipe possa contribuir. O arquivo aumenta em valor ao longo do tempo.

184 

185Arquivos CLAUDE.md podem importar arquivos adicionais usando a sintaxe `@path/to/import`:

186 

187```markdown CLAUDE.md theme={null}

188See @README.md for project overview and @package.json for available npm commands.

189 

190# Additional Instructions

191- Git workflow: @docs/git-instructions.md

192- Personal overrides: @~/.claude/my-project-instructions.md

193```

194 

195Você pode colocar arquivos CLAUDE.md em vários locais:

196 

197* **Pasta home (`~/.claude/CLAUDE.md`)**: aplica-se a todas as sessões Claude

198* **Raiz do projeto (`./CLAUDE.md`)**: verifique no git para compartilhar com sua equipe

199* **Raiz do projeto (`./CLAUDE.local.md`)**: notas pessoais específicas do projeto; adicione este arquivo ao seu `.gitignore` para que não seja compartilhado com sua equipe

200* **Diretórios pai**: útil para monorepos onde tanto `root/CLAUDE.md` quanto `root/foo/CLAUDE.md` são puxados automaticamente

201* **Diretórios filhos**: Claude puxa arquivos CLAUDE.md filhos sob demanda ao trabalhar com arquivos nesses diretórios

202 

203### Configure permissões

204 

205<Tip>

206 Use [auto mode](/pt/permission-modes#eliminate-prompts-with-auto-mode) para deixar um classificador lidar com aprovações, `/permissions` para colocar na lista de permissões comandos específicos, ou `/sandbox` para isolamento em nível de SO. Cada um reduz interrupções enquanto mantém você no controle.

207</Tip>

208 

209Por padrão, Claude Code solicita permissão para ações que podem modificar seu sistema: gravações de arquivo, comandos Bash, ferramentas MCP, etc. Isso é seguro mas tedioso. Após a décima aprovação você realmente não está revisando mais, você está apenas clicando. Existem três maneiras de reduzir essas interrupções:

210 

211* **Auto mode**: um modelo classificador separado revisa comandos e bloqueia apenas o que parece arriscado: escalação de escopo, infraestrutura desconhecida ou ações impulsionadas por conteúdo hostil. Melhor quando você confia na direção geral de uma tarefa mas não quer clicar em cada passo

212* **Listas de permissões**: permita ferramentas específicas que você sabe que são seguras, como `npm run lint` ou `git commit`

213* **Sandboxing**: ative isolamento em nível de SO que restringe acesso ao sistema de arquivos e rede, permitindo Claude trabalhar mais livremente dentro de limites definidos

214 

215Leia mais sobre [permission modes](/pt/permission-modes), [permission rules](/pt/permissions) e [sandboxing](/pt/sandboxing).

216 

217### Use ferramentas CLI

218 

219<Tip>

220 Diga ao Claude Code para usar ferramentas CLI como `gh`, `aws`, `gcloud` e `sentry-cli` ao interagir com serviços externos.

221</Tip>

222 

223Ferramentas CLI são a forma mais eficiente em contexto de interagir com serviços externos. Se você usa GitHub, instale o CLI `gh`. Claude sabe como usá-lo para criar issues, abrir pull requests e ler comentários. Sem `gh`, Claude ainda pode usar a API do GitHub, mas requisições não autenticadas frequentemente atingem limites de taxa.

224 

225Claude também é eficaz em aprender ferramentas CLI que não conhece. Tente prompts como `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`

226 

227### Conecte MCP servers

228 

229<Tip>

230 Execute `claude mcp add` para conectar ferramentas externas como Notion, Figma ou seu banco de dados.

231</Tip>

232 

233Com [MCP servers](/pt/mcp), você pode pedir ao Claude para implementar recursos de rastreadores de issues, consultar bancos de dados, analisar dados de monitoramento, integrar designs do Figma e automatizar fluxos de trabalho.

234 

235### Configure hooks

236 

237<Tip>

238 Use hooks para ações que devem acontecer toda vez com zero exceções.

239</Tip>

240 

241[Hooks](/pt/hooks-guide) executam scripts automaticamente em pontos específicos do fluxo de trabalho do Claude. Diferentemente de instruções CLAUDE.md que são consultivas, hooks são determinísticos e garantem que a ação aconteça.

242 

243Claude pode escrever hooks para você. Tente prompts como *"Write a hook that runs eslint after every file edit"* ou *"Write a hook that blocks writes to the migrations folder."* Edite `.claude/settings.json` diretamente para configurar hooks manualmente, e execute `/hooks` para navegar o que está configurado.

244 

245### Crie skills

246 

247<Tip>

248 Crie arquivos `SKILL.md` em `.claude/skills/` para dar ao Claude conhecimento de domínio e fluxos de trabalho reutilizáveis.

249</Tip>

250 

251[Skills](/pt/skills) estendem o conhecimento do Claude com informações específicas do seu projeto, equipe ou domínio. Claude as aplica automaticamente quando relevante, ou você pode invocá-las diretamente com `/skill-name`.

252 

253Crie uma skill adicionando um diretório com um `SKILL.md` para `.claude/skills/`:

254 

255```markdown .claude/skills/api-conventions/SKILL.md theme={null}

256---

257name: api-conventions

258description: REST API design conventions for our services

259---

260# API Conventions

261- Use kebab-case for URL paths

262- Use camelCase for JSON properties

263- Always include pagination for list endpoints

264- Version APIs in the URL path (/v1/, /v2/)

265```

266 

267Skills também podem definir fluxos de trabalho reutilizáveis que você invoca diretamente:

268 

269```markdown .claude/skills/fix-issue/SKILL.md theme={null}

270---

271name: fix-issue

272description: Fix a GitHub issue

273disable-model-invocation: true

274---

275Analyze and fix the GitHub issue: $ARGUMENTS.

276 

2771. Use `gh issue view` to get the issue details

2782. Understand the problem described in the issue

2793. Search the codebase for relevant files

2804. Implement the necessary changes to fix the issue

2815. Write and run tests to verify the fix

2826. Ensure code passes linting and type checking

2837. Create a descriptive commit message

2848. Push and create a PR

285```

286 

287Execute `/fix-issue 1234` para invocá-la. Use `disable-model-invocation: true` para fluxos de trabalho com efeitos colaterais que você quer disparar manualmente.

288 

289### Crie subagents personalizados

290 

291<Tip>

292 Defina assistentes especializados em `.claude/agents/` que Claude pode delegar para tarefas isoladas.

293</Tip>

294 

295[Subagents](/pt/sub-agents) executam em seu próprio contexto com seu próprio conjunto de ferramentas permitidas. Eles são úteis para tarefas que leem muitos arquivos ou precisam de foco especializado sem poluir sua conversa principal.

296 

297```markdown .claude/agents/security-reviewer.md theme={null}

298---

299name: security-reviewer

300description: Reviews code for security vulnerabilities

301tools: Read, Grep, Glob, Bash

302model: opus

303---

304You are a senior security engineer. Review code for:

305- Injection vulnerabilities (SQL, XSS, command injection)

306- Authentication and authorization flaws

307- Secrets or credentials in code

308- Insecure data handling

309 

310Provide specific line references and suggested fixes.

311```

312 

313Diga ao Claude para usar subagents explicitamente: *"Use a subagent to review this code for security issues."*

314 

315### Instale plugins

316 

317<Tip>

318 Execute `/plugin` para navegar no marketplace. Plugins adicionam skills, ferramentas e integrações sem configuração.

319</Tip>

320 

321[Plugins](/pt/plugins) agrupam skills, hooks, subagents e MCP servers em uma única unidade instalável da comunidade e Anthropic. Se você trabalha com uma linguagem tipada, instale um [code intelligence plugin](/pt/discover-plugins#code-intelligence) para dar ao Claude navegação de símbolo precisa e detecção automática de erros após edições.

322 

323Para orientação sobre escolher entre skills, subagents, hooks e MCP, consulte [Extend Claude Code](/pt/features-overview#match-features-to-your-goal).

324 

325***

326 

327## Comunique-se efetivamente

328 

329A forma como você se comunica com Claude Code impacta significativamente a qualidade dos resultados.

330 

331### Faça perguntas sobre o codebase

332 

333<Tip>

334 Faça ao Claude perguntas que você faria a um engenheiro sênior.

335</Tip>

336 

337Ao se integrar a um novo codebase, use Claude Code para aprendizado e exploração. Você pode fazer ao Claude o mesmo tipo de perguntas que faria a outro engenheiro:

338 

339* Como funciona o logging?

340* Como faço um novo endpoint de API?

341* O que `async move { ... }` faz na linha 134 de `foo.rs`?

342* Quais casos extremos `CustomerOnboardingFlowImpl` trata?

343* Por que este código chama `foo()` em vez de `bar()` na linha 333?

344 

345Usar Claude Code dessa forma é um fluxo de trabalho de integração eficaz, melhorando o tempo de ramp-up e reduzindo carga em outros engenheiros. Nenhum prompt especial necessário: faça perguntas diretamente.

346 

347### Deixe Claude entrevistá-lo

348 

349<Tip>

350 Para recursos maiores, deixe Claude entrevistá-lo primeiro. Comece com um prompt mínimo e peça ao Claude para entrevistá-lo usando a ferramenta `AskUserQuestion`.

351</Tip>

352 

353Claude pergunta sobre coisas que você pode não ter considerado ainda, incluindo implementação técnica, UI/UX, casos extremos e tradeoffs.

354 

355```text theme={null}

356I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.

357 

358Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.

359 

360Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.

361```

362 

363Uma vez que o spec está completo, comece uma nova sessão para executá-lo. A nova sessão tem contexto limpo focado inteiramente em implementação, e você tem um spec escrito para referenciar.

364 

365***

366 

367## Gerencie sua sessão

368 

369Conversas são persistentes e reversíveis. Use isso a seu favor!

370 

371### Corrija o curso cedo e frequentemente

372 

373<Tip>

374 Corrija Claude assim que notar que está saindo do caminho.

375</Tip>

376 

377Os melhores resultados vêm de loops de feedback apertados. Embora Claude ocasionalmente resolva problemas perfeitamente na primeira tentativa, corrigi-lo rapidamente geralmente produz melhores soluções mais rápido.

378 

379* **`Esc`**: pare Claude no meio da ação com a tecla `Esc`. O contexto é preservado, então você pode redirecionar.

380* **`Esc + Esc` ou `/rewind`**: pressione `Esc` duas vezes ou execute `/rewind` para abrir o menu de rewind e restaurar conversa e estado de código anterior, ou resumir a partir de uma mensagem selecionada.

381* **`"Undo that"`**: peça ao Claude para reverter suas alterações.

382* **`/clear`**: redefina contexto entre tarefas não relacionadas. Sessões longas com contexto irrelevante podem reduzir desempenho.

383 

384Se você corrigiu Claude mais de duas vezes no mesmo problema em uma sessão, o contexto está poluído com abordagens falhadas. Execute `/clear` e comece de novo com um prompt mais específico que incorpore o que você aprendeu. Uma sessão limpa com um prompt melhor quase sempre supera uma sessão longa com correções acumuladas.

385 

386### Gerencie contexto agressivamente

387 

388<Tip>

389 Execute `/clear` entre tarefas não relacionadas para redefinir contexto.

390</Tip>

391 

392Claude Code compacta automaticamente o histórico de conversa quando você se aproxima dos limites de contexto, o que preserva código e decisões importantes enquanto libera espaço.

393 

394Durante sessões longas, a janela de contexto do Claude pode se encher com conversa irrelevante, conteúdos de arquivo e comandos. Isso pode reduzir desempenho e às vezes distrair Claude.

395 

396* Use `/clear` frequentemente entre tarefas para redefinir a janela de contexto inteiramente

397* Quando auto compaction dispara, Claude resume o que importa mais, incluindo padrões de código, estados de arquivo e decisões-chave

398* Para mais controle, execute `/compact <instructions>`, como `/compact Focus on the API changes`

399* Para compactar apenas parte da conversa, use `Esc + Esc` ou `/rewind`, selecione um checkpoint de mensagem e escolha **Summarize from here**. Isso condensa mensagens daquele ponto em diante enquanto mantém contexto anterior intacto.

400* Customize comportamento de compaction em CLAUDE.md com instruções como `"When compacting, always preserve the full list of modified files and any test commands"` para garantir que contexto crítico sobreviva à sumarização

401* Para perguntas rápidas que não precisam ficar em contexto, use [`/btw`](/pt/interactive-mode#side-questions-with-%2Fbtw). A resposta aparece em uma sobreposição dispensável e nunca entra no histórico de conversa, então você pode verificar um detalhe sem crescer contexto.

402 

403### Use subagents para investigação

404 

405<Tip>

406 Delegue pesquisa com `"use subagents to investigate X"`. Eles exploram em um contexto separado, mantendo sua conversa principal limpa para implementação.

407</Tip>

408 

409Como contexto é sua restrição fundamental, subagents são uma das ferramentas mais poderosas disponíveis. Quando Claude pesquisa um codebase ele lê muitos arquivos, todos os quais consomem seu contexto. Subagents executam em janelas de contexto separadas e relatam resumos:

410 

411```text theme={null}

412Use subagents to investigate how our authentication system handles token

413refresh, and whether we have any existing OAuth utilities I should reuse.

414```

415 

416O subagent explora o codebase, lê arquivos relevantes e relata descobertas, tudo sem poluir sua conversa principal.

417 

418Você também pode usar subagents para verificação após Claude implementar algo:

419 

420```text theme={null}

421use a subagent to review this code for edge cases

422```

423 

424### Rewind com checkpoints

425 

426<Tip>

427 Cada ação que Claude faz cria um checkpoint. Você pode restaurar conversa, código ou ambos para qualquer checkpoint anterior.

428</Tip>

429 

430Claude automaticamente faz checkpoint antes de mudanças. 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](/pt/checkpointing) para detalhes.

431 

432Em vez de planejar cuidadosamente cada movimento, você pode dizer ao Claude para tentar algo arriscado. Se não funcionar, rewind e tente uma abordagem diferente. Checkpoints persistem entre sessões, então você pode fechar seu terminal e ainda fazer rewind depois.

433 

434<Warning>

435 Checkpoints apenas rastreiam mudanças feitas *por Claude*, não processos externos. Isso não é um substituto para git.

436</Warning>

437 

438### Retome conversas

439 

440<Tip>

441 Execute `claude --continue` para continuar de onde parou, ou `--resume` para escolher entre sessões recentes.

442</Tip>

443 

444Claude Code salva conversas localmente. Quando uma tarefa abrange múltiplas sessões, você não tem que re-explicar o contexto:

445 

446```bash theme={null}

447claude --continue # Resume the most recent conversation

448claude --resume # Select from recent conversations

449```

450 

451Use `/rename` para dar às sessões nomes descritivos como `"oauth-migration"` ou `"debugging-memory-leak"` para que você possa encontrá-las depois. Trate sessões como branches: diferentes fluxos de trabalho podem ter contextos separados e persistentes.

452 

453***

454 

455## Automatize e dimensione

456 

457Uma vez que você é eficaz com um Claude, multiplique sua saída com sessões paralelas, modo não-interativo e padrões de fan-out.

458 

459Tudo até agora assume um humano, um Claude e uma conversa. Mas Claude Code dimensiona horizontalmente. As técnicas nesta seção mostram como você pode fazer mais.

460 

461### Execute modo não-interativo

462 

463<Tip>

464 Use `claude -p "prompt"` em CI, pre-commit hooks ou scripts. Adicione `--output-format stream-json` para saída JSON em streaming.

465</Tip>

466 

467Com `claude -p "your prompt"`, você pode executar Claude não-interativamente, sem uma sessão. Modo não-interativo é como você integra Claude em pipelines CI, pre-commit hooks ou qualquer fluxo de trabalho automatizado. Os formatos de saída permitem você analisar resultados programaticamente: texto simples, JSON ou JSON em streaming.

468 

469```bash theme={null}

470# One-off queries

471claude -p "Explain what this project does"

472 

473# Structured output for scripts

474claude -p "List all API endpoints" --output-format json

475 

476# Streaming for real-time processing

477claude -p "Analyze this log file" --output-format stream-json

478```

479 

480### Execute múltiplas sessões Claude

481 

482<Tip>

483 Execute múltiplas sessões Claude em paralelo para acelerar desenvolvimento, executar experimentos isolados ou iniciar fluxos de trabalho complexos.

484</Tip>

485 

486Existem três maneiras principais de executar sessões paralelas:

487 

488* [Claude Code desktop app](/pt/desktop#work-in-parallel-with-sessions): Gerencie múltiplas sessões locais visualmente. Cada sessão obtém seu próprio worktree isolado.

489* [Claude Code on the web](/pt/claude-code-on-the-web): Execute na infraestrutura de nuvem segura da Anthropic em VMs isoladas.

490* [Agent teams](/pt/agent-teams): Coordenação automatizada de múltiplas sessões com tarefas compartilhadas, mensagens e um team lead.

491 

492Além de paralelizar trabalho, múltiplas sessões habilitam fluxos de trabalho focados em qualidade. Um contexto fresco melhora revisão de código já que Claude não será enviesado para código que acabou de escrever.

493 

494Por exemplo, use um padrão Writer/Reviewer:

495 

496| Session A (Writer) | Session B (Reviewer) |

497| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

498| `Implement a rate limiter for our API endpoints` | |

499| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |

500| `Here's the review feedback: [Session B output]. Address these issues.` | |

501 

502Você pode fazer algo similar com testes: ter um Claude escrever testes, depois outro escrever código para passá-los.

503 

504### Fan out entre arquivos

505 

506<Tip>

507 Loop através de tarefas chamando `claude -p` para cada. Use `--allowedTools` para escopear permissões para operações em lote.

508</Tip>

509 

510Para grandes migrações ou análises, você pode distribuir trabalho entre muitas invocações Claude paralelas:

511 

512<Steps>

513 <Step title="Generate a task list">

514 Tenha Claude listar todos os arquivos que precisam ser migrados (por exemplo, `list all 2,000 Python files that need migrating`)

515 </Step>

516 

517 <Step title="Write a script to loop through the list">

518 ```bash theme={null}

519 for file in $(cat files.txt); do

520 claude -p "Migrate $file from React to Vue. Return OK or FAIL." \

521 --allowedTools "Edit,Bash(git commit *)"

522 done

523 ```

524 </Step>

525 

526 <Step title="Test on a few files, then run at scale">

527 Refine seu prompt baseado no que dá errado com os primeiros 2-3 arquivos, depois execute no conjunto completo. A flag `--allowedTools` restringe o que Claude pode fazer, o que importa quando você está executando sem supervisão.

528 </Step>

529</Steps>

530 

531Você também pode integrar Claude em pipelines de dados/processamento existentes:

532 

533```bash theme={null}

534claude -p "<your prompt>" --output-format json | your_command

535```

536 

537Use `--verbose` para depuração durante desenvolvimento e desligue em produção.

538 

539### Execute autonomamente com auto mode

540 

541Para execução ininterrupta com verificações de segurança em background, use [auto mode](/pt/permission-modes#eliminate-prompts-with-auto-mode). Um modelo classificador revisa comandos antes de serem executados, bloqueando escalação de escopo, infraestrutura desconhecida e ações impulsionadas por conteúdo hostil enquanto deixa trabalho rotineiro prosseguir sem prompts.

542 

543```bash theme={null}

544claude --permission-mode auto -p "fix all lint errors"

545```

546 

547Para execuções não-interativas com a flag `-p`, auto mode aborta se o classificador repetidamente bloqueia ações, já que não há usuário para recorrer. Veja [when auto mode falls back](/pt/permission-modes#when-auto-mode-falls-back) para limites.

548 

549***

550 

551## Evite padrões de falha comuns

552 

553Estes são erros comuns. Reconhecê-los cedo economiza tempo:

554 

555* **A sessão da pia da cozinha.** Você começa com uma tarefa, depois pergunta ao Claude algo não relacionado, depois volta para a primeira tarefa. Contexto está cheio de informação irrelevante.

556 > **Correção**: `/clear` entre tarefas não relacionadas.

557* **Corrigindo repetidamente.** Claude faz algo errado, você corrige, ainda está errado, você corrige novamente. Contexto está poluído com abordagens falhadas.

558 > **Correção**: Após duas correções falhadas, `/clear` e escreva um prompt inicial melhor incorporando o que você aprendeu.

559* **O CLAUDE.md sobre-especificado.** Se seu CLAUDE.md é muito longo, Claude ignora metade dele porque regras importantes se perdem no ruído.

560 > **Correção**: Poda impiedosamente. Se Claude já faz algo corretamente sem a instrução, delete-a ou converta-a para um hook.

561* **A lacuna confiança-depois-verificação.** Claude produz uma implementação que parece plausível mas não trata casos extremos.

562 > **Correção**: Sempre forneça verificação (testes, scripts, capturas de tela). Se você não pode verificar, não envie.

563* **A exploração infinita.** Você pede ao Claude para "investigar" algo sem escopá-lo. Claude lê centenas de arquivos, enchendo o contexto.

564 > **Correção**: Escopo investigações estreitamente ou use subagents para que a exploração não consuma seu contexto principal.

565 

566***

567 

568## Desenvolva sua intuição

569 

570Os padrões neste guia não são gravados em pedra. Eles são pontos de partida que funcionam bem em geral, mas podem não ser ótimos para cada situação.

571 

572Às vezes você *deveria* deixar contexto acumular porque você está profundo em um problema complexo e o histórico é valioso. Às vezes você deveria pular planejamento e deixar Claude descobrir porque a tarefa é exploratória. Às vezes um prompt vago é exatamente certo porque você quer ver como Claude interpreta o problema antes de constrangê-lo.

573 

574Preste atenção ao que funciona. Quando Claude produz saída ótima, note o que você fez: a estrutura do prompt, o contexto que você forneceu, o modo que você estava. Quando Claude luta, pergunte por quê. O contexto era muito barulhento? O prompt muito vago? A tarefa muito grande para uma passagem?

575 

576Ao longo do tempo, você desenvolverá intuição que nenhum guia pode capturar. Você saberá quando ser específico e quando ser aberto, quando planejar e quando explorar, quando limpar contexto e quando deixá-lo acumular.

577 

578## Recursos relacionados

579 

580* [How Claude Code works](/pt/how-claude-code-works): o loop agentic, ferramentas e gerenciamento de contexto

581* [Extend Claude Code](/pt/features-overview): skills, hooks, MCP, subagents e plugins

582* [Common workflows](/pt/common-workflows): receitas passo a passo para depuração, teste, PRs e mais

583* [CLAUDE.md](/pt/memory): armazene convenções de projeto e contexto persistente

champion-kit.md +195 −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# Kit do campeão

6 

7> Um guia prático para engenheiros que defendem Claude Code internamente: o que compartilhar, como responder perguntas e como aumentar a adoção na sua equipe.

8 

9Esta página é para engenheiros individuais que já estão usando Claude Code e desejam ajudar sua equipe a adotá-lo. Ela cobre o que compartilhar, como responder às perguntas que você receberá, um guia de trinta dias e respostas a preocupações comuns.

10 

11A adoção de uma ferramenta de desenvolvedor raramente acontece por causa de um anúncio de lançamento. Acontece porque alguém da equipe começa a usar a ferramenta bem, fala sobre ela abertamente e facilita para outros seguirem. O trabalho que você faz como campeão tem um efeito desproporcional: cada exemplo que você compartilha encurta a curva de aprendizado para os engenheiros que vêm depois de você, e cada pergunta que você responde em público transforma a experiência de uma pessoa em algo que toda a equipe pode construir. Você está agindo como um multiplicador para sua equipe, não como um help desk, e este guia é estruturado para manter o papel sustentável nesses termos.

12 

13## O papel do campeão

14 

15O papel consiste em três comportamentos que se reforçam mutuamente.

16 

17| Comportamento | Como se parece na prática | Por que importa |

18| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

19| Compartilhe o que você descobre | Poste os prompts, capturas de tela e pequenas vitórias do seu próprio trabalho nos lugares que sua equipe já lê, como um canal de engenharia, uma thread de standup ou uma descrição de pull request. | Exemplos extraídos do seu próprio codebase são mais persuasivos do que qualquer documentação externa, porque os colegas podem ver exatamente como a ferramenta se aplica aos problemas que compartilham com você. |

20| Seja a pessoa que as pessoas perguntam | Quando um colega pergunta como você realizou algo, responda com o prompt real que você usou para que ele possa aplicá-lo diretamente à sua própria tarefa. | Um exemplo concreto e executável remove a lacuna entre curiosidade e um primeiro uso bem-sucedido, que é onde a maioria dos esforços de adoção estagna. |

21| Cresça o círculo | Estabeleça um pequeno número de hábitos leves e recorrentes, como um canal dedicado ou uma thread semanal, para que o momentum continue mesmo quando sua atenção estiver em outro lugar. | A adoção que depende de uma única pessoa é frágil. A adoção que é realizada por hábitos compartilhados continua a se compor por conta própria. |

22 

23A maioria disso se encaixa naturalmente no trabalho que você já está fazendo. A diferença é uma pequena quantidade de intenção adicional sobre onde suas descobertas são postadas e como suas respostas se propagam.

24 

25### O que isso deve custar você

26 

27Defina expectativas com você mesmo e com seu líder. As atividades abaixo são destinadas a se encaixarem em uma semana de trabalho normal, e o papel deve permanecer um multiplicador do seu trabalho existente em vez de uma responsabilidade de suporte adicional.

28 

29| Atividade | Tempo por semana | Orientação |

30| ----------------------------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------- |

31| Postando vitórias e prompts | Cerca de 15 minutos | Capture-os no momento com uma captura de tela e uma ou duas frases; evite transformá-los em redações formais. |

32| Respondendo perguntas em um canal compartilhado | Cerca de 20 minutos | Responda publicamente uma vez, depois vincule de volta a essa resposta quando a pergunta se repetir. |

33| Hospedando uma thread semanal de show-and-tell | Cerca de 5 minutos | Você posta o prompt de abertura; a equipe fornece o conteúdo. |

34| Emparelhamento opcional ou walkthroughs | 0 a 30 minutos | Reserve isso para colegas que estão genuinamente bloqueados e ofereça o link [Quickstart](/pt/quickstart) antes de agendar tempo. |

35 

36## Compartilhe o que você descobre

37 

38Sua própria experiência é o material mais persuasivo que seus colegas encontrarão, porque é específico para o codebase, fluxos de trabalho e problemas que todos compartilham. A documentação diz às pessoas o que é possível; seus posts mostram a eles o que está realmente funcionando em seu ambiente.

39 

40### O que vale a pena compartilhar

41 

42Os posts mais úteis descrevem uma técnica que um colega pode reutilizar amanhã em vez de um resultado que já está completo. As técnicas se compõem conforme se espalham por uma equipe; atualizações de status não.

43 

44Exemplos de técnicas reutilizáveis:

45 

46* "Aprendi que @-mencionar um diretório funciona. Apontei para `@src/components/` e perguntei quais estavam faltando testes, o que revelou dois que eu tinha negligenciado."

47* "Plan mode (`Shift+Tab`) mostra exatamente quais arquivos serão tocados antes de qualquer edição ser feita, é por isso que estou confortável em usá-lo em código compartilhado."

48* "Configurei um hook Stop para receber uma notificação de desktop quando uma tarefa longa é concluída. A configuração está na thread."

49* "Executar `/init` gera um `CLAUDE.md` do repositório para que o assistente pare de fazer perguntas sobre nossas convenções."

50 

51### Onde compartilhá-lo

52 

53Poste onde sua equipe já lê. O objetivo é colocar exemplos no caminho do trabalho normal em vez de criar um destino.

54 

55| Local | Melhor adequado para | Formato recomendado |

56| ---------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |

57| Um canal `#claude-code` ou de engenharia geral | Descobertas, prompts e momentos "aprendi hoje" | Uma captura de tela acompanhada de uma ou duas frases de contexto |

58| Descrições de pull request | Demonstrando a abordagem em código real que os revisores já estão lendo | Uma única linha como "Claude e eu fizemos este refactor; feliz em explicar a abordagem." |

59| Standups ou atualizações semanais escritas | Normalizando o uso com líderes e gerentes de skip-level | Uma frase descrevendo um resultado concreto |

60| Wiki da equipe ou documentação interna | Padrões duráveis, skills personalizados e exemplos de `CLAUDE.md` | Uma página curta, vinculada do tópico do canal para que permaneça descobrível |

61 

62### O formato que funciona

63 

64Uma captura de tela acompanhada de uma única linha de contexto, ou uma breve descrição antes e depois, é geralmente o nível certo de detalhe. Mantenha cada post curto o suficiente para que alguém rolando ainda absorva o ponto. Uma redação longa tende a ser salva para depois e esquecida, enquanto um post curto com uma captura de tela tende a ser copiado e testado.

65 

66Os posts de exemplo abaixo ilustram tom e comprimento; adapte-os em vez de copiar verbatim.

67 

68```text theme={null}

69Aprendi hoje que @-mencionar um diretório funciona. Apontei para

70@src/components/ e perguntei quais componentes estavam faltando testes, e

71isso revelou dois que eu tinha esquecido.

72```

73 

74```text theme={null}

75Configurei um hook Stop para receber uma notificação de desktop quando uma

76tarefa longa é concluída. Comecei um refactor, me afastei e fui notificado

77quando terminou. A configuração está na thread.

78```

79 

80```text theme={null}

81Plan mode é a razão pela qual estou confortável em usar isso em código que

82importa. Pressione Shift+Tab até ver "plan"; ele mostra exatamente quais

83arquivos ele pretende tocar antes de mudar qualquer coisa.

84```

85 

86## Seja a pessoa que as pessoas perguntam

87 

88Depois de compartilhar alguns exemplos, as perguntas virão. É aqui que o papel do campeão tem a maior alavancagem, porque uma boa resposta para uma pessoa frequentemente desbloqueia vários outros que estão observando o mesmo canal.

89 

90### Responda com um prompt em vez de uma explicação

91 

92Quando um colega pergunta como você realizou algo, a resposta mais útil é o prompt que você realmente usou. Ele aprenderá mais executando esse prompt contra seu próprio problema do que com qualquer descrição que você pudesse escrever, e isso lhe dá algo em que ele pode agir imediatamente.

93 

94```text theme={null}

95Colega: Como você conseguiu encontrar essa condição de corrida?

96 

97Campeão: Perguntei, "O teste em @tests/scheduler.test.ts é instável, descubra

98por quê," e ele rastreou duas promises não unidas no scheduler. Tente a mesma

99frase no seu teste.

100```

101 

102### Aponte para o recurso em vez da documentação

103 

104Uma resposta como "Tente plan mode, pressione `Shift+Tab` até vê-lo" é mais útil no momento do que um link para a documentação. Se a pessoa precisar de mais profundidade depois, ela encontrará por conta própria; agora ela precisa da única coisa que a desbloqueia.

105 

106### Perguntas que você provavelmente ouvirá

107 

108| Pergunta | Resposta sugerida | Recurso de acompanhamento |

109| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |

110| "O que devo tentar primeiro?" | Recomende uma tarefa real mas contida, idealmente um bug ou tarefa que a pessoa tem adiado porque é tedioso em vez de difícil. | [Common workflows](/pt/common-workflows) |

111| "Como confio nela com meu código?" | Introduza plan mode: pressionar `Shift+Tab` entra nele, Claude propõe exatamente o que pretende mudar, e nada é modificado até que o usuário aprove. | [Permissions](/pt/permissions) |

112| "Vale a pena o esforço de configuração?" | A instalação leva aproximadamente dois minutos, é executada no terminal e não requer extensão de IDE. Executar `/init` uma vez é suficiente para começar a trabalhar. | [Quickstart](/pt/quickstart) |

113| "Produziu um resultado incorreto." | Encoraje-o a fornecer a falha de volta para Claude. Colar a mensagem de erro ou teste falhando é muito mais eficaz do que reformular a solicitação original. | [Common workflows](/pt/common-workflows) |

114| "Não entende as convenções do nosso codebase." | Sugira executar `/init` para gerar um arquivo `CLAUDE.md`, depois adicione as convenções da equipe, comandos de teste e quaisquer diretórios que devem ser evitados. | [Memory](/pt/memory) |

115| "Isso é apenas autocomplete?" | Ofereça uma breve demonstração em que Claude explica um arquivo desconhecido, rastreia um bug entre serviços ou elabora um plano de migração. Essas tarefas exigem raciocínio em todo o repositório em vez de completar uma única linha. | Uma demonstração ao vivo de dois minutos |

116| "E quanto à segurança e tratamento de dados?" | Refira essa pergunta ao seu administrador. A política de implantação e tratamento de dados da sua organização já está configurada, e os campeões não devem improvisar essa resposta. | [Security](/pt/security) · [Data usage](/pt/data-usage) |

117 

118## Cresça o círculo

119 

120O objetivo não é construir um programa ou possuir um lançamento. É estabelecer um pequeno número de hábitos leves que permitam que o momentum continue depois que você parar de impulsioná-lo ativamente. Quando as perguntas no canal estão sendo respondidas por pessoas além de você, o papel cumpriu seu trabalho.

121 

122### Padrões que tendem a funcionar

123 

124| Padrão | Como executá-lo | Esforço necessário |

125| -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |

126| Um canal dedicado | Crie um canal `#claude-code` (ou uma thread recorrente em um existente), fixe o link [Quickstart](/pt/quickstart) e um exemplo forte, e responda perguntas publicamente para que cada resposta beneficie todos que estão observando. | Cerca de cinco minutos para configurar, depois ambiente |

127| Uma thread semanal de show-and-tell | Toda sexta-feira, poste "Com o que Claude ajudou você esta semana?" Nenhuma preparação, slides ou reunião são necessários; capturas de tela e descrições curtas são suficientes. | Cerca de dois minutos por semana |

128| Compartilhe um skill personalizado | Poste seu arquivo `.claude/skills/<name>/SKILL.md` mais útil, por exemplo um skill `/ship` que executa testes e lint antes de fazer commit, com uma descrição de uma linha. Como skills são Markdown simples, colegas podem adotá-los imediatamente. | Cerca de cinco minutos por skill |

129| Gere um guia de configuração a partir do seu próprio uso | Execute `/team-onboarding` em um projeto em que você passou tempo real. Claude verifica suas sessões recentes, comandos e servidores MCP, depois produz um guia que um novo colega pode colar como sua primeira mensagem para reproduzir sua configuração. Fixe-o no canal. | Cerca de dois minutos |

130| Emparelhe em uma primeira tarefa | Ofereça uma única sessão de emparelhamento de quinze minutos para qualquer pessoa começando. Um resultado bem-sucedido em seu próprio código é mais persuasivo do que qualquer apresentação. | Cerca de quinze minutos por pessoa |

131| Identifique o próximo campeão | O colega que mais lhe faz perguntas geralmente está pronto para assumir esse papel. Encaminhe-lhe esta página e divida as responsabilidades do canal entre vocês. | Negligenciável |

132 

133### Guia de trinta dias

134 

135Se um plano solto for útil, a sequência abaixo reflete o que tende a funcionar na maioria das equipes. Ajuste livremente para se adequar ao seu contexto.

136 

137<Steps>

138 <Step title="Semana 1: Semeie o canal">

139 Crie o canal, fixe o [Quickstart](/pt/quickstart) e poste dois ou três de seus próprios exemplos com os prompts incluídos.

140 

141 **Sinal de que está funcionando:** alguns colegas reagem ou respondem, e pelo menos uma pergunta é feita no canal.

142 </Step>

143 

144 <Step title="Semana 2: Comece o ritmo">

145 Comece a thread semanal de show-and-tell, responda a todas as perguntas publicamente e compartilhe um skill personalizado ou trecho de `CLAUDE.md`.

146 

147 **Sinal de que está funcionando:** alguém além de você posta um exemplo do seu próprio.

148 </Step>

149 

150 <Step title="Semana 3: Emparelhe e consolide">

151 Ofereça duas ou três sessões curtas de emparelhamento e consolide as perguntas e respostas mais comuns em uma mensagem de FAQ fixada.

152 

153 **Sinal de que está funcionando:** você vê uso repetido, com os mesmos colegas retornando em vez de tentar uma vez e parar.

154 </Step>

155 

156 <Step title="Semana 4: Passe adiante">

157 Identifique um segundo campeão e compartilhe um breve resumo do que está funcionando e do que não está com seu líder ou administrador.

158 

159 **Sinal de que está funcionando:** as perguntas no canal estão sendo respondidas por pessoas além de você.

160 </Step>

161</Steps>

162 

163### Quando alguém quer ir mais fundo

164 

165Você é a introdução calorosa em vez do programa de onboarding. Quando um colega passa de "devo tentar isso" para "como me torno eficaz com isso," aponte-o para as páginas [Quickstart](/pt/quickstart) e [Common workflows](/pt/common-workflows). Elas contêm seções curtas cobrindo os recursos que são genuinamente úteis mas difíceis de descobrir por conta própria.

166 

167## Responda a preocupações comuns

168 

169O ceticismo saudável é esperado; engenheiros devem ser cautelosos com ferramentas que tocam seu código. A resposta mais eficaz raramente é argumentar o caso geral. Em vez disso, reconheça a preocupação, ofereça um breve reframe e proponha uma demonstração concreta no código da própria pessoa. A maioria das preocupações é resolvida por uma única experiência bem-sucedida.

170 

171| Preocupação | Resposta sugerida | Evidência a oferecer |

172| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |

173| "Sou mais rápido sem ela." | Isso é provavelmente verdade para código que a pessoa escreve rotineiramente. Sugira tentar em trabalho que ela tende a evitar: arquivos legados, serviços desconhecidos ou scaffolding de teste, onde a alavancagem é maior. | Cronometra uma tarefa tedioso de ambas as maneiras e compara. |

174| "Não confio em IA para tocar código de produção." | Concorde que nenhuma mudança deve ser aplicada sem ser lida. Plan mode combinado com revisão de diff normal significa que nada é aplicado que o engenheiro não inspecionou, o mesmo padrão de qualquer pull request. | Demonstre plan mode em um arquivo real. |

175| "Isso tornará engenheiros juniores mais fracos." | Usado bem, é um explicador eficaz. Encoraje engenheiros juniores a pedir a Claude para explicar um arquivo e seus locais de chamada antes de pedir para mudar qualquer coisa. | Execute "Explain @file and where it is called from" juntos. |

176| "Tentei uma vez e alucinava." | Isso é geralmente um problema de contexto em vez de um problema de modelo. @-mencionar os arquivos relevantes, executar `/init` e fornecer a saída de erro real geralmente resolve. | Re-execute seu prompt original com contexto `@` apropriado. |

177| "Não temos tempo para aprender outra ferramenta." | Claude Code é um comando de terminal em vez de uma plataforma. Se não retornar valor na primeira sessão, é razoável deixá-lo de lado. | Uma instalação de dois minutos seguida por um bug real. |

178 

179## Folha de referência rápida

180 

181As técnicas abaixo são as que mais confiabilidade movem alguém de um primeiro teste para uso diário. Fixe esta tabela em um canal ou compartilhe-a por conta própria.

182 

183| Técnica | Como aplicá-la |

184| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

185| Forneça o contexto certo | Use referências `@file` ou `@directory/`, ou cole a saída de erro ou log diretamente. Fornecer contexto relevante é mais eficaz do que prompting elaborado. |

186| Revise o plano antes da edição | Pressione `Shift+Tab` para entrar em plan mode. Claude descreverá as mudanças pretendidas para sua aprovação antes de executá-las. |

187| Ensine ao repositório | Execute `/init` para gerar um arquivo `CLAUDE.md`, depois adicione suas convenções, comandos de teste e quaisquer diretórios que não devem ser modificados. Veja [Memory](/pt/memory). |

188| Reutilize um fluxo de trabalho | Salve um arquivo `SKILL.md` em `.claude/skills/<name>/` para criar um skill `/name` que toda a equipe pode usar. Veja [Skills](/pt/skills). |

189| Mantenha-se informado durante tarefas longas | Configure um hook Stop para receber uma notificação de desktop quando uma tarefa de longa duração é concluída. Veja [Hooks](/pt/hooks-guide). |

190| Recupere-se de um resultado incorreto | Em vez de reformular a solicitação, cole o teste falhando ou stack trace de volta para Claude e peça para ele abordar essa falha específica. |

191| Mantenha edições cirúrgicas | Peça um diff, ou especifique "apenas mude X." Claude respeita o escopo quando o escopo é declarado. |

192 

193<Tip>

194 Claude Code é atualizado frequentemente. Verifique detalhes específicos da versão contra a [página inicial da documentação](/pt/overview) antes de distribuir este material internamente.

195</Tip>

channels.md +357 −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# Enviar eventos para uma sessão em execução com canais

6 

7> Use canais para enviar mensagens, alertas e webhooks para sua sessão Claude Code de um servidor MCP. Encaminhe resultados de CI, mensagens de chat e eventos de monitoramento para que Claude possa reagir enquanto você está ausente.

8 

9<Note>

10 Os canais estão em [visualização de pesquisa](#research-preview) e exigem Claude Code v2.1.80 ou posterior. Eles exigem login em claude.ai. A autenticação por console e chave de API não é suportada. As organizações Team e Enterprise devem [habilitá-los explicitamente](#enterprise-controls).

11</Note>

12 

13Um canal é um servidor MCP que envia eventos para sua sessão Claude Code em execução, para que Claude possa reagir a coisas que acontecem enquanto você não está no terminal. Os canais podem ser bidirecionais: Claude lê o evento e responde através do mesmo canal, como uma ponte de chat. Os eventos chegam apenas enquanto a sessão está aberta, portanto, para uma configuração sempre ativa, você executa Claude em um processo de fundo ou terminal persistente.

14 

15Ao contrário das integrações que geram uma nova sessão na nuvem ou aguardam para serem consultadas, o evento chega na sessão que você já tem aberta: veja [como os canais se comparam](#how-channels-compare).

16 

17Você instala um canal como um plugin e o configura com suas próprias credenciais. Telegram, Discord e iMessage estão incluídos na visualização de pesquisa.

18 

19Quando Claude responde através de um canal, você vê a mensagem de entrada em seu terminal, mas não o texto da resposta. O terminal mostra a chamada de ferramenta e uma confirmação (como "enviado"), e a resposta real aparece na outra plataforma.

20 

21Esta página cobre:

22 

23* [Canais suportados](#supported-channels): configuração de Telegram, Discord e iMessage

24* [Instalar e executar um canal](#quickstart) com fakechat, uma demonstração localhost

25* [Quem pode enviar mensagens](#security): listas de permissão de remetentes e como você emparelha

26* [Habilitar canais para sua organização](#enterprise-controls) em Team e Enterprise

27* [Como os canais se comparam](#how-channels-compare) com sessões web, Slack, MCP e Remote Control

28 

29Para criar seu próprio canal, consulte a [referência de Canais](/pt/channels-reference).

30 

31## Canais suportados

32 

33Cada canal suportado é um plugin que requer [Bun](https://bun.sh). Para uma demonstração prática do fluxo de plugin antes de conectar uma plataforma real, tente o [quickstart fakechat](#quickstart).

34 

35<Tabs>

36 <Tab title="Telegram">

37 Veja o [código-fonte completo do plugin Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram).

38 

39 <Steps>

40 <Step title="Criar um bot do Telegram">

41 Abra [BotFather](https://t.me/BotFather) no Telegram e envie `/newbot`. Dê a ele um nome de exibição e um nome de usuário único terminando em `bot`. Copie o token que BotFather retorna.

42 </Step>

43 

44 <Step title="Instalar o plugin">

45 No Claude Code, execute:

46 

47 ```

48 /plugin install telegram@claude-plugins-official

49 ```

50 

51 Se Claude Code relatar que o plugin não foi encontrado em nenhum marketplace, seu marketplace está ausente ou desatualizado. Execute `/plugin marketplace update claude-plugins-official` para atualizá-lo, ou `/plugin marketplace add anthropics/claude-plugins-official` se você ainda não o adicionou. Em seguida, tente novamente a instalação.

52 

53 Após instalar, execute `/reload-plugins` para ativar o comando de configuração do plugin.

54 </Step>

55 

56 <Step title="Configurar seu token">

57 Execute o comando de configuração com o token do BotFather:

58 

59 ```

60 /telegram:configure <token>

61 ```

62 

63 Isso o salva em `~/.claude/channels/telegram/.env`. Você também pode definir `TELEGRAM_BOT_TOKEN` em seu ambiente de shell antes de iniciar Claude Code.

64 </Step>

65 

66 <Step title="Reiniciar com canais habilitados">

67 Saia do Claude Code e reinicie com a flag de canal. Isso inicia o plugin Telegram, que começa a pesquisar mensagens do seu bot:

68 

69 ```bash theme={null}

70 claude --channels plugin:telegram@claude-plugins-official

71 ```

72 </Step>

73 

74 <Step title="Emparelhar sua conta">

75 Abra o Telegram e envie qualquer mensagem para seu bot. O bot responde com um código de emparelhamento.

76 

77 <Note>Se seu bot não responder, certifique-se de que Claude Code está em execução com `--channels` da etapa anterior. O bot só pode responder enquanto o canal está ativo.</Note>

78 

79 De volta ao Claude Code, execute:

80 

81 ```

82 /telegram:access pair <code>

83 ```

84 

85 Em seguida, bloqueie o acesso para que apenas sua conta possa enviar mensagens:

86 

87 ```

88 /telegram:access policy allowlist

89 ```

90 </Step>

91 </Steps>

92 </Tab>

93 

94 <Tab title="Discord">

95 Veja o [código-fonte completo do plugin Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord).

96 

97 <Steps>

98 <Step title="Criar um bot do Discord">

99 Vá para o [Portal de Desenvolvedores do Discord](https://discord.com/developers/applications), clique em **New Application** e nomeie-o. Na seção **Bot**, crie um nome de usuário e clique em **Reset Token** e copie o token.

100 </Step>

101 

102 <Step title="Habilitar Message Content Intent">

103 Nas configurações do seu bot, role até **Privileged Gateway Intents** e habilite **Message Content Intent**.

104 </Step>

105 

106 <Step title="Convidar o bot para seu servidor">

107 Vá para **OAuth2 > URL Generator**. Selecione o escopo `bot` e habilite estas permissões:

108 

109 * View Channels

110 * Send Messages

111 * Send Messages in Threads

112 * Read Message History

113 * Attach Files

114 * Add Reactions

115 

116 Abra a URL gerada para adicionar o bot ao seu servidor.

117 </Step>

118 

119 <Step title="Instalar o plugin">

120 No Claude Code, execute:

121 

122 ```

123 /plugin install discord@claude-plugins-official

124 ```

125 

126 Se Claude Code relatar que o plugin não foi encontrado em nenhum marketplace, seu marketplace está ausente ou desatualizado. Execute `/plugin marketplace update claude-plugins-official` para atualizá-lo, ou `/plugin marketplace add anthropics/claude-plugins-official` se você ainda não o adicionou. Em seguida, tente novamente a instalação.

127 

128 Após instalar, execute `/reload-plugins` para ativar o comando de configuração do plugin.

129 </Step>

130 

131 <Step title="Configurar seu token">

132 Execute o comando de configuração com o token do bot que você copiou:

133 

134 ```

135 /discord:configure <token>

136 ```

137 

138 Isso o salva em `~/.claude/channels/discord/.env`. Você também pode definir `DISCORD_BOT_TOKEN` em seu ambiente de shell antes de iniciar Claude Code.

139 </Step>

140 

141 <Step title="Reiniciar com canais habilitados">

142 Saia do Claude Code e reinicie com a flag de canal. Isso conecta o plugin Discord para que seu bot possa receber e responder a mensagens:

143 

144 ```bash theme={null}

145 claude --channels plugin:discord@claude-plugins-official

146 ```

147 </Step>

148 

149 <Step title="Emparelhar sua conta">

150 Envie uma mensagem direta para seu bot no Discord. O bot responde com um código de emparelhamento.

151 

152 <Note>Se seu bot não responder, certifique-se de que Claude Code está em execução com `--channels` da etapa anterior. O bot só pode responder enquanto o canal está ativo.</Note>

153 

154 De volta ao Claude Code, execute:

155 

156 ```

157 /discord:access pair <code>

158 ```

159 

160 Em seguida, bloqueie o acesso para que apenas sua conta possa enviar mensagens:

161 

162 ```

163 /discord:access policy allowlist

164 ```

165 </Step>

166 </Steps>

167 </Tab>

168 

169 <Tab title="iMessage">

170 Veja o [código-fonte completo do plugin iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).

171 

172 O canal iMessage lê seu banco de dados de Mensagens diretamente e envia respostas através de AppleScript. Requer macOS e não precisa de token de bot ou serviço externo.

173 

174 <Steps>

175 <Step title="Conceder Acesso Total ao Disco">

176 O banco de dados de Mensagens em `~/Library/Messages/chat.db` é protegido pelo macOS. Na primeira vez que o servidor o lê, o macOS solicita acesso: clique em **Allow**. O prompt nomeia qualquer aplicativo que iniciou o Bun, como Terminal, iTerm ou seu IDE.

177 

178 Se o prompt não aparecer ou você clicou em Don't Allow, conceda acesso manualmente em **System Settings > Privacy & Security > Full Disk Access** e adicione seu terminal. Sem isso, o servidor sai imediatamente com `authorization denied`.

179 </Step>

180 

181 <Step title="Instalar o plugin">

182 No Claude Code, execute:

183 

184 ```

185 /plugin install imessage@claude-plugins-official

186 ```

187 

188 Se Claude Code relatar que o plugin não foi encontrado em nenhum marketplace, seu marketplace está ausente ou desatualizado. Execute `/plugin marketplace update claude-plugins-official` para atualizá-lo, ou `/plugin marketplace add anthropics/claude-plugins-official` se você ainda não o adicionou. Em seguida, tente novamente a instalação.

189 </Step>

190 

191 <Step title="Reiniciar com canais habilitados">

192 Saia do Claude Code e reinicie com a flag de canal:

193 

194 ```bash theme={null}

195 claude --channels plugin:imessage@claude-plugins-official

196 ```

197 </Step>

198 

199 <Step title="Envie uma mensagem para si mesmo">

200 Abra Mensagens em qualquer dispositivo conectado à sua Apple ID e envie uma mensagem para si mesmo. Ela chega ao Claude imediatamente: o auto-chat ignora o controle de acesso sem configuração.

201 

202 <Note>A primeira resposta que Claude envia dispara um prompt de Automação do macOS perguntando se seu terminal pode controlar Mensagens. Clique em **OK**.</Note>

203 </Step>

204 

205 <Step title="Permitir outros remetentes">

206 Por padrão, apenas suas próprias mensagens passam. Para permitir que outro contato alcance Claude, adicione seu identificador:

207 

208 ```

209 /imessage:access allow +15551234567

210 ```

211 

212 Os identificadores são números de telefone no formato `+country` ou e-mails de Apple ID como `user@example.com`.

213 </Step>

214 </Steps>

215 </Tab>

216</Tabs>

217 

218Você também pode [criar seu próprio canal](/pt/channels-reference) para sistemas que ainda não têm um plugin.

219 

220## Quickstart

221 

222Fakechat é um canal de demonstração oficialmente suportado que executa uma interface de chat no localhost, sem nada para autenticar e nenhum serviço externo para configurar.

223 

224Depois de instalar e habilitar fakechat, você pode digitar no navegador e a mensagem chega em sua sessão Claude Code. Claude responde e a resposta aparece de volta no navegador. Depois de testar a interface fakechat, tente [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram), [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) ou [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).

225 

226Para tentar a demonstração fakechat, você precisará de:

227 

228* Claude Code [instalado e autenticado](/pt/quickstart#step-1-install-claude-code) com uma conta claude.ai

229* [Bun](https://bun.sh) instalado. Os plugins de canal pré-construídos são scripts Bun. Verifique com `bun --version`; se isso falhar, [instale Bun](https://bun.sh/docs/installation).

230* **Usuários de Team/Enterprise**: seu administrador de organização deve [habilitar canais](#enterprise-controls) nas configurações gerenciadas

231 

232<Steps>

233 <Step title="Instalar o plugin de canal fakechat">

234 Inicie uma sessão Claude Code e execute o comando de instalação:

235 

236 ```text theme={null}

237 /plugin install fakechat@claude-plugins-official

238 ```

239 

240 Se Claude Code relatar que o plugin não foi encontrado em nenhum marketplace, seu marketplace está ausente ou desatualizado. Execute `/plugin marketplace update claude-plugins-official` para atualizá-lo, ou `/plugin marketplace add anthropics/claude-plugins-official` se você ainda não o adicionou. Em seguida, tente novamente a instalação.

241 </Step>

242 

243 <Step title="Reiniciar com o canal habilitado">

244 Saia do Claude Code e reinicie com `--channels` e passe o plugin fakechat que você instalou:

245 

246 ```bash theme={null}

247 claude --channels plugin:fakechat@claude-plugins-official

248 ```

249 

250 O servidor fakechat inicia automaticamente.

251 

252 <Tip>

253 Você pode passar vários plugins para `--channels`, separados por espaço.

254 </Tip>

255 </Step>

256 

257 <Step title="Enviar uma mensagem">

258 Abra a interface fakechat em [http://localhost:8787](http://localhost:8787) e digite uma mensagem:

259 

260 ```text theme={null}

261 hey, what's in my working directory?

262 ```

263 

264 A mensagem chega em sua sessão Claude Code como um evento `<channel source="fakechat">`. Claude a lê, faz o trabalho e chama a ferramenta `reply` do fakechat. A resposta aparece na interface de chat.

265 </Step>

266</Steps>

267 

268Se Claude atingir um prompt de permissão enquanto você está longe do terminal, a sessão pausa até que você responda. Os servidores de canal que declaram a [capacidade de retransmissão de permissão](/pt/channels-reference#relay-permission-prompts) podem encaminhar esses prompts para você para que você possa aprovar ou negar remotamente. Para uso sem supervisão, [`--dangerously-skip-permissions`](/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) ignora prompts completamente, mas use apenas em ambientes em que você confia.

269 

270## Segurança

271 

272Cada plugin de canal aprovado mantém uma lista de permissão de remetentes: apenas IDs que você adicionou podem enviar mensagens, e todos os outros são silenciosamente descartados.

273 

274Telegram e Discord inicializam a lista por emparelhamento:

275 

2761. Encontre seu bot no Telegram ou Discord e envie-lhe qualquer mensagem

2772. O bot responde com um código de emparelhamento

2783. Em sua sessão Claude Code, aprove o código quando solicitado

2794. Seu ID de remetente é adicionado à lista de permissão

280 

281iMessage funciona de forma diferente: enviar uma mensagem para si mesmo ignora a porta automaticamente, e você adiciona outros contatos por identificador com `/imessage:access allow`.

282 

283Além disso, você controla quais servidores estão habilitados em cada sessão com `--channels`, e em planos Team e Enterprise sua organização controla a disponibilidade com [`channelsEnabled`](#enterprise-controls).

284 

285Estar em `.mcp.json` não é suficiente para enviar mensagens: um servidor também deve ser nomeado em `--channels`.

286 

287A lista de permissão também controla a [retransmissão de permissão](/pt/channels-reference#relay-permission-prompts) se o canal a declarar. Qualquer pessoa que possa responder através do canal pode aprovar ou negar o uso de ferramentas em sua sessão, portanto, apenas adicione à lista de permissão remetentes em quem você confia com essa autoridade.

288 

289## Controles empresariais

290 

291Em planos Team e Enterprise, os canais estão desabilitados por padrão. Os administradores controlam a disponibilidade através de duas [configurações gerenciadas](/pt/settings) que os usuários não podem substituir:

292 

293| Configuração | Propósito | Quando não configurado |

294| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ |

295| `channelsEnabled` | Chave mestra. Deve ser `true` para que qualquer canal entregue mensagens. Defina através do toggle do [console de administração claude.ai](https://claude.ai/admin-settings/claude-code) ou diretamente nas configurações gerenciadas. Bloqueia todos os canais, incluindo a flag de desenvolvimento quando desativado. | Canais bloqueados |

296| `allowedChannelPlugins` | Quais plugins podem se registrar uma vez que os canais estão habilitados. Substitui a lista mantida pela Anthropic quando definido. Aplica-se apenas quando `channelsEnabled` é `true`. | A lista padrão da Anthropic se aplica |

297 

298Usuários Pro e Max sem uma organização ignoram essas verificações completamente: os canais estão disponíveis e os usuários optam por sessão com `--channels`.

299 

300### Habilitar canais para sua organização

301 

302Os administradores podem habilitar canais em [**claude.ai → Admin settings → Claude Code → Channels**](https://claude.ai/admin-settings/claude-code), ou definindo `channelsEnabled` como `true` nas configurações gerenciadas.

303 

304Uma vez habilitado, os usuários em sua organização podem usar `--channels` para optar por servidores de canal em sessões individuais. Se a configuração estiver desabilitada ou não definida, o servidor MCP ainda se conecta e suas ferramentas funcionam, mas as mensagens de canal não chegarão. Um aviso de inicialização informa ao usuário para ter um administrador habilitar a configuração.

305 

306### Restringir quais plugins de canal podem ser executados

307 

308Por padrão, qualquer plugin na lista de permissão mantida pela Anthropic pode se registrar como um canal. Os administradores em planos Team e Enterprise podem substituir essa lista de permissão pela sua própria definindo `allowedChannelPlugins` nas configurações gerenciadas. Use isso para restringir quais plugins oficiais são permitidos, aprovar canais do seu próprio marketplace interno, ou ambos. Cada entrada nomeia um plugin e o marketplace de onde vem:

309 

310```json theme={null}

311{

312 "channelsEnabled": true,

313 "allowedChannelPlugins": [

314 { "marketplace": "claude-plugins-official", "plugin": "telegram" },

315 { "marketplace": "claude-plugins-official", "plugin": "discord" },

316 { "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }

317 ]

318}

319```

320 

321Quando `allowedChannelPlugins` é definido, ele substitui completamente a lista de permissão da Anthropic: apenas os plugins listados podem se registrar. Deixe-o indefinido para voltar à lista de permissão padrão da Anthropic. Uma matriz vazia bloqueia todos os plugins de canal da lista de permissão, mas `--dangerously-load-development-channels` ainda pode contorná-lo para testes locais. Para bloquear canais completamente, incluindo a flag de desenvolvimento, deixe `channelsEnabled` indefinido.

322 

323Esta configuração requer `channelsEnabled: true`. Se um usuário passar um plugin para `--channels` que não esteja em sua lista, Claude Code inicia normalmente, mas o canal não se registra, e o aviso de inicialização explica que o plugin não está na lista aprovada da organização.

324 

325## Visualização de pesquisa

326 

327Os canais são um recurso de visualização de pesquisa. A disponibilidade está sendo lançada gradualmente, e a sintaxe da flag `--channels` e o contrato de protocolo podem mudar com base no feedback.

328 

329Durante a visualização, `--channels` aceita apenas plugins de uma lista de permissão mantida pela Anthropic, ou da lista de permissão da sua organização se um administrador tiver definido [`allowedChannelPlugins`](#restrict-which-channel-plugins-can-run). Os plugins de canal em [claude-plugins-official](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) são o conjunto aprovado padrão. Se você passar algo que não esteja na lista de permissão efetiva, Claude Code inicia normalmente, mas o canal não se registra, e o aviso de inicialização informa por quê.

330 

331Para testar um canal que você está criando, use `--dangerously-load-development-channels`. Veja [Test during the research preview](/pt/channels-reference#test-during-the-research-preview) para informações sobre como testar canais personalizados que você cria.

332 

333Relate problemas ou feedback no [repositório GitHub do Claude Code](https://github.com/anthropics/claude-code/issues).

334 

335## Como os canais se comparam

336 

337Vários recursos do Claude Code se conectam a sistemas fora do terminal, cada um adequado para um tipo diferente de trabalho:

338 

339| Recurso | O que faz | Bom para |

340| ------------------------------------------------ | -------------------------------------------------------------------------- | ----------------------------------------------------------------- |

341| [Claude Code na web](/pt/claude-code-on-the-web) | Executa tarefas em uma nova sandbox na nuvem, clonada do GitHub | Delegar trabalho assíncrono independente que você verifica depois |

342| [Claude no Slack](/pt/slack) | Gera uma sessão web a partir de uma menção `@Claude` em um canal ou thread | Iniciar tarefas diretamente do contexto de conversa da equipe |

343| [Servidor MCP](/pt/mcp) padrão | Claude o consulta durante uma tarefa; nada é enviado para a sessão | Dar ao Claude acesso sob demanda para ler ou consultar um sistema |

344| [Remote Control](/pt/remote-control) | Você dirige sua sessão local de claude.ai ou do aplicativo móvel Claude | Dirigir uma sessão em andamento enquanto está longe de sua mesa |

345 

346Os canais preenchem a lacuna nessa lista enviando eventos de fontes não-Claude para sua sessão local já em execução.

347 

348* **Ponte de chat**: pergunte algo ao Claude do seu telefone via Telegram, Discord ou iMessage, e a resposta volta no mesmo chat enquanto o trabalho é executado em sua máquina contra seus arquivos reais.

349* **[Receptor de webhook](/pt/channels-reference#example-build-a-webhook-receiver)**: um webhook de CI, seu rastreador de erros, um pipeline de implantação ou outro serviço externo chega onde Claude já tem seus arquivos abertos e se lembra do que você estava depurando.

350 

351## Próximas etapas

352 

353Depois de ter um canal em execução, explore esses recursos relacionados:

354 

355* [Criar seu próprio canal](/pt/channels-reference) para sistemas que ainda não têm plugins

356* [Remote Control](/pt/remote-control) para dirigir uma sessão local do seu telefone em vez de encaminhar eventos para ela

357* [Tarefas agendadas](/pt/scheduled-tasks) para pesquisar em um cronômetro em vez de reagir a eventos enviados

channels-reference.md +749 −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# Referência de Channels

6 

7> Construa um servidor MCP que envia webhooks, alertas e mensagens de chat para uma sessão Claude Code. Referência para o contrato de channel: declaração de capacidade, eventos de notificação, ferramentas de resposta, gating de remetente e retransmissão de permissão.

8 

9<Note>

10 Channels estão em [visualização de pesquisa](/pt/channels#research-preview) e requerem Claude Code v2.1.80 ou posterior. Eles requerem login em claude.ai. Autenticação por console e chave de API não é suportada. Organizações Team e Enterprise devem [habilitá-los explicitamente](/pt/channels#enterprise-controls).

11</Note>

12 

13Um channel é um servidor MCP que envia eventos para uma sessão Claude Code para que Claude possa reagir a coisas que acontecem fora do terminal.

14 

15Você pode construir um channel unidirecional ou bidirecional. Channels unidirecionais encaminham alertas, webhooks ou eventos de monitoramento para Claude agir. Channels bidirecionais como pontes de chat também [expõem uma ferramenta de resposta](#expose-a-reply-tool) para que Claude possa enviar mensagens de volta. Um channel com um caminho de remetente confiável também pode optar por [retransmitir prompts de permissão](#relay-permission-prompts) para que você possa aprovar ou negar o uso de ferramentas remotamente.

16 

17Esta página cobre:

18 

19* [Visão geral](#overview): como os channels funcionam

20* [O que você precisa](#what-you-need): requisitos e etapas gerais

21* [Exemplo: construir um receptor de webhook](#example-build-a-webhook-receiver): um passo a passo mínimo unidirecional

22* [Opções de servidor](#server-options): os campos do construtor

23* [Formato de notificação](#notification-format): o payload do evento

24* [Expor uma ferramenta de resposta](#expose-a-reply-tool): deixar Claude enviar mensagens de volta

25* [Gate de mensagens de entrada](#gate-inbound-messages): verificações de remetente para evitar injeção de prompt

26* [Retransmitir prompts de permissão](#relay-permission-prompts): encaminhar prompts de aprovação de ferramentas para channels remotos

27 

28Para usar um channel existente em vez de construir um, consulte [Channels](/pt/channels). Telegram, Discord, iMessage e fakechat estão incluídos na visualização de pesquisa.

29 

30## Visão geral

31 

32Um channel é um servidor [MCP](https://modelcontextprotocol.io) que é executado na mesma máquina que Claude Code. Claude Code o spawna como um subprocesso e se comunica via stdio. Seu servidor de channel é a ponte entre sistemas externos e a sessão Claude Code:

33 

34* **Plataformas de chat** (Telegram, Discord): seu plugin é executado localmente e faz polling da API da plataforma para novas mensagens. Quando alguém envia uma DM para seu bot, o plugin recebe a mensagem e a encaminha para Claude. Nenhuma URL para expor.

35* **Webhooks** (CI, monitoramento): seu servidor escuta em uma porta HTTP local. Sistemas externos fazem POST para essa porta, e seu servidor envia o payload para Claude.

36 

37<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/pt/images/channel-architecture.svg" alt="Diagrama de arquitetura mostrando sistemas externos se conectando ao seu servidor de channel local, que se comunica com Claude Code via stdio" />

38 

39## O que você precisa

40 

41O único requisito obrigatório é o pacote [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) e um runtime compatível com Node.js. [Bun](https://bun.sh), [Node](https://nodejs.org) e [Deno](https://deno.com) funcionam. Os plugins pré-construídos na visualização de pesquisa usam Bun, mas seu channel não precisa.

42 

43Seu servidor precisa:

44 

451. Declarar a capacidade `claude/channel` para que Claude Code registre um listener de notificação

462. Emitir eventos `notifications/claude/channel` quando algo acontecer

473. Conectar via [transporte stdio](https://modelcontextprotocol.io/docs/concepts/transports#standard-io) (Claude Code spawna seu servidor como um subprocesso)

48 

49As seções [Opções de servidor](#server-options) e [Formato de notificação](#notification-format) cobrem cada uma delas em detalhes. Consulte [Exemplo: construir um receptor de webhook](#example-build-a-webhook-receiver) para um passo a passo completo.

50 

51Durante a visualização de pesquisa, channels personalizados não estão na [lista de aprovação](/pt/channels#supported-channels). Use `--dangerously-load-development-channels` para testar localmente. Consulte [Testar durante a visualização de pesquisa](#test-during-the-research-preview) para detalhes.

52 

53## Exemplo: construir um receptor de webhook

54 

55Este passo a passo constrói um servidor de arquivo único que escuta solicitações HTTP e as encaminha para sua sessão Claude Code. No final, qualquer coisa que possa enviar um HTTP POST, como um pipeline de CI, um alerta de monitoramento ou um comando `curl`, pode enviar eventos para Claude.

56 

57Este exemplo usa [Bun](https://bun.sh) como o runtime para seu servidor HTTP integrado e suporte a TypeScript. Você pode usar [Node](https://nodejs.org) ou [Deno](https://deno.com) em vez disso; o único requisito é o [SDK MCP](https://www.npmjs.com/package/@modelcontextprotocol/sdk).

58 

59<Steps>

60 <Step title="Criar o projeto">

61 Crie um novo diretório e instale o SDK MCP:

62 

63 ```bash theme={null}

64 mkdir webhook-channel && cd webhook-channel

65 bun add @modelcontextprotocol/sdk

66 ```

67 </Step>

68 

69 <Step title="Escrever o servidor de channel">

70 Crie um arquivo chamado `webhook.ts`. Este é seu servidor de channel inteiro: ele se conecta a Claude Code via stdio e escuta POSTs HTTP na porta 8788. Quando uma solicitação chega, ele envia o corpo para Claude como um evento de channel.

71 

72 ```ts title="webhook.ts" theme={null}

73 #!/usr/bin/env bun

74 import { Server } from '@modelcontextprotocol/sdk/server/index.js'

75 import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

76 

77 // Criar o servidor MCP e declará-lo como um channel

78 const mcp = new Server(

79 { name: 'webhook', version: '0.0.1' },

80 {

81 // esta chave é o que o torna um channel — Claude Code registra um listener para ela

82 capabilities: { experimental: { 'claude/channel': {} } },

83 // adicionado ao prompt do sistema de Claude para que ele saiba como lidar com esses eventos

84 instructions: 'Events from the webhook channel arrive as <channel source="webhook" ...>. They are one-way: read them and act, no reply expected.',

85 },

86 )

87 

88 // Conectar a Claude Code via stdio (Claude Code spawna este processo)

89 await mcp.connect(new StdioServerTransport())

90 

91 // Iniciar um servidor HTTP que encaminha cada POST para Claude

92 Bun.serve({

93 port: 8788, // qualquer porta aberta funciona

94 // apenas localhost: nada fora desta máquina pode fazer POST

95 hostname: '127.0.0.1',

96 async fetch(req) {

97 const body = await req.text()

98 await mcp.notification({

99 method: 'notifications/claude/channel',

100 params: {

101 content: body, // torna-se o corpo da tag <channel>

102 // cada chave torna-se um atributo de tag, ex: <channel path="/" method="POST">

103 meta: { path: new URL(req.url).pathname, method: req.method },

104 },

105 })

106 return new Response('ok')

107 },

108 })

109 ```

110 

111 O arquivo faz três coisas em ordem:

112 

113 * **Configuração do servidor**: cria o servidor MCP com `claude/channel` em suas capacidades, o que é o que diz a Claude Code que este é um channel. A string [`instructions`](#server-options) vai para o prompt do sistema de Claude: diga a Claude quais eventos esperar, se deve responder e como rotear respostas se deve.

114 * **Conexão stdio**: conecta a Claude Code via stdin/stdout. Isto é padrão para qualquer [servidor MCP](https://modelcontextprotocol.io/docs/concepts/transports#standard-io): Claude Code o spawna como um subprocesso.

115 * **Listener HTTP**: inicia um servidor web local na porta 8788. Cada corpo POST é encaminhado para Claude como um evento de channel via `mcp.notification()`. O `content` torna-se o corpo do evento, e cada entrada `meta` torna-se um atributo na tag `<channel>`. O listener precisa de acesso à instância `mcp`, então é executado no mesmo processo. Você poderia dividi-lo em módulos separados para um projeto maior.

116 </Step>

117 

118 <Step title="Registrar seu servidor com Claude Code">

119 Adicione o servidor à sua configuração MCP para que Claude Code saiba como iniciá-lo. Para um `.mcp.json` em nível de projeto no mesmo diretório, use um caminho relativo. Para configuração em nível de usuário em `~/.claude.json`, use o caminho absoluto completo para que o servidor possa ser encontrado de qualquer projeto:

120 

121 ```json title=".mcp.json" theme={null}

122 {

123 "mcpServers": {

124 "webhook": { "command": "bun", "args": ["./webhook.ts"] }

125 }

126 }

127 ```

128 

129 Claude Code lê sua configuração MCP na inicialização e spawna cada servidor como um subprocesso.

130 </Step>

131 

132 <Step title="Testá-lo">

133 Durante a visualização de pesquisa, channels personalizados não estão na lista de aprovação, então inicie Claude Code com a flag de desenvolvimento:

134 

135 ```bash theme={null}

136 claude --dangerously-load-development-channels server:webhook

137 ```

138 

139 Quando Claude Code inicia, ele lê sua configuração MCP, spawna seu `webhook.ts` como um subprocesso, e o listener HTTP inicia automaticamente na porta que você configurou (8788 neste exemplo). Você não precisa executar o servidor você mesmo.

140 

141 Se você vir "blocked by org policy," seu administrador Team ou Enterprise precisa [habilitar channels](/pt/channels#enterprise-controls) primeiro.

142 

143 Em um terminal separado, simule um webhook enviando um HTTP POST com uma mensagem para seu servidor. Este exemplo envia um alerta de falha de CI para a porta 8788 (ou qualquer porta que você configurou):

144 

145 ```bash theme={null}

146 curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"

147 ```

148 

149 O payload chega em sua sessão Claude Code como uma tag `<channel>`:

150 

151 ```text theme={null}

152 <channel source="webhook" path="/" method="POST">build failed on main: https://ci.example.com/run/1234</channel>

153 ```

154 

155 Em seu terminal Claude Code, você verá Claude receber a mensagem e começar a responder: lendo arquivos, executando comandos ou o que a mensagem exigir. Este é um channel unidirecional, então Claude age em sua sessão mas não envia nada de volta através do webhook. Para adicionar respostas, consulte [Expor uma ferramenta de resposta](#expose-a-reply-tool).

156 

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

158 

159 * **`curl` sucede mas nada chega a Claude**: execute `/mcp` em sua sessão para verificar o status do servidor. "Failed to connect" 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.

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

161 </Step>

162</Steps>

163 

164O [servidor fakechat](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) estende este padrão com uma UI web, anexos de arquivo e uma ferramenta de resposta para chat bidirecional.

165 

166## Testar durante a visualização de pesquisa

167 

168Durante a visualização de pesquisa, cada channel deve estar na [lista de aprovação](/pt/channels#research-preview) para se registrar. A flag de desenvolvimento contorna a lista de aprovação para entradas específicas após um prompt de confirmação. Este exemplo mostra ambos os tipos de entrada:

169 

170```bash theme={null}

171# Testando um plugin que você está desenvolvendo

172claude --dangerously-load-development-channels plugin:yourplugin@yourmarketplace

173 

174# Testando um servidor .mcp.json simples (sem wrapper de plugin ainda)

175claude --dangerously-load-development-channels server:webhook

176```

177 

178O bypass é por entrada. Combinar esta flag com `--channels` não estende o bypass para as entradas `--channels`. Durante a visualização de pesquisa, a lista de aprovação é curada pela Anthropic, então seu channel permanece na flag de desenvolvimento enquanto você constrói e testa.

179 

180<Note>

181 Esta flag pula apenas a lista de aprovação. A política de organização `channelsEnabled` ainda se aplica. Não a use para executar channels de fontes não confiáveis.

182</Note>

183 

184## Opções de servidor

185 

186Um channel define essas opções no construtor [`Server`](https://modelcontextprotocol.io/docs/concepts/servers). Os campos `instructions` e `capabilities.tools` são [MCP padrão](https://modelcontextprotocol.io/docs/concepts/servers); `capabilities.experimental['claude/channel']` e `capabilities.experimental['claude/channel/permission']` são as adições específicas de channel:

187 

188| Campo | Tipo | Descrição |

189| :------------------------------------------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

190| `capabilities.experimental['claude/channel']` | `object` | Obrigatório. Sempre `{}`. A presença registra o listener de notificação. |

191| `capabilities.experimental['claude/channel/permission']` | `object` | Opcional. Sempre `{}`. Declara que este channel pode receber solicitações de retransmissão de permissão. Quando declarado, Claude Code encaminha prompts de aprovação de ferramentas para seu channel para que você possa aprová-los ou negá-los remotamente. Consulte [Retransmitir prompts de permissão](#relay-permission-prompts). |

192| `capabilities.tools` | `object` | Apenas bidirecional. Sempre `{}`. Capacidade de ferramenta MCP padrão. Consulte [Expor uma ferramenta de resposta](#expose-a-reply-tool). |

193| `instructions` | `string` | Recomendado. Adicionado ao prompt do sistema de Claude. Diga a Claude quais eventos esperar, o que os atributos da tag `<channel>` significam, se deve responder e, se sim, qual ferramenta usar e qual atributo passar de volta (como `chat_id`). |

194 

195Para criar um channel unidirecional, omita `capabilities.tools`. Este exemplo mostra uma configuração bidirecional com a capacidade de channel, ferramentas e instruções definidas:

196 

197```ts theme={null}

198import { Server } from '@modelcontextprotocol/sdk/server/index.js'

199 

200const mcp = new Server(

201 { name: 'your-channel', version: '0.0.1' },

202 {

203 capabilities: {

204 experimental: { 'claude/channel': {} }, // registra o listener de channel

205 tools: {}, // omita para channels unidirecionais

206 },

207 // adicionado ao prompt do sistema de Claude para que ele saiba como lidar com seus eventos

208 instructions: 'Messages arrive as <channel source="your-channel" ...>. Reply with the reply tool.',

209 },

210)

211```

212 

213Para enviar um evento, chame `mcp.notification()` com o método `notifications/claude/channel`. Os params estão na próxima seção.

214 

215## Formato de notificação

216 

217Seu servidor emite `notifications/claude/channel` com dois params:

218 

219| Campo | Tipo | Descrição |

220| :-------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

221| `content` | `string` | O corpo do evento. Entregue como o corpo da tag `<channel>`. |

222| `meta` | `Record<string, string>` | Opcional. Cada entrada torna-se um atributo na tag `<channel>` para contexto de roteamento como ID de chat, nome do remetente ou severidade de alerta. As chaves devem ser identificadores: apenas letras, dígitos e underscores. Chaves contendo hífens ou outros caracteres são silenciosamente descartadas. |

223 

224Seu servidor envia eventos chamando `mcp.notification()` na instância `Server`. Este exemplo envia um alerta de falha de CI com duas chaves meta:

225 

226```ts theme={null}

227await mcp.notification({

228 method: 'notifications/claude/channel',

229 params: {

230 content: 'build failed on main: https://ci.example.com/run/1234',

231 meta: { severity: 'high', run_id: '1234' },

232 },

233})

234```

235 

236O evento chega no contexto de Claude envolvido em uma tag `<channel>`. O atributo `source` é definido automaticamente a partir do nome configurado do seu servidor:

237 

238```text theme={null}

239<channel source="your-channel" severity="high" run_id="1234">

240build failed on main: https://ci.example.com/run/1234

241</channel>

242```

243 

244## Expor uma ferramenta de resposta

245 

246Se seu channel é bidirecional, como uma ponte de chat em vez de um encaminhador de alerta, exponha uma [ferramenta MCP](https://modelcontextprotocol.io/docs/concepts/tools) padrão que Claude possa chamar para enviar mensagens de volta. Nada sobre o registro da ferramenta é específico de channel. Uma ferramenta de resposta tem três componentes:

247 

2481. Uma entrada `tools: {}` em suas capacidades do construtor `Server` para que Claude Code descubra a ferramenta

2492. Manipuladores de ferramentas que definem o esquema da ferramenta e implementam a lógica de envio

2503. Uma string `instructions` em seu construtor `Server` que diz a Claude quando e como chamar a ferramenta

251 

252Para adicionar estes ao [receptor de webhook acima](#example-build-a-webhook-receiver):

253 

254<Steps>

255 <Step title="Habilitar descoberta de ferramentas">

256 Em seu construtor `Server` em `webhook.ts`, adicione `tools: {}` às capacidades para que Claude Code saiba que seu servidor oferece ferramentas:

257 

258 ```ts theme={null}

259 capabilities: {

260 experimental: { 'claude/channel': {} },

261 tools: {}, // habilita descoberta de ferramentas

262 },

263 ```

264 </Step>

265 

266 <Step title="Registrar a ferramenta de resposta">

267 Adicione o seguinte a `webhook.ts`. O `import` vai no topo do arquivo com seus outros imports; os dois manipuladores vão entre o construtor `Server` e `mcp.connect()`. Isto registra uma ferramenta `reply` que Claude pode chamar com um `chat_id` e `text`:

268 

269 ```ts theme={null}

270 // Adicione este import no topo de webhook.ts

271 import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

272 

273 // Claude consulta isto na inicialização para descobrir quais ferramentas seu servidor oferece

274 mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

275 tools: [{

276 name: 'reply',

277 description: 'Send a message back over this channel',

278 // inputSchema diz a Claude quais argumentos passar

279 inputSchema: {

280 type: 'object',

281 properties: {

282 chat_id: { type: 'string', description: 'The conversation to reply in' },

283 text: { type: 'string', description: 'The message to send' },

284 },

285 required: ['chat_id', 'text'],

286 },

287 }],

288 }))

289 

290 // Claude chama isto quando quer invocar uma ferramenta

291 mcp.setRequestHandler(CallToolRequestSchema, async req => {

292 if (req.params.name === 'reply') {

293 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

294 // send() é seu saída: POST para sua plataforma de chat, ou para teste local

295 // o broadcast SSE mostrado no exemplo completo abaixo.

296 send(`Reply to ${chat_id}: ${text}`)

297 return { content: [{ type: 'text', text: 'sent' }] }

298 }

299 throw new Error(`unknown tool: ${req.params.name}`)

300 })

301 ```

302 </Step>

303 

304 <Step title="Atualizar as instruções">

305 Atualize a string `instructions` em seu construtor `Server` para que Claude saiba rotear respostas de volta através da ferramenta. Este exemplo diz a Claude para passar `chat_id` da tag de entrada:

306 

307 ```ts theme={null}

308 instructions: 'Messages arrive as <channel source="webhook" chat_id="...">. Reply with the reply tool, passing the chat_id from the tag.'

309 ```

310 </Step>

311</Steps>

312 

313Aqui está o `webhook.ts` completo com suporte bidirecional. Respostas de saída fluem sobre `GET /events` usando [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) (SSE), então `curl -N localhost:8788/events` pode observá-las ao vivo; chat de entrada chega em `POST /`:

314 

315```ts title="Full webhook.ts with reply tool' expandable theme={null}

316#!/usr/bin/env bun

317import { Server } from '@modelcontextprotocol/sdk/server/index.js'

318import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

319import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

320 

321// --- Outbound: write to any curl -N listeners on /events ---

322// A real bridge would POST to your chat platform instead.

323const listeners = new Set<(chunk: string) => void>()

324function send(text: string) {

325 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

326 for (const emit of listeners) emit(chunk)

327}

328 

329const mcp = new Server(

330 { name: 'webhook', version: '0.0.1' },

331 {

332 capabilities: {

333 experimental: { 'claude/channel': {} },

334 tools: {},

335 },

336 instructions: 'Messages arrive as <channel source="webhook" chat_id="...">. Reply with the reply tool, passing the chat_id from the tag.',

337 },

338)

339 

340mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

341 tools: [{

342 name: 'reply',

343 description: 'Send a message back over this channel',

344 inputSchema: {

345 type: 'object',

346 properties: {

347 chat_id: { type: 'string', description: 'The conversation to reply in' },

348 text: { type: 'string', description: 'The message to send' },

349 },

350 required: ['chat_id', 'text'],

351 },

352 }],

353}))

354 

355mcp.setRequestHandler(CallToolRequestSchema, async req => {

356 if (req.params.name === 'reply') {

357 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

358 send(`Reply to ${chat_id}: ${text}`)

359 return { content: [{ type: 'text', text: 'sent' }] }

360 }

361 throw new Error(`unknown tool: ${req.params.name}`)

362})

363 

364await mcp.connect(new StdioServerTransport())

365 

366let nextId = 1

367Bun.serve({

368 port: 8788,

369 hostname: '127.0.0.1',

370 idleTimeout: 0, // don't close idle SSE streams

371 async fetch(req) {

372 const url = new URL(req.url)

373 

374 // GET /events: SSE stream so curl -N can watch Claude's replies live

375 if (req.method === 'GET' && url.pathname === '/events') {

376 const stream = new ReadableStream({

377 start(ctrl) {

378 ctrl.enqueue(': connected\n\n') // so curl shows something immediately

379 const emit = (chunk: string) => ctrl.enqueue(chunk)

380 listeners.add(emit)

381 req.signal.addEventListener('abort', () => listeners.delete(emit))

382 },

383 })

384 return new Response(stream, {

385 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

386 })

387 }

388 

389 // POST: forward to Claude as a channel event

390 const body = await req.text()

391 const chat_id = String(nextId++)

392 await mcp.notification({

393 method: 'notifications/claude/channel',

394 params: {

395 content: body,

396 meta: { chat_id, path: url.pathname, method: req.method },

397 },

398 })

399 return new Response('ok')

400 },

401})

402```

403 

404O [servidor fakechat](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) mostra um exemplo mais completo com anexos de arquivo e edição de mensagens.

405 

406## Gate de mensagens de entrada

407 

408Um channel sem gate é um vetor de injeção de prompt. Qualquer pessoa que possa alcançar seu endpoint pode colocar texto na frente de Claude. Um channel escutando uma plataforma de chat ou um endpoint público precisa de uma verificação real de remetente antes de emitir qualquer coisa.

409 

410Verifique o remetente contra uma lista de permissão antes de chamar `mcp.notification()`. Este exemplo descarta qualquer mensagem de um remetente não no conjunto:

411 

412```ts theme={null}

413const allowed = new Set(loadAllowlist()) // from your access.json or equivalent

414 

415// inside your message handler, before emitting:

416if (!allowed.has(message.from.id)) { // sender, not room

417 return // drop silently

418}

419await mcp.notification({ ... })

420```

421 

422Gate na identidade do remetente, não na identidade do chat ou sala: `message.from.id` no exemplo, não `message.chat.id`. Em chats em grupo, estes diferem, e fazer gate na sala deixaria qualquer pessoa em um grupo com lista de permissão injetar mensagens na sessão.

423 

424Os channels [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) e [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) fazem gate em uma lista de permissão de remetente da mesma forma. Eles inicializam a lista por emparelhamento: o usuário envia uma DM para o bot, o bot responde com um código de emparelhamento, o usuário o aprova em sua sessão Claude Code, e seu ID de plataforma é adicionado. Consulte qualquer implementação para o fluxo de emparelhamento completo. O channel [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) toma uma abordagem diferente: detecta os próprios endereços do usuário do banco de dados Messages na inicialização e os deixa passar automaticamente, com outros remetentes adicionados por handle.

425 

426## Retransmitir prompts de permissão

427 

428<Note>

429 A retransmissão de permissão requer Claude Code v2.1.81 ou posterior. Versões anteriores ignoram a capacidade `claude/channel/permission`.

430</Note>

431 

432Quando Claude chama uma ferramenta que precisa de aprovação, o diálogo do terminal local abre e a sessão aguarda. Um channel bidirecional pode optar por receber o mesmo prompt em paralelo e retransmiti-lo para você em outro dispositivo. Ambos permanecem ativos: você pode responder no terminal ou no seu telefone, e Claude Code aplica qualquer resposta que chegar primeiro e fecha a outra.

433 

434A retransmissão cobre aprovações de uso de ferramentas como `Bash`, `Write` e `Edit`. Diálogos de confiança de projeto e consentimento de servidor MCP não retransmitem; esses aparecem apenas no terminal local.

435 

436### Como a retransmissão funciona

437 

438Quando um prompt de permissão abre, o loop de retransmissão tem quatro etapas:

439 

4401. Claude Code gera um ID de solicitação curto e notifica seu servidor

4412. Seu servidor encaminha o prompt e o ID para seu aplicativo de chat

4423. O usuário remoto responde com um sim ou não e esse ID

4434. Seu manipulador de entrada analisa a resposta em um veredicto, e Claude Code o aplica apenas se o ID corresponder a uma solicitação aberta

444 

445O diálogo do terminal local permanece aberto durante tudo isso. Se alguém no terminal responder antes do veredicto remoto chegar, essa resposta é aplicada em vez disso e a solicitação remota pendente é descartada.

446 

447<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/pt/images/channel-permission-relay.svg" alt="Diagrama de sequência: Claude Code envia uma notificação permission_request para o servidor de channel, o servidor formata e envia o prompt para o aplicativo de chat, o humano responde com um veredicto, e o servidor analisa essa resposta em uma notificação de permissão de volta para Claude Code" />

448 

449### Campos de solicitação de permissão

450 

451A notificação de saída de Claude Code é `notifications/claude/channel/permission_request`. Como a [notificação de channel](#notification-format), o transporte é MCP padrão mas o método e esquema são extensões de Claude Code. O objeto `params` tem quatro campos de string que seu servidor formata no prompt de saída:

452 

453| Campo | Descrição |

454| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

455| `request_id` | Cinco letras minúsculas extraídas de `a`-`z` sem `l`, para que nunca leia como `1` ou `I` quando digitado em um telefone. Inclua-o em seu prompt de saída para que possa ser ecoado na resposta. Claude Code apenas aceita um veredicto que carregue um ID que emitiu. O diálogo do terminal local não exibe este ID, então seu manipulador de saída é a única maneira de aprender. |

456| `tool_name` | Nome da ferramenta que Claude quer usar, por exemplo `Bash` ou `Write`. |

457| `description` | Resumo legível por humanos do que esta chamada de ferramenta específica faz, o mesmo texto que o diálogo do terminal local mostra. Para uma chamada Bash isto é a descrição de Claude do comando, ou o comando em si se nenhum foi dado. |

458| `input_preview` | Os argumentos da ferramenta como uma string JSON, truncada para 200 caracteres. Para Bash isto é o comando; para Write é o caminho do arquivo e um prefixo do conteúdo. Omita-o do seu prompt se você tiver espaço apenas para uma mensagem de uma linha. Seu servidor decide o que mostrar. |

459 

460O veredicto que seu servidor envia de volta é `notifications/claude/channel/permission` com dois campos: `request_id` ecoando o ID acima, e `behavior` definido como `'allow'` ou `'deny'`. Allow deixa a chamada de ferramenta prosseguir; deny a rejeita, o mesmo que responder Não no diálogo local. Nenhum veredicto afeta chamadas futuras.

461 

462### Adicionar retransmissão a uma ponte de chat

463 

464Adicionar retransmissão de permissão a um channel bidirecional leva três componentes:

465 

4661. Uma entrada `claude/channel/permission: {}` sob capacidades `experimental` em seu construtor `Server` para que Claude Code saiba encaminhar prompts

4672. Um manipulador de notificação para `notifications/claude/channel/permission_request` que formata o prompt e o envia através da API da sua plataforma

4683. Uma verificação em seu manipulador de mensagem de entrada que reconhece `yes <id>` ou `no <id>` e emite uma notificação de veredicto `notifications/claude/channel/permission` em vez de encaminhar o texto para Claude

469 

470Apenas declare a capacidade se seu channel [autentica o remetente](#gate-inbound-messages), porque qualquer pessoa que possa responder através do seu channel pode aprovar ou negar o uso de ferramentas em sua sessão.

471 

472Para adicionar estes a uma ponte de chat bidirecional como a montada em [Expor uma ferramenta de resposta](#expose-a-reply-tool):

473 

474<Steps>

475 <Step title="Declarar a capacidade de permissão">

476 Em seu construtor `Server`, adicione `claude/channel/permission: {}` ao lado de `claude/channel` sob `experimental`:

477 

478 ```ts theme={null}

479 capabilities: {

480 experimental: {

481 'claude/channel': {},

482 'claude/channel/permission': {}, // opt in to permission relay

483 },

484 tools: {},

485 },

486 ```

487 </Step>

488 

489 <Step title="Manipular a solicitação de entrada">

490 Registre um manipulador de notificação entre seu construtor `Server` e `mcp.connect()`. Claude Code o chama com os [quatro campos de solicitação](#permission-request-fields) quando um diálogo de permissão abre. Seu manipulador formata o prompt para sua plataforma e inclui instruções para responder com o ID:

491 

492 ```ts theme={null}

493 import { z } from 'zod'

494 

495 // setNotificationHandler roteia por z.literal no campo method,

496 // então este esquema é tanto o validador quanto a chave de dispatch

497 const PermissionRequestSchema = z.object({

498 method: z.literal('notifications/claude/channel/permission_request'),

499 params: z.object({

500 request_id: z.string(), // cinco letras minúsculas, inclua verbatim em seu prompt

501 tool_name: z.string(), // ex: "Bash", "Write"

502 description: z.string(), // resumo legível por humanos desta chamada

503 input_preview: z.string(), // args da ferramenta como JSON, truncado para ~200 chars

504 }),

505 })

506 

507 mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

508 // send() é sua saída: POST para sua plataforma de chat, ou para teste local

509 // o broadcast SSE mostrado no exemplo completo abaixo.

510 send(

511 `Claude wants to run ${params.tool_name}: ${params.description}\n\n` +

512 // o ID na instrução é o que seu manipulador de entrada analisa na Etapa 3

513 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

514 )

515 })

516 ```

517 </Step>

518 

519 <Step title="Interceptar o veredicto em seu manipulador de entrada">

520 Seu manipulador de entrada é o loop ou callback que recebe mensagens de sua plataforma: o mesmo lugar onde você [faz gate no remetente](#gate-inbound-messages) e emite `notifications/claude/channel` para encaminhar chat para Claude. Adicione uma verificação antes da chamada de encaminhamento de chat que reconhece o formato de veredicto e emite a notificação de permissão em vez disso.

521 

522 A regex corresponde ao formato de ID que Claude Code gera: cinco letras, nunca `l`. A flag `/i` tolera autocorreção de telefone capitalizando a resposta; minúscula o ID capturado antes de enviá-lo de volta.

523 

524 ```ts theme={null}

525 // corresponde a "y abcde", "yes abcde", "n abcde", "no abcde"

526 // [a-km-z] é o alfabeto de ID que Claude Code usa (minúscula, pula 'l')

527 // /i tolera autocorreção de telefone; minúscula a captura antes de enviar

528 const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

529 

530 async function onInbound(message: PlatformMessage) {

531 if (!allowed.has(message.from.id)) return // gate on sender first

532 

533 const m = PERMISSION_REPLY_RE.exec(message.text)

534 if (m) {

535 // m[1] é a palavra de veredicto, m[2] é o ID de solicitação

536 // emita a notificação de veredicto de volta para Claude Code em vez de chat

537 await mcp.notification({

538 method: 'notifications/claude/channel/permission',

539 params: {

540 request_id: m[2].toLowerCase(), // normalize in case of autocorrect caps

541 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

542 },

543 })

544 return // handled as verdict, don't also forward as chat

545 }

546 

547 // didn't match verdict format: fall through to the normal chat path

548 await mcp.notification({

549 method: 'notifications/claude/channel',

550 params: { content: message.text, meta: { chat_id: String(message.chat.id) } },

551 })

552 }

553 ```

554 </Step>

555</Steps>

556 

557Claude Code também mantém o diálogo do terminal local aberto, para que você possa responder em qualquer lugar, e a primeira resposta a chegar é aplicada. Uma resposta remota que não corresponde exatamente ao formato esperado falha de uma de duas maneiras, e em ambos os casos o diálogo permanece aberto:

558 

559* **Formato diferente**: a regex do seu manipulador de entrada falha em corresponder, então texto como `approve it` ou `yes` sem um ID cai como uma mensagem normal para Claude.

560* **Formato correto, ID errado**: seu servidor emite um veredicto, mas Claude Code não encontra nenhuma solicitação aberta com esse ID e o descarta silenciosamente.

561 

562### Exemplo completo

563 

564O `webhook.ts` montado abaixo combina todas as três extensões desta página: a ferramenta de resposta, gating de remetente e retransmissão de permissão. Se você está começando aqui, você também precisará da [configuração de projeto e entrada `.mcp.json`](#example-build-a-webhook-receiver) do passo a passo inicial.

565 

566Para tornar ambas as direções testáveis a partir de curl, o listener HTTP serve dois caminhos:

567 

568* **`GET /events`**: mantém um stream SSE aberto e envia cada mensagem de saída como uma linha `data:`, então `curl -N` pode observar as respostas de Claude e qualquer prompt de permissão conforme eles disparam ao vivo.

569* **`POST /`**: o lado de entrada, o mesmo manipulador de antes, agora com a verificação de formato de veredicto inserida antes do ramo de encaminhamento de chat.

570 

571```ts title="Full webhook.ts with permission relay' expandable theme={null}

572#!/usr/bin/env bun

573import { Server } from '@modelcontextprotocol/sdk/server/index.js'

574import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

575import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

576import { z } from 'zod'

577 

578// --- Outbound: write to any curl -N listeners on /events ---

579// A real bridge would POST to your chat platform instead.

580const listeners = new Set<(chunk: string) => void>()

581function send(text: string) {

582 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

583 for (const emit of listeners) emit(chunk)

584}

585 

586// Sender allowlist. For the local walkthrough we trust the single X-Sender

587// header value "dev"; a real bridge would check the platform's user ID.

588const allowed = new Set(['dev'])

589 

590const mcp = new Server(

591 { name: 'webhook', version: '0.0.1' },

592 {

593 capabilities: {

594 experimental: {

595 'claude/channel': {},

596 'claude/channel/permission': {}, // opt in to permission relay

597 },

598 tools: {},

599 },

600 instructions:

601 'Messages arrive as <channel source="webhook" chat_id="...">. ' +

602 'Reply with the reply tool, passing the chat_id from the tag.',

603 },

604)

605 

606// --- reply tool: Claude calls this to send a message back ---

607mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

608 tools: [{

609 name: 'reply',

610 description: 'Send a message back over this channel',

611 inputSchema: {

612 type: 'object',

613 properties: {

614 chat_id: { type: 'string', description: 'The conversation to reply in' },

615 text: { type: 'string', description: 'The message to send' },

616 },

617 required: ['chat_id', 'text'],

618 },

619 }],

620}))

621 

622mcp.setRequestHandler(CallToolRequestSchema, async req => {

623 if (req.params.name === 'reply') {

624 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

625 send(`Reply to ${chat_id}: ${text}`)

626 return { content: [{ type: 'text', text: 'sent' }] }

627 }

628 throw new Error(`unknown tool: ${req.params.name}`)

629})

630 

631// --- permission relay: Claude Code (not Claude) calls this when a dialog opens

632const PermissionRequestSchema = z.object({

633 method: z.literal('notifications/claude/channel/permission_request'),

634 params: z.object({

635 request_id: z.string(),

636 tool_name: z.string(),

637 description: z.string(),

638 input_preview: z.string(),

639 }),

640})

641 

642mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

643 send(

644 `Claude wants to run ${params.tool_name}: ${params.description}\n\n` +

645 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

646 )

647})

648 

649await mcp.connect(new StdioServerTransport())

650 

651// --- HTTP on :8788: GET /events streams outbound, POST routes inbound ---

652const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

653let nextId = 1

654 

655Bun.serve({

656 port: 8788,

657 hostname: '127.0.0.1',

658 idleTimeout: 0, // don't close idle SSE streams

659 async fetch(req) {

660 const url = new URL(req.url)

661 

662 // GET /events: SSE stream so curl -N can watch replies and prompts live

663 if (req.method === 'GET' && url.pathname === '/events') {

664 const stream = new ReadableStream({

665 start(ctrl) {

666 ctrl.enqueue(': connected\n\n') // so curl shows something immediately

667 const emit = (chunk: string) => ctrl.enqueue(chunk)

668 listeners.add(emit)

669 req.signal.addEventListener('abort', () => listeners.delete(emit))

670 },

671 })

672 return new Response(stream, {

673 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

674 })

675 }

676 

677 // everything else is inbound: gate on sender first

678 const body = await req.text()

679 const sender = req.headers.get('X-Sender') ?? ''

680 if (!allowed.has(sender)) return new Response('forbidden', { status: 403 })

681 

682 // check for verdict format before treating as chat

683 const m = PERMISSION_REPLY_RE.exec(body)

684 if (m) {

685 await mcp.notification({

686 method: 'notifications/claude/channel/permission',

687 params: {

688 request_id: m[2].toLowerCase(),

689 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

690 },

691 })

692 return new Response('verdict recorded')

693 }

694 

695 // normal chat: forward to Claude as a channel event

696 const chat_id = String(nextId++)

697 await mcp.notification({

698 method: 'notifications/claude/channel',

699 params: { content: body, meta: { chat_id, path: url.pathname } },

700 })

701 return new Response('ok')

702 },

703})

704```

705 

706Teste o caminho de veredicto em três terminais. O primeiro é sua sessão Claude Code, iniciada com a [flag de desenvolvimento](#test-during-the-research-preview) para que ela spawne `webhook.ts`:

707 

708```bash theme={null}

709claude --dangerously-load-development-channels server:webhook

710```

711 

712No segundo, transmita o lado de saída para que você possa ver as respostas de Claude e qualquer prompt de permissão conforme eles disparam ao vivo:

713 

714```bash theme={null}

715curl -N localhost:8788/events

716```

717 

718No terceiro, envie uma mensagem que fará Claude tentar executar um comando:

719 

720```bash theme={null}

721curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788

722```

723 

724O diálogo de permissão local abre em seu terminal Claude Code. Um momento depois o prompt aparece no stream `/events`, incluindo o ID de cinco letras. Aprove-o do lado remoto:

725 

726```bash theme={null}

727curl -d "yes <id>" -H "X-Sender: dev" localhost:8788

728```

729 

730O diálogo local fecha e a ferramenta é executada. A resposta de Claude volta através da ferramenta `reply` e chega no stream também.

731 

732As três peças específicas de channel neste arquivo:

733 

734* **Capacidades** no construtor `Server`: `claude/channel` registra o listener de notificação, `claude/channel/permission` opta pela retransmissão de permissão, `tools` deixa Claude descobrir a ferramenta de resposta.

735* **Caminhos de saída**: o manipulador da ferramenta `reply` é o que Claude chama para respostas conversacionais; o manipulador de notificação `PermissionRequestSchema` é o que Claude Code chama quando um diálogo de permissão abre. Ambos chamam `send()` para transmitir sobre `/events`, mas são acionados por diferentes partes do sistema.

736* **Manipulador HTTP**: `GET /events` mantém um stream SSE aberto para que curl possa observar a saída ao vivo; `POST` é entrada, feita gate no cabeçalho `X-Sender`. Um corpo `yes <id>` ou `no <id>` vai para Claude Code como uma notificação de veredicto e nunca chega a Claude; qualquer outra coisa é encaminhada para Claude como um evento de channel.

737 

738## Empacotar como um plugin

739 

740Para tornar seu channel instalável e compartilhável, envolva-o em um [plugin](/pt/plugins) e publique-o em um [marketplace](/pt/plugin-marketplaces). Os usuários o instalam com `/plugin install`, então o habilitam por sessão com `--channels plugin:<name>@<marketplace>`.

741 

742Um channel publicado em seu próprio marketplace ainda precisa de `--dangerously-load-development-channels` para ser executado, já que não está na [lista de aprovação](/pt/channels#supported-channels). Para adicioná-lo, [envie-o para o marketplace oficial](/pt/plugins#submit-your-plugin-to-the-official-marketplace). Plugins de channel passam por revisão de segurança antes de serem aprovados. Em planos Team e Enterprise, um administrador pode incluir seu plugin na lista [`allowedChannelPlugins`](/pt/channels#restrict-which-channel-plugins-can-run) da organização, que substitui a lista de aprovação padrão da Anthropic.

743 

744## Veja também

745 

746* [Channels](/pt/channels) para instalar e usar Telegram, Discord, iMessage ou a demo fakechat, e para habilitar channels para uma organização Team ou Enterprise

747* [Implementações de channel funcionando](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) para código de servidor completo com fluxos de emparelhamento, ferramentas de resposta e anexos de arquivo

748* [MCP](/pt/mcp) para o protocolo subjacente que servidores de channel implementam

749* [Plugins](/pt/plugins) para empacotar seu channel para que os usuários possam instalá-lo com `/plugin install`

checkpointing.md +89 −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# Checkpointing

6 

7> Rastreie, reverta e resuma as edições e conversas do Claude para gerenciar o estado da sessão.

8 

9Claude Code rastreia automaticamente as edições de arquivo do Claude conforme você trabalha, permitindo que você desfaça rapidamente as alterações e reverta para estados anteriores se algo sair do caminho.

10 

11## Como o checkpointing funciona

12 

13Conforme você trabalha com Claude, o checkpointing captura automaticamente o estado do seu código antes de cada edição. Esta rede de segurança permite que você persiga tarefas ambiciosas e em larga escala sabendo que sempre pode retornar a um estado de código anterior.

14 

15### Rastreamento automático

16 

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

18 

19* Cada prompt do usuário cria um novo checkpoint

20* Os checkpoints persistem entre sessões, para que você possa acessá-los em conversas retomadas

21* Limpeza automática junto com as sessões após 30 dias (configurável)

22 

23### Rewind e resumo

24 

25Pressione `Esc` duas vezes (`Esc` + `Esc`) ou use o comando `/rewind` para abrir o menu de rewind. Uma lista rolável mostra cada um dos seus prompts da sessão. Selecione o ponto em que deseja agir e escolha uma ação:

26 

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

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

29* **Restaurar código**: reverte as alterações de arquivo mantendo a conversa

30* **Resumir a partir daqui**: compacta a conversa a partir deste ponto em diante em um resumo, liberando espaço da context window

31* **Cancelar**: retorna à lista de mensagens sem fazer alterações

32 

33Após restaurar a conversa ou resumir, o prompt original da mensagem selecionada é restaurado no campo de entrada para que você possa reenviá-lo ou editá-lo.

34 

35#### Restaurar vs. resumir

36 

37As três opções de restauração revertam o estado: elas desfazem alterações de código, histórico de conversa ou ambos. "Resumir a partir daqui" funciona de forma diferente:

38 

39* As mensagens antes da mensagem selecionada permanecem intactas

40* A mensagem selecionada e todas as mensagens subsequentes são substituídas por um resumo compacto gerado por IA

41* Nenhum arquivo no disco é alterado

42* As mensagens originais são preservadas na transcrição da sessão, para que Claude possa fazer referência aos detalhes se necessário

43 

44Isso é semelhante ao `/compact`, mas direcionado: em vez de resumir toda a conversa, você mantém o contexto inicial em detalhes completos e apenas compacta as partes que estão usando espaço. Você pode digitar instruções opcionais para orientar o que o resumo se concentra.

45 

46<Note>

47 Resumir mantém você na mesma sessão e compacta o contexto. Se você quiser ramificar e tentar uma abordagem diferente enquanto preserva a sessão original intacta, use [fork](/pt/how-claude-code-works#resume-or-fork-sessions) em vez disso (`claude --continue --fork-session`).

48</Note>

49 

50## Casos de uso comuns

51 

52Os checkpoints são particularmente úteis quando:

53 

54* **Explorando alternativas**: tente diferentes abordagens de implementação sem perder seu ponto de partida

55* **Recuperando de erros**: desfaça rapidamente as alterações que introduziram bugs ou quebraram a funcionalidade

56* **Iterando em recursos**: experimente variações sabendo que você pode reverter para estados funcionais

57* **Liberando espaço de contexto**: resuma uma sessão de depuração verbosa a partir do ponto médio em diante, mantendo suas instruções iniciais intactas

58 

59## Limitações

60 

61### Alterações de comando Bash não rastreadas

62 

63O checkpointing não rastreia arquivos modificados por comandos bash. Por exemplo, se Claude Code executar:

64 

65```bash theme={null}

66rm file.txt

67mv old.txt new.txt

68cp source.txt dest.txt

69```

70 

71Essas modificações de arquivo não podem ser desfeitas através de rewind. Apenas edições diretas de arquivo feitas através das ferramentas de edição de arquivo do Claude são rastreadas.

72 

73### Alterações externas não rastreadas

74 

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

76 

77### Não é um substituto para controle de versão

78 

79Os checkpoints são projetados para recuperação rápida no nível da sessão. Para histórico de versão permanente e colaboração:

80 

81* Continue usando controle de versão (ex. Git) para commits, branches e histórico de longo prazo

82* Os checkpoints complementam mas não substituem o controle de versão adequado

83* Pense em checkpoints como "desfazer local" e Git como "histórico permanente"

84 

85## Veja também

86 

87* [Modo interativo](/pt/interactive-mode) - Atalhos de teclado e controles de sessão

88* [Comandos integrados](/pt/commands) - Acessando checkpoints usando `/rewind`

89* [Referência CLI](/pt/cli-reference) - Opções de linha de comando

chrome.md +232 −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# Use Claude Code with Chrome (beta)

6 

7> Conecte Claude Code ao seu navegador Chrome para testar aplicativos web, depurar com logs de console, automatizar preenchimento de formulários e extrair dados de páginas web.

8 

9Claude Code integra-se com a [extensão Claude in Chrome do navegador](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) para oferecer recursos de automação de navegador a partir da CLI ou da [extensão VS Code](/pt/vs-code#automate-browser-tasks-with-chrome). Construa seu código, depois teste e depure no navegador sem trocar de contexto.

10 

11Claude abre novas abas para tarefas do navegador e compartilha o estado de login do seu navegador, para que possa acessar qualquer site em que você já esteja conectado. As ações do navegador são executadas em uma janela Chrome visível em tempo real. Quando Claude encontra uma página de login ou CAPTCHA, ele pausa e pede que você a manipule manualmente.

12 

13<Note>

14 A integração com Chrome está em beta e atualmente funciona com Google Chrome e Microsoft Edge. Ainda não é suportada em Brave, Arc ou outros navegadores baseados em Chromium. WSL (Windows Subsystem for Linux) também não é suportado.

15</Note>

16 

17## Recursos

18 

19Com Chrome conectado, você pode encadear ações do navegador com tarefas de codificação em um único fluxo de trabalho:

20 

21* **Depuração ao vivo**: leia erros de console e estado do DOM diretamente, depois corrija o código que os causou

22* **Verificação de design**: construa uma interface a partir de um mock do Figma, depois abra-a no navegador para verificar se corresponde

23* **Teste de aplicativo web**: teste validação de formulário, verifique regressões visuais ou verifique fluxos de usuário

24* **Aplicativos web autenticados**: interaja com Google Docs, Gmail, Notion ou qualquer aplicativo em que você esteja conectado sem conectores de API

25* **Extração de dados**: extraia informações estruturadas de páginas web e salve-as localmente

26* **Automação de tarefas**: automatize tarefas repetitivas do navegador como entrada de dados, preenchimento de formulários ou fluxos de trabalho em vários sites

27* **Gravação de sessão**: grave interações do navegador como GIFs para documentar ou compartilhar o que aconteceu

28 

29## Pré-requisitos

30 

31Antes de usar Claude Code com Chrome, você precisa de:

32 

33* Navegador [Google Chrome](https://www.google.com/chrome/) ou [Microsoft Edge](https://www.microsoft.com/edge)

34* Extensão [Claude in Chrome](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) versão 1.0.36 ou superior, disponível na Chrome Web Store para ambos os navegadores

35* [Claude Code](/pt/quickstart#step-1-install-claude-code) versão 2.0.73 ou superior

36* Um plano Anthropic direto (Pro, Max, Team ou Enterprise)

37 

38<Note>

39 A integração com Chrome não está disponível através de provedores terceirizados como Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry. Se você acessa Claude exclusivamente através de um provedor terceirizado, você precisa de uma conta claude.ai separada para usar este recurso.

40</Note>

41 

42## Comece na CLI

43 

44<Steps>

45 <Step title="Inicie Claude Code com Chrome">

46 Inicie Claude Code com a flag `--chrome`:

47 

48 ```bash theme={null}

49 claude --chrome

50 ```

51 

52 Você também pode ativar Chrome dentro de uma sessão existente executando `/chrome`.

53 </Step>

54 

55 <Step title="Peça a Claude para usar o navegador">

56 Este exemplo navega para uma página, interage com ela e relata o que encontra, tudo a partir do seu terminal ou editor:

57 

58 ```text theme={null}

59 Go to code.claude.com/docs, click on the search box,

60 type "hooks", and tell me what results appear

61 ```

62 </Step>

63</Steps>

64 

65Execute `/chrome` a qualquer momento para verificar o status da conexão, gerenciar permissões ou reconectar a extensão.

66 

67Para VS Code, consulte [automação de navegador em VS Code](/pt/vs-code#automate-browser-tasks-with-chrome).

68 

69### Ativar Chrome por padrão

70 

71Para evitar passar `--chrome` em cada sessão, execute `/chrome` e selecione "Enabled by default".

72 

73Na [extensão VS Code](/pt/vs-code#automate-browser-tasks-with-chrome), Chrome está disponível sempre que a extensão Chrome está instalada. Nenhuma flag adicional é necessária.

74 

75<Note>

76 Ativar Chrome por padrão na CLI aumenta o uso de contexto, pois as ferramentas do navegador estão sempre carregadas. Se você notar aumento no consumo de contexto, desative esta configuração e use `--chrome` apenas quando necessário.

77</Note>

78 

79### Gerenciar permissões de site

80 

81As permissões no nível do site são herdadas da extensão Chrome. Gerencie permissões nas configurações da extensão Chrome para controlar quais sites Claude pode navegar, clicar e digitar.

82 

83## Fluxos de trabalho de exemplo

84 

85Estes exemplos mostram maneiras comuns de combinar ações do navegador com tarefas de codificação. Execute `/mcp` e selecione `claude-in-chrome` para ver a lista completa de ferramentas de navegador disponíveis.

86 

87### Teste um aplicativo web local

88 

89Ao desenvolver um aplicativo web, peça a Claude para verificar se suas alterações funcionam corretamente:

90 

91```text theme={null}

92I just updated the login form validation. Can you open localhost:3000,

93try submitting the form with invalid data, and check if the error

94messages appear correctly?

95```

96 

97Claude navega para seu servidor local, interage com o formulário e relata o que observa.

98 

99### Depurar com logs de console

100 

101Claude pode ler a saída do console para ajudar a diagnosticar problemas. Diga a Claude quais padrões procurar em vez de pedir toda a saída do console, pois os logs podem ser verbosos:

102 

103```text theme={null}

104Open the dashboard page and check the console for any errors when

105the page loads.

106```

107 

108Claude lê as mensagens do console e pode filtrar padrões específicos ou tipos de erro.

109 

110### Automatizar preenchimento de formulários

111 

112Acelere tarefas repetitivas de entrada de dados:

113 

114```text theme={null}

115I have a spreadsheet of customer contacts in contacts.csv. For each row,

116go to the CRM at crm.example.com, click "Add Contact", and fill in the

117name, email, and phone fields.

118```

119 

120Claude lê seu arquivo local, navega pela interface web e insere os dados para cada registro.

121 

122### Rascunhar conteúdo no Google Docs

123 

124Use Claude para escrever diretamente em seus documentos sem configuração de API:

125 

126```text theme={null}

127Draft a project update based on the recent commits and add it to my

128Google Doc at docs.google.com/document/d/abc123

129```

130 

131Claude abre o documento, clica no editor e digita o conteúdo. Isso funciona com qualquer aplicativo web em que você esteja conectado: Gmail, Notion, Sheets e muito mais.

132 

133### Extrair dados de páginas web

134 

135Extraia informações estruturadas de sites:

136 

137```text theme={null}

138Go to the product listings page and extract the name, price, and

139availability for each item. Save the results as a CSV file.

140```

141 

142Claude navega para a página, lê o conteúdo e compila os dados em um formato estruturado.

143 

144### Executar fluxos de trabalho em vários sites

145 

146Coordene tarefas em vários sites:

147 

148```text theme={null}

149Check my calendar for meetings tomorrow, then for each meeting with

150an external attendee, look up their company website and add a note

151about what they do.

152```

153 

154Claude trabalha em abas para reunir informações e concluir o fluxo de trabalho.

155 

156### Gravar um GIF de demonstração

157 

158Crie gravações compartilháveis de interações do navegador:

159 

160```text theme={null}

161Record a GIF showing how to complete the checkout flow, from adding

162an item to the cart through to the confirmation page.

163```

164 

165Claude grava a sequência de interação e a salva como um arquivo GIF.

166 

167## Troubleshooting

168 

169### Extensão não detectada

170 

171Se Claude Code mostrar "Chrome extension not detected":

172 

1731. Verifique se a extensão Chrome está instalada e ativada em `chrome://extensions`

1742. Verifique se Claude Code está atualizado executando `claude --version`

1753. Verifique se Chrome está em execução

1764. Execute `/chrome` e selecione "Reconnect extension" para restabelecer a conexão

1775. Se o problema persistir, reinicie Claude Code e Chrome

178 

179Na primeira vez que você ativa a integração com Chrome, Claude Code instala um arquivo de configuração do host de mensagens nativas. Chrome lê este arquivo na inicialização, portanto, se a extensão não for detectada na sua primeira tentativa, reinicie Chrome para pegar a nova configuração.

180 

181Se a conexão ainda falhar, verifique se o arquivo de configuração do host existe em:

182 

183Para Chrome:

184 

185* **macOS**: `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

186* **Linux**: `~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

187* **Windows**: verifique `HKCU\Software\Google\Chrome\NativeMessagingHosts\` no Registro do Windows

188 

189Para Edge:

190 

191* **macOS**: `~/Library/Application Support/Microsoft Edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

192* **Linux**: `~/.config/microsoft-edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

193* **Windows**: verifique `HKCU\Software\Microsoft\Edge\NativeMessagingHosts\` no Registro do Windows

194 

195### Navegador não respondendo

196 

197Se os comandos do navegador de Claude pararem de funcionar:

198 

1991. Verifique se uma caixa de diálogo modal (alerta, confirmação, prompt) está bloqueando a página. Caixas de diálogo JavaScript bloqueiam eventos do navegador e impedem que Claude receba comandos. Feche a caixa de diálogo manualmente, depois diga a Claude para continuar.

2002. Peça a Claude para criar uma nova aba e tentar novamente

2013. Reinicie a extensão Chrome desativando-a e reativando-a em `chrome://extensions`

202 

203### Conexão cai durante sessões longas

204 

205O service worker da extensão Chrome pode ficar inativo durante sessões estendidas, o que quebra a conexão. Se as ferramentas do navegador pararem de funcionar após um período de inatividade, execute `/chrome` e selecione "Reconnect extension".

206 

207### Problemas específicos do Windows

208 

209No Windows, você pode encontrar:

210 

211* **Conflitos de named pipe (EADDRINUSE)**: se outro processo estiver usando o mesmo named pipe, reinicie Claude Code. Feche qualquer outra sessão de Claude Code que possa estar usando Chrome.

212* **Erros de host de mensagens nativas**: se o host de mensagens nativas falhar na inicialização, tente reinstalar Claude Code para regenerar a configuração do host.

213 

214### Mensagens de erro comuns

215 

216Estes são os erros mais frequentemente encontrados e como resolvê-los:

217 

218| Erro | Causa | Solução |

219| ------------------------------------ | ------------------------------------------------------------ | ----------------------------------------------------------------------- |

220| "Browser extension is not connected" | O host de mensagens nativas não consegue alcançar a extensão | Reinicie Chrome e Claude Code, depois execute `/chrome` para reconectar |

221| "Extension not detected" | A extensão Chrome não está instalada ou está desativada | Instale ou ative a extensão em `chrome://extensions` |

222| "No tab available" | Claude tentou agir antes de uma aba estar pronta | Peça a Claude para criar uma nova aba e tentar novamente |

223| "Receiving end does not exist" | O service worker da extensão ficou inativo | Execute `/chrome` e selecione "Reconnect extension" |

224 

225## Veja também

226 

227* [Computer use](/pt/computer-use): controle aplicativos nativos do macOS quando uma tarefa não pode ser feita em um navegador

228* [Use Claude Code in VS Code](/pt/vs-code#automate-browser-tasks-with-chrome): automação de navegador na extensão VS Code

229* [Referência CLI](/pt/cli-reference): flags de linha de comando incluindo `--chrome`

230* [Fluxos de trabalho comuns](/pt/common-workflows): mais maneiras de usar Claude Code

231* [Dados e privacidade](/pt/data-usage): como Claude Code manipula seus dados

232* [Getting started with Claude in Chrome](https://support.claude.com/en/articles/12012173-getting-started-with-claude-in-chrome): documentação completa para a extensão Chrome, incluindo atalhos, agendamento e permissões

claude-code-on-the-web.md +773 −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# Use Claude Code na web

6 

7> Configure ambientes em nuvem, scripts de configuração, acesso à rede e Docker na sandbox da Anthropic. Mova sessões entre web e terminal com `--remote` e `--teleport`.

8 

9<Note>

10 Claude Code na web 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.

11</Note>

12 

13Claude Code na web executa tarefas em infraestrutura em nuvem gerenciada pela Anthropic em [claude.ai/code](https://claude.ai/code). As sessões persistem mesmo se você fechar seu navegador, e você pode monitorá-las a partir do aplicativo móvel Claude.

14 

15<Tip>

16 Novo no Claude Code na web? Comece com [Começar](/pt/web-quickstart) para conectar sua conta GitHub e enviar sua primeira tarefa.

17</Tip>

18 

19Esta página cobre:

20 

21* [Opções de autenticação do GitHub](#github-authentication-options): duas maneiras de conectar o GitHub

22* [O ambiente em nuvem](#the-cloud-environment): qual configuração é transferida, quais ferramentas estão instaladas e como configurar ambientes

23* [Scripts de configuração](#setup-scripts) e gerenciamento de dependências

24* [Acesso à rede](#network-access): níveis, proxies e a lista de permissões padrão

25* [Mover tarefas entre web e terminal](#move-tasks-between-web-and-terminal) com `--remote` e `--teleport`

26* [Trabalhar com sessões](#work-with-sessions): revisar, compartilhar, arquivar, deletar

27* [Corrigir automaticamente pull requests](#auto-fix-pull-requests): responder automaticamente a falhas de CI e comentários de revisão

28* [Segurança e isolamento](#security-and-isolation): como as sessões são isoladas

29* [Limitações](#limitations): limites de taxa e restrições de plataforma

30 

31## Opções de autenticação do GitHub

32 

33As 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:

34 

35| Método | Como funciona | Melhor para |

36| :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------- |

37| **GitHub App** | Instale o Claude GitHub App em repositórios específicos durante [onboarding na web](/pt/web-quickstart). O acesso é limitado por repositório. | Equipes que desejam autorização explícita por repositório |

38| **`/web-setup`** | Execute `/web-setup` em seu terminal para sincronizar seu token CLI `gh` local com sua conta Claude. O acesso corresponde ao que seu token `gh` pode ver. | Desenvolvedores individuais que já usam `gh` |

39 

40Qualquer método funciona. [`/schedule`](/pt/routines) verifica qualquer forma de acesso e solicita que você execute `/web-setup` se nenhum estiver configurado. Veja [Conectar a partir do seu terminal](/pt/web-quickstart#connect-from-your-terminal) para o passo a passo de `/web-setup`.

41 

42O GitHub App é necessário para [Auto-fix](#auto-fix-pull-requests), que usa o App para receber webhooks de PR. Se você conectar com `/web-setup` e depois quiser Auto-fix, instale o App nesses repositórios.

43 

44Administradores de Team e Enterprise podem desabilitar `/web-setup` com o toggle Quick web setup em [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

45 

46<Note>

47 Organizações com [Zero Data Retention](/pt/zero-data-retention) habilitado não podem usar `/web-setup` ou outros recursos de sessão em nuvem.

48</Note>

49 

50## O ambiente em nuvem

51 

52Cada sessão é executada em uma VM gerenciada pela Anthropic com seu repositório clonado. Esta seção cobre o que está disponível quando uma sessão inicia e como personalizá-lo.

53 

54### O que está disponível em sessões em nuvem

55 

56As sessões em nuvem começam a partir de um clone fresco do seu repositório. Qualquer coisa confirmada no repositório está disponível. Qualquer coisa que você tenha instalado ou configurado apenas em sua própria máquina não está.

57 

58| | Disponível em sessões em nuvem | Por quê |

59| :--------------------------------------------------------------------------- | :----------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |

60| Seu `CLAUDE.md` do repositório | Sim | Parte do clone |

61| Seus hooks `.claude/settings.json` do repositório | Sim | Parte do clone |

62| Seus servidores MCP `.mcp.json` do repositório | Sim | Parte do clone |

63| Seu `.claude/rules/` do repositório | Sim | Parte do clone |

64| Seu `.claude/skills/`, `.claude/agents/`, `.claude/commands/` do repositório | Sim | Parte do clone |

65| Plugins declarados em `.claude/settings.json` | Sim | Instalados no início da sessão a partir do [marketplace](/pt/plugin-marketplaces) que você declarou. Requer acesso à rede para alcançar a fonte do marketplace |

66| Seu `CLAUDE.md` do usuário `~/.claude/` | Não | Vive em sua máquina, não no repositório |

67| Plugins habilitados apenas em suas configurações de usuário | Não | `enabledPlugins` com escopo de usuário vive em `~/.claude/settings.json`. Declare-os em `.claude/settings.json` do repositório |

68| Servidores MCP que você adicionou com `claude mcp add` | Não | Aqueles escrevem em sua configuração de usuário local, não no repositório. Declare o servidor em [`.mcp.json`](/pt/mcp#project-scope) |

69| Tokens de API estáticos e credenciais | Não | Nenhum armazenamento de segredos dedicado existe ainda. Veja abaixo |

70| 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 em nuvem |

71 

72Para disponibilizar configuração em sessões em nuvem, confirme-a no repositório. Um armazenamento de segredos dedicado ainda não está disponível. Tanto variáveis de ambiente quanto scripts de configuração são armazenados na configuração de ambiente, visíveis para qualquer pessoa que possa editar esse ambiente. Se você precisar de segredos em uma sessão em nuvem, adicione-os como variáveis de ambiente com essa visibilidade em mente.

73 

74### Ferramentas instaladas

75 

76As sessões em 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.

77 

78| Categoria | Incluído |

79| :------------------ | :----------------------------------------------------------------------------- |

80| **Python** | Python 3.x com pip, poetry, uv, black, mypy, pytest, ruff |

81| **Node.js** | 20, 21 e 22 via nvm, com npm, yarn, pnpm, bun¹, eslint, prettier, chromedriver |

82| **Ruby** | 3.1, 3.2, 3.3 com gem, bundler, rbenv |

83| **PHP** | 8.4 com Composer |

84| **Java** | OpenJDK 21 com Maven e Gradle |

85| **Go** | estável mais recente com suporte a módulos |

86| **Rust** | rustc e cargo |

87| **C/C++** | GCC, Clang, cmake, ninja, conan |

88| **Docker** | docker, dockerd, docker compose |

89| **Bancos de dados** | PostgreSQL 16, Redis 7.0 |

90| **Utilitários** | git, jq, yq, ripgrep, tmux, vim, nano |

91 

92¹ Bun está instalado mas tem [problemas de compatibilidade com proxy](#install-dependencies-with-a-sessionstart-hook) conhecidos para busca de pacotes.

93 

94Para versões exatas, peça a Claude para executar `check-tools` em uma sessão em nuvem. Este comando existe apenas em sessões em nuvem.

95 

96### Trabalhar com problemas e pull requests do GitHub

97 

98As sessões em nuvem incluem ferramentas GitHub integradas que permitem que Claude leia problemas, liste pull requests, busque diffs e poste comentários sem nenhuma configuração. Essas ferramentas autenticam através do [proxy GitHub](#github-proxy) usando qualquer método que você configurou em [Opções de autenticação do GitHub](#github-authentication-options), então seu token nunca entra no contêiner.

99 

100O CLI `gh` não está pré-instalado. Se você precisar de um comando `gh` que as ferramentas integradas não cobrem, como `gh release` ou `gh workflow run`, instale e autentique você mesmo:

101 

102<Steps>

103 <Step title="Instale gh em seu script de configuração">

104 Adicione `apt update && apt install -y gh` ao seu [script de configuração](#setup-scripts).

105 </Step>

106 

107 <Step title="Forneça um token">

108 Adicione uma variável de ambiente `GH_TOKEN` às suas [configurações de ambiente](#configure-your-environment) com um token de acesso pessoal do GitHub. `gh` lê `GH_TOKEN` automaticamente, então nenhuma etapa `gh auth login` é necessária.

109 </Step>

110</Steps>

111 

112### Vincule artefatos de volta à sessão

113 

114Cada sessão em 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.

115 

116Peça a Claude para construir o link a partir da variável de ambiente. O seguinte comando imprime a URL:

117 

118```bash theme={null}

119echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID}"

120```

121 

122### Execute testes, inicie serviços e adicione pacotes

123 

124Claude executa testes como parte do trabalho em uma tarefa. Peça no seu prompt, como "fix the failing tests in `tests/`" ou "run pytest after each change." Executores de teste como pytest, jest e cargo test funcionam imediatamente já que estão pré-instalados.

125 

126PostgreSQL e Redis estão pré-instalados mas não estão em execução por padrão. Peça a Claude para iniciar cada um durante a sessão:

127 

128```bash theme={null}

129service postgresql start

130```

131 

132```bash theme={null}

133service redis-server start

134```

135 

136Docker 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 confiáveis](#default-allowed-domains) incluem Docker Hub e outros registros comuns.

137 

138Se suas imagens são grandes ou lentas para puxar, adicione `docker compose pull` ou `docker compose build` ao seu [script de configuração](#setup-scripts). As imagens puxadas são salvas no [ambiente em cache](#environment-caching), então cada nova sessão as tem no disco. O cache armazena apenas arquivos, não processos em execução, então Claude ainda inicia os contêineres cada sessão.

139 

140Para adicionar pacotes que não estão pré-instalados, use um [script de configuração](#setup-scripts). A saída do script é [armazenada em cache](#environment-caching), então 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 durante a sessão, mas essas instalações não persistem entre sessões.

141 

142### Limites de recursos

143 

144As sessões em nuvem são executadas com limites de recursos aproximados que podem mudar ao longo do tempo:

145 

146* 4 vCPUs

147* 16 GB de RAM

148* 30 GB de disco

149 

150Tarefas que requerem significativamente mais memória, como grandes trabalhos de compilação ou testes com uso intensivo de memória, podem falhar ou ser encerradas. Para cargas de trabalho além desses limites, use [Remote Control](/pt/remote-control) para executar Claude Code em seu próprio hardware.

151 

152### Configure seu ambiente

153 

154Os ambientes controlam [acesso à rede](#network-access), variáveis de ambiente e o [script de configuração](#setup-scripts) que é executado antes de uma sessão iniciar. Veja [Ferramentas instaladas](#installed-tools) para o que está disponível sem nenhuma configuração. Você pode gerenciar ambientes a partir da interface web ou do terminal:

155 

156| Ação | Como |

157| :------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

158| Adicione um ambiente | Selecione o ambiente atual para abrir o seletor, depois selecione **Add environment**. O diálogo inclui nome, nível de acesso à rede, variáveis de ambiente e script de configuração. |

159| Edite um ambiente | Selecione o ícone de configurações à direita do nome do ambiente. |

160| Arquive um ambiente | Abra o ambiente para edição e selecione **Archive**. Ambientes arquivados ficam ocultos do seletor mas as sessões existentes continuam em execução. |

161| Defina o padrão para `--remote` | Execute `/remote-env` em seu terminal. Se você tiver um único ambiente, este comando mostra sua configuração atual. `/remote-env` apenas seleciona o padrão; adicione, edite e arquive ambientes a partir da interface web. |

162 

163As variáveis de ambiente usam formato `.env` com um par `KEY=value` por linha. Não envolva valores em aspas, já que as aspas são armazenadas como parte do valor.

164 

165```text theme={null}

166NODE_ENV=development

167LOG_LEVEL=debug

168DATABASE_URL=postgres://localhost:5432/myapp

169```

170 

171## Scripts de configuração

172 

173Um script de configuração é um script Bash que é executado quando uma nova sessão em nuvem inicia, antes de 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.

174 

175Os scripts são executados como root no Ubuntu 24.04, então `apt install` e a maioria dos gerenciadores de pacotes de linguagem funcionam.

176 

177Para adicionar um script de configuração, abra o diálogo de configurações de ambiente e insira seu script no campo **Setup script**.

178 

179Este exemplo instala o CLI `gh`, que não está pré-instalado:

180 

181```bash theme={null}

182#!/bin/bash

183apt update && apt install -y gh

184```

185 

186Se o script sair com código diferente de zero, a sessão falha ao iniciar. Acrescente `|| true` a comandos não críticos para evitar bloquear a sessão em uma falha de instalação intermitente.

187 

188<Note>

189 Os scripts de configuração que instalam pacotes precisam de acesso à rede para alcançar registros. O acesso à rede padrão **Trusted** permite conexões com [domínios comuns permitidos](#default-allowed-domains) incluindo npm, PyPI, RubyGems e crates.io. Os scripts falharão ao instalar pacotes se seu ambiente usar acesso à rede **None**.

190</Note>

191 

192### Armazenamento em cache de ambiente

193 

194O 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. Novas sessões começam com suas dependências, ferramentas e imagens Docker já no disco, e a etapa de script de configuração é ignorada. Isso mantém a inicialização rápida mesmo quando o script instala grandes cadeias de ferramentas ou puxa imagens de contêiner.

195 

196O cache captura arquivos, não processos em execução. Qualquer coisa que o script de configuração escreve no disco é transferida. Serviços ou contêineres que ele inicia não são, então inicie-os por sessão pedindo a Claude ou com um [hook SessionStart](#setup-scripts-vs-sessionstart-hooks).

197 

198O 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 executa novamente o script de configuração.

199 

200Você não precisa habilitar armazenamento em cache ou gerenciar snapshots você mesmo.

201 

202### Scripts de configuração vs. hooks SessionStart

203 

204Use um script de configuração para instalar coisas que a nuvem precisa mas seu laptop já tem, como um tempo de execução de linguagem ou ferramenta CLI. Use um [hook SessionStart](/pt/hooks#sessionstart) para configuração de projeto que deve ser executada em todos os lugares, nuvem e local, como `npm install`.

205 

206Ambos são executados no início de uma sessão, mas pertencem a lugares diferentes:

207 

208| | Scripts de configuração | Hooks SessionStart |

209| -------------- | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |

210| Anexado a | O ambiente em nuvem | Seu repositório |

211| Configurado em | Interface do usuário do ambiente em nuvem | `.claude/settings.json` em seu repositório |

212| Executa | Antes de Claude Code ser lançado, quando nenhum [ambiente em cache](#environment-caching) está disponível | Depois de Claude Code ser lançado, em todas as sessões incluindo retomadas |

213| Escopo | Apenas ambientes em nuvem | Ambientes locais e em nuvem |

214 

215Os hooks SessionStart também podem ser definidos em seu `~/.claude/settings.json` no nível do usuário localmente, mas as configurações no nível do usuário não são transferidas para sessões em nuvem. Na nuvem, apenas os hooks confirmados no repositório são executados.

216 

217### Instale dependências com um hook SessionStart

218 

219Para instalar dependências apenas em sessões em nuvem, adicione um hook SessionStart ao `.claude/settings.json` do seu repositório:

220 

221```json theme={null}

222{

223 "hooks": {

224 "SessionStart": [

225 {

226 "matcher": "startup|resume",

227 "hooks": [

228 {

229 "type": "command",

230 "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"

231 }

232 ]

233 }

234 ]

235 }

236}

237```

238 

239Crie o script em `scripts/install_pkgs.sh` e torne-o executável com `chmod +x`. A variável de ambiente `CLAUDE_CODE_REMOTE` é definida como `true` em sessões em nuvem, então você pode usá-la para pular execução local:

240 

241```bash theme={null}

242#!/bin/bash

243 

244if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then

245 exit 0

246fi

247 

248npm install

249pip install -r requirements.txt

250exit 0

251```

252 

253Os hooks SessionStart têm algumas limitações em sessões em nuvem:

254 

255* **Sem escopo apenas para nuvem**: os hooks são executados em sessões locais e em nuvem. Para pular execução local, verifique a variável de ambiente `CLAUDE_CODE_REMOTE` conforme mostrado acima.

256* **Requer acesso à rede**: os comandos de instalação precisam alcançar registros de pacotes. Se seu ambiente usar 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.

257* **Compatibilidade com proxy**: todo o tráfego de saída passa por um [proxy de segurança](#security-proxy). Alguns gerenciadores de pacotes não funcionam corretamente com este proxy. Bun é um exemplo conhecido.

258* **Adiciona latência de inicialização**: os hooks são executados cada vez que uma sessão inicia ou é retomada, diferentemente de scripts de configuração que se beneficiam do [armazenamento em cache de ambiente](#environment-caching). Mantenha os scripts de instalação rápidos verificando se as dependências já estão presentes antes de reinstalar.

259 

260Para persistir variáveis de ambiente para comandos Bash subsequentes, escreva no arquivo em `$CLAUDE_ENV_FILE`. Veja [Hooks SessionStart](/pt/hooks#sessionstart) para detalhes.

261 

262Substituir a imagem base pela sua própria imagem Docker ainda não é suportado. Use um script de configuração para instalar o que você precisa no topo da [imagem fornecida](#installed-tools), ou execute sua imagem como um contêiner ao lado de Claude com `docker compose`.

263 

264## Acesso à rede

265 

266O acesso à rede controla conexões de saída do ambiente em nuvem. Cada ambiente especifica um nível de acesso, e você pode estendê-lo com domínios permitidos personalizados. O padrão é **Trusted**, que permite registros de pacotes e outros [domínios na lista de permissões](#default-allowed-domains).

267 

268### Níveis de acesso

269 

270Escolha um nível de acesso quando você criar ou editar um ambiente:

271 

272| Nível | Conexões de saída |

273| :---------- | :-------------------------------------------------------------------------------------------------------------- |

274| **None** | Sem acesso à rede de saída |

275| **Trusted** | [Domínios na lista de permissões](#default-allowed-domains) apenas: registros de pacotes, GitHub, SDKs em nuvem |

276| **Full** | Qualquer domínio |

277| **Custom** | Sua própria lista de permissões, opcionalmente incluindo os padrões |

278 

279As operações do GitHub usam um [proxy separado](#github-proxy) que é independente desta configuração.

280 

281### Permita domínios específicos

282 

283Para permitir domínios que não estão na lista Trusted, selecione **Custom** nas configurações de acesso à rede do ambiente. Um campo **Allowed domains** aparece. Insira um domínio por linha:

284 

285```text theme={null}

286api.example.com

287*.internal.example.com

288registry.example.com

289```

290 

291Use `*.` para correspondência de subdomínio curinga. Marque **Also include default list of common package managers** para manter os [domínios Trusted](#default-allowed-domains) junto com suas entradas personalizadas, ou deixe desmarcado para permitir apenas o que você listar.

292 

293### Proxy GitHub

294 

295Para segurança, todas as operações do GitHub passam por um serviço de proxy dedicado que trata transparentemente todas as interações git. Dentro da sandbox, o cliente git autentica usando uma credencial com escopo personalizado. Este proxy:

296 

297* Gerencia autenticação do GitHub com segurança: o cliente git usa uma credencial com escopo dentro da sandbox, que o proxy verifica e traduz para seu token de autenticação GitHub real

298* Restringe operações git push para a branch de trabalho atual por segurança

299* Permite clonagem, busca e operações de PR enquanto mantém limites de segurança

300 

301### Proxy de segurança

302 

303Os ambientes são executados atrás de um proxy de rede HTTP/HTTPS para fins de segurança e prevenção de abuso. Todo o tráfego de Internet de saída passa por este proxy, que fornece:

304 

305* Proteção contra solicitações maliciosas

306* Limitação de taxa e prevenção de abuso

307* Filtragem de conteúdo para segurança aprimorada

308 

309### Domínios padrão permitidos

310 

311Ao usar acesso à rede **Trusted**, os seguintes domínios são permitidos por padrão. Domínios marcados com `*` indicam correspondência de subdomínio curinga, então `*.gcr.io` permite qualquer subdomínio de `gcr.io`.

312 

313<AccordionGroup>

314 <Accordion title="Serviços Anthropic">

315 * api.anthropic.com

316 * statsig.anthropic.com

317 * docs.claude.com

318 * platform.claude.com

319 * code.claude.com

320 * claude.ai

321 </Accordion>

322 

323 <Accordion title="Controle de versão">

324 * github.com

325 * [www.github.com](http://www.github.com)

326 * api.github.com

327 * npm.pkg.github.com

328 * raw\.githubusercontent.com

329 * pkg-npm.githubusercontent.com

330 * objects.githubusercontent.com

331 * release-assets.githubusercontent.com

332 * codeload.github.com

333 * avatars.githubusercontent.com

334 * camo.githubusercontent.com

335 * gist.github.com

336 * gitlab.com

337 * [www.gitlab.com](http://www.gitlab.com)

338 * registry.gitlab.com

339 * bitbucket.org

340 * [www.bitbucket.org](http://www.bitbucket.org)

341 * api.bitbucket.org

342 </Accordion>

343 

344 <Accordion title="Registros de contêiner">

345 * registry-1.docker.io

346 * auth.docker.io

347 * index.docker.io

348 * hub.docker.com

349 * [www.docker.com](http://www.docker.com)

350 * production.cloudflare.docker.com

351 * download.docker.com

352 * gcr.io

353 * \*.gcr.io

354 * ghcr.io

355 * mcr.microsoft.com

356 * \*.data.mcr.microsoft.com

357 * public.ecr.aws

358 </Accordion>

359 

360 <Accordion title="Plataformas em nuvem">

361 * cloud.google.com

362 * accounts.google.com

363 * gcloud.google.com

364 * \*.googleapis.com

365 * storage.googleapis.com

366 * compute.googleapis.com

367 * container.googleapis.com

368 * azure.com

369 * portal.azure.com

370 * microsoft.com

371 * [www.microsoft.com](http://www.microsoft.com)

372 * \*.microsoftonline.com

373 * packages.microsoft.com

374 * dotnet.microsoft.com

375 * dot.net

376 * visualstudio.com

377 * dev.azure.com

378 * \*.amazonaws.com

379 * \*.api.aws

380 * oracle.com

381 * [www.oracle.com](http://www.oracle.com)

382 * java.com

383 * [www.java.com](http://www.java.com)

384 * java.net

385 * [www.java.net](http://www.java.net)

386 * download.oracle.com

387 * yum.oracle.com

388 </Accordion>

389 

390 <Accordion title="Gerenciadores de pacotes JavaScript e Node">

391 * registry.npmjs.org

392 * [www.npmjs.com](http://www.npmjs.com)

393 * [www.npmjs.org](http://www.npmjs.org)

394 * npmjs.com

395 * npmjs.org

396 * yarnpkg.com

397 * registry.yarnpkg.com

398 </Accordion>

399 

400 <Accordion title="Gerenciadores de pacotes Python">

401 * pypi.org

402 * [www.pypi.org](http://www.pypi.org)

403 * files.pythonhosted.org

404 * pythonhosted.org

405 * test.pypi.org

406 * pypi.python.org

407 * pypa.io

408 * [www.pypa.io](http://www.pypa.io)

409 </Accordion>

410 

411 <Accordion title="Gerenciadores de pacotes Ruby">

412 * rubygems.org

413 * [www.rubygems.org](http://www.rubygems.org)

414 * api.rubygems.org

415 * index.rubygems.org

416 * ruby-lang.org

417 * [www.ruby-lang.org](http://www.ruby-lang.org)

418 * rubyforge.org

419 * [www.rubyforge.org](http://www.rubyforge.org)

420 * rubyonrails.org

421 * [www.rubyonrails.org](http://www.rubyonrails.org)

422 * rvm.io

423 * get.rvm.io

424 </Accordion>

425 

426 <Accordion title="Gerenciadores de pacotes Rust">

427 * crates.io

428 * [www.crates.io](http://www.crates.io)

429 * index.crates.io

430 * static.crates.io

431 * rustup.rs

432 * static.rust-lang.org

433 * [www.rust-lang.org](http://www.rust-lang.org)

434 </Accordion>

435 

436 <Accordion title="Gerenciadores de pacotes Go">

437 * proxy.golang.org

438 * sum.golang.org

439 * index.golang.org

440 * golang.org

441 * [www.golang.org](http://www.golang.org)

442 * goproxy.io

443 * pkg.go.dev

444 </Accordion>

445 

446 <Accordion title="Gerenciadores de pacotes JVM">

447 * maven.org

448 * repo.maven.org

449 * central.maven.org

450 * repo1.maven.org

451 * repo.maven.apache.org

452 * jcenter.bintray.com

453 * gradle.org

454 * [www.gradle.org](http://www.gradle.org)

455 * services.gradle.org

456 * plugins.gradle.org

457 * kotlinlang.org

458 * [www.kotlinlang.org](http://www.kotlinlang.org)

459 * spring.io

460 * repo.spring.io

461 </Accordion>

462 

463 <Accordion title="Outros gerenciadores de pacotes">

464 * packagist.org (PHP Composer)

465 * [www.packagist.org](http://www.packagist.org)

466 * repo.packagist.org

467 * nuget.org (.NET NuGet)

468 * [www.nuget.org](http://www.nuget.org)

469 * api.nuget.org

470 * pub.dev (Dart/Flutter)

471 * api.pub.dev

472 * hex.pm (Elixir/Erlang)

473 * [www.hex.pm](http://www.hex.pm)

474 * cpan.org (Perl CPAN)

475 * [www.cpan.org](http://www.cpan.org)

476 * metacpan.org

477 * [www.metacpan.org](http://www.metacpan.org)

478 * api.metacpan.org

479 * cocoapods.org (iOS/macOS)

480 * [www.cocoapods.org](http://www.cocoapods.org)

481 * cdn.cocoapods.org

482 * haskell.org

483 * [www.haskell.org](http://www.haskell.org)

484 * hackage.haskell.org

485 * swift.org

486 * [www.swift.org](http://www.swift.org)

487 </Accordion>

488 

489 <Accordion title="Distribuições Linux">

490 * archive.ubuntu.com

491 * security.ubuntu.com

492 * ubuntu.com

493 * [www.ubuntu.com](http://www.ubuntu.com)

494 * \*.ubuntu.com

495 * ppa.launchpad.net

496 * launchpad.net

497 * [www.launchpad.net](http://www.launchpad.net)

498 * \*.nixos.org

499 </Accordion>

500 

501 <Accordion title="Ferramentas de desenvolvimento e plataformas">

502 * dl.k8s.io (Kubernetes)

503 * pkgs.k8s.io

504 * k8s.io

505 * [www.k8s.io](http://www.k8s.io)

506 * releases.hashicorp.com (HashiCorp)

507 * apt.releases.hashicorp.com

508 * rpm.releases.hashicorp.com

509 * archive.releases.hashicorp.com

510 * hashicorp.com

511 * [www.hashicorp.com](http://www.hashicorp.com)

512 * repo.anaconda.com (Anaconda/Conda)

513 * conda.anaconda.org

514 * anaconda.org

515 * [www.anaconda.com](http://www.anaconda.com)

516 * anaconda.com

517 * continuum.io

518 * apache.org (Apache)

519 * [www.apache.org](http://www.apache.org)

520 * archive.apache.org

521 * downloads.apache.org

522 * eclipse.org (Eclipse)

523 * [www.eclipse.org](http://www.eclipse.org)

524 * download.eclipse.org

525 * nodejs.org (Node.js)

526 * [www.nodejs.org](http://www.nodejs.org)

527 * developer.apple.com

528 * developer.android.com

529 * pkg.stainless.com

530 * binaries.prisma.sh

531 </Accordion>

532 

533 <Accordion title="Serviços em nuvem e monitoramento">

534 * statsig.com

535 * [www.statsig.com](http://www.statsig.com)

536 * api.statsig.com

537 * sentry.io

538 * \*.sentry.io

539 * downloads.sentry-cdn.com

540 * http-intake.logs.datadoghq.com

541 * \*.datadoghq.com

542 * \*.datadoghq.eu

543 * api.honeycomb.io

544 </Accordion>

545 

546 <Accordion title="Entrega de conteúdo e espelhos">

547 * sourceforge.net

548 * \*.sourceforge.net

549 * packagecloud.io

550 * \*.packagecloud.io

551 * fonts.googleapis.com

552 * fonts.gstatic.com

553 </Accordion>

554 

555 <Accordion title="Schema e configuração">

556 * json-schema.org

557 * [www.json-schema.org](http://www.json-schema.org)

558 * json.schemastore.org

559 * [www.schemastore.org](http://www.schemastore.org)

560 </Accordion>

561 

562 <Accordion title="Model Context Protocol">

563 * \*.modelcontextprotocol.io

564 </Accordion>

565</AccordionGroup>

566 

567## Mover tarefas entre web e terminal

568 

569Esses fluxos de trabalho requerem o [Claude Code CLI](/pt/quickstart) conectado à mesma conta claude.ai. Você pode iniciar novas sessões em nuvem a partir do seu terminal, ou puxar sessões em nuvem para seu terminal para continuar localmente. As sessões em nuvem persistem mesmo se você fechar seu laptop, e você pode monitorá-las de qualquer lugar, incluindo o aplicativo móvel Claude.

570 

571<Note>

572 A partir do CLI, a transferência de sessão é unidirecional: você pode puxar sessões em nuvem para seu terminal com `--teleport`, mas não pode enviar uma sessão de terminal existente para a web. O sinalizador `--remote` cria uma nova sessão em nuvem para seu repositório atual. O [aplicativo Desktop](/pt/desktop#continue-in-another-surface) fornece um menu Continue in que pode enviar uma sessão local para a web.

573</Note>

574 

575### Do terminal para a web

576 

577Inicie uma sessão em nuvem a partir da linha de comando com o sinalizador `--remote`:

578 

579```bash theme={null}

580claude --remote "Fix the authentication bug in src/auth/login.ts"

581```

582 

583Isso cria uma nova sessão em nuvem em claude.ai. A sessão clona o remoto GitHub do seu diretório atual na sua branch atual, então envie primeiro se você tiver commits locais, já que a VM clona do GitHub em vez de sua máquina. `--remote` funciona com um repositório por vez. A tarefa é executada na nuvem enquanto você continua trabalhando localmente.

584 

585<Note>

586 `--remote` cria sessões em nuvem. `--remote-control` não está relacionado: expõe uma sessão CLI local para monitoramento a partir da web. Veja [Remote Control](/pt/remote-control).

587</Note>

588 

589Use `/tasks` no Claude Code CLI para verificar o progresso, ou abra a sessão em claude.ai ou no aplicativo móvel Claude para interagir diretamente. De lá você pode orientar Claude, fornecer feedback ou responder perguntas como em qualquer outra conversa.

590 

591#### Dicas para tarefas em nuvem

592 

593**Planeje localmente, execute remotamente**: para tarefas complexas, inicie Claude em plan mode para colaborar na abordagem, depois envie o trabalho para a nuvem:

594 

595```bash theme={null}

596claude --permission-mode plan

597```

598 

599Em plan mode, Claude lê arquivos, executa comandos para explorar e propõe um plano sem editar código-fonte. Depois de estar satisfeito, salve o plano no repositório, confirme e envie para que a VM em nuvem possa cloná-lo. Depois inicie uma sessão em nuvem para execução autônoma:

600 

601```bash theme={null}

602claude --remote "Execute the migration plan in docs/migration-plan.md"

603```

604 

605Este padrão oferece controle sobre a estratégia enquanto permite que Claude execute autonomamente na nuvem.

606 

607**Planeje na nuvem com ultraplan**: para rascunhar e revisar o plano em si em uma sessão web, use [ultraplan](/pt/ultraplan). Claude gera o plano em Claude Code na web enquanto você continua trabalhando, depois você comenta em seções em seu navegador e escolhe executar remotamente ou enviar o plano de volta para seu terminal.

608 

609**Execute tarefas em paralelo**: cada comando `--remote` cria sua própria sessão em nuvem que é executada independentemente. Você pode iniciar múltiplas tarefas e todas serão executadas simultaneamente em sessões separadas:

610 

611```bash theme={null}

612claude --remote "Fix the flaky test in auth.spec.ts"

613claude --remote "Update the API documentation"

614claude --remote "Refactor the logger to use structured output"

615```

616 

617Monitore todas as sessões com `/tasks` no Claude Code CLI. Quando uma sessão é concluída, você pode criar um PR a partir da interface web ou [teleportar](#from-web-to-terminal) a sessão para seu terminal para continuar trabalhando.

618 

619#### Envie repositórios locais sem GitHub

620 

621Quando você executa `claude --remote` 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.

622 

623Este 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`:

624 

625```bash theme={null}

626CCR_FORCE_BUNDLE=1 claude --remote "Run the test suite and fix any failures"

627```

628 

629Os repositórios agrupados devem atender a esses limites:

630 

631* O diretório deve ser um repositório git com pelo menos um commit

632* 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

633* 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

634* 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) configurada

635 

636### Da web para o terminal

637 

638Puxe uma sessão em nuvem para seu terminal usando qualquer um destes:

639 

640* **Usando `--teleport`**: a partir da linha de comando, execute `claude --teleport` para um seletor de sessão interativo, ou `claude --teleport <session-id>` para retomar uma sessão específica diretamente. Se você tiver alterações não confirmadas, será solicitado que você as guarde primeiro.

641* **Usando `/teleport`**: dentro de uma sessão CLI existente, execute `/teleport` (ou `/tp`) para abrir o mesmo seletor de sessão sem reiniciar Claude Code.

642* **De `/tasks`**: execute `/tasks` para ver suas sessões em segundo plano, depois pressione `t` para teleportar para uma

643* **Da interface web**: selecione **Open in CLI** para copiar um comando que você pode colar em seu terminal

644 

645Quando você teleporta uma sessão, Claude verifica se você está no repositório correto, busca e faz checkout da branch da sessão em nuvem e carrega o histórico completo da conversa em seu terminal.

646 

647`--teleport` é distinto de `--resume`. `--resume` reabre uma conversa do histórico local desta máquina e não lista sessões em nuvem; `--teleport` puxa uma sessão em nuvem e sua branch.

648 

649#### Requisitos de teleportação

650 

651Teleport verifica esses requisitos antes de retomar uma sessão. Se algum requisito não for atendido, você verá um erro ou será solicitado a resolver o problema.

652 

653| Requisito | Detalhes |

654| ------------------- | --------------------------------------------------------------------------------------------------------------------------------- |

655| Estado git limpo | Seu diretório de trabalho não deve ter alterações não confirmadas. Teleport solicita que você guarde as alterações se necessário. |

656| Repositório correto | Você deve executar `--teleport` a partir de um checkout do mesmo repositório, não de um fork. |

657| Branch disponível | A branch da sessão em nuvem deve ter sido enviada para o remoto. Teleport busca e faz checkout automaticamente. |

658| Mesma conta | Você deve estar autenticado na mesma conta claude.ai usada na sessão em nuvem. |

659 

660#### `--teleport` não está disponível

661 

662Teleport requer autenticação de assinatura claude.ai. Se você estiver autenticado via chave de API, Bedrock, Vertex AI ou Microsoft Foundry, execute `/login` para entrar com sua conta claude.ai. Se você já estiver conectado via claude.ai e `--teleport` ainda não estiver disponível, sua organização pode ter desabilitado sessões em nuvem.

663 

664## Trabalhar com sessões

665 

666As sessões aparecem na barra lateral em claude.ai/code. De lá você pode revisar alterações, compartilhar com colegas de equipe, arquivar trabalho concluído ou deletar sessões permanentemente.

667 

668### Gerenciar contexto

669 

670As sessões em nuvem suportam [comandos integrados](/pt/commands) que produzem saída de texto. Comandos que abrem um seletor de terminal interativo, como `/model` ou `/config`, não estão disponíveis.

671 

672Para gerenciamento de contexto especificamente:

673 

674| Comando | Funciona em sessões em nuvem | Notas |

675| :--------- | :--------------------------- | :---------------------------------------------------------------------------------------------------------------- |

676| `/compact` | Sim | Resume a conversa para liberar contexto. Aceita instruções de foco opcionais como `/compact keep the test output` |

677| `/context` | Sim | Mostra o que está atualmente na janela de contexto |

678| `/clear` | Não | Inicie uma nova sessão a partir da barra lateral |

679 

680A auto-compactação é executada automaticamente quando a janela de contexto se aproxima da capacidade, o mesmo que no CLI. Para acioná-la mais cedo, defina [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/pt/env-vars) em suas [variáveis de ambiente](#configure-your-environment). Por exemplo, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` compacta em 70% de capacidade em vez do padrão \~95%. Para alterar o tamanho efetivo da janela para cálculos de compactação, use [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/pt/env-vars).

681 

682[Subagentes](/pt/sub-agents) funcionam da mesma forma que localmente. Claude pode gerá-los com a ferramenta Task para descarregar pesquisa ou trabalho paralelo em uma janela de contexto separada, mantendo a conversa principal mais leve. Subagentes definidos em seu `.claude/agents/` do repositório são coletados automaticamente. [Equipes de agentes](/pt/agent-teams) estão desabilitadas por padrão mas podem ser habilitadas adicionando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` às suas [variáveis de ambiente](#configure-your-environment).

683 

684### Revise alterações

685 

686Cada 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. Veja [Review and iterate](/pt/web-quickstart#review-and-iterate) para o passo a passo completo incluindo criação de PR. Para ter Claude monitorar o PR para falhas de CI e comentários de revisão automaticamente, veja [Auto-fix pull requests](#auto-fix-pull-requests).

687 

688### Compartilhe sessões

689 

690Para compartilhar uma sessão, alterne sua visibilidade de acordo com os tipos de conta abaixo. Depois disso, compartilhe o link da sessão como está. Os destinatários veem o estado mais recente quando abrem o link, mas sua visualização não é atualizada em tempo real.

691 

692#### Compartilhe de uma conta Enterprise ou Team

693 

694Para contas Enterprise e Team, as duas opções de visibilidade são **Private** e **Team**. A visibilidade Team torna a sessão visível para outros membros de sua organização claude.ai. A verificação de acesso ao repositório é habilitada por padrão, com base na conta GitHub conectada à conta do destinatário. O nome de exibição de sua conta é visível para todos os destinatários com acesso. As sessões [Claude in Slack](/pt/slack) são automaticamente compartilhadas com visibilidade Team.

695 

696#### Compartilhe de uma conta Max ou Pro

697 

698Para contas Max e Pro, as duas opções de visibilidade são **Private** e **Public**. A visibilidade Public torna a sessão visível para qualquer usuário conectado a claude.ai.

699 

700Verifique sua sessão para conteúdo sensível antes de compartilhar. As sessões podem conter código e credenciais de repositórios GitHub privados. A verificação de acesso ao repositório não é habilitada por padrão.

701 

702Para exigir que os destinatários tenham acesso ao repositório, ou para ocultar seu nome de sessões compartilhadas, vá para Settings > Claude Code > Sharing settings.

703 

704### Arquive sessões

705 

706Você pode arquivar sessões para manter sua lista de sessões organizada. As sessões arquivadas ficam ocultas da lista de sessões padrão mas podem ser visualizadas filtrando por sessões arquivadas.

707 

708Para arquivar uma sessão, passe o mouse sobre a sessão na barra lateral e selecione o ícone de arquivo.

709 

710### Delete sessões

711 

712Deletar uma sessão remove permanentemente a sessão e seus dados. Esta ação não pode ser desfeita. Você pode deletar uma sessão de duas maneiras:

713 

714* **Da barra lateral**: filtre por sessões arquivadas, depois passe o mouse sobre a sessão que deseja deletar e selecione o ícone de exclusão

715* **Do menu de sessão**: abra uma sessão, selecione o menu suspenso ao lado do título da sessão e selecione **Delete**

716 

717Você será solicitado a confirmar antes de uma sessão ser deletada.

718 

719## Corrigir automaticamente pull requests

720 

721Claude pode observar um pull request e responder automaticamente a falhas de CI e comentários de revisão. Claude se inscreve na atividade do GitHub no PR, e quando uma verificação falha ou um revisor deixa um comentário, Claude investiga e envia uma correção se uma for clara.

722 

723<Note>

724 Auto-fix requer que o Claude GitHub App esteja instalado em seu repositório. Se você ainda não fez isso, instale-o a partir da [página do GitHub App](https://github.com/apps/claude) ou quando solicitado durante [setup](/pt/web-quickstart#connect-github-and-create-an-environment).

725</Note>

726 

727Existem algumas maneiras de ativar auto-fix dependendo de onde o PR veio e qual dispositivo você está usando:

728 

729* **PRs criados em Claude Code na web**: abra a barra de status de CI e selecione **Auto-fix**

730* **A partir do seu terminal**: execute [`/autofix-pr`](/pt/commands) enquanto estiver na branch do PR. Claude Code detecta o PR aberto com `gh`, gera uma sessão web e ativa auto-fix em uma etapa

731* **A partir do aplicativo móvel**: diga a Claude para corrigir automaticamente o PR, por exemplo "watch this PR and fix any CI failures or review comments"

732* **Qualquer PR existente**: cole a URL do PR em uma sessão e diga a Claude para corrigir automaticamente

733 

734### Como Claude responde à atividade de PR

735 

736Quando auto-fix está ativo, Claude recebe eventos do GitHub para o PR incluindo novos comentários de revisão e falhas de verificação de CI. Para cada evento, Claude investiga e decide como proceder:

737 

738* **Correções claras**: se Claude está confiante em uma correção e ela não entra em conflito com instruções anteriores, Claude faz a alteração, envia e explica o que foi feito na sessão

739* **Solicitações ambíguas**: se um comentário de revisor pode ser interpretado de múltiplas maneiras ou envolve algo arquitetonicamente significativo, Claude pergunta a você antes de agir

740* **Eventos duplicados ou sem ação**: se um evento é duplicado ou não requer alteração, Claude o anota na sessão e continua

741 

742Claude pode responder a threads de comentários de revisão no GitHub como parte da resolução deles. Essas respostas são postadas usando sua conta GitHub, então aparecem sob seu nome de usuário, mas cada resposta é rotulada como vindo de Claude Code para que os revisores saibam que foi escrita pelo agente e não por você diretamente.

743 

744<Warning>

745 Se seu repositório usa automação acionada por comentário, como Atlantis, Terraform Cloud ou GitHub Actions personalizadas que são executadas em eventos `issue_comment`, esteja ciente de que Claude pode responder em seu nome, o que pode acionar esses fluxos de trabalho. Revise a automação de seu repositório antes de ativar auto-fix e considere desabilitar auto-fix para repositórios onde um comentário de PR pode implantar infraestrutura ou executar operações privilegiadas.

746</Warning>

747 

748## Segurança e isolamento

749 

750Cada sessão em nuvem é separada de sua máquina e de outras sessões através de várias camadas:

751 

752* **Máquinas virtuais isoladas**: cada sessão é executada em uma VM isolada gerenciada pela Anthropic

753* **Controles de acesso à rede**: o acesso à rede é limitado por padrão e pode ser desabilitado. 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.

754* **Proteção de credenciais**: credenciais sensíveis como credenciais git ou chaves de assinatura nunca estão dentro da sandbox com Claude Code. A autenticação é tratada através de um proxy seguro usando credenciais com escopo.

755* **Análise segura**: o código é analisado e modificado dentro de VMs isoladas antes de criar PRs

756 

757## Limitações

758 

759Antes de confiar em sessões em nuvem para um fluxo de trabalho, leve em conta essas restrições:

760 

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

762* **Autenticação de repositório**: você pode apenas mover sessões de web para local quando está autenticado na mesma conta

763* **Restrições de plataforma**: clonagem de repositório e criação de pull request requerem GitHub. Instâncias [GitHub Enterprise Server](/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 remoto

764 

765## Recursos relacionados

766 

767* [Ultraplan](/pt/ultraplan): rascunhe um plano em uma sessão em nuvem e revise-o em seu navegador

768* [Ultrareview](/pt/ultrareview): execute uma revisão de código profunda multi-agente em uma sandbox em nuvem

769* [Routines](/pt/routines): automatize trabalho em um cronograma, via chamada de API ou em resposta a eventos do GitHub

770* [Configuração de hooks](/pt/hooks): execute scripts em eventos do ciclo de vida da sessão

771* [Referência de configurações](/pt/settings): todas as opções de configuração

772* [Segurança](/pt/security): garantias de isolamento e tratamento de dados

773* [Uso de dados](/pt/data-usage): o que Anthropic retém de sessões em nuvem

claude-directory.md +1583 −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# Explore o diretório .claude

6 

7> Onde Claude Code lê CLAUDE.md, settings.json, hooks, skills, commands, subagents, rules e auto memory. Explore o diretório .claude em seu projeto e ~/.claude em seu diretório home.

8 

9export const ClaudeExplorer = () => {

10 const A = useMemo(() => ({href, children}) => <a href={href} style={{

11 color: 'var(--ce-accent)',

12 textDecoration: 'none',

13 borderBottom: '1px dotted var(--ce-accent)'

14 }}>{children}</a>, []);

15 const C = useMemo(() => ({children}) => <code style={{

16 fontFamily: 'var(--ce-mono)',

17 fontSize: '0.92em',

18 padding: '1px 4px',

19 borderRadius: '3px',

20 background: 'var(--ce-surface)',

21 border: '0.5px solid var(--ce-border-subtle)'

22 }}>{children}</code>, []);

23 const commandsNote = useMemo(() => <>Commands and skills are now the same mechanism. For new workflows, use <A href="/en/skills">skills/</A> instead: same <C>/name</C> invocation, plus you can bundle supporting files.</>, []);

24 const FILE_TREE = useMemo(() => ({

25 project: {

26 label: 'your-project/',

27 children: [{

28 id: 'claude-md',

29 label: 'CLAUDE.md',

30 type: 'file',

31 icon: 'md',

32 color: '#6A9BCC',

33 badge: 'committed',

34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/en/skills">skill</A> or a path-scoped <A href="/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions

40 

41## Commands

42- Build: \`npm run build\`

43- Test: \`npm test\`

44- Lint: \`npm run lint\`

45 

46## Stack

47- TypeScript with strict mode

48- React 19, functional components only

49 

50## Rules

51- Named exports, never default exports

52- Tests live next to source: \`foo.ts\` -> \`foo.test.ts\`

53- All API routes return \`{ data, error }\` shape`,

54 docsLink: '/en/memory'

55 }, {

56 id: 'mcp-json',

57 label: '.mcp.json',

58 type: 'file',

59 icon: 'json',

60 color: '#9B7BC4',

61 badge: 'committed',

62 oneLiner: 'Project-scoped MCP servers, shared with your team',

63 when: <>Servers connect when the session begins. Tool schemas are deferred by default and load on demand via <A href="/en/mcp#scale-with-mcp-tool-search">tool search</A></>,

64 description: <>Configures Model Context Protocol (MCP) servers that give Claude access to external tools: databases, APIs, browsers, and more. This file holds the project-scoped servers your whole team uses. Personal servers you want to keep to yourself go in <C>~/.claude.json</C> instead.</>,

65 tips: [<>Use environment variable references for secrets: <C>{'${GITHUB_TOKEN}'}</C></>, <>Lives at the project root, not inside <C>.claude/</C></>, <>For servers only you need, run <C>claude mcp add --scope user</C>. This writes to <C>~/.claude.json</C> instead of <C>.mcp.json</C></>],

66 exampleIntro: <>This example configures the GitHub MCP server so Claude can read issues and open pull requests. The <C>{'${GITHUB_TOKEN}'}</C> reference is read from your shell environment when Claude Code starts the server, so the token never lands in the file.</>,

67 example: `{

68 "mcpServers": {

69 "github": {

70 "command": "npx",

71 "args": ["-y", "@modelcontextprotocol/server-github"],

72 "env": {

73 "GITHUB_TOKEN": "\${GITHUB_TOKEN}"

74 }

75 }

76 }

77}`,

78 docsLink: '/en/mcp'

79 }, {

80 id: 'worktreeinclude',

81 label: '.worktreeinclude',

82 type: 'file',

83 icon: 'md',

84 color: '#8FA876',

85 badge: 'committed',

86 oneLiner: 'Gitignored files to copy into new worktrees',

87 when: <>Read when Claude creates a git worktree via <C>--worktree</C>, the <C>EnterWorktree</C> tool, or subagent <C>isolation: worktree</C></>,

88 description: <>Lists gitignored files to copy from your main repository into each new worktree. Worktrees are fresh checkouts, so untracked files like <C>.env</C> are missing by default. Patterns here use <C>.gitignore</C> syntax. Only files that match a pattern and are also gitignored get copied, so tracked files are never duplicated.</>,

89 tips: [<>Lives at the project root, not inside <C>.claude/</C></>, <>Git-only: if you configure a <A href="/en/hooks#worktreecreate">WorktreeCreate hook</A> for a different VCS, this file is not read. Copy files inside your hook script instead</>, <>Also applies to parallel sessions in the <A href="/en/desktop#work-in-parallel-with-sessions">desktop app</A></>],

90 exampleIntro: 'This example copies your local environment files and a secrets config into every worktree Claude creates. Comments start with # and blank lines are ignored, same as .gitignore.',

91 example: `# Local environment

92.env

93.env.local

94 

95# API credentials

96config/secrets.json`,

97 docsLink: '/en/worktrees#copy-gitignored-files-into-worktrees'

98 }, {

99 id: 'dot-claude',

100 label: '.claude/',

101 type: 'folder',

102 icon: 'folder',

103 color: 'var(--ce-accent)',

104 oneLiner: 'Project-level configuration, rules, and extensions',

105 description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are automatically gitignored. Each file badge shows which.',

106 children: [{

107 id: 'settings-json',

108 label: 'settings.json',

109 type: 'file',

110 icon: 'json',

111 color: 'var(--ce-text-3)',

112 badge: 'committed',

113 oneLiner: 'Permissions, hooks, and configuration',

114 when: <>Overrides global <C>~/.claude/settings.json</C>. Local settings, CLI flags, and managed settings override this</>,

115 description: 'Settings that Claude Code applies directly. Permissions control which commands and tools Claude can use; hooks run your scripts at specific points in a session. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced whether Claude follows them or not.',

116 contains: [<><A href="/en/permissions">permissions</A>: allow, deny, or prompt before Claude uses specific tools or commands</>, <><A href="/en/hooks">hooks</A>: run your own scripts on events like before a tool call or after a file edit</>, <><A href="/en/statusline">statusLine</A>: customize the line shown at the bottom while Claude works</>, <><A href="/en/settings#available-settings">model</A>: pick a default model for this project</>, <><A href="/en/settings#environment-variables">env</A>: environment variables set in every session</>, <><A href="/en/output-styles">outputStyle</A>: select a custom system-prompt style from output-styles/</>],

117 tips: [<>Bash permission patterns support wildcards: <C>Bash(npm test *)</C> matches any command starting with <C>npm test</C></>, <>Array settings like <C>permissions.allow</C> combine across all scopes; scalar settings like <C>model</C> use the most specific value</>],

118 exampleIntro: <>This example allows <C>npm test</C> and <C>npm run</C> commands without prompting, blocks <C>rm -rf</C>, and runs Prettier on files after Claude edits or writes them.</>,

119 example: `{

120 "permissions": {

121 "allow": [

122 "Bash(npm test *)",

123 "Bash(npm run *)"

124 ],

125 "deny": [

126 "Bash(rm -rf *)"

127 ]

128 },

129 "hooks": {

130 "PostToolUse": [{

131 "matcher": "Edit|Write",

132 "hooks": [{

133 "type": "command",

134 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

135 }]

136 }]

137 }

138}`,

139 docsLink: '/en/settings'

140 }, {

141 id: 'settings-local-json',

142 label: 'settings.local.json',

143 type: 'file',

144 icon: 'json',

145 color: 'var(--ce-text-3)',

146 badge: 'gitignored',

147 oneLiner: 'Your personal settings overrides for this project',

148 when: 'Highest of the user-editable settings files; CLI flags and managed settings still take precedence',

149 description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, but not committed. Use this when you need different permissions or defaults than the team config.',

150 tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>Claude Code adds this file to <C>~/.config/git/ignore</C> the first time it writes one. If you use a custom <C>core.excludesFile</C>, add the pattern there too. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>],

151 exampleIntro: 'This example adds Docker permissions on top of whatever the team settings.json allows.',

152 example: `{

153 "permissions": {

154 "allow": [

155 "Bash(docker *)"

156 ]

157 }

158}`,

159 docsLink: '/en/settings'

160 }, {

161 id: 'rules',

162 label: 'rules/',

163 type: 'folder',

164 icon: 'folder',

165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/en/hooks">hooks</A> or <A href="/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',

171 children: [{

172 id: 'rule-testing',

173 label: 'testing.md',

174 type: 'file',

175 icon: 'md',

176 color: '#9B7BC4',

177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---

182paths:

183 - "**/*.test.ts"

184 - "**/*.test.tsx"

185---

186 

187# Testing Rules

188 

189- Use descriptive test names: "should [expected] when [condition]"

190- Mock external dependencies, not internal modules

191- Clean up side effects in afterEach`

192 }, {

193 id: 'rule-api',

194 label: 'api-design.md',

195 type: 'file',

196 icon: 'md',

197 color: '#9B7BC4',

198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,

202 example: `---

203paths:

204 - "src/api/**/*.ts"

205---

206 

207# API Design Rules

208 

209- All endpoints must validate input with Zod schemas

210- Return shape: { data: T } | { error: string }

211- Rate limit all public endpoints`

212 }]

213 }, {

214 id: 'skills',

215 label: 'skills/',

216 type: 'folder',

217 icon: 'folder',

218 color: '#D4A843',

219 oneLiner: 'Reusable prompts you or Claude invoke by name',

220 when: <>Invoked with <C>/skill-name</C> or when Claude matches the task to a skill</>,

221 description: <>Each skill is a folder with a SKILL.md file plus any supporting files it needs. By default, both you and Claude can invoke a skill. Use frontmatter to control that: <C>disable-model-invocation: true</C> for user-only workflows like <C>/deploy</C>, or <C>user-invocable: false</C> to hide from the <C>/</C> menu while Claude can still invoke it.</>,

222 tips: [<>Skills accept arguments: <C>/deploy staging</C> passes "staging" as <C>$ARGUMENTS</C>. Use <C>$0</C>, <C>$1</C>, and so on for positional access</>, <>The <C>description</C> frontmatter determines when Claude auto-invokes the skill</>, 'Bundle reference docs alongside SKILL.md. Claude knows the skill directory path and can read supporting files when you mention them'],

223 docsLink: '/en/skills',

224 children: [{

225 id: 'skill-review',

226 label: 'security-review/',

227 type: 'folder',

228 icon: 'folder',

229 color: '#D4A843',

230 oneLiner: 'A skill bundling SKILL.md with supporting files',

231 children: [{

232 id: 'skill-review-md',

233 label: 'SKILL.md',

234 type: 'file',

235 icon: 'md',

236 color: '#D4A843',

237 badge: 'committed',

238 oneLiner: 'Entrypoint: trigger, invocability, instructions',

239 when: <>User types <C>/security-review &lt;target&gt;</C>; Claude cannot auto-invoke this skill</>,

240 description: [<>This skill uses <C>disable-model-invocation: true</C> so only you can trigger it; Claude never invokes it on its own.</>, <>The <C>!`...`</C> line runs a shell command and injects its output into the prompt. <C>$ARGUMENTS</C> substitutes whatever you typed after the skill name. Claude sees the skill directory path, so mentioning a bundled file like checklist.md lets Claude read it.</>],

241 example: `---

242description: Reviews code changes for security vulnerabilities, authentication gaps, and injection risks

243disable-model-invocation: true

244argument-hint: <branch-or-path>

245---

246 

247## Diff to review

248 

249!\`git diff $ARGUMENTS\`

250 

251Audit the changes above for:

252 

2531. Injection vulnerabilities (SQL, XSS, command)

2542. Authentication and authorization gaps

2553. Hardcoded secrets or credentials

256 

257Use checklist.md in this skill directory for the full review checklist.

258 

259Report findings with severity ratings and remediation steps.`

260 }, {

261 id: 'skill-checklist',

262 label: 'checklist.md',

263 type: 'file',

264 icon: 'md',

265 color: '#D4A843',

266 badge: 'committed',

267 oneLiner: 'Supporting file bundled with the skill',

268 when: 'Claude reads it on demand while running the skill',

269 description: <>Skills can bundle any supporting files: reference docs, templates, scripts. The skill directory path is prepended to SKILL.md, so Claude can read bundled files by name. For scripts in bash injection commands, use the <C>{'${CLAUDE_SKILL_DIR}'}</C> placeholder.</>,

270 example: `# Security Review Checklist

271 

272## Input Validation

273- [ ] All user input sanitized before DB queries

274- [ ] File upload MIME types validated

275- [ ] Path traversal prevented on file operations

276 

277## Authentication

278- [ ] JWT tokens expire after 24 hours

279- [ ] API keys stored in environment variables

280- [ ] Passwords hashed with bcrypt or argon2`

281 }]

282 }]

283 }, {

284 id: 'commands',

285 label: 'commands/',

286 type: 'folder',

287 icon: 'folder',

288 color: '#788C5D',

289 oneLiner: <>Single-file prompts invoked with <C>/name</C></>,

290 note: commandsNote,

291 when: <>User types <C>/command-name</C></>,

292 description: <>A file at <C>commands/deploy.md</C> creates <C>/deploy</C> the same way a skill at <C>skills/deploy/SKILL.md</C> does, and both can be auto-invoked by Claude. Skills use a directory with SKILL.md, letting you bundle reference docs, templates, or scripts alongside the prompt.</>,

293 tips: [<>Use <C>$ARGUMENTS</C> in the file to accept parameters: <C>/fix-issue 123</C></>, 'If a skill and command share a name, the skill takes precedence', 'New commands should usually be skills instead; commands remain supported'],

294 docsLink: '/en/skills',

295 children: [{

296 id: 'cmd-example',

297 label: 'fix-issue.md',

298 type: 'file',

299 icon: 'md',

300 color: '#788C5D',

301 badge: 'committed',

302 oneLiner: <>Invoked as <C>/fix-issue &lt;number&gt;</C></>,

303 note: commandsNote,

304 description: [<>An example command for fixing a GitHub issue. Type <C>/fix-issue 123</C> and the <C>!`...`</C> line runs <C>gh issue view 123</C> in your shell, injecting the output into the prompt before Claude sees it.</>, <><C>$ARGUMENTS</C> substitutes whatever you typed after the command name. For positional access, use <C>$0</C> <C>$1</C> and so on.</>],

305 example: `---

306argument-hint: <issue-number>

307---

308 

309!\`gh issue view $ARGUMENTS\`

310 

311Investigate and fix the issue above.

312 

3131. Trace the bug to its root cause

3142. Implement the fix

3153. Write or update tests

3164. Summarize what you changed and why`

317 }]

318 }, {

319 id: 'output-styles',

320 label: 'output-styles/',

321 type: 'folder',

322 icon: 'folder',

323 color: '#5AA7A7',

324 oneLiner: 'Project-scoped output styles, if your team shares any',

325 when: 'Applied at session start when selected via the outputStyle setting',

326 description: <>Output styles are usually personal, so most live in <C>~/.claude/output-styles/</C>. Put one here if your team shares a style, like a review mode everyone uses. See <A href="#ce-global-output-styles">the Global tab</A> for the full explanation and example.</>,

327 docsLink: '/en/output-styles',

328 children: []

329 }, {

330 id: 'agents',

331 label: 'agents/',

332 type: 'folder',

333 icon: 'folder',

334 color: '#C46686',

335 oneLiner: 'Specialized subagents with their own context window',

336 when: 'Runs in its own context window when you or Claude invoke it',

337 description: 'Each markdown file defines a subagent with its own system prompt, tool access, and optionally its own model. Subagents run in a fresh context window, keeping the main conversation clean. Useful for parallel work or isolated tasks.',

338 tips: ['Each agent gets a fresh context window, separate from your main session', <>Restrict tool access per agent with the <C>tools:</C> frontmatter field</>, 'Type @ and pick an agent from the autocomplete to delegate directly'],

339 docsLink: '/en/sub-agents',

340 children: [{

341 id: 'agent-reviewer',

342 label: 'code-reviewer.md',

343 type: 'file',

344 icon: 'md',

345 color: '#C46686',

346 badge: 'committed',

347 oneLiner: 'Subagent for isolated code review',

348 when: 'Claude spawns it for review tasks, or you @-mention it from the autocomplete',

349 description: <>An example subagent restricted to read-only tools. The <C>description</C> frontmatter tells Claude when to delegate to it automatically; <C>tools:</C> limits it to Read, Grep, and Glob so it can inspect code but never edit. The body becomes the subagent's system prompt.</>,

350 example: `---

351name: code-reviewer

352description: Reviews code for correctness, security, and maintainability

353tools: Read, Grep, Glob

354---

355 

356You are a senior code reviewer. Review for:

357 

3581. Correctness: logic errors, edge cases, null handling

3592. Security: injection, auth bypass, data exposure

3603. Maintainability: naming, complexity, duplication

361 

362Every finding must include a concrete fix.`

363 }]

364 }, {

365 id: 'agent-memory',

366 label: 'agent-memory/',

367 type: 'folder',

368 icon: 'folder',

369 color: '#C46686',

370 badge: 'committed',

371 autogen: true,

372 oneLiner: 'Subagent persistent memory, separate from your main session auto memory',

373 when: 'First 200 lines (capped at 25KB) of MEMORY.md loaded into the subagent system prompt when it runs',

374 description: <>Subagents with <C>memory: project</C> in their frontmatter get a dedicated memory directory here. This is distinct from your <A href="/en/memory#auto-memory">main session auto memory</A> at <C>~/.claude/projects/</C>: each subagent reads and writes its own MEMORY.md, not yours.</>,

375 tips: [<>Only created for subagents that set the <C>memory:</C> frontmatter field</>, <>This directory holds project-scoped subagent memory, meant to be shared with your team. To keep memory out of version control use <C>memory: local</C>, which writes to <C>.claude/agent-memory-local/</C> instead. For cross-project memory use <C>memory: user</C>, which writes to <C>~/.claude/agent-memory/</C></>, <>The main session auto memory is a different feature; see <C>~/.claude/projects/</C> in the Global tab</>],

376 docsLink: '/en/sub-agents#enable-persistent-memory',

377 children: [{

378 id: 'agent-memory-sub',

379 label: '<agent-name>/',

380 type: 'folder',

381 icon: 'folder',

382 color: '#C46686',

383 autogen: true,

384 children: [{

385 id: 'agent-memory-md',

386 label: 'MEMORY.md',

387 type: 'file',

388 icon: 'md',

389 color: '#C46686',

390 badge: 'committed',

391 autogen: true,

392 oneLiner: 'The subagent writes and maintains this file automatically',

393 when: 'Loaded into the subagent system prompt when the subagent starts',

394 description: <>Works the same as your <A href="/en/memory#auto-memory">main auto memory</A>: the subagent creates and updates this file itself. You do not write it. The subagent reads it at the start of each task and writes back what it learns.</>,

395 example: `# code-reviewer memory

396 

397## Patterns seen

398- Project uses custom Result<T, E> type, not exceptions

399- Auth middleware expects Bearer token in Authorization header

400- Tests use factory functions in test/factories/

401 

402## Recurring issues

403- Missing null checks on API responses (src/api/*)

404- Unhandled promise rejections in background jobs`

405 }]

406 }]

407 }]

408 }]

409 },

410 global: {

411 label: '~/',

412 children: [{

413 id: 'claude-json',

414 label: '.claude.json',

415 type: 'file',

416 icon: 'json',

417 color: 'var(--ce-text-3)',

418 badge: 'local',

419 oneLiner: 'App state and UI preferences',

420 when: <>Read at session start for your preferences and MCP servers. Claude Code writes back to it when you change settings in <C>/config</C> or approve trust prompts</>,

421 description: <>Holds state that does not belong in settings.json: theme, OAuth session, per-project trust decisions, your personal MCP servers, and UI toggles. Mostly managed through <C>/config</C> rather than editing directly.</>,

422 tips: [<>IDE toggles like <C>autoConnectIde</C> and <C>externalEditorContext</C> live here, not in settings.json</>, <>The <C>projects</C> key tracks per-project state like trust-dialog acceptance and last-session metrics. Permission rules you approve in-session go to <C>.claude/settings.local.json</C> instead</>, <>MCP servers here are yours only: user scope applies across all projects, local scope is per-project but not committed. Team-shared servers go in <C>.mcp.json</C> at the project root instead</>],

423 example: `{

424 "autoConnectIde": true,

425 "externalEditorContext": true,

426 "mcpServers": {

427 "my-tools": {

428 "command": "npx",

429 "args": ["-y", "@example/mcp-server"]

430 }

431 }

432}`,

433 docsLink: '/en/settings#global-config-settings'

434 }, {

435 id: 'global-dot-claude',

436 label: '.claude/',

437 type: 'folder',

438 icon: 'folder',

439 color: 'var(--ce-accent)',

440 oneLiner: 'Your personal configuration across all projects',

441 description: 'The global counterpart to your project .claude/ directory. Files here apply to every project you work in and are never committed to any repository.',

442 children: [{

443 id: 'global-claude-md',

444 label: 'CLAUDE.md',

445 type: 'file',

446 icon: 'md',

447 color: '#6A9BCC',

448 badge: 'local',

449 oneLiner: 'Personal preferences across every project',

450 when: 'Loaded at the start of every session, in every project',

451 description: 'Your global instruction file. Loaded alongside the project CLAUDE.md at session start, so both are in context together. When instructions conflict, project-level instructions take priority. Keep this to preferences that apply everywhere: response style, commit format, personal conventions.',

452 tips: ['Keep it short since it loads into context for every project, alongside that project\'s own CLAUDE.md', 'Good for response style, commit format, and personal conventions'],

453 example: `# Global preferences

454 

455- Keep explanations concise

456- Use conventional commit format

457- Show the terminal command to verify changes

458- Prefer composition over inheritance`,

459 docsLink: '/en/memory'

460 }, {

461 id: 'global-settings',

462 label: 'settings.json',

463 type: 'file',

464 icon: 'json',

465 color: 'var(--ce-text-3)',

466 badge: 'local',

467 oneLiner: 'Default settings for all projects',

468 when: 'Your defaults. Project and local settings.json override any keys you also set there',

469 description: [<>Same keys as project <C>settings.json</C>: permissions, hooks, model, environment variables, and the rest. Put settings here that you want in every project, like permissions you always allow, a preferred model, or a notification hook that runs regardless of which project you're in.</>, <>Settings follow a precedence order: project <C>settings.json</C> overrides any matching keys you set here. This is different from CLAUDE.md, where global and project files are both loaded into context rather than merged key by key.</>],

470 example: `{

471 "permissions": {

472 "allow": [

473 "Bash(git log *)",

474 "Bash(git diff *)"

475 ]

476 }

477}`,

478 docsLink: '/en/settings'

479 }, {

480 id: 'keybindings',

481 label: 'keybindings.json',

482 type: 'file',

483 icon: 'json',

484 color: 'var(--ce-text-3)',

485 badge: 'local',

486 oneLiner: 'Custom keyboard shortcuts',

487 when: 'Read at session start and hot-reloaded when you edit the file',

488 description: <>Rebind keyboard shortcuts in the interactive CLI. Run <C>/keybindings</C> to create or open this file with a schema reference. Ctrl+C, Ctrl+D, Ctrl+M, and Caps Lock are reserved and cannot be rebound.</>,

489 exampleIntro: <>This example binds <C>Ctrl+E</C> to open your external editor and unbinds <C>Ctrl+U</C> by setting it to <C>null</C>. The <C>context</C> field scopes bindings to a specific part of the CLI, here the main chat input.</>,

490 example: `{

491 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

492 "$docs": "https://code.claude.com/docs/en/keybindings",

493 "bindings": [

494 {

495 "context": "Chat",

496 "bindings": {

497 "ctrl+e": "chat:externalEditor",

498 "ctrl+u": null

499 }

500 }

501 ]

502}`,

503 docsLink: '/en/keybindings'

504 }, {

505 id: 'themes',

506 label: 'themes/',

507 type: 'folder',

508 icon: 'folder',

509 color: '#5AA7A7',

510 oneLiner: 'Custom color themes',

511 when: <>Read at session start and hot-reloaded when files change. Listed in <C>/theme</C></>,

512 description: <>Each <C>.json</C> file defines a custom color theme: a built-in <C>base</C> preset plus an <C>overrides</C> map of color tokens. Create one interactively with <C>/theme</C> or write the JSON by hand. Selecting a custom theme stores <C>custom:&lt;slug&gt;</C> as your theme preference.</>,

513 example: `{

514 "name": "Dracula",

515 "base": "dark",

516 "overrides": {

517 "claude": "#bd93f9",

518 "error": "#ff5555",

519 "success": "#50fa7b"

520 }

521}`,

522 docsLink: '/en/terminal-config#create-a-custom-theme',

523 children: []

524 }, {

525 id: 'global-projects',

526 label: 'projects/',

527 type: 'folder',

528 icon: 'folder',

529 color: '#E8A45C',

530 autogen: true,

531 oneLiner: "Auto memory: Claude's notes to itself, per project",

532 when: 'MEMORY.md loaded at session start; topic files read on demand',

533 description: 'Auto memory lets Claude accumulate knowledge across sessions without you writing anything. Claude saves notes as it works: build commands, debugging insights, architecture notes. Each project gets its own memory directory keyed by the repository path.',

534 tips: [<>On by default. Toggle with <C>/memory</C> or <C>autoMemoryEnabled</C> in settings</>, 'MEMORY.md is the index loaded each session. The first 200 lines, or 25KB, whichever comes first, are read', 'Topic files like debugging.md are read on demand, not at startup', 'These are plain markdown. Edit or delete them anytime'],

535 docsLink: '/en/memory#auto-memory',

536 children: [{

537 id: 'memory-dir',

538 label: '<project>/memory/',

539 type: 'folder',

540 icon: 'folder',

541 color: '#E8A45C',

542 autogen: true,

543 oneLiner: "Claude's accumulated knowledge for one project",

544 children: [{

545 id: 'memory-md',

546 label: 'MEMORY.md',

547 type: 'file',

548 icon: 'md',

549 color: '#E8A45C',

550 badge: 'local',

551 autogen: true,

552 oneLiner: 'Claude writes and maintains this file automatically',

553 when: 'First 200 lines (capped at 25KB) loaded at session start',

554 description: 'Claude creates and updates this file as it works; you do not write it yourself. It acts as an index that Claude reads at the start of every session, pointing to topic files for detail. You can edit or delete it, but Claude will keep updating it.',

555 example: `# Memory Index

556 

557## Project

558- [build-and-test.md](build-and-test.md): npm run build (~45s), Vitest, dev server on 3001

559- [architecture.md](architecture.md): API client singleton, refresh-token auth

560 

561## Reference

562- [debugging.md](debugging.md): auth token rotation and DB connection troubleshooting`,

563 docsLink: '/en/memory'

564 }, {

565 id: 'memory-topic',

566 label: 'debugging.md',

567 type: 'file',

568 icon: 'md',

569 color: '#E8A45C',

570 badge: 'local',

571 autogen: true,

572 oneLiner: 'Topic notes Claude writes when MEMORY.md gets long',

573 when: 'Claude reads this when a related task comes up',

574 description: 'An example of a topic file Claude creates when MEMORY.md grows too long. Claude picks the filename based on what it splits out: debugging.md, architecture.md, build-commands.md, or similar. You never create these yourself. Claude reads a topic file back only when the current task relates to it.',

575 example: `---

576name: Debugging patterns

577description: Auth token rotation and database connection troubleshooting for this project

578type: reference

579---

580 

581## Auth Token Issues

582- Refresh token rotation: old token invalidated immediately

583- If 401 after refresh: check clock skew between client and server

584 

585## Database Connection Drops

586- Connection pool: max 10 in dev, 50 in prod

587- Always check \`docker compose ps\` first`

588 }]

589 }]

590 }, {

591 id: 'global-rules',

592 label: 'rules/',

593 type: 'folder',

594 icon: 'folder',

595 color: '#9B7BC4',

596 oneLiner: 'User-level rules that apply to every project',

597 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

598 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

599 docsLink: '/en/memory#organize-rules-with-claude/rules/',

600 children: []

601 }, {

602 id: 'global-skills',

603 label: 'skills/',

604 type: 'folder',

605 icon: 'folder',

606 color: '#D4A843',

607 oneLiner: 'Personal skills available in every project',

608 when: <>Invoked with <C>/skill-name</C> in any project</>,

609 description: 'Skills you built for yourself that work everywhere. Same structure as project skills: each is a folder with SKILL.md, scoped to your user account instead of a single project.',

610 docsLink: '/en/skills',

611 children: []

612 }, {

613 id: 'global-commands',

614 label: 'commands/',

615 type: 'folder',

616 icon: 'folder',

617 color: '#788C5D',

618 oneLiner: 'Personal single-file commands available in every project',

619 note: commandsNote,

620 when: <>User types <C>/command-name</C> in any project</>,

621 description: 'Same as project commands/ but scoped to your user account. Each markdown file becomes a command available everywhere.',

622 docsLink: '/en/skills',

623 children: []

624 }, {

625 id: 'global-output-styles',

626 label: 'output-styles/',

627 type: 'folder',

628 icon: 'folder',

629 color: '#5AA7A7',

630 oneLiner: 'Custom system-prompt sections that adjust how Claude works',

631 when: 'Applied at session start when selected via the outputStyle setting',

632 description: [<>Each markdown file defines an output style: a section appended to the system prompt that, by default, also drops the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/config</C> or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],

633 tips: ['Built-in styles Explanatory and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Changes take effect on the next session since the system prompt is fixed at startup for caching'],

634 docsLink: '/en/output-styles',

635 children: [{

636 id: 'output-style-example',

637 label: 'teaching.md',

638 type: 'file',

639 icon: 'md',

640 color: '#5AA7A7',

641 badge: 'local',

642 oneLiner: 'Example style that adds explanations and leaves small changes for you',

643 when: <>Active when <C>outputStyle</C> in settings is set to <C>teaching</C></>,

644 description: <>This style appends instructions to the system prompt: Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting <C>outputStyle</C> to the filename without .md, or to the <C>name</C> field if you set one in frontmatter.</>,

645 example: `---

646description: Explains reasoning and asks you to implement small pieces

647keep-coding-instructions: true

648---

649 

650After completing each task, add a brief "Why this approach" note

651explaining the key design decision.

652 

653When a change is under 10 lines, ask the user to implement it

654themselves by leaving a TODO(human) marker instead of writing it.`

655 }]

656 }, {

657 id: 'global-agents',

658 label: 'agents/',

659 type: 'folder',

660 icon: 'folder',

661 color: '#C46686',

662 oneLiner: 'Personal subagents available in every project',

663 when: 'Claude delegates or you @-mention in any project',

664 description: 'Subagents defined here are available across all your projects. Same format as project agents.',

665 docsLink: '/en/sub-agents',

666 children: []

667 }, {

668 id: 'global-agent-memory',

669 label: 'agent-memory/',

670 type: 'folder',

671 icon: 'folder',

672 color: '#C46686',

673 autogen: true,

674 oneLiner: <>Persistent memory for subagents with <C>memory: user</C></>,

675 when: 'Loaded into the subagent system prompt when the subagent starts',

676 description: <>Subagents with <C>memory: user</C> in their frontmatter store knowledge here that persists across all projects. For project-scoped subagent memory, see <C>.claude/agent-memory/</C> instead.</>,

677 docsLink: '/en/sub-agents#enable-persistent-memory',

678 children: []

679 }]

680 }]

681 }

682 }), []);

683 const BADGE_STYLES = useMemo(() => ({

684 committed: {

685 bg: 'rgba(85,138,66,0.08)',

686 color: 'var(--ce-badge-committed)',

687 border: 'rgba(85,138,66,0.15)',

688 label: 'committed'

689 },

690 gitignored: {

691 bg: 'rgba(217,119,87,0.06)',

692 color: 'var(--ce-badge-gitignored)',

693 border: 'rgba(217,119,87,0.15)',

694 label: 'gitignored'

695 },

696 local: {

697 bg: 'rgba(115,114,108,0.06)',

698 color: 'var(--ce-badge-local)',

699 border: 'rgba(115,114,108,0.12)',

700 label: 'local only'

701 },

702 autogen: {

703 bg: 'rgba(232,164,92,0.1)',

704 color: 'var(--ce-badge-autogen)',

705 border: 'rgba(232,164,92,0.2)',

706 label: 'Claude writes'

707 }

708 }), []);

709 const allNodes = useMemo(() => {

710 const flatten = (nodes, acc, path, parentId) => {

711 for (const node of nodes) {

712 const nextPath = [...path, node.label];

713 acc[node.id] = {

714 ...node,

715 path: nextPath,

716 parentId

717 };

718 if (node.children) flatten(node.children, acc, nextPath, node.id);

719 }

720 return acc;

721 };

722 const project = flatten(FILE_TREE.project.children, {}, [FILE_TREE.project.label]);

723 const global = flatten(FILE_TREE.global.children, {}, [FILE_TREE.global.label]);

724 for (const id in project) project[id].root = 'project';

725 for (const id in global) global[id].root = 'global';

726 return {

727 ...project,

728 ...global

729 };

730 }, [FILE_TREE]);

731 const allFolderIds = useMemo(() => Object.keys(allNodes).filter(id => allNodes[id].type === 'folder'), [allNodes]);

732 const DEFAULT_EXPANDED = ['dot-claude', 'rules', 'skills', 'skill-review', 'commands', 'agents', 'agent-memory', 'agent-memory-sub', 'global-dot-claude', 'global-output-styles', 'global-projects', 'memory-dir'];

733 const [mounted, setMounted] = useState(false);

734 const [activeRoot, setActiveRoot] = useState('project');

735 const [selectedId, setSelectedId] = useState('claude-md');

736 const [expandedFolders, setExpandedFolders] = useState(() => new Set(DEFAULT_EXPANDED));

737 const [forceMobile, setForceMobile] = useState(false);

738 const [copiedId, setCopiedId] = useState(null);

739 const [isFullscreen, setIsFullscreen] = useState(false);

740 const copyTimeoutRef = useRef(null);

741 const rootRef = useRef(null);

742 useEffect(() => {

743 setMounted(true);

744 const applyHash = scroll => {

745 const hash = window.location.hash.slice(1);

746 if (!hash.startsWith('ce-')) return;

747 const id = hash.slice(3);

748 const node = allNodes[id];

749 if (!node) return;

750 setActiveRoot(node.root);

751 setSelectedId(id);

752 setExpandedFolders(new Set(allFolderIds));

753 if (scroll && rootRef.current) rootRef.current.scrollIntoView({

754 behavior: 'smooth',

755 block: 'start'

756 });

757 };

758 applyHash(false);

759 const onHashChange = () => applyHash(true);

760 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

761 window.addEventListener('hashchange', onHashChange);

762 document.addEventListener('fullscreenchange', onFsChange);

763 return () => {

764 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

765 window.removeEventListener('hashchange', onHashChange);

766 document.removeEventListener('fullscreenchange', onFsChange);

767 };

768 }, []);

769 useEffect(() => {

770 if (!mounted || !rootRef.current) return;

771 const hash = window.location.hash.slice(1);

772 if (hash.startsWith('ce-') && allNodes[hash.slice(3)]) {

773 rootRef.current.scrollIntoView({

774 behavior: 'smooth',

775 block: 'start'

776 });

777 }

778 }, [mounted]);

779 if (!mounted) return null;

780 const selected = allNodes[selectedId];

781 const tree = FILE_TREE[activeRoot];

782 const isCopied = copiedId === selected.id;

783 const toggleFolder = id => {

784 const next = new Set(expandedFolders);

785 next.has(id) ? next.delete(id) : next.add(id);

786 setExpandedFolders(next);

787 };

788 const switchRoot = root => {

789 if (root === activeRoot) return;

790 setActiveRoot(root);

791 const firstId = FILE_TREE[root].children[0].id;

792 setSelectedId(firstId);

793 try {

794 history.replaceState(null, '', '#ce-' + firstId);

795 } catch (e) {}

796 };

797 const toggleFullscreen = () => {

798 if (!rootRef.current) return;

799 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

800 };

801 const selectNode = n => {

802 setSelectedId(n.id);

803 if (n.type === 'folder' && !expandedFolders.has(n.id)) toggleFolder(n.id);

804 try {

805 history.replaceState(null, '', '#ce-' + n.id);

806 } catch (e) {}

807 };

808 const iconBtn = {

809 width: 28,

810 flexShrink: 0,

811 borderRadius: '6px',

812 border: 'none',

813 cursor: 'pointer',

814 background: 'transparent',

815 color: 'var(--ce-text-4)',

816 display: 'flex',

817 alignItems: 'center',

818 justifyContent: 'center'

819 };

820 const visibleFolderIds = allFolderIds.filter(id => allNodes[id].root === activeRoot);

821 const allExpanded = visibleFolderIds.every(id => expandedFolders.has(id));

822 const toggleAllFolders = () => {

823 const next = new Set(expandedFolders);

824 visibleFolderIds.forEach(id => allExpanded ? next.delete(id) : next.add(id));

825 setExpandedFolders(next);

826 };

827 const onTreeKeyDown = e => {

828 if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(e.key)) return;

829 const visible = [];

830 const walk = nodes => {

831 for (const n of nodes) {

832 visible.push(n.id);

833 if (n.children && expandedFolders.has(n.id)) walk(n.children);

834 }

835 };

836 walk(tree.children);

837 const i = visible.indexOf(selectedId);

838 if (i === -1) return;

839 e.preventDefault();

840 if (e.key === 'ArrowDown' && i < visible.length - 1) selectNode(allNodes[visible[i + 1]]); else if (e.key === 'ArrowUp' && i > 0) selectNode(allNodes[visible[i - 1]]); else if (e.key === 'ArrowRight' && selected.type === 'folder') {

841 if (!expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.children && selected.children.length) selectNode(allNodes[selected.children[0].id]);

842 } else if (e.key === 'ArrowLeft') {

843 if (selected.type === 'folder' && expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.parentId) selectNode(allNodes[selected.parentId]);

844 }

845 };

846 const copyExample = (id, text) => {

847 const done = () => {

848 setCopiedId(id);

849 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

850 copyTimeoutRef.current = setTimeout(() => setCopiedId(null), 2000);

851 };

852 const fallback = () => {

853 const ta = document.createElement('textarea');

854 ta.value = text;

855 ta.style.position = 'fixed';

856 ta.style.opacity = '0';

857 document.body.appendChild(ta);

858 ta.select();

859 try {

860 if (document.execCommand('copy')) done();

861 } catch (e) {}

862 document.body.removeChild(ta);

863 };

864 if (navigator.clipboard) {

865 navigator.clipboard.writeText(text).then(done, fallback);

866 } else {

867 fallback();

868 }

869 };

870 const renderIcon = (icon, color, size) => {

871 const sz = size || 14;

872 if (icon === 'folder') {

873 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

874 <path d="M1.5 3.5a1 1 0 0 1 1-1h2.6l1 1.2h5.4a1 1 0 0 1 1 1v5.8a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V3.5z" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

875 </svg>;

876 }

877 if (icon === 'json') {

878 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

879 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

880 <text x="7" y="9" fontSize="6" fontFamily="monospace" fill={color} textAnchor="middle" fontWeight="700">{'{}'}</text>

881 </svg>;

882 }

883 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

884 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

885 <line x1="4.5" y1="5" x2="9.5" y2="5" stroke={color} strokeWidth="1" />

886 <line x1="4.5" y1="7" x2="9.5" y2="7" stroke={color} strokeWidth="1" />

887 <line x1="4.5" y1="9" x2="8" y2="9" stroke={color} strokeWidth="1" />

888 </svg>;

889 };

890 const renderNode = (node, depth) => {

891 const isFolder = node.type === 'folder';

892 const isExpanded = expandedFolders.has(node.id);

893 const isSelected = selectedId === node.id;

894 return <div key={node.id}>

895 <button role="treeitem" tabIndex={-1} onClick={() => selectNode(node)} aria-selected={isSelected} aria-expanded={isFolder ? isExpanded : undefined} style={{

896 display: 'flex',

897 alignItems: 'center',

898 gap: '5px',

899 width: '100%',

900 padding: `4px 8px 4px ${8 + depth * 16}px`,

901 background: isSelected ? 'var(--ce-accent-bg)' : 'transparent',

902 borderTop: 'none',

903 borderRight: 'none',

904 borderBottom: 'none',

905 borderLeft: isSelected ? '2px solid var(--ce-accent)' : '2px solid transparent',

906 outline: 'none',

907 cursor: 'pointer',

908 textAlign: 'left',

909 fontFamily: 'var(--ce-mono)',

910 fontSize: '13.5px',

911 color: isSelected ? 'var(--ce-accent)' : 'var(--ce-text-2)',

912 fontWeight: isSelected ? 550 : 400,

913 transition: 'all 0.1s'

914 }}>

915 {isFolder ? <span onClick={e => {

916 e.stopPropagation();

917 toggleFolder(node.id);

918 }} style={{

919 fontSize: '14px',

920 color: 'var(--ce-text-4)',

921 width: '20px',

922 height: '20px',

923 display: 'inline-flex',

924 alignItems: 'center',

925 justifyContent: 'center',

926 cursor: 'pointer',

927 borderRadius: '4px',

928 marginLeft: '-6px',

929 flexShrink: 0

930 }} onMouseEnter={e => {

931 e.currentTarget.style.background = 'var(--ce-arrow-hover)';

932 e.currentTarget.style.color = 'var(--ce-text-2)';

933 }} onMouseLeave={e => {

934 e.currentTarget.style.background = 'transparent';

935 e.currentTarget.style.color = 'var(--ce-text-4)';

936 }}>{isExpanded ? '▾' : '▸'}</span> : <span style={{

937 width: '14px',

938 flexShrink: 0

939 }} />}

940 {renderIcon(node.icon, node.color)}

941 <span style={{

942 flex: 1,

943 overflow: 'hidden',

944 textOverflow: 'ellipsis',

945 whiteSpace: 'nowrap'

946 }}>{node.label}</span>

947 {node.badge && BADGE_STYLES[node.badge] && <span title={BADGE_STYLES[node.badge].label} style={{

948 width: 6,

949 height: 6,

950 borderRadius: '50%',

951 background: BADGE_STYLES[node.badge].color,

952 flexShrink: 0,

953 opacity: 0.7

954 }} />}

955 </button>

956 {isFolder && isExpanded && node.children && <div role="group">{node.children.map(child => renderNode(child, depth + 1))}</div>}

957 </div>;

958 };

959 return <>

960 <style>{`

961 .ce-root {

962 --ce-mono: var(--font-mono, ui-monospace, monospace);

963 --ce-accent: #D97757;

964 --ce-accent-bg: rgba(217,119,87,0.06);

965 --ce-accent-border: rgba(217,119,87,0.12);

966 --ce-bg: #fff;

967 --ce-surface: #FAFAF7;

968 --ce-surface-hover: #F0EEE6;

969 --ce-border: #E8E6DC;

970 --ce-border-subtle: #F0EEE6;

971 --ce-text: #141413;

972 --ce-text-2: #5E5D59;

973 --ce-text-3: #73726C;

974 --ce-text-4: #9C9A92;

975 --ce-text-5: #B8B6AE;

976 --ce-sep: #D1CFC5;

977 --ce-code-header: #F5F4ED;

978 --ce-code-bg: #1A1918;

979 --ce-arrow-hover: rgba(0,0,0,0.08);

980 --ce-badge-committed: #3d6b2e;

981 --ce-badge-gitignored: #b85c3a;

982 --ce-badge-local: #5e5d59;

983 --ce-badge-autogen: #b07520;

984 --ce-when-text: #4a7fb5;

985 }

986 .dark .ce-root {

987 --ce-bg: #1a1918;

988 --ce-surface: #232221;

989 --ce-surface-hover: #2e2d2b;

990 --ce-border: #3a3936;

991 --ce-border-subtle: #2e2d2b;

992 --ce-text: #e8e6dc;

993 --ce-text-2: #c4c2b8;

994 --ce-text-3: #9c9a92;

995 --ce-text-4: #73726c;

996 --ce-text-5: #5e5d59;

997 --ce-sep: #4a4946;

998 --ce-code-header: #2e2d2b;

999 --ce-code-bg: #0d0d0c;

1000 --ce-arrow-hover: rgba(255,255,255,0.08);

1001 --ce-badge-committed: #6fa85c;

1002 --ce-badge-gitignored: #e08a60;

1003 --ce-badge-local: #9c9a92;

1004 --ce-badge-autogen: #e8a45c;

1005 --ce-when-text: #8bb4e0;

1006 }

1007 .ce-mobile-fallback { display: none; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

1008 .dark .ce-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

1009 @media (max-width: 700px) {

1010 .ce-root:not(.ce-force) { display: none !important; }

1011 .ce-mobile-fallback { display: block; }

1012 }

1013 `}</style>

1014 {!forceMobile && <div className="ce-mobile-fallback" style={{

1015 padding: '14px 16px',

1016 borderRadius: '8px',

1017 fontSize: '14px'

1018 }}>

1019 The interactive explorer works best on a larger screen. See the <a href="#file-reference" style={{

1020 color: '#D97757'

1021 }}>file reference table</a> below, or <button onClick={() => setForceMobile(true)} style={{

1022 border: 'none',

1023 background: 'none',

1024 padding: 0,

1025 color: '#D97757',

1026 textDecoration: 'underline',

1027 cursor: 'pointer',

1028 font: 'inherit'

1029 }}>show the explorer anyway</button>.

1030 </div>}

1031 <div ref={rootRef} className={forceMobile ? 'ce-root ce-force' : 'ce-root'} style={{

1032 borderRadius: isFullscreen ? 0 : '12px',

1033 border: '1px solid var(--ce-border)',

1034 background: 'var(--ce-bg)',

1035 display: 'flex',

1036 alignItems: 'stretch',

1037 overflow: 'hidden',

1038 fontFamily: 'var(--font-sans, -apple-system, sans-serif)',

1039 ...isFullscreen && ({

1040 height: '100vh'

1041 })

1042 }}>

1043 {}

1044 <div style={{

1045 width: 'min(240px, 35%)',

1046 minWidth: '180px',

1047 flexShrink: 0,

1048 borderRight: '1px solid var(--ce-border-subtle)',

1049 background: 'var(--ce-surface)',

1050 display: 'flex',

1051 flexDirection: 'column'

1052 }}>

1053 <div style={{

1054 padding: '8px 8px 4px',

1055 borderBottom: '1px solid var(--ce-border-subtle)',

1056 display: 'flex',

1057 gap: '4px'

1058 }}>

1059 {['project', 'global'].map(root => <button key={root} onClick={() => switchRoot(root)} style={{

1060 flex: 1,

1061 padding: '6px 0',

1062 borderRadius: '6px',

1063 border: 'none',

1064 cursor: 'pointer',

1065 fontFamily: 'var(--ce-mono)',

1066 fontSize: '11.5px',

1067 background: activeRoot === root ? 'var(--ce-accent-bg)' : 'transparent',

1068 color: activeRoot === root ? 'var(--ce-accent)' : 'var(--ce-text-4)',

1069 fontWeight: activeRoot === root ? 600 : 430

1070 }}>

1071 {root === 'project' ? 'Project' : 'Global (~/)'}

1072 </button>)}

1073 <button onClick={toggleAllFolders} title={allExpanded ? 'Collapse all' : 'Expand all'} style={{

1074 ...iconBtn,

1075 fontSize: 11

1076 }}>

1077 {allExpanded ? '⊟' : '⊞'}

1078 </button>

1079 <button onClick={toggleFullscreen} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1080 ...iconBtn,

1081 fontSize: 13

1082 }}>

1083 {isFullscreen ? '⤡' : '⛶'}

1084 </button>

1085 </div>

1086 <div role="tree" aria-label="Configuration files" tabIndex={0} onKeyDown={onTreeKeyDown} style={{

1087 padding: '6px 0',

1088 overflowY: 'auto',

1089 flex: 1,

1090 outline: 'none'

1091 }}>

1092 {tree.children.map(node => renderNode(node, 0))}

1093 </div>

1094 </div>

1095 

1096 {}

1097 <div style={{

1098 flex: 1,

1099 minWidth: 0,

1100 padding: '20px 24px',

1101 minHeight: '400px',

1102 overflowY: 'auto'

1103 }}>

1104 <span aria-live="polite" style={{

1105 position: 'absolute',

1106 width: 1,

1107 height: 1,

1108 overflow: 'hidden',

1109 clip: 'rect(0 0 0 0)'

1110 }}>{selected.label} selected</span>

1111 {}

1112 <div style={{

1113 fontFamily: 'var(--ce-mono)',

1114 fontSize: '11px',

1115 color: 'var(--ce-text-4)',

1116 marginBottom: '10px',

1117 cursor: 'default'

1118 }}>

1119 {selected.path.map((seg, i) => <span key={i}>

1120 <span style={{

1121 color: i === selected.path.length - 1 ? 'var(--ce-accent)' : 'var(--ce-text-4)'

1122 }}>{seg.replace(/\/$/, '')}</span>

1123 {i < selected.path.length - 1 && <span style={{

1124 color: 'var(--ce-sep)'

1125 }}> / </span>}

1126 </span>)}

1127 </div>

1128 

1129 {}

1130 <div style={{

1131 display: 'flex',

1132 alignItems: 'flex-start',

1133 gap: '10px',

1134 marginBottom: '10px'

1135 }}>

1136 <span style={{

1137 flexShrink: 0,

1138 display: 'flex'

1139 }}>{renderIcon(selected.icon, selected.color, 24)}</span>

1140 <div style={{

1141 flex: 1,

1142 minWidth: 0

1143 }}>

1144 <div style={{

1145 fontSize: '22px',

1146 fontWeight: 600,

1147 color: 'var(--ce-text)',

1148 letterSpacing: '-0.3px',

1149 lineHeight: '26px'

1150 }}>{selected.label}</div>

1151 {selected.oneLiner && <div style={{

1152 fontSize: '15px',

1153 color: 'var(--ce-text-3)',

1154 marginTop: '3px'

1155 }}>{selected.oneLiner}</div>}

1156 </div>

1157 <div style={{

1158 display: 'flex',

1159 gap: '4px',

1160 flexShrink: 0

1161 }}>

1162 {[selected.autogen && 'autogen', selected.badge].filter(Boolean).map(k => {

1163 const s = BADGE_STYLES[k];

1164 if (!s) return null;

1165 return <span key={k} style={{

1166 fontFamily: 'var(--ce-mono)',

1167 fontSize: '10px',

1168 fontWeight: 600,

1169 textTransform: 'uppercase',

1170 letterSpacing: '0.3px',

1171 padding: '2px 6px',

1172 borderRadius: '4px',

1173 background: s.bg,

1174 color: s.color,

1175 border: `0.5px solid ${s.border}`

1176 }}>{s.label}</span>;

1177 })}

1178 </div>

1179 </div>

1180 

1181 {}

1182 {selected.note && <div style={{

1183 padding: '10px 12px',

1184 borderRadius: '8px',

1185 marginBottom: '14px',

1186 background: 'rgba(217,119,87,0.06)',

1187 border: '1px solid rgba(217,119,87,0.2)',

1188 borderLeft: '3px solid var(--ce-accent)',

1189 fontSize: '15px',

1190 color: 'var(--ce-text-2)',

1191 lineHeight: 1.6

1192 }}>

1193 {selected.note}

1194 </div>}

1195 

1196 {}

1197 {selected.when && <div style={{

1198 padding: '8px 12px',

1199 borderRadius: '6px',

1200 background: 'rgba(106,155,204,0.06)',

1201 border: '0.5px solid rgba(106,155,204,0.12)',

1202 fontSize: '15px',

1203 color: 'var(--ce-when-text)',

1204 marginBottom: '16px'

1205 }}>

1206 <div style={{

1207 fontSize: '10px',

1208 fontWeight: 700,

1209 textTransform: 'uppercase',

1210 letterSpacing: '0.4px',

1211 opacity: 0.65,

1212 marginBottom: '3px'

1213 }}>When it loads</div>

1214 <div style={{

1215 fontWeight: 500

1216 }}>{selected.when}</div>

1217 </div>}

1218 

1219 {}

1220 {selected.description && <div style={{

1221 fontSize: '16px',

1222 color: 'var(--ce-text-2)',

1223 lineHeight: 1.65,

1224 marginBottom: '16px'

1225 }}>

1226 {Array.isArray(selected.description) ? selected.description.map((para, i) => <div key={i} style={{

1227 marginBottom: i < selected.description.length - 1 ? '12px' : 0

1228 }}>{para}</div>) : selected.description}

1229 </div>}

1230 

1231 {}

1232 {selected.contains && selected.contains.length > 0 && <div style={{

1233 marginBottom: '16px'

1234 }}>

1235 <div style={{

1236 fontSize: '11px',

1237 fontWeight: 700,

1238 color: 'var(--ce-text-4)',

1239 textTransform: 'uppercase',

1240 letterSpacing: '0.4px',

1241 marginBottom: '8px'

1242 }}>Common keys</div>

1243 {selected.contains.map((item, i) => <div key={i} style={{

1244 display: 'flex',

1245 gap: '7px',

1246 fontSize: '15px',

1247 color: 'var(--ce-text-2)',

1248 lineHeight: 1.5,

1249 marginBottom: '5px'

1250 }}>

1251 <span style={{

1252 fontSize: '7px',

1253 color: 'var(--ce-text-4)',

1254 marginTop: '6px'

1255 }}>●</span>

1256 <span>{item}</span>

1257 </div>)}

1258 </div>}

1259 

1260 {}

1261 {selected.tips && selected.tips.length > 0 && <div style={{

1262 padding: '12px 14px',

1263 borderRadius: '8px',

1264 background: 'var(--ce-surface)',

1265 border: '1px solid var(--ce-border-subtle)',

1266 marginBottom: '16px'

1267 }}>

1268 <div style={{

1269 fontSize: '11px',

1270 fontWeight: 700,

1271 color: 'var(--ce-accent)',

1272 textTransform: 'uppercase',

1273 letterSpacing: '0.4px',

1274 marginBottom: '6px'

1275 }}>Tips</div>

1276 {selected.tips.map((tip, i) => <div key={i} style={{

1277 display: 'flex',

1278 gap: '7px',

1279 fontSize: '14.5px',

1280 color: 'var(--ce-text-2)',

1281 marginBottom: i < selected.tips.length - 1 ? '5px' : 0

1282 }}>

1283 <span style={{

1284 fontSize: '7px',

1285 color: 'var(--ce-accent)',

1286 marginTop: '6px'

1287 }}>●</span>

1288 <span>{tip}</span>

1289 </div>)}

1290 </div>}

1291 

1292 {}

1293 {selected.example && <div style={{

1294 marginBottom: '16px'

1295 }}>

1296 {selected.exampleIntro && <div style={{

1297 fontSize: '15px',

1298 color: 'var(--ce-text-2)',

1299 lineHeight: 1.6,

1300 marginBottom: '10px'

1301 }}>

1302 {selected.exampleIntro}

1303 </div>}

1304 <div style={{

1305 display: 'flex',

1306 justifyContent: 'space-between',

1307 alignItems: 'center',

1308 padding: '6px 10px',

1309 background: 'var(--ce-code-header)',

1310 border: '1px solid var(--ce-border)',

1311 borderRadius: '8px 8px 0 0'

1312 }}>

1313 <span style={{

1314 fontFamily: 'var(--ce-mono)',

1315 fontSize: '11px',

1316 fontWeight: 600,

1317 color: 'var(--ce-text-3)'

1318 }}>{selected.label}</span>

1319 <button onClick={() => copyExample(selected.id, selected.example)} style={{

1320 padding: '3px 8px',

1321 borderRadius: '4px',

1322 fontSize: '11px',

1323 fontWeight: 600,

1324 cursor: 'pointer',

1325 transition: 'all 0.15s',

1326 background: isCopied ? 'rgba(85,138,66,0.08)' : 'var(--ce-code-header)',

1327 border: isCopied ? '0.5px solid rgba(85,138,66,0.2)' : '0.5px solid var(--ce-border)',

1328 color: isCopied ? '#558A42' : 'var(--ce-text-3)'

1329 }}>

1330 {isCopied ? '✓ Copied' : 'Copy'}

1331 </button>

1332 </div>

1333 <pre style={{

1334 margin: 0,

1335 padding: '12px 14px',

1336 background: 'var(--ce-code-bg)',

1337 color: '#E8E6DC',

1338 fontFamily: 'var(--ce-mono)',

1339 fontSize: '13px',

1340 lineHeight: 1.65,

1341 borderRadius: '0 0 8px 8px',

1342 overflowX: 'auto',

1343 whiteSpace: 'pre'

1344 }}>{selected.example}</pre>

1345 </div>}

1346 

1347 {}

1348 {selected.docsLink && <a href={selected.docsLink} style={{

1349 display: 'inline-flex',

1350 padding: '5px 12px',

1351 borderRadius: '6px',

1352 background: 'var(--ce-accent-bg)',

1353 border: '1px solid var(--ce-accent-border)',

1354 color: 'var(--ce-accent)',

1355 fontSize: '12px',

1356 fontWeight: 600,

1357 textDecoration: 'none'

1358 }}>Full docs →</a>}

1359 

1360 {}

1361 {selected.children && selected.children.length > 0 && <div style={{

1362 marginTop: '20px'

1363 }}>

1364 <div style={{

1365 fontSize: '11px',

1366 fontWeight: 700,

1367 color: 'var(--ce-text-4)',

1368 textTransform: 'uppercase',

1369 letterSpacing: '0.4px',

1370 marginBottom: '8px'

1371 }}>Contents</div>

1372 <div style={{

1373 display: 'flex',

1374 flexDirection: 'column',

1375 gap: '4px'

1376 }}>

1377 {selected.children.map(child => <button key={child.id} onClick={() => selectNode(child)} style={{

1378 display: 'flex',

1379 alignItems: 'center',

1380 gap: '8px',

1381 padding: '6px 8px',

1382 width: '100%',

1383 background: 'var(--ce-surface)',

1384 borderRadius: '6px',

1385 border: 'none',

1386 cursor: 'pointer',

1387 textAlign: 'left',

1388 transition: 'background 0.1s'

1389 }} onMouseEnter={e => e.currentTarget.style.background = 'var(--ce-surface-hover)'} onMouseLeave={e => e.currentTarget.style.background = 'var(--ce-surface)'}>

1390 {renderIcon(child.icon, child.color, 13)}

1391 <span style={{

1392 fontFamily: 'var(--ce-mono)',

1393 fontSize: '12px',

1394 color: 'var(--ce-text-2)'

1395 }}>{child.label}</span>

1396 {child.oneLiner && <span style={{

1397 fontSize: '11px',

1398 color: 'var(--ce-text-4)',

1399 overflow: 'hidden',

1400 textOverflow: 'ellipsis',

1401 whiteSpace: 'nowrap'

1402 }}>{child.oneLiner}</span>}

1403 </button>)}

1404 </div>

1405 </div>}

1406 </div>

1407 </div>

1408 </>;

1409};

1410 

1411Claude Code lê instruções, configurações, skills, subagents e memória do seu diretório de projeto e de `~/.claude` em seu diretório home. Confirme arquivos de projeto no git para compartilhá-los com sua equipe; arquivos em `~/.claude` são configuração pessoal que se aplica em todos os seus projetos.

1412 

1413No Windows, `~/.claude` é resolvido para `%USERPROFILE%\.claude`. Se você definir [`CLAUDE_CONFIG_DIR`](/pt/env-vars), cada caminho `~/.claude` nesta página fica sob esse diretório.

1414 

1415A maioria dos usuários apenas edita `CLAUDE.md` e `settings.json`. O resto do diretório é opcional: adicione skills, rules ou subagents conforme necessário.

1416 

1417## Explore o diretório

1418 

1419Clique em arquivos na árvore para ver o que cada um faz, quando carrega e um exemplo.

1420 

1421<ClaudeExplorer />

1422 

1423## O que não é mostrado

1424 

1425O explorador cobre arquivos que você cria e edita. Alguns arquivos relacionados vivem em outro lugar:

1426 

1427| Arquivo | Localização | Propósito |

1428| ----------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1429| `managed-settings.json` | Nível do sistema, varia por SO | Configurações impostas pela empresa que você não pode substituir. Veja [configurações gerenciadas pelo servidor](/pt/server-managed-settings). |

1430| `CLAUDE.local.md` | Raiz do projeto | Suas preferências privadas para este projeto, carregadas junto com CLAUDE.md. Crie manualmente e adicione a `.gitignore`. |

1431| Plugins instalados | `~/.claude/plugins` | Marketplaces clonados, versões de plugins instalados e dados por plugin, gerenciados por comandos `claude plugin`. Versões órfãs são deletadas 7 dias após uma atualização ou desinstalação de plugin. Veja [cache de plugins](/pt/plugins-reference#plugin-caching-and-file-resolution). |

1432 

1433`~/.claude` também contém dados que Claude Code escreve conforme você trabalha: transcrições, histórico de prompts, snapshots de arquivos, caches e logs. Veja [dados da aplicação](#application-data) abaixo.

1434 

1435## Escolha o arquivo certo

1436 

1437Diferentes tipos de personalização vivem em arquivos diferentes. Use esta tabela para encontrar onde uma mudança pertence.

1438 

1439| Você quer | Editar | Escopo | Referência |

1440| :-------------------------------------------------------------- | :--------------------------------------- | :---------------- | :------------------------------------------------------ |

1441| Dar a Claude contexto e convenções do projeto | `CLAUDE.md` | projeto ou global | [Memory](/pt/memory) |

1442| Permitir ou bloquear chamadas de ferramentas específicas | `settings.json` `permissions` ou `hooks` | projeto ou global | [Permissions](/pt/permissions), [Hooks](/pt/hooks) |

1443| Executar um script antes ou depois de chamadas de ferramentas | `settings.json` `hooks` | projeto ou global | [Hooks](/pt/hooks) |

1444| Definir variáveis de ambiente para a sessão | `settings.json` `env` | projeto ou global | [Settings](/pt/settings#available-settings) |

1445| Manter substituições pessoais fora do git | `settings.local.json` | apenas projeto | [Escopos de configurações](/pt/settings#settings-files) |

1446| Adicionar um prompt ou capacidade que você invoca com `/name` | `skills/<name>/SKILL.md` | projeto ou global | [Skills](/pt/skills) |

1447| Definir um subagent especializado com suas próprias ferramentas | `agents/*.md` | projeto ou global | [Subagents](/pt/sub-agents) |

1448| Conectar ferramentas externas sobre MCP | `.mcp.json` | apenas projeto | [MCP](/pt/mcp) |

1449| Mudar como Claude formata respostas | `output-styles/*.md` | projeto ou global | [Output styles](/pt/output-styles) |

1450 

1451## Referência de arquivos

1452 

1453Esta tabela lista cada arquivo que o explorador cobre. Arquivos de escopo de projeto vivem em seu repositório sob `.claude/` (ou na raiz para `CLAUDE.md`, `.mcp.json` e `.worktreeinclude`). Arquivos de escopo global vivem em `~/.claude/` e se aplicam em todos os projetos.

1454 

1455<Note>

1456 Várias coisas podem substituir o que você coloca nesses arquivos:

1457 

1458 * [Configurações gerenciadas](/pt/server-managed-settings) implantadas por sua organização têm precedência sobre tudo

1459 * Flags CLI como `--permission-mode` ou `--settings` substituem `settings.json` para essa sessão

1460 * Algumas variáveis de ambiente têm precedência sobre sua configuração equivalente, mas isso varia: verifique a [referência de variáveis de ambiente](/pt/env-vars) para cada uma

1461 

1462 Veja [precedência de configurações](/pt/settings#settings-precedence) para a ordem completa.

1463</Note>

1464 

1465Clique em um nome de arquivo para abrir esse nó no explorador acima.

1466 

1467| Arquivo | Escopo | Confirmar | O que faz | Referência |

1468| --------------------------------------------------- | ---------------- | --------- | ------------------------------------------------------------------ | -------------------------------------------------------------------- |

1469| [`CLAUDE.md`](#ce-claude-md) | Projeto e global | ✓ | Instruções carregadas a cada sessão | [Memory](/pt/memory) |

1470| [`rules/*.md`](#ce-rules) | Projeto e global | ✓ | Instruções com escopo de tópico, opcionalmente com gate de caminho | [Rules](/pt/memory#organize-rules-with-claude/rules/) |

1471| [`settings.json`](#ce-settings-json) | Projeto e global | ✓ | Permissões, hooks, variáveis de env, padrões de modelo | [Settings](/pt/settings) |

1472| [`settings.local.json`](#ce-settings-local-json) | Apenas projeto | | Suas substituições pessoais, auto-gitignored | [Escopos de configurações](/pt/settings#settings-files) |

1473| [`.mcp.json`](#ce-mcp-json) | Apenas projeto | ✓ | Servidores MCP compartilhados pela equipe | [Escopos MCP](/pt/mcp#mcp-installation-scopes) |

1474| [`.worktreeinclude`](#ce-worktreeinclude) | Apenas projeto | ✓ | Arquivos gitignored para copiar em novos worktrees | [Worktrees](/pt/common-workflows#copy-gitignored-files-to-worktrees) |

1475| [`skills/<name>/SKILL.md`](#ce-skills) | Projeto e global | ✓ | Prompts reutilizáveis invocados com `/name` ou auto-invocados | [Skills](/pt/skills) |

1476| [`commands/*.md`](#ce-commands) | Projeto e global | ✓ | Prompts de arquivo único; mesmo mecanismo que skills | [Skills](/pt/skills) |

1477| [`output-styles/*.md`](#ce-output-styles) | Projeto e global | ✓ | Seções de prompt do sistema personalizadas | [Output styles](/pt/output-styles) |

1478| [`agents/*.md`](#ce-agents) | Projeto e global | ✓ | Definições de subagents com seu próprio prompt e ferramentas | [Subagents](/pt/sub-agents) |

1479| [`agent-memory/<name>/`](#ce-agent-memory) | Projeto e global | ✓ | Memória persistente para subagents | [Memória persistente](/pt/sub-agents#enable-persistent-memory) |

1480| [`~/.claude.json`](#ce-claude-json) | Apenas global | | Estado da aplicação, OAuth, toggles de UI, servidores MCP pessoais | [Configuração global](/pt/settings#global-config-settings) |

1481| [`projects/<project>/memory/`](#ce-global-projects) | Apenas global | | Auto memory: notas de Claude para si mesmo entre sessões | [Auto memory](/pt/memory#auto-memory) |

1482| [`keybindings.json`](#ce-keybindings) | Apenas global | | Atalhos de teclado personalizados | [Keybindings](/pt/keybindings) |

1483| [`themes/*.json`](#ce-themes) | Apenas global | | Temas de cores personalizados | [Temas personalizados](/pt/terminal-config#create-a-custom-theme) |

1484 

1485## Solucione problemas de configuração

1486 

1487Se uma configuração, hook ou arquivo não está tendo efeito, veja [Debug your configuration](/pt/debug-your-config) para os comandos de inspeção e uma tabela de busca por sintoma.

1488 

1489## Dados da aplicação

1490 

1491Além da configuração que você cria, `~/.claude` contém dados que Claude Code escreve durante sessões. Esses arquivos são texto simples. Qualquer coisa que passa por uma ferramenta aterrissa em uma transcrição no disco: conteúdo de arquivos, saída de comando, texto colado.

1492 

1493### Limpos automaticamente

1494 

1495Arquivos nos caminhos abaixo são deletados na inicialização uma vez que têm mais de [`cleanupPeriodDays`](/pt/settings#available-settings). O padrão é 30 dias.

1496 

1497| Caminho sob `~/.claude/` | Conteúdo |

1498| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |

1499| `projects/<project>/<session>.jsonl` | Transcrição de conversa completa: cada mensagem, chamada de ferramenta e resultado de ferramenta |

1500| `projects/<project>/<session>/tool-results/` | Grandes saídas de ferramentas derramadas em arquivos separados |

1501| `file-history/<session>/` | Snapshots pré-edição de arquivos que Claude alterou, usados para [restauração de checkpoint](/pt/checkpointing) |

1502| `plans/` | Arquivos de plano escritos durante [plan mode](/pt/permission-modes#analyze-before-you-edit-with-plan-mode) |

1503| `debug/` | Logs de debug por sessão, escritos apenas quando você inicia com `--debug` ou executa `/debug` |

1504| `paste-cache/`, `image-cache/` | Conteúdo de pastes grandes e imagens anexadas |

1505| `session-env/` | Metadados de ambiente por sessão |

1506| `tasks/` | Listas de tarefas por sessão escritas pelas ferramentas de tarefa |

1507| `shell-snapshots/` | Ambiente shell capturado usado pela ferramenta Bash. Removido na saída limpa. A limpeza remove qualquer um deixado após um crash. |

1508| `backups/` | Cópias com timestamp de `~/.claude.json` tiradas antes de migrações de configuração |

1509 

1510### Mantidos até você deletá-los

1511 

1512Os caminhos a seguir não são cobertos pela limpeza automática e persistem indefinidamente.

1513 

1514| Caminho sob `~/.claude/` | Conteúdo |

1515| ------------------------ | ------------------------------------------------------------------------------------------------------ |

1516| `history.jsonl` | Cada prompt que você digitou, com timestamp e caminho do projeto. Usado para recall de seta para cima. |

1517| `stats-cache.json` | Contagens agregadas de token e custo mostradas por `/usage` |

1518| `todos/` | Listas de tarefas por sessão legadas. Não mais escritas por versões atuais; seguro deletar. |

1519 

1520Outros arquivos pequenos de cache e lock aparecem dependendo de quais recursos você usa e são seguros para deletar.

1521 

1522### Armazenamento em texto simples

1523 

1524Transcrições e histórico não são criptografados em repouso. Permissões de arquivo do SO são a única proteção. Se uma ferramenta lê um arquivo `.env` ou um comando imprime uma credencial, esse valor é escrito em `projects/<project>/<session>.jsonl`. Para reduzir exposição:

1525 

1526* Diminua `cleanupPeriodDays` para encurtar quanto tempo as transcrições são mantidas

1527* Defina a variável de ambiente [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/pt/env-vars) para pular a escrita de transcrições e histórico de prompts em qualquer modo. Em modo não-interativo, você pode passar `--no-session-persistence` junto com `-p`, ou definir `persistSession: false` no Agent SDK.

1528* Use [regras de permissão](/pt/permissions) para negar leituras de arquivos de credencial

1529 

1530### Limpar dados locais

1531 

1532Execute `claude project purge` para deletar o estado que Claude Code mantém para um projeto:

1533 

1534* Transcrições e memória automática sob `projects/`

1535* Entradas por sessão de `tasks/`, `debug/` e `file-history/`

1536* Linhas de prompt correspondentes em `history.jsonl`

1537* A entrada do projeto em `~/.claude.json`

1538 

1539O comando imprime o plano de exclusão completo e pede confirmação antes de remover qualquer coisa.

1540 

1541Visualize o plano sem deletar nada:

1542 

1543```bash theme={null}

1544claude project purge ~/work/my-repo --dry-run

1545```

1546 

1547Delete com um único prompt de confirmação:

1548 

1549```bash theme={null}

1550claude project purge ~/work/my-repo

1551```

1552 

1553Omita o caminho para escolher um projeto de uma lista interativa.

1554 

1555Pule o prompt de confirmação para uso em scripts:

1556 

1557```bash theme={null}

1558claude project purge ~/work/my-repo --yes

1559```

1560 

1561Passe `--all` em vez de um caminho para limpar o estado de todos os projetos de uma vez, o que deleta `history.jsonl` completamente em vez de filtrá-lo. Passe `-i` para percorrer o plano de exclusão um item por vez.

1562 

1563O comando deixa `shell-snapshots/` e `backups/` sozinhos porque esses não têm escopo de projeto, e avisa sobre eles na saída do plano. Ele sai com status 1 se nenhum estado corresponder ao caminho fornecido.

1564 

1565Você também pode deletar qualquer um dos caminhos de dados da aplicação acima manualmente. Novas sessões não são afetadas. A tabela abaixo mostra o que você perde para sessões passadas.

1566 

1567| Deletar | Você perde |

1568| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |

1569| `~/.claude/projects/` | Resume, continue e rewind para sessões passadas |

1570| `~/.claude/history.jsonl` | Recall de prompt de seta para cima |

1571| `~/.claude/file-history/` | Restauração de checkpoint para sessões passadas |

1572| `~/.claude/stats-cache.json` | Totais históricos mostrados por `/usage` |

1573| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Nada voltado para o usuário |

1574| `~/.claude/todos/` | Nada. Diretório legado não escrito por versões atuais. |

1575 

1576Não delete `~/.claude.json`, `~/.claude/settings.json` ou `~/.claude/plugins/`: esses contêm sua autenticação, preferências e plugins instalados.

1577 

1578## Recursos relacionados

1579 

1580* [Gerenciar memória de Claude](/pt/memory): escrever e organizar CLAUDE.md, rules e auto memory

1581* [Configurar configurações](/pt/settings): definir permissões, hooks, variáveis de ambiente e padrões de modelo

1582* [Criar skills](/pt/skills): construir prompts e workflows reutilizáveis

1583* [Configurar subagents](/pt/sub-agents): definir agentes especializados com seu próprio contexto

cli-reference.md +129 −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# Referência de CLI

6 

7> Referência completa para a interface de linha de comando Claude Code, incluindo comandos e sinalizadores.

8 

9## Comandos CLI

10 

11Você pode iniciar sessões, canalizar conteúdo, retomar conversas e gerenciar atualizações com estes comandos:

12 

13| Comando | Descrição | Exemplo |

14| :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

15| `claude` | Iniciar sessão interativa | `claude` |

16| `claude "query"` | Iniciar sessão interativa com prompt inicial | `claude "explain this project"` |

17| `claude -p "query"` | Consultar via SDK e sair | `claude -p "explain this function"` |

18| `cat file \| claude -p "query"` | Processar conteúdo canalizado | `cat logs.txt \| claude -p "explain"` |

19| `claude -c` | Continuar a conversa mais recente no diretório atual | `claude -c` |

20| `claude -c -p "query"` | Continuar via SDK | `claude -c -p "Check for type errors"` |

21| `claude -r "<session>" "query"` | Retomar sessão por ID ou nome | `claude -r "auth-refactor" "Finish this PR"` |

22| `claude update` | Atualizar para a versão mais recente | `claude update` |

23| `claude install [version]` | Instalar ou reinstalar o binário nativo. Aceita uma versão como `2.1.118`, ou `stable` ou `latest`. Veja [Instalar uma versão específica](/pt/setup#install-a-specific-version) | `claude install stable` |

24| `claude auth login` | Faça login em sua conta Anthropic. Use `--email` para preencher previamente seu endereço de email, `--sso` para forçar autenticação SSO e `--console` para fazer login com Anthropic Console para faturamento de uso de API em vez de uma assinatura Claude | `claude auth login --console` |

25| `claude auth logout` | Fazer logout de sua conta Anthropic | `claude auth logout` |

26| `claude auth status` | Mostrar status de autenticação como JSON. Use `--text` para saída legível por humanos. Sai com código 0 se conectado, 1 se não | `claude auth status` |

27| `claude agents` | Listar todos os [subagents](/pt/sub-agents) configurados, agrupados por fonte | `claude agents` |

28| `claude auto-mode defaults` | Imprimir as regras do classificador [auto mode](/pt/permission-modes#eliminate-prompts-with-auto-mode) integradas como JSON. Use `claude auto-mode config` para ver sua configuração efetiva com as configurações aplicadas | `claude auto-mode defaults > rules.json` |

29| `claude mcp` | Configurar servidores Model Context Protocol (MCP) | Veja a [documentação Claude Code MCP](/pt/mcp). |

30| `claude plugin` | Gerenciar Claude Code [plugins](/pt/plugins). Alias: `claude plugins`. Veja [referência de plugin](/pt/plugins-reference#cli-commands-reference) para subcomandos | `claude plugin install code-review@claude-plugins-official` |

31| `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](/pt/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

32| `claude remote-control` | Iniciar um servidor [Remote Control](/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](/pt/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |

33| `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](/pt/authentication#generate-a-long-lived-token) | `claude setup-token` |

34| `claude ultrareview [target]` | Executar [ultrareview](/pt/ultrareview#run-ultrareview-non-interactively) de forma não interativa. Imprime descobertas para stdout e sai com 0 em caso de sucesso ou 1 em caso de falha. Use `--json` para o payload bruto e `--timeout <minutes>` para substituir o padrão de 30 minutos | `claude ultrareview 1234 --json` |

35 

36Se você digitar incorretamente um subcomando, Claude Code sugere a correspondência mais próxima e sai sem iniciar uma sessão. Por exemplo, `claude udpate` imprime `Did you mean claude update?`.

37 

38## Sinalizadores CLI

39 

40Personalize o comportamento do Claude Code com estes sinalizadores de linha de comando. `claude --help` não lista todos os sinalizadores, portanto a ausência de um sinalizador em `--help` não significa que ele não está disponível.

41 

42| Sinalizador | Descrição | Exemplo |

43| :---------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |

44| `--add-dir` | Adicionar diretórios de trabalho adicionais para Claude ler e editar arquivos. Concede acesso a arquivos; a maioria da configuração `.claude/` [não é descoberta](/pt/permissions#additional-directories-grant-file-access-not-configuration) desses diretórios. Valida se cada caminho existe como um diretório | `claude --add-dir ../apps ../lib` |

45| `--agent` | Especificar um agente para a sessão atual (substitui a configuração `agent`) | `claude --agent my-custom-agent` |

46| `--agents` | Definir subagents personalizados dinamicamente via JSON. Usa os mesmos nomes de campo que o [frontmatter](/pt/sub-agents#supported-frontmatter-fields) de subagent, mais um campo `prompt` para as instruções do agente | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

47| `--allow-dangerously-skip-permissions` | Adicionar `bypassPermissions` ao ciclo de modo `Shift+Tab` sem iniciar nele. Permite começar em um modo diferente como `plan` e mudar para `bypassPermissions` depois. Veja [modos de permissão](/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

48| `--allowedTools` | Ferramentas que executam sem solicitar permissão. Veja [sintaxe de regra de permissão](/pt/settings#permission-rule-syntax) para correspondência de padrões. Para restringir quais ferramentas estão disponíveis, use `--tools` em vez disso | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

49| `--append-system-prompt` | Anexar texto personalizado ao final do prompt do sistema padrão | `claude --append-system-prompt "Always use TypeScript"` |

50| `--append-system-prompt-file` | Carregar texto de prompt do sistema adicional de um arquivo e anexar ao prompt padrão | `claude --append-system-prompt-file ./extra-rules.txt` |

51| `--bare` | Modo mínimo: pular auto-descoberta de hooks, skills, plugins, servidores MCP, memória automática e CLAUDE.md para que chamadas com script iniciem mais rapidamente. Claude tem acesso a ferramentas Bash, leitura de arquivo e edição de arquivo. Define [`CLAUDE_CODE_SIMPLE`](/pt/env-vars). Veja [modo bare](/pt/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |

52| `--betas` | Cabeçalhos beta para incluir em solicitações de API (apenas usuários de chave de API) | `claude --betas interleaved-thinking` |

53| `--channels` | (Visualização de pesquisa) Servidores MCP cujas notificações de [channel](/pt/channels) Claude deve ouvir nesta sessão. Lista separada por espaço de entradas `plugin:<name>@<marketplace>`. Requer autenticação Claude.ai | `claude --channels plugin:my-notifier@my-marketplace` |

54| `--chrome` | Ativar [integração do navegador Chrome](/pt/chrome) para automação web e testes | `claude --chrome` |

55| `--continue`, `-c` | Carregar a conversa mais recente no diretório atual. Inclui sessões que adicionaram este diretório com `/add-dir` | `claude --continue` |

56| `--dangerously-load-development-channels` | Ativar [channels](/pt/channels-reference#test-during-the-research-preview) que não estão na lista de permissões aprovada, para desenvolvimento local. Aceita entradas `plugin:<name>@<marketplace>` e `server:<name>`. Solicita confirmação | `claude --dangerously-load-development-channels server:webhook` |

57| `--dangerously-skip-permissions` | Pular prompts de permissão. Equivalente a `--permission-mode bypassPermissions`. Veja [modos de permissão](/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) para o que isso faz e não faz | `claude --dangerously-skip-permissions` |

58| `--debug` | Ativar modo de depuração com filtragem de categoria opcional (por exemplo, `"api,hooks"` ou `"!statsig,!file"`) | `claude --debug "api,mcp"` |

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

60| `--disable-slash-commands` | Desativar todas as skills e comandos para esta sessão | `claude --disable-slash-commands` |

61| `--disallowedTools` | Ferramentas que são removidas do contexto do modelo e não podem ser usadas | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

62| `--effort` | Definir o [nível de esforço](/pt/model-config#adjust-effort-level) para a sessão atual. Opções: `low`, `medium`, `high`, `xhigh`, `max`; os níveis disponíveis dependem do modelo. Escopo de sessão e não persiste nas configurações | `claude --effort high` |

63| `--enable-auto-mode` | {/* max-version: 2.1.110 */}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` |

64| `--exclude-dynamic-system-prompt-sections` | Mover seções por máquina do prompt do sistema (diretório de trabalho, informações de ambiente, caminhos de memória, status do git) para a primeira mensagem do usuário. Melhora a reutilização de prompt-cache em diferentes usuários e máquinas executando a mesma tarefa. Aplica-se apenas com o prompt do sistema padrão; ignorado quando `--system-prompt` ou `--system-prompt-file` está definido. Use com `-p` para cargas de trabalho com script e multi-usuário | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

65| `--fallback-model` | Ativar fallback automático para modelo especificado quando o modelo padrão está sobrecarregado (apenas modo print) | `claude -p --fallback-model sonnet "query"` |

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

67| `--from-pr` | Retomar 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` |

68| `--ide` | Conectar automaticamente ao IDE na inicialização se exatamente um IDE válido estiver disponível | `claude --ide` |

69| `--init` | Executar hooks de [Setup](/pt/hooks#setup) com o matcher `init` antes da sessão (apenas modo print) | `claude -p --init "query"` |

70| `--init-only` | Executar hooks de [Setup](/pt/hooks#setup) e `SessionStart`, depois sair sem iniciar uma conversa | `claude --init-only` |

71| `--include-hook-events` | Incluir todos os eventos do ciclo de vida do hook no fluxo de saída. Requer `--output-format stream-json` | `claude -p --output-format stream-json --include-hook-events "query"` |

72| `--include-partial-messages` | Incluir eventos de streaming parcial na saída. Requer `--print` e `--output-format stream-json` | `claude -p --output-format stream-json --include-partial-messages "query"` |

73| `--input-format` | Especificar formato de entrada para modo print (opções: `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |

74| `--json-schema` | Obter saída JSON validada correspondendo a um JSON Schema após o agente completar seu fluxo de trabalho (apenas modo print, veja [saídas estruturadas](/pt/agent-sdk/structured-outputs)) | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

75| `--maintenance` | Executar hooks de [Setup](/pt/hooks#setup) com o matcher `maintenance` antes da sessão (apenas modo print) | `claude -p --maintenance "query"` |

76| `--max-budget-usd` | Valor máximo em dólares a gastar em chamadas de API antes de parar (apenas modo print) | `claude -p --max-budget-usd 5.00 "query"` |

77| `--max-turns` | Limitar o número de turnos de agente (apenas modo print). Sai com um erro quando o limite é atingido. Sem limite por padrão | `claude -p --max-turns 3 "query"` |

78| `--mcp-config` | Carregar servidores MCP de arquivos JSON ou strings (separados por espaço) | `claude --mcp-config ./mcp.json` |

79| `--model` | Define o modelo para a sessão atual com um alias para o modelo mais recente (`sonnet` ou `opus`) ou o nome completo de um modelo | `claude --model claude-sonnet-4-6` |

80| `--name`, `-n` | Definir um nome de exibição para a sessão, mostrado em `/resume` e no título do terminal. Você pode retomar uma sessão nomeada com `claude --resume <name>`. <br /><br />[`/rename`](/pt/commands) altera o nome durante a sessão e também o mostra na barra de prompt | `claude -n "my-feature-work"` |

81| `--no-chrome` | Desativar [integração do navegador Chrome](/pt/chrome) para esta sessão | `claude --no-chrome` |

82| `--no-session-persistence` | Desativar persistência de sessão para que as sessões não sejam salvas em disco e não possam ser retomadas (apenas modo print) | `claude -p --no-session-persistence "query"` |

83| `--output-format` | Especificar formato de saída para modo print (opções: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

84| `--permission-mode` | Começar em um [modo de permissão](/pt/permission-modes) especificado. Aceita `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` ou `bypassPermissions`. Substitui `defaultMode` dos arquivos de configuração | `claude --permission-mode plan` |

85| `--permission-prompt-tool` | Especificar uma ferramenta MCP para lidar com prompts de permissão em modo não interativo | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

86| `--plugin-dir` | Carregar plugins de um diretório apenas para esta sessão. Cada sinalizador leva um caminho. Repita o sinalizador para vários diretórios: `--plugin-dir A --plugin-dir B` | `claude --plugin-dir ./my-plugins` |

87| `--print`, `-p` | Imprimir resposta sem modo interativo (veja [documentação do Agent SDK](/pt/agent-sdk/overview) para detalhes de uso programático) | `claude -p "query"` |

88| `--remote` | Criar uma nova [sessão web](/pt/claude-code-on-the-web) em claude.ai com a descrição de tarefa fornecida | `claude --remote "Fix the login bug"` |

89| `--remote-control`, `--rc` | Iniciar uma sessão interativa com [Remote Control](/pt/remote-control#start-a-remote-control-session) ativado para que você também possa controlá-la a partir de claude.ai ou do aplicativo Claude. Opcionalmente, passe um nome para a sessão | `claude --remote-control "My Project"` |

90| `--remote-control-session-name-prefix <prefix>` | Prefixo para nomes de sessão [Remote Control](/pt/remote-control) gerados automaticamente quando nenhum nome explícito está definido. Padrão é o nome do host da sua máquina, produzindo nomes como `myhost-graceful-unicorn`. Defina `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` para o mesmo efeito | `claude remote-control --remote-control-session-name-prefix dev-box` |

91| `--replay-user-messages` | Re-emitir mensagens do usuário de stdin de volta em stdout para confirmação. Requer `--input-format stream-json` e `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --replay-user-messages` |

92| `--resume`, `-r` | Retomar uma sessão específica por ID ou nome, ou mostrar um seletor interativo para escolher uma sessão. Inclui sessões que adicionaram este diretório com `/add-dir` | `claude --resume auth-refactor` |

93| `--session-id` | Usar um ID de sessão específico para a conversa (deve ser um UUID válido) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

94| `--setting-sources` | Lista separada por vírgula de fontes de configuração a carregar (`user`, `project`, `local`) | `claude --setting-sources user,project` |

95| `--settings` | Caminho para um arquivo JSON de configurações ou uma string JSON para carregar configurações adicionais | `claude --settings ./settings.json` |

96| `--strict-mcp-config` | Usar apenas servidores MCP de `--mcp-config`, ignorando todas as outras configurações de MCP | `claude --strict-mcp-config --mcp-config ./mcp.json` |

97| `--system-prompt` | Substituir todo o prompt do sistema por texto personalizado | `claude --system-prompt "You are a Python expert"` |

98| `--system-prompt-file` | Carregar prompt do sistema de um arquivo, substituindo o prompt padrão | `claude --system-prompt-file ./custom-prompt.txt` |

99| `--teleport` | Retomar uma [sessão web](/pt/claude-code-on-the-web) em seu terminal local | `claude --teleport` |

100| `--teammate-mode` | Definir como [equipe de agentes](/pt/agent-teams) colegas de equipe são exibidos: `auto` (padrão), `in-process` ou `tmux`. Veja [Escolher um modo de exibição](/pt/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |

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

102| `--tools` | Restringir quais ferramentas integradas Claude pode usar. Use `""` para desativar todas, `"default"` para todas, ou nomes de ferramentas como `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |

103| `--verbose` | Ativar logging detalhado, mostra saída completa turno por turno | `claude --verbose` |

104| `--version`, `-v` | Exibir o número da versão | `claude -v` |

105| `--worktree`, `-w` | Iniciar Claude em um [git worktree](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolado em `<repo>/.claude/worktrees/<name>`. Se nenhum nome for fornecido, um será gerado automaticamente | `claude -w feature-auth` |

106 

107### Sinalizadores de prompt do sistema

108 

109Claude Code fornece quatro sinalizadores para personalizar o prompt do sistema. Todos os quatro funcionam em modos interativo e não interativo.

110 

111| Sinalizador | Comportamento | Exemplo |

112| :---------------------------- | :----------------------------------------- | :------------------------------------------------------ |

113| `--system-prompt` | Substitui todo o prompt padrão | `claude --system-prompt "You are a Python expert"` |

114| `--system-prompt-file` | Substitui pelo conteúdo do arquivo | `claude --system-prompt-file ./prompts/review.txt` |

115| `--append-system-prompt` | Anexa ao prompt padrão | `claude --append-system-prompt "Always use TypeScript"` |

116| `--append-system-prompt-file` | Anexa conteúdo do arquivo ao prompt padrão | `claude --append-system-prompt-file ./style-rules.txt` |

117 

118`--system-prompt` e `--system-prompt-file` são mutuamente exclusivos. Os sinalizadores de anexação podem ser combinados com qualquer sinalizador de substituição.

119 

120Para a maioria dos casos de uso, use um sinalizador de anexação. Anexar preserva os recursos integrados do Claude Code enquanto adiciona seus requisitos. Use um sinalizador de substituição apenas quando você precisar de controle completo sobre o prompt do sistema.

121 

122## Veja também

123 

124* [Extensão Chrome](/pt/chrome) - Automação de navegador e testes web

125* [Modo interativo](/pt/interactive-mode) - Atalhos de teclado, modos de entrada e recursos interativos

126* [Guia de início rápido](/pt/quickstart) - Começar com Claude Code

127* [Fluxos de trabalho comuns](/pt/common-workflows) - Fluxos de trabalho e padrões avançados

128* [Configurações](/pt/settings) - Opções de configuração

129* [Documentação do Agent SDK](/pt/agent-sdk/overview) - Uso programático e integrações

code-review.md +277 −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# Code Review

6 

7> Configure análises automatizadas de PR que detectam erros de lógica, vulnerabilidades de segurança e regressões usando análise multi-agente de sua base de código completa

8 

9<Note>

10 Code Review está em visualização de pesquisa, disponível para assinaturas [Team e Enterprise](https://claude.ai/admin-settings/claude-code). Não está disponível para organizações com [Zero Data Retention](/pt/zero-data-retention) ativado.

11</Note>

12 

13Code Review analisa seus pull requests do GitHub e publica descobertas como comentários inline nas linhas de código onde encontrou problemas. Uma frota de agentes especializados examina as alterações de código no contexto de sua base de código completa, procurando por erros de lógica, vulnerabilidades de segurança, casos extremos quebrados e regressões sutis.

14 

15As descobertas são marcadas por severidade e não aprovam ou bloqueiam seu PR, portanto os fluxos de trabalho de revisão existentes permanecem intactos. Você pode ajustar o que Claude sinaliza adicionando um arquivo `CLAUDE.md` ou `REVIEW.md` ao seu repositório.

16 

17Para executar Claude em sua própria infraestrutura de CI em vez deste serviço gerenciado, consulte [GitHub Actions](/pt/github-actions) ou [GitLab CI/CD](/pt/gitlab-ci-cd). Para repositórios em uma instância GitHub auto-hospedada, consulte [GitHub Enterprise Server](/pt/github-enterprise-server).

18 

19Esta página cobre:

20 

21* [Como as revisões funcionam](#how-reviews-work)

22* [Configuração](#set-up-code-review)

23* [Acionando revisões manualmente](#manually-trigger-reviews) com `@claude review` e `@claude review once`

24* [Personalizando revisões](#customize-reviews) com `CLAUDE.md` e `REVIEW.md`

25* [Preços](#pricing)

26* [Troubleshooting](#troubleshooting) execuções falhadas e comentários ausentes

27 

28## Como as revisões funcionam

29 

30Depois que um administrador [ativa Code Review](#set-up-code-review) para sua organização, as revisões são acionadas quando um PR é aberto, em cada push ou quando solicitado manualmente, dependendo do comportamento configurado do repositório. Comentar `@claude review` [inicia revisões em um PR](#manually-trigger-reviews) em qualquer modo.

31 

32Quando uma revisão é executada, vários agentes analisam o diff e o código circundante em paralelo na infraestrutura da Anthropic. Cada agente procura por uma classe diferente de problema, então uma etapa de verificação verifica os candidatos contra o comportamento real do código para filtrar falsos positivos. Os resultados são desduplicados, classificados por severidade e publicados como comentários inline nas linhas específicas onde os problemas foram encontrados, com um resumo no corpo da revisão. Se nenhum problema for encontrado, Claude publica um breve comentário de confirmação no PR.

33 

34As revisões escalam em custo com o tamanho e complexidade do PR, completando em média em 20 minutos. Os administradores podem monitorar a atividade de revisão e gastos através do [painel de análise](#view-usage).

35 

36### Níveis de severidade

37 

38Cada descoberta é marcada com um nível de severidade:

39 

40| Marcador | Severidade | Significado |

41| :------- | :------------ | :---------------------------------------------------------------------- |

42| 🔴 | Importante | Um bug que deve ser corrigido antes de fazer merge |

43| 🟡 | Nit | Um problema menor, vale a pena corrigir mas não é bloqueante |

44| 🟣 | Pré-existente | Um bug que existe na base de código mas não foi introduzido por este PR |

45 

46As descobertas incluem uma seção de raciocínio estendido recolhível que você pode expandir para entender por que Claude sinalizou o problema e como verificou o problema.

47 

48### Avaliar e responder a descobertas

49 

50Cada comentário de revisão do Claude chega com 👍 e 👎 já anexados para que ambos os botões apareçam na interface do GitHub para classificação com um clique. Clique em 👍 se a descoberta foi útil ou 👎 se estava errada ou ruidosa. A Anthropic coleta contagens de reações após o PR ser mesclado e as usa para ajustar o revisor. As reações não acionam uma re-revisão ou alteram nada no PR.

51 

52Responder a um comentário inline não solicita que Claude responda ou atualize o PR. Para agir em uma descoberta, corrija o código e faça push. Se o PR estiver inscrito em revisões acionadas por push, a próxima execução resolve a thread quando o problema for corrigido. Para solicitar uma revisão nova sem fazer push, comente `@claude review once` como um [comentário de PR de nível superior](#manually-trigger-reviews).

53 

54### Saída de execução de verificação

55 

56Além dos comentários de revisão inline, cada revisão popula a execução de verificação **Claude Code Review** que aparece junto com suas verificações de CI. Expanda seu link **Details** para ver um resumo de cada descoberta em um único lugar, classificado por severidade:

57 

58| Severidade | Arquivo:Linha | Problema |

59| ------------- | ------------------------- | ------------------------------------------------------------------------ |

60| 🔴 Importante | `src/auth/session.ts:142` | Atualização de token corre com logout, deixando sessões obsoletas ativas |

61| 🟡 Nit | `src/auth/session.ts:88` | `parseExpiry` retorna silenciosamente 0 em entrada malformada |

62 

63Cada descoberta também aparece como uma anotação na aba **Files changed**, marcada diretamente nas linhas de diff relevantes. As descobertas Importantes são renderizadas com um marcador vermelho, nits com um aviso amarelo e bugs pré-existentes com um aviso cinza. Anotações e a tabela de severidade são escritas na execução de verificação independentemente dos comentários de revisão inline, portanto permanecem disponíveis mesmo se GitHub rejeitar um comentário inline em uma linha que se moveu.

64 

65A execução de verificação sempre é concluída com uma conclusão neutra, portanto nunca bloqueia a mesclagem através de regras de proteção de branch. Se você deseja bloquear mesclagens em descobertas de Code Review, leia o detalhamento de severidade da saída de execução de verificação em seu próprio CI. A última linha do texto Details é um comentário legível por máquina que seu fluxo de trabalho pode analisar com `gh` e jq:

66 

67```bash theme={null}

68gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \

69 --jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'

70```

71 

72Isso retorna um objeto JSON com contagens por severidade, por exemplo `{"normal": 2, "nit": 1, "pre_existing": 0}`. A chave `normal` contém a contagem de descobertas Importantes; um valor diferente de zero significa que Claude encontrou pelo menos um bug que vale a pena corrigir antes da mesclagem.

73 

74### O que Code Review verifica

75 

76Por padrão, Code Review se concentra em correção: bugs que quebrariam a produção, não preferências de formatação ou cobertura de testes ausente. Você pode expandir o que verifica [adicionando arquivos de orientação](#customize-reviews) ao seu repositório.

77 

78## Configurar Code Review

79 

80Um administrador ativa Code Review uma vez para a organização e seleciona quais repositórios incluir.

81 

82<Steps>

83 <Step title="Abrir configurações de administrador do Claude Code">

84 Vá para [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) e encontre a seção Code Review. Você precisa de acesso de administrador à sua organização Claude e permissão para instalar GitHub Apps em sua organização GitHub.

85 </Step>

86 

87 <Step title="Iniciar configuração">

88 Clique em **Setup**. Isso inicia o fluxo de instalação do GitHub App.

89 </Step>

90 

91 <Step title="Instalar o Claude GitHub App">

92 Siga os prompts para instalar o Claude GitHub App em sua organização GitHub. O app solicita estas permissões de repositório:

93 

94 * **Contents**: leitura e escrita

95 * **Issues**: leitura e escrita

96 * **Pull requests**: leitura e escrita

97 

98 Code Review usa acesso de leitura a conteúdos e acesso de escrita a pull requests. O conjunto de permissões mais amplo também suporta [GitHub Actions](/pt/github-actions) se você ativar isso mais tarde.

99 </Step>

100 

101 <Step title="Selecionar repositórios">

102 Escolha quais repositórios ativar para Code Review. Se você não vir um repositório, certifique-se de que deu ao Claude GitHub App acesso a ele durante a instalação. Você pode adicionar mais repositórios mais tarde.

103 </Step>

104 

105 <Step title="Definir gatilhos de revisão por repo">

106 Após a conclusão da configuração, a seção Code Review mostra seus repositórios em uma tabela. Para cada repositório, use o dropdown **Review Behavior** para escolher quando as revisões são executadas:

107 

108 * **Once after PR creation**: a revisão é executada uma vez quando um PR é aberto ou marcado como pronto para revisão

109 * **After every push**: a revisão é executada em cada push para o branch do PR, detectando novos problemas conforme o PR evolui e resolvendo automaticamente threads quando você corrige problemas sinalizados

110 * **Manual**: as revisões começam apenas quando alguém [comenta `@claude review` ou `@claude review once` em um PR](#manually-trigger-reviews); `@claude review` também inscreve o PR em revisões em pushes subsequentes

111 

112 Revisar em cada push executa a maioria das revisões e custa mais. O modo Manual é útil para repositórios de alto tráfego onde você deseja optar PRs específicos para revisão, ou para começar a revisar seus PRs apenas quando estiverem prontos.

113 </Step>

114</Steps>

115 

116A tabela de repositórios também mostra o custo médio por revisão para cada repo com base na atividade recente. Use o menu de ações de linha para ativar ou desativar Code Review por repositório, ou para remover um repositório completamente.

117 

118Para verificar a configuração, abra um PR de teste. Se você escolheu um gatilho automático, uma execução de verificação chamada **Claude Code Review** aparece em alguns minutos. Se você escolheu Manual, comente `@claude review` no PR para iniciar a primeira revisão. Se nenhuma execução de verificação aparecer, confirme que o repositório está listado em suas configurações de administrador e que o Claude GitHub App tem acesso a ele.

119 

120## Acionando revisões manualmente

121 

122Dois comandos de comentário iniciam uma revisão sob demanda. Ambos funcionam independentemente do gatilho configurado do repositório, portanto você pode usá-los para optar PRs específicos para revisão no modo Manual ou para obter uma re-revisão imediata em outros modos.

123 

124| Comando | O que faz |

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

126| `@claude review` | Inicia uma revisão e inscreve o PR em revisões acionadas por push a partir de então |

127| `@claude review once` | Inicia uma única revisão sem inscrever o PR em pushes futuros |

128 

129Use `@claude review once` quando você deseja feedback sobre o estado atual de um PR mas não deseja que cada push subsequente incorra em uma revisão. Isso é útil para PRs de longa duração com pushes frequentes, ou quando você deseja uma segunda opinião única sem alterar o comportamento de revisão do PR.

130 

131Para qualquer comando acionar uma revisão:

132 

133* Poste-o como um comentário de PR de nível superior, não um comentário inline em uma linha de diff

134* Coloque o comando no início do comentário, com `once` na mesma linha se você estiver usando a forma única

135* Você deve ter acesso de proprietário, membro ou colaborador ao repositório

136* O PR deve estar aberto

137 

138Diferentemente dos gatilhos automáticos, os gatilhos manuais são executados em PRs de rascunho, já que uma solicitação explícita sinaliza que você deseja a revisão agora independentemente do status de rascunho.

139 

140Se uma revisão já estiver em execução nesse PR, a solicitação é enfileirada até que a revisão em andamento seja concluída. Você pode monitorar o progresso através da execução de verificação no PR.

141 

142## Personalizar revisões

143 

144Code Review lê dois arquivos do seu repositório para orientar o que sinaliza. Eles diferem em como influenciam fortemente a revisão:

145 

146* **`CLAUDE.md`**: instruções de projeto compartilhadas que Claude Code usa para todas as tarefas, não apenas revisões. Code Review o lê como contexto de projeto e sinaliza violações recém-introduzidas como nits.

147* **`REVIEW.md`**: instruções exclusivas de revisão, injetadas diretamente em cada agente no pipeline de revisão como prioridade máxima. Use-o para alterar o que é sinalizado, em qual severidade e como as descobertas são relatadas.

148 

149### CLAUDE.md

150 

151Code Review lê seus arquivos `CLAUDE.md` do repositório e trata violações recém-introduzidas como descobertas de [nível nit](#severity-levels). Isso funciona bidirecionalmente: se seu PR altera o código de uma forma que torna uma declaração `CLAUDE.md` desatualizada, Claude sinaliza que os docs precisam ser atualizados também.

152 

153Claude lê arquivos `CLAUDE.md` em cada nível de sua hierarquia de diretórios, portanto as regras no `CLAUDE.md` de um subdiretório se aplicam apenas aos arquivos sob esse caminho. Consulte a [documentação de memory](/pt/memory) para mais informações sobre como `CLAUDE.md` funciona.

154 

155Para orientação específica de revisão que você não deseja aplicada a sessões gerais do Claude Code, use [`REVIEW.md`](#review-md) em vez disso.

156 

157### REVIEW\.md

158 

159`REVIEW.md` é um arquivo na raiz do seu repositório que substitui como Code Review se comporta no seu repo. Seu conteúdo é injetado no prompt do sistema de cada agente no pipeline de revisão como o bloco de instrução de prioridade máxima, tendo precedência sobre a orientação de revisão padrão.

160 

161Como é colado verbatim, `REVIEW.md` é instruções simples: a [sintaxe `@` import](/pt/memory#import-additional-files) não é expandida e os arquivos referenciados não são lidos no prompt. Coloque as regras que você deseja aplicadas diretamente no arquivo.

162 

163#### O que você pode ajustar

164 

165`REVIEW.md` é markdown de forma livre, portanto qualquer coisa que você possa expressar como uma instrução de revisão está no escopo. Os padrões abaixo têm o maior impacto na prática.

166 

167**Severidade**: redefina o que 🔴 Importante significa para seu repo. A calibração padrão visa código de produção; um repo de docs, um repo de config ou um protótipo pode querer uma definição muito mais estreita. Declare explicitamente quais classes de descoberta são Importantes e quais são Nit no máximo. Você também pode escalar na outra direção, por exemplo tratando qualquer violação de `CLAUDE.md` como Importante em vez do nit padrão.

168 

169**Volume de nit**: limite quantos comentários 🟡 Nit uma única revisão publica. Prosa e arquivos de config podem ser polidos para sempre. Um limite como "relatar no máximo cinco nits, mencionar o resto como uma contagem no resumo" mantém as revisões acionáveis.

170 

171**Regras de pulo**: liste caminhos, padrões de branch e categorias de descoberta onde Claude não deve publicar descobertas. Candidatos comuns são código gerado, lockfiles, dependências vendidas e branches de autoria de máquina, junto com qualquer coisa que seu CI já aplique como linting ou verificação ortográfica. Para caminhos que justificam alguma revisão mas não escrutínio completo, defina uma barra mais alta em vez de pular completamente: "em `scripts/`, relatar apenas se próximo de certo e severo."

172 

173**Verificações específicas do repo**: adicione regras que você deseja sinalizadas em cada PR, como "novas rotas de API devem ter um teste de integração." Como `REVIEW.md` é injetado como prioridade máxima, essas chegam mais confiávelmente do que as mesmas regras em um `CLAUDE.md` longo.

174 

175**Barra de verificação**: exija evidência antes de uma classe de descoberta ser publicada. Por exemplo, "reivindicações de comportamento precisam de uma citação `file:line` na fonte, não uma inferência de nomenclatura" reduz falsos positivos que de outra forma custariam ao autor uma volta.

176 

177**Convergência de re-revisão**: diga a Claude como se comportar quando um PR já foi revisado. Uma regra como "após a primeira revisão, suprima nits novos e publique descobertas Importantes apenas" impede que uma correção de uma linha chegue à sétima rodada apenas por estilo.

178 

179**Forma de resumo**: peça para o corpo da revisão abrir com uma contagem de uma linha como `2 factual, 4 style`, e liderar com "sem problemas factuais" quando esse for o caso. O autor quer saber a forma do trabalho antes dos detalhes.

180 

181#### Exemplo

182 

183Este `REVIEW.md` recalibra severidade para um serviço backend, limita nits, pula arquivos gerados e adiciona verificações específicas do repo.

184 

185```markdown theme={null}

186# Instruções de revisão

187 

188## O que Importante significa aqui

189 

190Reserve Importante para descobertas que quebrariam comportamento, vazariam dados

191ou bloqueariam um rollback: lógica incorreta, consultas de banco de dados sem escopo, PII

192em logs ou mensagens de erro, e migrações que não são compatíveis com versões anteriores. Estilo, nomenclatura e sugestões de refatoração são Nit no máximo.

193 

194## Limite os nits

195 

196Relatar no máximo cinco Nits por revisão. Se você encontrou mais, diga "mais N

197itens similares" no resumo em vez de publicá-los inline. Se tudo que você encontrou é um Nit, lidere o resumo com "Sem problemas bloqueantes."

198 

199## Não relatar

200 

201- Qualquer coisa que CI já aplique: lint, formatação, erros de tipo

202- Arquivos gerados sob `src/gen/` e qualquer arquivo `*.lock`

203- Código apenas de teste que intencionalmente viola regras de produção

204 

205## Sempre verificar

206 

207- Novas rotas de API têm um teste de integração

208- Linhas de log não incluem endereços de email, IDs de usuário ou corpos de solicitação

209- Consultas de banco de dados estão no escopo do chamador do tenant

210```

211 

212#### Mantenha-o focado

213 

214O comprimento tem um custo: um `REVIEW.md` longo dilui as regras que mais importam. Mantenha-o em instruções que alteram o comportamento de revisão e deixe contexto geral do projeto em `CLAUDE.md`.

215 

216## Ver uso

217 

218Vá para [claude.ai/analytics/code-review](https://claude.ai/analytics/code-review) para ver a atividade de Code Review em toda sua organização. O painel mostra:

219 

220| Seção | O que mostra |

221| :------------------- | :----------------------------------------------------------------------------------------------------------------- |

222| PRs reviewed | Contagem diária de pull requests revisados durante o intervalo de tempo selecionado |

223| Cost weekly | Gasto semanal em Code Review |

224| Feedback | Contagem de comentários de revisão que foram resolvidos automaticamente porque um desenvolvedor abordou o problema |

225| Repository breakdown | Contagens por repo de PRs revisados e comentários resolvidos |

226 

227A tabela de repositórios nas configurações de administrador também mostra custo médio por revisão para cada repo. Os números de custo do painel são estimativas para monitorar atividade; para gasto preciso de fatura, consulte sua fatura da Anthropic.

228 

229## Preços

230 

231Code Review é faturado com base no uso de tokens. Cada revisão custa em média \$15-25, escalando com o tamanho do PR, complexidade da base de código e quantos problemas requerem verificação. O uso de Code Review é faturado separadamente através de [extra usage](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) e não conta contra o uso incluído do seu plano.

232 

233O gatilho de revisão que você escolhe afeta o custo total:

234 

235* **Once after PR creation**: é executado uma vez por PR

236* **After every push**: é executado em cada push, multiplicando o custo pelo número de pushes

237* **Manual**: sem revisões até que alguém comente `@claude review` em um PR

238 

239Em qualquer modo, comentar `@claude review` [opta o PR em revisões acionadas por push](#manually-trigger-reviews), portanto custo adicional acumula por push após esse comentário. Para executar uma única revisão sem inscrever em pushes futuros, comente `@claude review once` em vez disso.

240 

241Os custos aparecem em sua fatura da Anthropic independentemente de sua organização usar Amazon Bedrock ou Google Vertex AI para outros recursos do Claude Code. Para definir um limite de gasto mensal para Code Review, vá para [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) e configure o limite para o serviço Claude Code Review.

242 

243Monitore gastos através do gráfico de custo semanal em [analytics](#view-usage) ou da coluna de custo médio por repo nas configurações de administrador.

244 

245## Troubleshooting

246 

247As execuções de revisão são do melhor esforço. Uma execução falhada nunca bloqueia seu PR, mas também não tenta novamente por conta própria. Esta seção cobre como se recuperar de uma execução falhada e onde procurar quando a execução de verificação relata problemas que você não consegue encontrar.

248 

249### Retrigger uma revisão falhada ou com tempo limite excedido

250 

251Quando a infraestrutura de revisão atinge um erro interno ou excede seu limite de tempo, a execução de verificação é concluída com um título de **Code review encountered an error** ou **Code review timed out**. A conclusão ainda é neutra, portanto nada bloqueia sua mesclagem, mas nenhuma descoberta é publicada.

252 

253Para executar a revisão novamente, comente `@claude review once` no PR. Isso inicia uma revisão nova sem inscrever o PR em pushes futuros. Se o PR já estiver inscrito em revisões acionadas por push, fazer push de um novo commit também inicia uma nova revisão.

254 

255O botão **Re-run** na aba Checks do GitHub não retrigger Code Review. Use o comando de comentário ou um novo push em vez disso.

256 

257### Revisão não foi executada e o PR mostra uma mensagem de limite de gasto

258 

259Quando o limite de gasto mensal de sua organização é atingido, Code Review publica um único comentário no PR explicando que a revisão foi ignorada. As revisões retomam automaticamente no início do próximo período de faturamento, ou imediatamente quando um administrador aumenta o limite em [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage).

260 

261### Encontrar problemas que não aparecem como comentários inline

262 

263Se o título da execução de verificação disser que problemas foram encontrados mas você não vir comentários de revisão inline no diff, procure nestes outros locais onde as descobertas são exibidas:

264 

265* **Check run Details**: clique em **Details** ao lado da verificação Claude Code Review na aba Checks. A tabela de severidade lista cada descoberta com seu arquivo, linha e resumo independentemente de o comentário inline ter sido aceito.

266* **Files changed annotations**: abra a aba **Files changed** no PR. As descobertas são renderizadas como anotações anexadas diretamente às linhas de diff, separadas dos comentários de revisão.

267* **Review body**: se você fez push para o PR enquanto uma revisão estava em execução, algumas descobertas podem fazer referência a linhas que não existem mais no diff atual. Essas aparecem sob um cabeçalho **Additional findings** no texto do corpo da revisão em vez de como comentários inline.

268 

269## Recursos relacionados

270 

271Code Review é projetado para funcionar junto com o resto do Claude Code. Se você deseja executar revisões localmente antes de abrir um PR, precisa de uma configuração auto-hospedada ou deseja aprofundar como `CLAUDE.md` molda o comportamento do Claude em todas as ferramentas, estas páginas são bons próximos passos:

272 

273* [Plugins](/pt/discover-plugins): navegue no marketplace de plugins, incluindo um plugin `code-review` para executar revisões sob demanda localmente antes de fazer push

274* [GitHub Actions](/pt/github-actions): execute Claude em seus próprios fluxos de trabalho do GitHub Actions para automação personalizada além de code review

275* [GitLab CI/CD](/pt/gitlab-ci-cd): integração Claude auto-hospedada para pipelines GitLab

276* [Memory](/pt/memory): como arquivos `CLAUDE.md` funcionam em Claude Code

277* [Analytics](/pt/analytics): rastreie o uso de Claude Code além de code review

commands.md +113 −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# Comandos

6 

7> Referência completa dos comandos disponíveis no Claude Code, incluindo comandos integrados e skills agrupadas.

8 

9Os comandos controlam o Claude Code dentro de uma sessão. Eles fornecem uma maneira rápida de alternar modelos, gerenciar permissões, limpar contexto, executar um fluxo de trabalho e muito mais.

10 

11Digite `/` para ver todos os comandos disponíveis para você, ou digite `/` seguido de letras para filtrar.

12 

13A tabela abaixo lista todos os comandos incluídos no Claude Code. As entradas marcadas como **[Skill](/pt/skills#bundled-skills)** são skills agrupadas. Elas usam o mesmo mecanismo que as skills que você escreve: um prompt entregue ao Claude, que Claude também pode invocar automaticamente quando relevante. Tudo o mais é um comando integrado cujo comportamento é codificado na CLI. Para adicionar seus próprios comandos, consulte [skills](/pt/skills).

14 

15Nem todo comando aparece para todos os usuários. A disponibilidade depende da sua plataforma, plano e ambiente. Por exemplo, `/desktop` aparece apenas no macOS e Windows, e `/upgrade` aparece apenas nos planos Pro e Max.

16 

17Na tabela abaixo, `<arg>` indica um argumento obrigatório e `[arg]` indica um opcional.

18 

19| Comando | Propósito |

20| :---------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

21| `/add-dir <path>` | Adicionar um diretório de trabalho para acesso a arquivos durante a sessão atual. A maioria da configuração `.claude/` [não é descoberta](/pt/permissions#additional-directories-grant-file-access-not-configuration) do diretório adicionado. Você pode retomar a sessão posteriormente do diretório adicionado com `--continue` ou `--resume` |

22| `/agents` | Gerenciar configurações de [agent](/pt/sub-agents) |

23| `/autofix-pr [prompt]` | Gerar uma sessão [Claude Code na web](/pt/claude-code-on-the-web#auto-fix-pull-requests) que monitora o PR do branch atual e envia correções quando o CI falha ou revisores deixam comentários. Detecta o PR aberto do seu branch verificado com `gh pr view`; para monitorar um PR diferente, primeiro verifique seu branch. Por padrão, a sessão remota é instruída a corrigir todas as falhas de CI e comentários de revisão; passe um prompt para dar instruções diferentes, por exemplo `/autofix-pr only fix lint and type errors`. Requer a CLI `gh` e acesso a [Claude Code na web](/pt/claude-code-on-the-web#who-can-use-claude-code-on-the-web) |

24| `/batch <instruction>` | **[Skill](/pt/skills#bundled-skills).** Orquestrar mudanças em larga escala em um codebase em paralelo. Pesquisa o codebase, decompõe o trabalho em 5 a 30 unidades independentes e apresenta um plano. Uma vez aprovado, gera um agente de fundo por unidade em um [git worktree](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolado. Cada agente implementa sua unidade, executa testes e abre uma solicitação de pull. Requer um repositório git. Exemplo: `/batch migrate src/ from Solid to React` |

25| `/branch [name]` | Criar um branch da conversa atual neste ponto. Alterna você para o branch e preserva o original, ao qual você pode retornar com `/resume`. Alias: `/fork`. Quando [`CLAUDE_CODE_FORK_SUBAGENT`](/pt/env-vars) está definido, `/fork` em vez disso gera um [subagent bifurcado](/pt/sub-agents#fork-the-current-conversation) e não é mais um alias para este comando |

26| `/btw <question>` | Fazer uma [pergunta rápida](/pt/interactive-mode#side-questions-with-%2Fbtw) sem adicionar à conversa |

27| `/chrome` | Configurar configurações do [Claude no Chrome](/pt/chrome) |

28| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/pt/skills#bundled-skills).** Carregar material de referência da API Claude para a linguagem do seu projeto (Python, TypeScript, Java, Go, Ruby, C#, PHP ou cURL) e referência de Managed Agents. Cobre uso de ferramentas, streaming, lotes, saídas estruturadas e armadilhas comuns. Também ativa automaticamente quando seu código importa `anthropic` ou `@anthropic-ai/sdk`. Execute `/claude-api migrate` para atualizar o código existente da API Claude para um modelo mais recente: Claude pergunta quais arquivos verificar e qual modelo direcionar, depois atualiza IDs de modelo, configuração de thinking e outros parâmetros que mudaram entre versões. Execute `/claude-api managed-agents-onboard` para um passo a passo interativo que cria um novo Managed Agent do zero |

29| `/clear` | Iniciar uma nova conversa com contexto vazio. A conversa anterior permanece disponível em `/resume`. Para liberar contexto enquanto continua a mesma conversa, use `/compact` em vez disso. Aliases: `/reset`, `/new` |

30| `/color [color\|default]` | Definir a cor da barra de prompt para a sessão atual. Cores disponíveis: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Use `default` para redefinir. Quando [Remote Control](/pt/remote-control) está conectado, a cor sincroniza com claude.ai/code |

31| `/compact [instructions]` | Liberar contexto resumindo a conversa até agora. Opcionalmente, passe instruções de foco para o resumo. Consulte [como a compactação lida com regras, skills e arquivos de memória](/pt/context-window#what-survives-compaction) |

32| `/config` | Abrir a interface de [Configurações](/pt/settings) para ajustar tema, modelo, [estilo de saída](/pt/output-styles) e outras preferências. Alias: `/settings` |

33| `/context` | Visualizar o uso atual de contexto como uma grade colorida. Mostra sugestões de otimização para ferramentas pesadas em contexto, inchaço de memória e avisos de capacidade |

34| `/copy [N]` | Copiar a última resposta do assistente para a área de transferência. Passe um número `N` para copiar a N-ésima resposta mais recente: `/copy 2` copia a segunda mais recente. Quando há blocos de código, mostra um seletor interativo para selecionar blocos individuais ou a resposta completa. Pressione `w` no seletor para escrever a seleção em um arquivo em vez da área de transferência, o que é útil via SSH |

35| `/cost` | Alias para `/usage` |

36| `/debug [description]` | **[Skill](/pt/skills#bundled-skills).** Ativar registro de depuração para a sessão atual e solucionar problemas lendo o log de depuração da sessão. O registro de depuração está desativado por padrão, a menos que você tenha iniciado com `claude --debug`, então executar `/debug` no meio da sessão começa a capturar logs a partir desse ponto. Opcionalmente, descreva o problema para focar a análise |

37| `/desktop` | Continuar a sessão atual no aplicativo Claude Code Desktop. Apenas macOS e Windows. Alias: `/app` |

38| `/diff` | Abrir um visualizador de diff interativo mostrando alterações não confirmadas e diffs por turno. Use as setas esquerda/direita para alternar entre o diff git atual e turnos individuais do Claude, e cima/baixo para navegar pelos arquivos |

39| `/doctor` | Diagnosticar e verificar sua instalação e configurações do Claude Code. Os resultados aparecem com ícones de status. Pressione `f` para que Claude corrija qualquer problema relatado |

40| `/effort [level\|auto]` | Definir o [nível de esforço](/pt/model-config#adjust-effort-level) do modelo. Aceita `low`, `medium`, `high`, `xhigh` ou `max`; os níveis disponíveis dependem do modelo e `max` é apenas para sessão. `auto` redefine para o padrão do modelo. Sem um argumento, abre um controle deslizante interativo; use as setas esquerda e direita para escolher um nível e `Enter` para aplicar. Entra em vigor imediatamente sem esperar a resposta atual terminar |

41| `/exit` | Sair da CLI. Alias: `/quit` |

42| `/export [filename]` | Exportar a conversa atual como texto simples. Com um nome de arquivo, escreve diretamente nesse arquivo. Sem um, abre um diálogo para copiar para a área de transferência ou salvar em um arquivo |

43| `/extra-usage` | Configurar uso extra para continuar trabalhando quando os limites de taxa são atingidos |

44| `/fast [on\|off]` | Alternar [modo rápido](/pt/fast-mode) ativado ou desativado |

45| `/feedback [report]` | Enviar feedback sobre Claude Code. Alias: `/bug` |

46| `/fewer-permission-prompts` | **[Skill](/pt/skills#bundled-skills).** Verificar seus transcritos para chamadas de ferramentas Bash e MCP comuns somente leitura, depois adicionar uma lista de permissões priorizada ao projeto `.claude/settings.json` para reduzir prompts de permissão |

47| `/focus` | Alternar a visualização de foco, que mostra apenas seu último prompt, um resumo de chamada de ferramenta de uma linha com estatísticas de edição de diff e a resposta final. A seleção persiste entre sessões. Disponível apenas em [renderização em tela cheia](/pt/fullscreen) |

48| `/heapdump` | Escrever um snapshot de heap JavaScript e um detalhamento de memória para `~/Desktop`, ou seu diretório inicial no Linux sem uma pasta Desktop, para diagnosticar alto uso de memória. Consulte [solução de problemas](/pt/troubleshooting#high-cpu-or-memory-usage) |

49| `/help` | Mostrar ajuda e comandos disponíveis |

50| `/hooks` | Visualizar configurações de [hook](/pt/hooks) para eventos de ferramentas |

51| `/ide` | Gerenciar integrações de IDE e mostrar status |

52| `/init` | Inicializar projeto com um guia `CLAUDE.md`. Defina `CLAUDE_CODE_NEW_INIT=1` para um fluxo interativo que também orienta através de skills, hooks e arquivos de memória pessoal |

53| `/insights` | Gerar um relatório analisando suas sessões do Claude Code, incluindo áreas do projeto, padrões de interação e pontos de fricção |

54| `/install-github-app` | Configurar o aplicativo [Claude GitHub Actions](/pt/github-actions) para um repositório. Orienta você na seleção de um repositório e configuração da integração |

55| `/install-slack-app` | Instalar o aplicativo Claude Slack. Abre um navegador para concluir o fluxo OAuth |

56| `/keybindings` | Abrir ou criar seu arquivo de configuração de atalhos de teclado |

57| `/login` | Entrar em sua conta Anthropic |

58| `/logout` | Sair de sua conta Anthropic |

59| `/loop [interval] [prompt]` | **[Skill](/pt/skills#bundled-skills).** Executar um prompt repetidamente enquanto a sessão permanece aberta. Omita o intervalo e Claude se auto-regula entre iterações. Omita o prompt e Claude executa uma verificação de manutenção autônoma, ou o prompt em `.claude/loop.md` se presente. Exemplo: `/loop 5m check if the deploy finished`. Consulte [Executar prompts em um cronograma](/pt/scheduled-tasks). Alias: `/proactive` |

60| `/mcp` | Gerenciar conexões de servidor MCP e autenticação OAuth |

61| `/memory` | Editar arquivos de memória `CLAUDE.md`, ativar ou desativar [auto-memory](/pt/memory#auto-memory) e visualizar entradas de auto-memory |

62| `/mobile` | Mostrar código QR para baixar o aplicativo Claude mobile. Aliases: `/ios`, `/android` |

63| `/model [model]` | Selecionar ou alterar o modelo de IA. Para modelos que suportam, use as setas esquerda/direita para [ajustar o nível de esforço](/pt/model-config#adjust-effort-level). Sem um argumento, abre um seletor que pede confirmação quando a conversa tem saída anterior, já que a próxima resposta relê o histórico completo sem contexto em cache. Uma vez confirmado, a alteração entra em vigor sem esperar a resposta atual terminar |

64| `/passes` | Compartilhar uma semana gratuita do Claude Code com amigos. Visível apenas se sua conta for elegível |

65| `/permissions` | Gerenciar regras de permissão para permitir, perguntar e negar ferramentas. Abre um diálogo interativo onde você pode visualizar regras por escopo, adicionar ou remover regras, gerenciar diretórios de trabalho e revisar [negações de modo automático recentes](/pt/auto-mode-config#review-denials). Alias: `/allowed-tools` |

66| `/plan [description]` | Entrar no Plan Mode diretamente do prompt. Passe uma descrição opcional para entrar no Plan Mode e começar imediatamente com essa tarefa, por exemplo `/plan fix the auth bug` |

67| `/plugin` | Gerenciar [plugins](/pt/plugins) do Claude Code |

68| `/powerup` | Descobrir recursos do Claude Code através de lições interativas rápidas com demos animadas |

69| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}Removido na v2.1.91. Peça ao Claude diretamente para visualizar comentários de solicitação de pull. Em versões anteriores, busca e exibe comentários de uma solicitação de pull do GitHub; detecta automaticamente o PR para o branch atual, ou passe uma URL ou número de PR. Requer a CLI `gh` |

70| `/privacy-settings` | Visualizar e atualizar suas configurações de privacidade. Disponível apenas para assinantes dos planos Pro e Max |

71| `/recap` | Gerar um resumo de uma linha da sessão atual sob demanda. Consulte [Session recap](/pt/interactive-mode#session-recap) para o recap automático que aparece depois que você esteve ausente |

72| `/release-notes` | Visualizar o changelog em um seletor de versão interativo. Selecione uma versão específica para ver suas notas de lançamento, ou escolha mostrar todas as versões |

73| `/reload-plugins` | Recarregar todos os [plugins](/pt/plugins) ativos para aplicar alterações pendentes sem reiniciar. Relata contagens para cada componente recarregado e sinaliza quaisquer erros de carregamento |

74| `/remote-control` | Disponibilizar esta sessão para [controle remoto](/pt/remote-control) do claude.ai. Alias: `/rc` |

75| `/remote-env` | Configurar o ambiente remoto padrão para [sessões web iniciadas com `--remote`](/pt/claude-code-on-the-web#configure-your-environment) |

76| `/rename [name]` | Renomear a sessão atual e mostrar o nome na barra de prompt. Sem um nome, gera automaticamente um a partir do histórico de conversa |

77| `/resume [session]` | Retomar uma conversa por ID ou nome, ou abrir o seletor de sessão. Alias: `/continue` |

78| `/review [PR]` | Revisar uma solicitação de pull localmente em sua sessão atual. Para uma revisão mais profunda baseada em nuvem, consulte [`/ultrareview`](/pt/ultrareview) |

79| `/rewind` | Retroceder a conversa e/ou código para um ponto anterior, ou resumir a partir de uma mensagem selecionada. Consulte [checkpointing](/pt/checkpointing). Aliases: `/checkpoint`, `/undo` |

80| `/sandbox` | Alternar [modo sandbox](/pt/sandboxing). Disponível apenas em plataformas suportadas |

81| `/schedule [description]` | Criar, atualizar, listar ou executar [rotinas](/pt/routines). Claude orienta você através da configuração conversacionalmente. Alias: `/routines` |

82| `/security-review` | Analisar alterações pendentes no branch atual para vulnerabilidades de segurança. Revisa o diff git e identifica riscos como injeção, problemas de autenticação e exposição de dados |

83| `/setup-bedrock` | Configurar autenticação, região e fixações de modelo do [Amazon Bedrock](/pt/amazon-bedrock) através de um assistente interativo. Visível apenas quando `CLAUDE_CODE_USE_BEDROCK=1` está definido. Usuários do Bedrock pela primeira vez também podem acessar este assistente na tela de login |

84| `/setup-vertex` | Configurar autenticação, projeto, região e fixações de modelo do [Google Vertex AI](/pt/google-vertex-ai) através de um assistente interativo. Visível apenas quando `CLAUDE_CODE_USE_VERTEX=1` está definido. Usuários do Vertex AI pela primeira vez também podem acessar este assistente na tela de login |

85| `/simplify [focus]` | **[Skill](/pt/skills#bundled-skills).** Revisar seus arquivos alterados recentemente para problemas de reutilização de código, qualidade e eficiência, depois corrigi-los. Gera três agentes de revisão em paralelo, agrega suas descobertas e aplica correções. Passe texto para focar em preocupações específicas: `/simplify focus on memory efficiency` |

86| `/skills` | Listar [skills](/pt/skills) disponíveis. Pressione `t` para classificar por contagem de tokens |

87| `/stats` | Alias para `/usage`. Abre na aba Stats |

88| `/status` | Abrir a interface de Configurações (aba Status) mostrando versão, modelo, conta e conectividade. Funciona enquanto Claude está respondendo, sem esperar a resposta atual terminar |

89| `/statusline` | Configurar a [linha de status](/pt/statusline) do Claude Code. Descreva o que você quer, ou execute sem argumentos para auto-configurar a partir do seu prompt de shell |

90| `/stickers` | Pedir adesivos do Claude Code |

91| `/tasks` | Listar e gerenciar tarefas em segundo plano. Também disponível como `/bashes` |

92| `/team-onboarding` | Gerar um guia de integração de equipe a partir do seu histórico de uso do Claude Code. Claude analisa suas sessões, comandos e uso de servidor MCP dos últimos 30 dias e produz um guia markdown que um colega de equipe pode colar como primeira mensagem para se configurar rapidamente |

93| `/teleport` | Puxar uma sessão [Claude Code na web](/pt/claude-code-on-the-web#from-web-to-terminal) para este terminal: abre um seletor, depois busca o branch e a conversa. Também disponível como `/tp`. Requer uma assinatura claude.ai |

94| `/terminal-setup` | Configurar atalhos de teclado do terminal para Shift+Enter e outros atalhos. Visível apenas em terminais que precisam, como VS Code, Cursor, Windsurf, Alacritty ou Zed |

95| `/theme` | Alterar o tema de cor. Inclui uma opção `auto` que segue o modo escuro ou claro do seu terminal, variantes claro e escuro, temas acessíveis para daltônicos (daltonizados), temas ANSI que usam a paleta de cores do seu terminal e qualquer [tema personalizado](/pt/terminal-config#create-a-custom-theme) de `~/.claude/themes/` ou plugins. Selecione **New custom theme…** para criar um |

96| `/tui [default\|fullscreen]` | Definir o renderizador de interface do usuário do terminal e relançar nele com sua conversa intacta. `fullscreen` ativa o [renderizador alt-screen sem cintilação](/pt/fullscreen). Sem um argumento, imprime o renderizador ativo |

97| `/ultraplan <prompt>` | Rascunhar um plano em uma sessão [ultraplan](/pt/ultraplan), revisá-lo em seu navegador, depois executar remotamente ou enviá-lo de volta para seu terminal |

98| `/ultrareview [PR]` | Executar uma revisão de código profunda e multi-agente em uma sandbox em nuvem com [ultrareview](/pt/ultrareview). Inclui 3 execuções gratuitas em Pro e Max até 5 de maio de 2026, depois requer [uso extra](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

99| `/upgrade` | Abrir a página de upgrade para mudar para um nível de plano superior |

100| `/usage` | Mostrar custo da sessão, limites de uso do plano e estatísticas de atividade. Consulte o [guia de rastreamento de custos](/pt/costs#using-the-%2Fusage-command) para detalhes específicos da assinatura. `/cost` e `/stats` são aliases |

101| `/vim` | {/* max-version: 2.1.91 */}Removido na v2.1.92. Para alternar entre modos de edição Vim e Normal, use `/config` → Editor mode |

102| `/voice [hold\|tap\|off]` | Alternar [ditado por voz](/pt/voice-dictation), ou ativá-lo em um modo específico. Requer uma conta Claude.ai |

103| `/web-setup` | Conectar sua conta GitHub ao [Claude Code na web](/pt/web-quickstart#connect-from-your-terminal) usando suas credenciais locais de `gh` CLI. `/schedule` solicita isso automaticamente se o GitHub não estiver conectado |

104 

105## MCP prompts

106 

107Os servidores MCP podem expor prompts que aparecem como comandos. Estes usam o formato `/mcp__<server>__<prompt>` e são descobertos dinamicamente a partir de servidores conectados. Consulte [MCP prompts](/pt/mcp#use-mcp-prompts-as-commands) para detalhes.

108 

109## Veja também

110 

111* [Skills](/pt/skills): criar seus próprios comandos

112* [Modo interativo](/pt/interactive-mode): atalhos de teclado, modo Vim e histórico de comandos

113* [Referência CLI](/pt/cli-reference): sinalizadores de tempo de inicialização

common-workflows.md +1030 −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# Fluxos de trabalho comuns

6 

7> Guias passo a passo para explorar bases de código, corrigir bugs, refatorar, testar e outras tarefas cotidianas com Claude Code.

8 

9Esta página aborda fluxos de trabalho práticos para desenvolvimento cotidiano: explorar código desconhecido, depuração, refatoração, escrita de testes, criação de PRs e gerenciamento de sessões. Cada seção inclui exemplos de prompts que você pode adaptar aos seus próprios projetos. Para padrões e dicas de nível superior, consulte [Melhores práticas](/pt/best-practices).

10 

11## Entender novas bases de código

12 

13### Obter uma visão geral rápida da base de código

14 

15Suponha que você acabou de ingressar em um novo projeto e precisa entender sua estrutura rapidamente.

16 

17<Steps>

18 <Step title="Navegue até o diretório raiz do projeto">

19 ```bash theme={null}

20 cd /path/to/project

21 ```

22 </Step>

23 

24 <Step title="Inicie Claude Code">

25 ```bash theme={null}

26 claude

27 ```

28 </Step>

29 

30 <Step title="Peça uma visão geral de alto nível">

31 ```text theme={null}

32 give me an overview of this codebase

33 ```

34 </Step>

35 

36 <Step title="Aprofunde-se em componentes específicos">

37 ```text theme={null}

38 explain the main architecture patterns used here

39 ```

40 

41 ```text theme={null}

42 what are the key data models?

43 ```

44 

45 ```text theme={null}

46 how is authentication handled?

47 ```

48 </Step>

49</Steps>

50 

51<Tip>

52 Dicas:

53 

54 * Comece com perguntas amplas e depois estreite para áreas específicas

55 * Pergunte sobre convenções de codificação e padrões usados no projeto

56 * Solicite um glossário de termos específicos do projeto

57</Tip>

58 

59### Encontrar código relevante

60 

61Suponha que você precise localizar código relacionado a um recurso ou funcionalidade específica.

62 

63<Steps>

64 <Step title="Peça ao Claude para encontrar arquivos relevantes">

65 ```text theme={null}

66 find the files that handle user authentication

67 ```

68 </Step>

69 

70 <Step title="Obtenha contexto sobre como os componentes interagem">

71 ```text theme={null}

72 how do these authentication files work together?

73 ```

74 </Step>

75 

76 <Step title="Entenda o fluxo de execução">

77 ```text theme={null}

78 trace the login process from front-end to database

79 ```

80 </Step>

81</Steps>

82 

83<Tip>

84 Dicas:

85 

86 * Seja específico sobre o que você está procurando

87 * Use linguagem de domínio do projeto

88 * Instale um [plugin de inteligência de código](/pt/discover-plugins#code-intelligence) para sua linguagem para dar ao Claude navegação precisa de "ir para definição" e "encontrar referências"

89</Tip>

90 

91***

92 

93## Corrigir bugs com eficiência

94 

95Suponha que você tenha encontrado uma mensagem de erro e precise encontrar e corrigir sua origem.

96 

97<Steps>

98 <Step title="Compartilhe o erro com Claude">

99 ```text theme={null}

100 I'm seeing an error when I run npm test

101 ```

102 </Step>

103 

104 <Step title="Peça recomendações de correção">

105 ```text theme={null}

106 suggest a few ways to fix the @ts-ignore in user.ts

107 ```

108 </Step>

109 

110 <Step title="Aplique a correção">

111 ```text theme={null}

112 update user.ts to add the null check you suggested

113 ```

114 </Step>

115</Steps>

116 

117<Tip>

118 Dicas:

119 

120 * Diga ao Claude o comando para reproduzir o problema e obtenha um rastreamento de pilha

121 * Mencione quaisquer etapas para reproduzir o erro

122 * Deixe Claude saber se o erro é intermitente ou consistente

123</Tip>

124 

125***

126 

127## Refatorar código

128 

129Suponha que você precise atualizar código antigo para usar padrões e práticas modernas.

130 

131<Steps>

132 <Step title="Identifique código legado para refatoração">

133 ```text theme={null}

134 find deprecated API usage in our codebase

135 ```

136 </Step>

137 

138 <Step title="Obtenha recomendações de refatoração">

139 ```text theme={null}

140 suggest how to refactor utils.js to use modern JavaScript features

141 ```

142 </Step>

143 

144 <Step title="Aplique as alterações com segurança">

145 ```text theme={null}

146 refactor utils.js to use ES2024 features while maintaining the same behavior

147 ```

148 </Step>

149 

150 <Step title="Verifique a refatoração">

151 ```text theme={null}

152 run tests for the refactored code

153 ```

154 </Step>

155</Steps>

156 

157<Tip>

158 Dicas:

159 

160 * Peça ao Claude para explicar os benefícios da abordagem moderna

161 * Solicite que as alterações mantenham compatibilidade com versões anteriores quando necessário

162 * Faça refatoração em pequenos incrementos testáveis

163</Tip>

164 

165***

166 

167## Usar subagents especializados

168 

169Suponha que você queira usar subagents de IA especializados para lidar com tarefas específicas de forma mais eficaz.

170 

171<Steps>

172 <Step title="Visualize subagents disponíveis">

173 ```text theme={null}

174 /agents

175 ```

176 

177 Isso mostra todos os subagents disponíveis e permite que você crie novos.

178 </Step>

179 

180 <Step title="Use subagents automaticamente">

181 Claude Code delega automaticamente tarefas apropriadas para subagents especializados:

182 

183 ```text theme={null}

184 review my recent code changes for security issues

185 ```

186 

187 ```text theme={null}

188 run all tests and fix any failures

189 ```

190 </Step>

191 

192 <Step title="Solicite explicitamente subagents específicos">

193 ```text theme={null}

194 use the code-reviewer subagent to check the auth module

195 ```

196 

197 ```text theme={null}

198 have the debugger subagent investigate why users can't log in

199 ```

200 </Step>

201 

202 <Step title="Crie subagents personalizados para seu fluxo de trabalho">

203 ```text theme={null}

204 /agents

205 ```

206 

207 Em seguida, selecione "Create New subagent" e siga os prompts para definir:

208 

209 * Um identificador único que descreve o propósito do subagent (por exemplo, `code-reviewer`, `api-designer`).

210 * Quando Claude deve usar este agente

211 * Quais ferramentas ele pode acessar

212 * Um prompt do sistema descrevendo o papel e comportamento do agente

213 </Step>

214</Steps>

215 

216<Tip>

217 Dicas:

218 

219 * Crie subagents específicos do projeto em `.claude/agents/` para compartilhamento em equipe

220 * Use campos `description` descritivos para permitir delegação automática

221 * Limite o acesso a ferramentas ao que cada subagent realmente precisa

222 * Consulte a [documentação de subagents](/pt/sub-agents) para exemplos detalhados

223</Tip>

224 

225***

226 

227## Usar Plan Mode para análise segura de código

228 

229Plan Mode instrui Claude a criar um plano analisando a base de código com operações somente leitura, perfeito para explorar bases de código, planejar alterações complexas ou revisar código com segurança. Em Plan Mode, Claude usa [`AskUserQuestion`](/pt/tools-reference) para reunir requisitos e esclarecer seus objetivos antes de propor um plano.

230 

231### Quando usar Plan Mode

232 

233* **Implementação multi-etapa**: Quando seu recurso requer fazer edições em muitos arquivos

234* **Exploração de código**: Quando você quer pesquisar a base de código completamente antes de alterar qualquer coisa

235* **Desenvolvimento interativo**: Quando você quer iterar na direção com Claude

236 

237### Como usar Plan Mode

238 

239**Ative Plan Mode durante uma sessão**

240 

241Você pode mudar para Plan Mode durante uma sessão usando **Shift+Tab** para percorrer os modos de permissão.

242 

243Se você estiver em Normal Mode, **Shift+Tab** primeiro muda para Auto-Accept Mode, indicado por `⏵⏵ accept edits on` na parte inferior do terminal. Um **Shift+Tab** subsequente mudará para Plan Mode, indicado por `⏸ plan mode on`.

244 

245**Inicie uma nova sessão em Plan Mode**

246 

247Para iniciar uma nova sessão em Plan Mode, use a flag `--permission-mode plan`:

248 

249```bash theme={null}

250claude --permission-mode plan

251```

252 

253**Execute consultas "headless" em Plan Mode**

254 

255Você também pode executar uma consulta em Plan Mode diretamente com `-p` (ou seja, em ["modo headless"](/pt/headless)):

256 

257```bash theme={null}

258claude --permission-mode plan -p "Analyze the authentication system and suggest improvements"

259```

260 

261### Exemplo: Planejando uma refatoração complexa

262 

263```bash theme={null}

264claude --permission-mode plan

265```

266 

267```text theme={null}

268I need to refactor our authentication system to use OAuth2. Create a detailed migration plan.

269```

270 

271Claude analisa a implementação atual e cria um plano abrangente. Refine com acompanhamentos:

272 

273```text theme={null}

274What about backward compatibility?

275```

276 

277```text theme={null}

278How should we handle database migration?

279```

280 

281<Tip>Pressione `Ctrl+G` para abrir o plano em seu editor de texto padrão, onde você pode editá-lo diretamente antes de Claude prosseguir.</Tip>

282 

283Quando você aceita um plano, Claude automaticamente nomeia a sessão a partir do conteúdo do plano. O nome aparece na barra de prompt e no seletor de sessão. Se você já definiu um nome com `--name` ou `/rename`, aceitar um plano não o sobrescreverá.

284 

285### Configure Plan Mode como padrão

286 

287```json theme={null}

288// .claude/settings.json

289{

290 "permissions": {

291 "defaultMode": "plan"

292 }

293}

294```

295 

296Consulte a [documentação de configurações](/pt/settings#available-settings) para mais opções de configuração.

297 

298***

299 

300## Trabalhar com testes

301 

302Suponha que você precise adicionar testes para código não coberto.

303 

304<Steps>

305 <Step title="Identifique código não testado">

306 ```text theme={null}

307 find functions in NotificationsService.swift that are not covered by tests

308 ```

309 </Step>

310 

311 <Step title="Gere scaffolding de teste">

312 ```text theme={null}

313 add tests for the notification service

314 ```

315 </Step>

316 

317 <Step title="Adicione casos de teste significativos">

318 ```text theme={null}

319 add test cases for edge conditions in the notification service

320 ```

321 </Step>

322 

323 <Step title="Execute e verifique os testes">

324 ```text theme={null}

325 run the new tests and fix any failures

326 ```

327 </Step>

328</Steps>

329 

330Claude pode gerar testes que seguem os padrões e convenções existentes do seu projeto. Ao solicitar testes, seja específico sobre qual comportamento você quer verificar. Claude examina seus arquivos de teste existentes para corresponder ao estilo, frameworks e padrões de asserção já em uso.

331 

332Para cobertura abrangente, peça ao Claude para identificar casos extremos que você pode ter perdido. Claude pode analisar seus caminhos de código e sugerir testes para condições de erro, valores de limite e entradas inesperadas que são fáceis de negligenciar.

333 

334***

335 

336## Criar pull requests

337 

338Você pode criar pull requests pedindo ao Claude diretamente ("create a pr for my changes"), ou guiar Claude através disso passo a passo:

339 

340<Steps>

341 <Step title="Resuma suas alterações">

342 ```text theme={null}

343 summarize the changes I've made to the authentication module

344 ```

345 </Step>

346 

347 <Step title="Gere uma pull request">

348 ```text theme={null}

349 create a pr

350 ```

351 </Step>

352 

353 <Step title="Revise e refine">

354 ```text theme={null}

355 enhance the PR description with more context about the security improvements

356 ```

357 </Step>

358</Steps>

359 

360Quando você cria uma PR usando `gh pr create`, a sessão é automaticamente vinculada a essa PR. Você pode retomá-la mais tarde com `claude --from-pr <number>`.

361 

362<Tip>

363 Revise a PR gerada por Claude antes de enviar e peça ao Claude para destacar riscos ou considerações potenciais.

364</Tip>

365 

366## Lidar com documentação

367 

368Suponha que você precise adicionar ou atualizar documentação para seu código.

369 

370<Steps>

371 <Step title="Identifique código não documentado">

372 ```text theme={null}

373 find functions without proper JSDoc comments in the auth module

374 ```

375 </Step>

376 

377 <Step title="Gere documentação">

378 ```text theme={null}

379 add JSDoc comments to the undocumented functions in auth.js

380 ```

381 </Step>

382 

383 <Step title="Revise e melhore">

384 ```text theme={null}

385 improve the generated documentation with more context and examples

386 ```

387 </Step>

388 

389 <Step title="Verifique a documentação">

390 ```text theme={null}

391 check if the documentation follows our project standards

392 ```

393 </Step>

394</Steps>

395 

396<Tip>

397 Dicas:

398 

399 * Especifique o estilo de documentação que você deseja (JSDoc, docstrings, etc.)

400 * Peça por exemplos na documentação

401 * Solicite documentação para APIs públicas, interfaces e lógica complexa

402</Tip>

403 

404***

405 

406## Trabalhar em notas e pastas não-código

407 

408Claude Code funciona em qualquer diretório. Execute-o dentro de um cofre de notas, uma pasta de documentação ou qualquer coleção de arquivos markdown para pesquisar, editar e reorganizar conteúdo da mesma forma que você faria com código.

409 

410O diretório `.claude/` e `CLAUDE.md` ficam ao lado dos diretórios de configuração de outras ferramentas sem conflito. Claude lê arquivos novamente em cada chamada de ferramenta, então vê edições que você faz em outro aplicativo na próxima vez que lê esse arquivo.

411 

412***

413 

414## Trabalhar com imagens

415 

416Suponha que você precise trabalhar com imagens em sua base de código e queira ajuda do Claude para analisar o conteúdo da imagem.

417 

418<Steps>

419 <Step title="Adicione uma imagem à conversa">

420 Você pode usar qualquer um destes métodos:

421 

422 1. Arraste e solte uma imagem na janela do Claude Code

423 2. Copie uma imagem e cole-a no CLI com ctrl+v (Não use cmd+v)

424 3. Forneça um caminho de imagem ao Claude. Por exemplo, "Analyze this image: /path/to/your/image.png"

425 </Step>

426 

427 <Step title="Peça ao Claude para analisar a imagem">

428 ```text theme={null}

429 What does this image show?

430 ```

431 

432 ```text theme={null}

433 Describe the UI elements in this screenshot

434 ```

435 

436 ```text theme={null}

437 Are there any problematic elements in this diagram?

438 ```

439 </Step>

440 

441 <Step title="Use imagens para contexto">

442 ```text theme={null}

443 Here's a screenshot of the error. What's causing it?

444 ```

445 

446 ```text theme={null}

447 This is our current database schema. How should we modify it for the new feature?

448 ```

449 </Step>

450 

451 <Step title="Obtenha sugestões de código do conteúdo visual">

452 ```text theme={null}

453 Generate CSS to match this design mockup

454 ```

455 

456 ```text theme={null}

457 What HTML structure would recreate this component?

458 ```

459 </Step>

460</Steps>

461 

462<Tip>

463 Dicas:

464 

465 * Use imagens quando descrições de texto seriam pouco claras ou complicadas

466 * Inclua capturas de tela de erros, designs de UI ou diagramas para melhor contexto

467 * Você pode trabalhar com múltiplas imagens em uma conversa

468 * A análise de imagem funciona com diagramas, capturas de tela, mockups e muito mais

469 * Quando Claude referencia imagens (por exemplo, `[Image #1]`), `Cmd+Click` (Mac) ou `Ctrl+Click` (Windows/Linux) o link para abrir a imagem em seu visualizador padrão

470</Tip>

471 

472***

473 

474## Referenciar arquivos e diretórios

475 

476Use @ para incluir rapidamente arquivos ou diretórios sem esperar que Claude os leia.

477 

478<Steps>

479 <Step title="Referencie um único arquivo">

480 ```text theme={null}

481 Explain the logic in @src/utils/auth.js

482 ```

483 

484 Isso inclui o conteúdo completo do arquivo na conversa.

485 </Step>

486 

487 <Step title="Referencie um diretório">

488 ```text theme={null}

489 What's the structure of @src/components?

490 ```

491 

492 Isso fornece uma listagem de diretório com informações de arquivo.

493 </Step>

494 

495 <Step title="Referencie recursos MCP">

496 ```text theme={null}

497 Show me the data from @github:repos/owner/repo/issues

498 ```

499 

500 Isso busca dados de servidores MCP conectados usando o formato @server:resource. Consulte [recursos MCP](/pt/mcp#use-mcp-resources) para detalhes.

501 </Step>

502</Steps>

503 

504<Tip>

505 Dicas:

506 

507 * Os caminhos de arquivo podem ser relativos ou absolutos

508 * Referências de arquivo @ adicionam `CLAUDE.md` no diretório do arquivo e diretórios pai ao contexto

509 * Referências de diretório mostram listagens de arquivo, não conteúdos

510 * Você pode referenciar múltiplos arquivos em uma única mensagem (por exemplo, "@file1.js and @file2.js")

511</Tip>

512 

513***

514 

515## Usar pensamento estendido (thinking mode)

516 

517[Pensamento estendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) é ativado por padrão, dando ao Claude espaço para raciocinar através de problemas complexos passo a passo antes de responder. Este raciocínio é visível em modo verboso, que você pode ativar com `Ctrl+O`. Durante pensamento estendido, o spinner mostra dicas de progresso inline como "still thinking" e "almost done thinking" para indicar que Claude está trabalhando ativamente.

518 

519Além disso, [modelos que suportam esforço](/pt/model-config#adjust-effort-level) usam raciocínio adaptativo: em vez de um orçamento de token de pensamento fixo, o modelo decide dinamicamente se e quanto pensar com base em sua configuração de nível de esforço e na tarefa em questão. Raciocínio adaptativo permite que Claude responda mais rápido a prompts rotineiros e reserve pensamento mais profundo para etapas que se beneficiam dele.

520 

521Pensamento estendido é particularmente valioso para decisões arquitetônicas complexas, bugs desafiadores, planejamento de implementação multi-etapa e avaliação de compensações entre diferentes abordagens.

522 

523<Note>

524 Frases como "think", "think hard" e "think more" são interpretadas como instruções de prompt regulares e não alocam tokens de pensamento.

525</Note>

526 

527### Configurar thinking mode

528 

529Pensamento é ativado por padrão, mas você pode ajustá-lo ou desativá-lo.

530 

531| Escopo | Como configurar | Detalhes |

532| ------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

533| **Nível de esforço** | Execute `/effort`, ajuste em `/model`, ou defina [`CLAUDE_CODE_EFFORT_LEVEL`](/pt/env-vars) | Controle a profundidade de pensamento em [modelos suportados](/pt/model-config#adjust-effort-level) |

534| **Palavra-chave `ultrathink`** | Inclua "ultrathink" em qualquer lugar em seu prompt | Adiciona uma instrução em contexto dizendo ao modelo para raciocinar mais nesse turno. Não altera o nível de esforço em si; consulte [Ajustar nível de esforço](/pt/model-config#adjust-effort-level) para isso |

535| **Atalho de alternância** | Pressione `Option+T` (macOS) ou `Alt+T` (Windows/Linux) | Alterne pensamento ligado/desligado para a sessão atual (todos os modelos). Pode exigir [configuração de terminal](/pt/terminal-config) para ativar atalhos de tecla Option |

536| **Padrão global** | Use `/config` para alternar thinking mode | Define seu padrão em todos os projetos (todos os modelos).<br />Salvo como `alwaysThinkingEnabled` em `~/.claude/settings.json` |

537| **Limitar orçamento de token** | Defina a variável de ambiente [`MAX_THINKING_TOKENS`](/pt/env-vars) | Limite o orçamento de pensamento para um número específico de tokens. Em modelos com raciocínio adaptativo, apenas `0` se aplica a menos que raciocínio adaptativo seja desativado. Exemplo: `export MAX_THINKING_TOKENS=10000` |

538 

539Para visualizar o processo de pensamento do Claude, pressione `Ctrl+O` para alternar o modo verboso e veja o raciocínio interno exibido como texto em itálico cinzento.

540 

541### Como funciona o pensamento estendido

542 

543Pensamento estendido controla quanto raciocínio interno Claude realiza antes de responder. Mais pensamento fornece mais espaço para explorar soluções, analisar casos extremos e autocorrigir erros.

544 

545Em [modelos que suportam esforço](/pt/model-config#adjust-effort-level), pensamento usa raciocínio adaptativo: o modelo aloca dinamicamente tokens de pensamento com base no nível de esforço que você seleciona. Esta é a forma recomendada de ajustar a compensação entre velocidade e profundidade de raciocínio. Se você quiser que Claude pense mais ou menos do que seu nível de esforço produziria de outra forma, você também pode dizer isso diretamente em seu prompt ou em `CLAUDE.md`.

546 

547Com modelos mais antigos, pensamento usa um orçamento fixo de tokens extraído de sua alocação de saída. O orçamento varia por modelo; consulte [`MAX_THINKING_TOKENS`](/pt/env-vars) para limites por modelo. Você pode limitar o orçamento com essa variável de ambiente, ou desativar pensamento inteiramente via `/config` ou a alternância `Option+T`/`Alt+T`.

548 

549Em modelos com raciocínio adaptativo, `MAX_THINKING_TOKENS` só se aplica quando definido como `0` para desativar pensamento, ou quando `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` reverte o modelo para o orçamento fixo. `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` se aplica apenas a Opus 4.6 e Sonnet 4.6. Opus 4.7 sempre usa raciocínio adaptativo e não suporta um orçamento de pensamento fixo. Consulte [variáveis de ambiente](/pt/env-vars).

550 

551<Warning>

552 Você é cobrado por todos os tokens de pensamento usados, mesmo quando resumos de pensamento são redatados. Em modo interativo, pensamento aparece como um stub recolhido por padrão. Defina `showThinkingSummaries: true` em `settings.json` para mostrar resumos completos.

553</Warning>

554 

555***

556 

557## Retomar conversas anteriores

558 

559Ao iniciar Claude Code, você pode retomar uma sessão anterior:

560 

561* `claude --continue` continua a conversa mais recente no diretório atual

562* `claude --resume` abre um seletor de conversa ou retoma por nome

563* `claude --from-pr 123` retoma sessões vinculadas a uma pull request específica

564 

565De dentro de uma sessão ativa, use `/resume` para mudar para uma conversa diferente.

566 

567Quando a sessão selecionada é antiga e grande o suficiente que relê-la consumiria uma parte substancial de seus limites de uso, `--resume`, `--continue` e `/resume` oferecem retomar a partir de um resumo em vez de carregar a transcrição completa. Este prompt não está disponível no Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry.

568 

569As sessões são armazenadas por diretório de projeto. Por padrão, o seletor `/resume` mostra sessões interativas do worktree atual, com atalhos de teclado para ampliar a lista para outros worktrees ou projetos, pesquisar, visualizar e renomear. Consulte [Use o seletor de sessão](#use-the-session-picker) abaixo para a referência completa de atalhos.

570 

571Quando você seleciona uma sessão de outro worktree do mesmo repositório, Claude Code a retoma diretamente sem exigir que você mude de diretórios primeiro. Selecionar uma sessão de um projeto não relacionado copia um comando `cd` e resume para sua área de transferência em vez disso.

572 

573Retomar por nome resolve em todo o repositório atual e seus worktrees. Tanto `claude --resume <name>` quanto `/resume <name>` procuram uma correspondência exata e a retomam diretamente, mesmo que a sessão viva em um worktree diferente.

574 

575Quando o nome é ambíguo, `claude --resume <name>` abre o seletor com o nome pré-preenchido como um termo de pesquisa. `/resume <name>` de dentro de uma sessão relata um erro em vez disso, então execute `/resume` sem argumento para abrir o seletor e escolher.

576 

577Sessões criadas por `claude -p` ou invocações SDK não aparecem no seletor, mas você ainda pode retomar uma passando seu ID de sessão diretamente para `claude --resume <session-id>`.

578 

579### Nomeie suas sessões

580 

581Dê nomes descritivos às sessões para encontrá-las mais tarde. Esta é uma prática recomendada ao trabalhar em múltiplas tarefas ou recursos.

582 

583<Steps>

584 <Step title="Nomeie a sessão">

585 Nomeie uma sessão na inicialização com `-n`:

586 

587 ```bash theme={null}

588 claude -n auth-refactor

589 ```

590 

591 Ou use `/rename` durante uma sessão, que também mostra o nome na barra de prompt:

592 

593 ```text theme={null}

594 /rename auth-refactor

595 ```

596 

597 Você também pode renomear qualquer sessão do seletor: execute `/resume`, navegue até uma sessão e pressione `Ctrl+R`.

598 </Step>

599 

600 <Step title="Retome por nome mais tarde">

601 Da linha de comando:

602 

603 ```bash theme={null}

604 claude --resume auth-refactor

605 ```

606 

607 Ou de dentro de uma sessão ativa:

608 

609 ```text theme={null}

610 /resume auth-refactor

611 ```

612 </Step>

613</Steps>

614 

615### Use o seletor de sessão

616 

617O comando `/resume` (ou `claude --resume` sem argumentos) abre um seletor de sessão interativo com estes recursos:

618 

619**Atalhos de teclado no seletor:**

620 

621| Atalho | Ação |

622| :-------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

623| `↑` / `↓` | Navegue entre sessões |

624| `→` / `←` | Expanda ou recolha sessões agrupadas |

625| `Enter` | Selecione e retome a sessão destacada |

626| `Space` | Visualize o conteúdo da sessão. `Ctrl+V` também funciona em terminais que não o capturam como colar |

627| `Ctrl+R` | Renomeie a sessão destacada |

628| `/` ou qualquer caractere imprimível diferente de `Space` | Entre no modo de pesquisa e filtre sessões |

629| `Ctrl+A` | Mostre sessões de todos os projetos nesta máquina. Pressione novamente para restaurar o repositório atual |

630| `Ctrl+W` | Mostre sessões de todos os worktrees do repositório atual. Pressione novamente para restaurar o worktree atual. Mostrado apenas em repositórios com múltiplos worktrees |

631| `Ctrl+B` | Filtre para sessões do seu branch git atual. Pressione novamente para mostrar sessões de todos os branches |

632| `Esc` | Saia do seletor ou modo de pesquisa |

633 

634**Organização de sessão:**

635 

636O seletor exibe sessões com metadados úteis:

637 

638* Nome da sessão se definido, caso contrário o resumo da conversa ou primeiro prompt do usuário

639* Tempo decorrido desde a última atividade

640* Contagem de mensagens

641* Branch git (se aplicável)

642* Caminho do projeto, mostrado após ampliar para todos os projetos com `Ctrl+A`

643 

644Sessões bifurcadas (criadas com `/branch`, `/rewind`, ou `--fork-session`) são agrupadas sob sua sessão raiz, facilitando encontrar conversas relacionadas.

645 

646<Tip>

647 Dicas:

648 

649 * **Nomeie sessões cedo**: Use `/rename` ao iniciar trabalho em uma tarefa distinta: é muito mais fácil encontrar "payment-integration" do que "explain this function" mais tarde

650 * Use `--continue` para acesso rápido à sua conversa mais recente no diretório atual

651 * Use `--resume session-name` quando você sabe qual sessão precisa

652 * Use `--resume` (sem um nome) quando você precisa navegar e selecionar

653 * Para scripts, use `claude --continue --print "prompt"` para retomar em modo não interativo

654 * Pressione `Space` no seletor para visualizar uma sessão antes de retomá-la

655 * A conversa retomada começa com o mesmo modelo e configuração do original

656 

657 Como funciona:

658 

659 1. **Armazenamento de Conversa**: Todas as conversas são automaticamente salvas localmente com seu histórico de mensagens completo

660 2. **Desserialização de Mensagem**: Ao retomar, todo o histórico de mensagens é restaurado para manter contexto

661 3. **Estado de Ferramenta**: O uso de ferramenta e resultados da conversa anterior são preservados

662 4. **Restauração de Contexto**: A conversa retoma com todo o contexto anterior intacto

663</Tip>

664 

665***

666 

667## Executar sessões paralelas de Claude Code com Git worktrees

668 

669Ao trabalhar em múltiplas tarefas ao mesmo tempo, você precisa que cada sessão do Claude tenha sua própria cópia da base de código para que as alterações não colidam. Git worktrees resolvem isso criando diretórios de trabalho separados que cada um tem seus próprios arquivos e branch, enquanto compartilham o mesmo histórico de repositório e conexões remotas. Isso significa que você pode ter Claude trabalhando em um recurso em um worktree enquanto corrige um bug em outro, sem que nenhuma sessão interfira com a outra.

670 

671Use a flag `--worktree` (`-w`) para criar um worktree isolado e iniciar Claude nele. O valor que você passa se torna o nome do diretório worktree e nome do branch:

672 

673```bash theme={null}

674# Inicie Claude em um worktree nomeado "feature-auth"

675# Cria .claude/worktrees/feature-auth/ com um novo branch

676claude --worktree feature-auth

677 

678# Inicie outra sessão em um worktree separado

679claude --worktree bugfix-123

680```

681 

682Se você omitir o nome, Claude gera um automaticamente:

683 

684```bash theme={null}

685# Auto-gera um nome como "bright-running-fox"

686claude --worktree

687```

688 

689Worktrees são criados em `<repo>/.claude/worktrees/<name>` e fazem branch a partir do branch remoto padrão, que é para onde `origin/HEAD` aponta. O branch worktree é nomeado `worktree-<name>`.

690 

691O branch base não é configurável através de um flag ou configuração do Claude Code. `origin/HEAD` é uma referência armazenada em seu diretório `.git` local que Git definiu uma vez quando você clonou. Se o branch padrão do repositório mudar mais tarde no GitHub ou GitLab, seu `origin/HEAD` local continua apontando para o antigo, e worktrees farão branch a partir daí. Para ressincronizar sua referência local com o que o remoto atualmente considera seu padrão:

692 

693```bash theme={null}

694git remote set-head origin -a

695```

696 

697Este é um comando Git padrão que apenas atualiza seu diretório `.git` local. Nada no servidor remoto muda. Se você quiser que worktrees façam base em um branch específico em vez do padrão do remoto, defina-o explicitamente com `git remote set-head origin your-branch-name`.

698 

699Para controle total sobre como worktrees são criados, incluindo escolher uma base diferente por invocação, configure um [hook WorktreeCreate](/pt/hooks#worktreecreate). O hook substitui a lógica padrão `git worktree` do Claude Code inteiramente, para que você possa buscar e fazer branch a partir de qualquer ref que você precise.

700 

701Você também pode pedir ao Claude para "work in a worktree" ou "start a worktree" durante uma sessão, e ele criará um automaticamente.

702 

703### Worktrees de subagent

704 

705Subagents também podem usar isolamento de worktree para trabalhar em paralelo sem conflitos. Peça ao Claude para "use worktrees for your agents" ou configure em um [subagent personalizado](/pt/sub-agents#supported-frontmatter-fields) adicionando `isolation: worktree` ao frontmatter do agente. Cada subagent obtém seu próprio worktree que é automaticamente limpo quando o subagent termina sem alterações.

706 

707### Limpeza de worktree

708 

709Quando você sai de uma sessão de worktree, Claude lida com limpeza com base em se você fez alterações:

710 

711* **Sem alterações**: o worktree e seu branch são removidos automaticamente

712* **Alterações ou commits existem**: Claude o solicita para manter ou remover o worktree. Manter preserva o diretório e branch para que você possa retornar mais tarde. Remover exclui o diretório worktree e seu branch, descartando todas as alterações não confirmadas e commits

713 

714Worktrees de subagent órfãos por uma falha ou uma execução paralela interrompida são removidos automaticamente na inicialização uma vez que são mais antigos do que sua configuração [`cleanupPeriodDays`](/pt/settings#available-settings), desde que não tenham alterações não confirmadas, nenhum arquivo não rastreado e nenhum commit não enviado. Worktrees que você cria com `--worktree` nunca são removidos por esta varredura.

715 

716Para limpar worktrees fora de uma sessão do Claude, use [gerenciamento manual de worktree](#manage-worktrees-manually).

717 

718<Tip>

719 Adicione `.claude/worktrees/` ao seu `.gitignore` para evitar que o conteúdo do worktree apareça como arquivos não rastreados em seu repositório principal.

720</Tip>

721 

722### Copiar arquivos gitignored para worktrees

723 

724Git worktrees são checkouts frescos, então eles não incluem arquivos não rastreados como `.env` ou `.env.local` do seu repositório principal. Para copiar automaticamente esses arquivos quando Claude cria um worktree, adicione um arquivo `.worktreeinclude` à raiz do seu projeto.

725 

726O arquivo usa sintaxe `.gitignore` para listar quais arquivos copiar. Apenas arquivos que correspondem a um padrão e também são gitignored são copiados, então arquivos rastreados nunca são duplicados.

727 

728```text .worktreeinclude theme={null}

729.env

730.env.local

731config/secrets.json

732```

733 

734Isso se aplica a worktrees criados com `--worktree`, worktrees de subagent e sessões paralelas no [aplicativo desktop](/pt/desktop#work-in-parallel-with-sessions).

735 

736### Gerenciar worktrees manualmente

737 

738Para mais controle sobre localização de worktree e configuração de branch, crie worktrees com Git diretamente. Isso é útil quando você precisa fazer checkout de um branch existente específico ou colocar o worktree fora do repositório.

739 

740```bash theme={null}

741# Crie um worktree com um novo branch

742git worktree add ../project-feature-a -b feature-a

743 

744# Crie um worktree com um branch existente

745git worktree add ../project-bugfix bugfix-123

746 

747# Inicie Claude no worktree

748cd ../project-feature-a && claude

749 

750# Limpe quando terminar

751git worktree list

752git worktree remove ../project-feature-a

753```

754 

755Saiba mais na [documentação oficial de Git worktree](https://git-scm.com/docs/git-worktree).

756 

757<Tip>

758 Lembre-se de inicializar seu ambiente de desenvolvimento em cada novo worktree de acordo com seu projeto. Dependendo de sua stack, isso pode incluir executar instalação de dependência (`npm install`, `yarn`), configurar ambientes virtuais ou seguir o processo de configuração padrão do seu projeto.

759</Tip>

760 

761### Controle de versão não-git

762 

763Isolamento de worktree funciona com git por padrão. Para outros sistemas de controle de versão como SVN, Perforce ou Mercurial, configure [hooks WorktreeCreate e WorktreeRemove](/pt/hooks#worktreecreate) para fornecer lógica personalizada de criação e limpeza de worktree. Quando configurados, esses hooks substituem o comportamento padrão do git quando você usa `--worktree`, então [`.worktreeinclude`](#copy-gitignored-files-to-worktrees) não é processado. Copie quaisquer arquivos de configuração local dentro de seu script de hook em vez disso.

764 

765Para coordenação automatizada de sessões paralelas com tarefas compartilhadas e mensagens, consulte [equipes de agentes](/pt/agent-teams).

766 

767***

768 

769## Obtenha notificações quando Claude precisa de sua atenção

770 

771Quando você inicia uma tarefa de longa duração e muda para outra janela, você pode configurar notificações de desktop para saber quando Claude termina ou precisa de sua entrada. Isso usa o evento de hook `Notification` [hook event](/pt/hooks-guide#get-notified-when-claude-needs-input), que dispara sempre que Claude está esperando permissão, ocioso e pronto para um novo prompt, ou completando autenticação.

772 

773<Steps>

774 <Step title="Adicione o hook às suas configurações">

775 Abra `~/.claude/settings.json` e adicione um hook `Notification` que chama o comando de notificação nativa da sua plataforma:

776 

777 <Tabs>

778 <Tab title="macOS">

779 ```json theme={null}

780 {

781 "hooks": {

782 "Notification": [

783 {

784 "matcher": "",

785 "hooks": [

786 {

787 "type": "command",

788 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

789 }

790 ]

791 }

792 ]

793 }

794 }

795 ```

796 </Tab>

797 

798 <Tab title="Linux">

799 ```json theme={null}

800 {

801 "hooks": {

802 "Notification": [

803 {

804 "matcher": "",

805 "hooks": [

806 {

807 "type": "command",

808 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

809 }

810 ]

811 }

812 ]

813 }

814 }

815 ```

816 </Tab>

817 

818 <Tab title="Windows">

819 ```json theme={null}

820 {

821 "hooks": {

822 "Notification": [

823 {

824 "matcher": "",

825 "hooks": [

826 {

827 "type": "command",

828 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

829 }

830 ]

831 }

832 ]

833 }

834 }

835 ```

836 </Tab>

837 </Tabs>

838 

839 Se seu arquivo de configurações já tiver uma chave `hooks`, mescle a entrada `Notification` nela em vez de sobrescrever. Você também pode pedir ao Claude para escrever o hook para você descrevendo o que você quer no CLI.

840 </Step>

841 

842 <Step title="Opcionalmente, estreite o matcher">

843 Por padrão, o hook dispara em todos os tipos de notificação. Para disparar apenas para eventos específicos, defina o campo `matcher` para um destes valores:

844 

845 | Matcher | Dispara quando |

846 | :--------------------- | :------------------------------------------------------------ |

847 | `permission_prompt` | Claude precisa que você aprove um uso de ferramenta |

848 | `idle_prompt` | Claude terminou e está esperando seu próximo prompt |

849 | `auth_success` | Autenticação completa |

850 | `elicitation_dialog` | Um servidor MCP abre um formulário de elicitação |

851 | `elicitation_complete` | Um formulário de elicitação MCP é enviado ou descartado |

852 | `elicitation_response` | Uma resposta de elicitação MCP é enviada de volta ao servidor |

853 </Step>

854 

855 <Step title="Verifique o hook">

856 Digite `/hooks` e selecione `Notification` para confirmar que o hook aparece. Selecioná-lo mostra o comando que será executado. Para testá-lo de ponta a ponta, peça ao Claude para executar um comando que requer permissão e mude para longe do terminal, ou peça ao Claude para disparar uma notificação diretamente.

857 </Step>

858</Steps>

859 

860Para o esquema de evento completo e tipos de notificação, consulte a [referência de Notificação](/pt/hooks#notification).

861 

862***

863 

864## Usar Claude como um utilitário estilo unix

865 

866### Adicione Claude ao seu processo de verificação

867 

868Suponha que você queira usar Claude Code como um linter ou revisor de código.

869 

870**Adicione Claude ao seu script de compilação:**

871 

872```json theme={null}

873// package.json

874{

875 ...

876 "scripts": {

877 ...

878 "lint:claude": "claude -p 'you are a linter. please look at the changes vs. main and report any issues related to typos. report the filename and line number on one line, and a description of the issue on the second line. do not return any other text.'"

879 }

880}

881```

882 

883<Tip>

884 Dicas:

885 

886 * Use Claude para revisão de código automatizada em seu pipeline CI/CD

887 * Personalize o prompt para verificar problemas específicos relevantes ao seu projeto

888 * Considere criar múltiplos scripts para diferentes tipos de verificação

889</Tip>

890 

891### Pipe in, pipe out

892 

893Suponha que você queira canalizar dados para Claude e obter dados de volta em um formato estruturado.

894 

895**Canalize dados através do Claude:**

896 

897```bash theme={null}

898cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt

899```

900 

901<Tip>

902 Dicas:

903 

904 * Use pipes para integrar Claude em scripts shell existentes

905 * Combine com outras ferramentas Unix para fluxos de trabalho poderosos

906 * Considere usar `--output-format` para saída estruturada

907</Tip>

908 

909### Controlar formato de saída

910 

911Suponha que você precise da saída do Claude em um formato específico, especialmente ao integrar Claude Code em scripts ou outras ferramentas.

912 

913<Steps>

914 <Step title="Use formato de texto (padrão)">

915 ```bash theme={null}

916 cat data.txt | claude -p 'summarize this data' --output-format text > summary.txt

917 ```

918 

919 Isso produz apenas a resposta de texto simples do Claude (comportamento padrão).

920 </Step>

921 

922 <Step title="Use formato JSON">

923 ```bash theme={null}

924 cat code.py | claude -p 'analyze this code for bugs' --output-format json > analysis.json

925 ```

926 

927 Isso produz um array JSON de mensagens com metadados incluindo custo e duração.

928 </Step>

929 

930 <Step title="Use formato JSON de streaming">

931 ```bash theme={null}

932 cat log.txt | claude -p 'parse this log file for errors' --output-format stream-json

933 ```

934 

935 Isso produz uma série de objetos JSON em tempo real conforme Claude processa a solicitação. Cada mensagem é um objeto JSON válido, mas a saída inteira não é JSON válido se concatenado.

936 </Step>

937</Steps>

938 

939<Tip>

940 Dicas:

941 

942 * Use `--output-format text` para integrações simples onde você apenas precisa da resposta do Claude

943 * Use `--output-format json` quando você precisa do log de conversa completo

944 * Use `--output-format stream-json` para saída em tempo real de cada turno de conversa

945</Tip>

946 

947***

948 

949## Executar Claude em um cronograma

950 

951Suponha que você queira que Claude lide com uma tarefa automaticamente em uma base recorrente, como revisar PRs abertas todas as manhãs, auditar dependências semanalmente ou verificar falhas de CI durante a noite.

952 

953Escolha uma opção de agendamento com base em onde você quer que a tarefa seja executada:

954 

955| Opção | Onde é executado | Melhor para |

956| :---------------------------------------------------------- | :--------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

957| [Rotinas](/pt/routines) | Infraestrutura gerenciada pela Anthropic | Tarefas que devem ser executadas mesmo quando seu computador está desligado. Também podem ser acionadas por chamadas de API ou eventos do GitHub além de um cronograma. Configure em [claude.ai/code/routines](https://claude.ai/code/routines). |

958| [Tarefas agendadas no desktop](/pt/desktop-scheduled-tasks) | Sua máquina, via aplicativo desktop | Tarefas que precisam de acesso direto a arquivos locais, ferramentas ou alterações não confirmadas. |

959| [GitHub Actions](/pt/github-actions) | Seu pipeline de CI | Tarefas vinculadas a eventos de repositório como PRs abertos, ou cronogramas cron que devem viver junto com sua configuração de fluxo de trabalho. |

960| [`/loop`](/pt/scheduled-tasks) | A sessão CLI atual | Polling rápido enquanto uma sessão está aberta. As tarefas são canceladas quando você inicia uma nova conversa; `--resume` e `--continue` restauram as não expiradas. |

961 

962<Tip>

963 Ao escrever prompts para tarefas agendadas, seja explícito sobre o que o sucesso parece e o que fazer com os resultados. A tarefa é executada autonomamente, então não pode fazer perguntas de esclarecimento. Por exemplo: "Review open PRs labeled `needs-review`, leave inline comments on any issues, and post a summary in the `#eng-reviews` Slack channel."

964</Tip>

965 

966***

967 

968## Pergunte ao Claude sobre suas capacidades

969 

970Claude tem acesso integrado à sua documentação e pode responder perguntas sobre seus próprios recursos e limitações.

971 

972### Perguntas de exemplo

973 

974```text theme={null}

975can Claude Code create pull requests?

976```

977 

978```text theme={null}

979how does Claude Code handle permissions?

980```

981 

982```text theme={null}

983what skills are available?

984```

985 

986```text theme={null}

987how do I use MCP with Claude Code?

988```

989 

990```text theme={null}

991how do I configure Claude Code for Amazon Bedrock?

992```

993 

994```text theme={null}

995what are the limitations of Claude Code?

996```

997 

998<Note>

999 Claude fornece respostas baseadas em documentação para essas perguntas. Para demonstrações práticas, execute `/powerup` para lições interativas com demos animadas, ou consulte as seções de fluxo de trabalho específicas acima.

1000</Note>

1001 

1002<Tip>

1003 Dicas:

1004 

1005 * Claude sempre tem acesso à documentação mais recente do Claude Code, independentemente da versão que você está usando

1006 * Faça perguntas específicas para obter respostas detalhadas

1007 * Claude pode explicar recursos complexos como integração MCP, configurações empresariais e fluxos de trabalho avançados

1008</Tip>

1009 

1010***

1011 

1012## Próximos passos

1013 

1014<CardGroup cols={2}>

1015 <Card title="Melhores práticas" icon="lightbulb" href="/pt/best-practices">

1016 Padrões para aproveitar ao máximo Claude Code

1017 </Card>

1018 

1019 <Card title="Como Claude Code funciona" icon="gear" href="/pt/how-claude-code-works">

1020 Entenda o loop agentic e gerenciamento de contexto

1021 </Card>

1022 

1023 <Card title="Estender Claude Code" icon="puzzle-piece" href="/pt/features-overview">

1024 Adicione skills, hooks, MCP, subagents e plugins

1025 </Card>

1026 

1027 <Card title="Implementação de referência" icon="code" href="https://github.com/anthropics/claude-code/tree/main/.devcontainer">

1028 Clone a implementação de referência do contêiner de desenvolvimento

1029 </Card>

1030</CardGroup>

communications-kit.md +520 −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# Kit de comunicações

6 

7> Anúncios de lançamento, mensagens de campanha contínua e respostas de FAQ para implementar Claude Code em sua organização de engenharia.

8 

9Esta página é para administradores e líderes de engenharia que estão implementando Claude Code em um time. Ela fornece anúncios de lançamento prontos para copiar, uma campanha de dicas e truques, e respostas de uma linha para as perguntas que você será mais frequentemente questionado.

10 

11<Note>

12 Trate tudo aqui como rascunho, não como cópia final. Reescreva cada mensagem na voz da sua organização, troque as tarefas de exemplo por bugs e módulos reais do seu próprio código, e substitua os `[espaços reservados entre colchetes]` antes de enviar. Os anúncios que impulsionam a adoção são aqueles que parecem ter sido escritos por alguém da sua empresa.

13</Note>

14 

15## Comunicações de lançamento

16 

17Um anúncio em dois formatos, mais duas variantes opcionais. Escolha o que melhor se adequa ao seu lançamento e reescreva a partir daí.

18 

19### Antes de enviar

20 

21Trabalhe através desta lista de verificação antes do anúncio sair. Cada item fecha uma lacuna que de outra forma se torna um tópico de suporte no dia do lançamento.

22 

23| Item | Por que importa |

24| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |

25| Canal `#claude-code` criado e vinculado na mensagem | Dá às perguntas um único lugar para chegar |

26| Comando de instalação testado em pelo menos uma máquina em seu ambiente | Detecta problemas de proxy ou firewall antes que todos os enfrentem de uma vez |

27| Link de segurança e tratamento de dados pronto ([Uso de dados](/pt/data-usage) ou seu equivalente interno) | "Para onde vai meu código?" será a primeira resposta |

28| Uma tarefa concreta de primeiro passo escolhida, um bug real ou arquivo em seu código | Exemplos genéricos não convertem; "corrigir o teste instável em `auth_test.go`" funciona |

29| Um proprietário nomeado para o canal pelos primeiros 48 horas | Perguntas não respondidas no dia do lançamento matam o impulso |

30| Um patrocinador da C-suite alinhado para enviar ou co-assinar o anúncio | Lançamentos enviados por executivos consistentemente veem maior adoção na primeira semana do que aqueles enviados por administradores |

31 

32### O anúncio

33 

34Use isto como sua mensagem padrão de lançamento em toda a organização. Ele cobre o que é Claude Code, fornece um caminho de instalação de dois minutos, oferece aos leitores uma tarefa concreta para tentar e responde "para onde vai meu código?" antes que alguém tenha que perguntar.

35 

36<Tabs>

37 <Tab title="Email">

38 ```text theme={null}

39 Assunto: Claude Code está ativo para [Engenharia / seu time]

40 

41 Time,

42 

43 A partir de hoje você tem acesso a Claude Code, um agente de codificação de IA que funciona em

44 seu terminal, lê seu código real, e trabalha através de tarefas reais de ponta a ponta: depuração, refatorações, testes, PRs. Não é autocompletar e não é

45 uma janela de chat. Ele edita arquivos, executa seus comandos e pede permissão

46 antes de qualquer coisa arriscada.

47 

48 Comece em dois minutos:

49 

50 curl -fsSL https://claude.ai/install.sh | bash

51 cd <seu-repositório>

52 claude

53 

54 Depois execute /init uma vez. Claude lê seu projeto e escreve um CLAUDE.md com

55 seus comandos de compilação e convenções, para que você pare de re-explicar o básico.

56 

57 Depois tente um destes no repositório em que você já está:

58 

59 - "O teste em [arquivo] é instável. Descubra por que e corrija"

60 - "Me mostre como [módulo] lida com [X]"

61 - "Olhe meu diff funcionando e me diga o que é arriscado antes de eu fazer push"

62 

63 Para onde seu código vai: Claude Code funciona em seu terminal e fala diretamente

64 com a API da Anthropic, sem servidores de terceiros no meio. Ele pede antes de

65 editar arquivos ou executar comandos. Sob nosso acordo Enterprise, Anthropic

66 não usa seu código ou prompts para treinar seus modelos.

67 Detalhes: https://code.claude.com/docs/pt/data-usage

68 https://code.claude.com/docs/pt/security

69 

70 Para onde ir com perguntas: #claude-code. [Nome do proprietário] está observando

71 esta semana.

72 

73 - [Nome]

74 

75 P.S. Prefere seu editor? Há uma extensão VS Code e um

76 plugin JetBrains. Mesmo agente, sem terminal necessário.

77 ```

78 </Tab>

79 

80 <Tab title="Slack ou Teams">

81 ```markdown theme={null}

82 🚀 *Claude Code está ativo para [time]*

83 

84 Agente de codificação de IA, funciona em seu terminal, lê seu repositório, faz trabalho real:

85 bugs, refatorações, testes, PRs. Pede antes de tocar em qualquer coisa.

86 

87 `curl -fsSL https://claude.ai/install.sh | bash` → `cd seu-repositório` → `claude`

88 

89 *Primeira coisa para tentar* → execute `/init`, depois: "o teste em [arquivo] é instável,

90 descubra por que e corrija".

91 

92 🔒 Funciona em seu terminal, fala apenas com a API da Anthropic. Sob nosso

93 plano Enterprise seu código e prompts não são usados para treinar modelos.

94 Uso de dados → https://code.claude.com/docs/pt/data-usage

95 

96 📚 Guia de início rápido · VS Code · Curso gratuito de 1 hora

97 https://code.claude.com/docs/pt/quickstart

98 https://code.claude.com/docs/pt/vs-code

99 https://anthropic.skilljar.com/claude-code-in-action

100 

101 Perguntas → esta thread. [Proprietário] está na ponta.

102 ```

103 </Tab>

104</Tabs>

105 

106### Variante de patrocinador executivo

107 

108Envie isto do seu executivo patrocinador, como o CTO, CIO ou SVP de Engenharia, sob seu nome e de sua conta. Lançamentos que saem sob o nome de um executivo consistentemente veem taxas de abertura mais altas e ativação mais rápida na primeira semana do que a mesma mensagem de um administrador ou time de ferramentas. Sinaliza uma prioridade da empresa em vez de um experimento opcional.

109 

110Esta versão é deliberadamente reduzida a um pedido: instale e execute em uma tarefa real. O trabalho do executivo é fazer o pedido chegar; o anúncio padrão e `#claude-code` lidam com o como.

111 

112<Tabs>

113 <Tab title="Email">

114 ```text theme={null}

115 Assunto: Uma coisa que gostaria que cada engenheiro tentasse esta semana

116 

117 Time,

118 

119 Ativamos Claude Code para toda a engenharia. É um agente de IA

120 que funciona diretamente em seu terminal, em seu código real, e os

121 resultados iniciais de times que já o usam são fortes o suficiente para que eu queira

122 que todos o usem esta semana.

123 

124 Estou pedindo dez minutos:

125 

126 curl -fsSL https://claude.ai/install.sh | bash

127 cd <seu-repositório>

128 claude

129 

130 Depois dê a ele uma tarefa real: o bug que você vem adiando, ou "me mostre

131 como [módulo] funciona".

132 

133 Esse é o pedido inteiro. [Nome do proprietário] e time estão em #claude-code para

134 qualquer coisa que você encontre pelo caminho.

135 

136 - [Nome do Executivo]

137 [Título]

138 ```

139 </Tab>

140 

141 <Tab title="Slack ou Teams">

142 ```markdown theme={null}

143 📣 *De [Nome do Executivo]: uma coisa para tentar esta semana*

144 

145 Ativamos *Claude Code* para toda a engenharia. Resultados iniciais são

146 fortes o suficiente para que eu peça a todos que dediquem dez minutos a trabalho real esta semana.

147 

148 `curl -fsSL https://claude.ai/install.sh | bash` → `cd seu-repositório` →

149 `claude` → dê a ele uma tarefa real.

150 

151 Isso é tudo. Perguntas → #claude-code.

152 ```

153 </Tab>

154</Tabs>

155 

156### Variante de grupo piloto

157 

158Use para um lançamento em fases. Envie apenas para a coorte piloto.

159 

160```text theme={null}

161Assunto: Você está no piloto de Claude Code

162 

163[Nome / time],

164 

165Você está na primeira onda de Claude Code em [empresa]. Escolhemos este grupo

166porque você o colocará em problemas reais e nos dirá a verdade sobre isso.

167 

168O pedido: use-o em pelo menos uma tarefa real esta semana, depois deixe uma nota em

169#claude-code-pilot cobrindo o que funcionou, o que foi chato e o que

170o surpreendeu. Esse feedback decide como implementamos para todos os outros.

171 

172[Continue com "Comece em dois minutos" do anúncio padrão]

173 

174Uma coisa extra para pilotos: em sua primeira mudança de múltiplos arquivos, pressione Shift+Tab

175até ver "plan". Claude exibirá exatamente o que pretende fazer

176antes de tocar em um arquivo. É a maneira mais rápida de calibrar quanto

177confiar nele.

178```

179 

180### DM de recrutamento de campeão

181 

182Após o lançamento, envie DM para as duas ou três pessoas mais ativas em `#claude-code`.

183 

184```text theme={null}

185Ei [nome], seus posts em #claude-code estão fazendo mais pela adoção do que meu

186anúncio fez. Algumas pessoas me disseram que sua [thread / screenshot]

187foi o motivo pelo qual realmente tentaram.

188 

189Quer tornar isso semi-oficial? Pouco esforço: principalmente continue postando o que

190você está postando, mais primeiro acesso a novos recursos e uma linha direta para o

191time da Anthropic. Posso compartilhar um playbook curto se você estiver dentro.

192```

193 

194## Campanha de dicas e truques

195 

196Mensagens prontas para colar no Slack ou Teams projetadas para impulsionar a ativação de recursos após o lançamento. Cada uma segue o mesmo padrão: um gancho, o resultado, um prompt "tente agora" e um link de documentação. Distribua uma ou duas por semana em `#claude-code`, ou escolha o punhado que corresponde às lacunas do seu time. Elas funcionam independentemente sem ordem necessária.

197 

198Copie o corpo da mensagem de cada bloco diretamente no Slack ou Teams. Substitua `[espaços reservados entre colchetes]` antes de enviar.

199 

200### Comece

201 

202**Escolhendo o modelo certo**

203 

204```markdown theme={null}

205🎯 *Dica: Combine o modelo ao momento*

206 

207Usar Opus para corrigir um erro de digitação queima computação. Usar Haiku para uma refatoração de 12 arquivos

208é pedir por uma refeita.

209 

210Claude Code funciona nos mesmos modelos que o aplicativo Claude, e você pode alternar

211no meio da sessão. *Sonnet* é o padrão de trabalho para trabalho de recursos cotidianos,

212bugs, testes e revisões. Recorra a *Opus* em refatorações grandes, depuração complicada,

213ou qualquer coisa de alto risco. Desça para *Haiku* para perguntas rápidas,

214formatação e edições mecânicas onde a velocidade vence.

215 

216*Tente agora:* digite `/model` e escolha Sonnet se você ainda não o fez. É

217o padrão certo para a maioria das tarefas.

218 

219📖 Configuração de modelo → https://code.claude.com/docs/pt/model-config

220```

221 

222| Modelo | Melhor para |

223| ------ | ---------------------------------------------------------------------------------------------------------------- |

224| Opus | Refatorações em larga escala, depuração complexa, decisões de arquitetura, mudanças de alto risco |

225| Sonnet | Trabalho de recursos cotidianos, correções de bugs, testes, documentação, revisão de código. Padrão recomendado. |

226| Haiku | Perguntas rápidas, formatação, edições mecânicas, iteração rápida |

227 

228**Vitórias rápidas para tentar primeiro**

229 

230```markdown theme={null}

231🚀 *Dica: Três coisas para tentar em seus primeiros 10 minutos*

232 

233Instalou Claude Code mas não tem certeza do que realmente pedir? Comece com as

234coisas que vêm te incomodando a semana toda.

235 

236 - Corrija algo chato: "o teste em [arquivo] é instável, descubra por que"

237 - Oriente-se em código que você não escreveu: "me mostre como [módulo] funciona"

238 - Verifique a sanidade antes de fazer push: "olhe meu diff funcionando e me diga o que

239 parece arriscado"

240 

241Nenhuma dessas precisa de configuração. Apenas `cd` para seu repositório e execute `claude`.

242 

243*Tente agora:* escolha o bug que você vem evitando e cole a mensagem de erro.

244 

245📖 Guia de início rápido → https://code.claude.com/docs/pt/quickstart

246```

247 

248### Memória do projeto

249 

250**`/init` e CLAUDE.md**

251 

252```markdown theme={null}

253📁 *Dica: Pare de re-explicar seu repositório a cada sessão*

254 

255Dizendo a Claude "usamos pnpm, não npm" pela quinta vez? Há uma

256correção única.

257 

258Execute `/init` uma vez por repositório. Claude lê a estrutura do seu projeto e escreve um

259arquivo CLAUDE.md com seus comandos de compilação, arquitetura e convenções.

260Cada sessão futura naquele repositório começa a partir deste arquivo automaticamente. Mantenha

261em menos de duas telas. É uma cola de referência, não documentação.

262 

263*Tente agora:* abra seu repositório principal, execute `claude`, digite `/init`. Trinta

264segundos, compensa cada sessão depois.

265 

266📖 CLAUDE.md e memória do projeto → https://code.claude.com/docs/pt/memory

267```

268 

269**Referências com @**

270 

271```markdown theme={null}

272📎 *Dica: Pare de colar conteúdo de arquivo no chat*

273 

274Copiando 200 linhas de um componente em seu prompt para que Claude possa "ver"?

275Você não precisa.

276 

277Digite `@` depois um caminho de arquivo. Claude puxa o arquivo diretamente para o contexto.

278Funciona para diretórios inteiros também.

279 

280> os estilos em @src/components/Button.tsx parecem errados, verifique contra

281> @docs/design-system.md

282 

283*Tente agora:* digite `@` depois Tab. Autocompletar mostra cada arquivo ao alcance.

284 

285📖 Referenciando arquivos → https://code.claude.com/docs/pt/common-workflows

286```

287 

288### Controle e segurança

289 

290**Modos de permissão**

291 

292```markdown theme={null}

293🛡️ *Dica: Um pressionamento de tecla entre "olhar mas não tocar" e "apenas faça"*

294 

295Às vezes você quer que Claude peça antes de cada edição. Às vezes você apenas quer

296que ele envie. Você não deveria ter que escolher um para sempre.

297 

298*Shift+Tab* alterna quanto de liberdade Claude recebe: *default* pede antes de

299coisas arriscadas, *acceptEdits* deixa edições de arquivo e comandos comuns do sistema de arquivos

300fluirem enquanto ainda verifica antes de outros comandos shell, e *plan*

301propõe mudanças para sua aprovação antes de qualquer coisa ser tocada. Plan mode é

302o construtor de confiança, então comece lá para qualquer coisa tocando múltiplos arquivos.

303 

304*Tente agora:* em sua próxima refatoração, pressione Shift+Tab até ver "plan",

305depois descreva a mudança. Você receberá uma proposta completa antes de um único arquivo

306se mover.

307 

308📖 Modos de permissão → https://code.claude.com/docs/pt/permissions

309```

310 

311**Checkpointing e `/rewind`**

312 

313```markdown theme={null}

314⏪ *Dica: Há um botão desfazer para a conversa inteira*

315 

316Claude foi pelo caminho errado três turnos atrás e agora você está desembaraçando?

317Você não precisa consertar para frente.

318 

319`/rewind` volta a um ponto anterior na conversa, incluindo as

320mudanças de arquivo que Claude fez pelo caminho. Checkpointing é automático; você

321não configura nada.

322 

323*Tente agora:* pressione *Esc* duas vezes para abrir o menu de rewind, ou digite `/rewind`.

324Escolha o ponto antes das coisas darem errado.

325 

326📖 Checkpointing → https://code.claude.com/docs/pt/checkpointing

327```

328 

329### Conecte suas ferramentas

330 

331**Conectores MCP**

332 

333```markdown theme={null}

334🔌 *Dica: Deixe Claude ler seu rastreador de problemas para que você não tenha que colar tickets*

335 

336Colar tickets do Jira no terminal parece um passo para trás.

337É.

338 

339Um arquivo de configuração (`.mcp.json` na raiz do seu projeto) conecta Claude ao GitHub,

340Jira, Linear, ou qualquer rastreador que você use. Depois "qual é o problema

341de prioridade máxima atribuído a mim?" e "vá em frente e corrija" acontecem na mesma

342conversa.

343 

344*Tente agora:* peça a Claude "configure um conector MCP para [GitHub/Jira/Linear]

345neste repositório". Ele escreverá a configuração para você.

346 

347📖 Conectores MCP → https://code.claude.com/docs/pt/mcp

348```

349 

350### Automatize seus fluxos de trabalho

351 

352**Skills**

353 

354```markdown theme={null}

355⚡ *Dica: Transforme aquele prompt que você fica redigitando em um comando*

356 

357Digitou "resuma o que trabalhei hoje a partir do git log, formate para standup"

358três vezes esta semana? Esse é um slash command esperando para acontecer.

359 

360Um arquivo SKILL.md em `.claude/skills/<nome>/` se torna um prompt reutilizável; digite

361`/nome` para executá-lo. Faça um na segunda vez que você digita um prompt multi-passo

362que você digitou antes. Caminho mais fácil: peça a Claude para fazer para você.

363 

364*Tente agora:* digite "faça-me uma skill /standup que resuma o que trabalhei

365hoje a partir do git log", depois execute `/standup` amanhã de manhã.

366 

367📖 Skills → https://code.claude.com/docs/pt/skills

368```

369 

370**Hooks**

371 

372```markdown theme={null}

373🔔 *Dica: Receba um ping quando sua refatoração terminar*

374 

375Sentado em sua mesa observando Claude trabalhar através de uma tarefa longa? Você tem

376coisas melhores para fazer por esses oito minutos.

377 

378Hooks são comandos shell que disparam em eventos de Claude Code. Um hook Stop que

379envia uma notificação de desktop significa que você pode iniciar uma refatoração longa, se afastar,

380e receber um ping no momento em que termina.

381 

382*Tente agora:* peça a Claude "adicione um hook Stop que envie uma notificação de desktop

383quando você terminar". Ele escreverá o script e conectará.

384 

385📖 Guia de hooks → https://code.claude.com/docs/pt/hooks-guide

386```

387 

388### Desenvolvimento dia a dia

389 

390**Screenshots e imagens**

391 

392```markdown theme={null}

393📸 *Dica: Pare de descrever o diálogo de erro. Apenas mostre.*

394 

395Digitando "há uma caixa vermelha que diz algo sobre uma referência nula

396e está apontando para a linha 47-ish"? Faça uma screenshot.

397 

398Arraste uma screenshot diretamente para o terminal e Claude a vê: diálogos de erro, mockups de UI,

399fotos de quadro branco, exportações do Figma. *Ctrl+V* cola da área de transferência (use Ctrl+V no macOS também, não Cmd+V).

400 

401*Tente agora:* na próxima vez que algo visual quebrar, faça uma screenshot e cole

402diretamente no prompt. Depois apenas digite "o que está errado aqui?"

403 

404📖 Trabalhando com imagens → https://code.claude.com/docs/pt/common-workflows

405```

406 

407**Fluxos de trabalho Git**

408 

409```markdown theme={null}

410🌿 *Dica: Passe toda a cerimônia git*

411 

412A correção levou 5 minutos. A mensagem de commit, branch e descrição de PR

413levaram 15. Essa proporção está errada.

414 

415Claude lida com o fluxo git completo: commits com mensagens convencionais,

416branches, PRs com resumos apropriados. Um pedido: "corrija o off-by-one, commit

417com uma mensagem de commit convencional e abra um PR." Revisando o trabalho de alguém?

418Cole a URL do PR e peça a Claude para te mostrar o diff.

419 

420*Tente agora:* após sua próxima correção, em vez de alternar para seu cliente git,

421apenas digite "commit isto com uma boa mensagem e abra um PR".

422 

423📖 Criando pull requests → https://code.claude.com/docs/pt/common-workflows

424```

425 

426### Compartilhe e escale

427 

428**Plugins**

429 

430```markdown theme={null}

431📦 *Dica: Alguém provavelmente já construiu essa skill*

432 

433Prestes a gastar uma hora construindo um comando `/deploy`? Verifique se já

434existe.

435 

436Skills são agrupadas e compartilhadas como plugins. `/plugin` navega o que está

437disponível e instala em um passo. Cinco minutos de navegação podem economizar uma hora de construção.

438 

439*Tente agora:* digite `/plugin` e role. Você encontrará pelo menos uma

440coisa que não sabia que queria.

441 

442📖 Plugins → https://code.claude.com/docs/pt/plugins

443```

444 

445### Segurança e administração

446 

447**Arquitetura de segurança**

448 

449```markdown theme={null}

450🔐 *Dica: A resposta para "isto é seguro?" para a próxima vez que você for perguntado*

451 

452Alguém no seu time vai perguntar "espera, para onde vai meu código?"

453Aqui está a versão curta que você pode colar.

454 

455Permissão-primeiro por design. Cada edição de arquivo, comando shell e chamada externa

456é controlada por sua aprovação. O CLI funciona em seu terminal e fala

457diretamente com a API da Anthropic, sem servidores de terceiros, e suporta

458sandboxing opcional no nível do SO para comandos shell. Sob nosso plano Enterprise,

459Anthropic não usa seu código ou prompts para treinar seus modelos.

460 

461*Tente agora:* salve esses dois links para a próxima vez que a pergunta surgir.

462Eles respondem a maioria das perguntas de revisão de segurança.

463 

464📖 https://code.claude.com/docs/pt/security

465📖 https://code.claude.com/docs/pt/data-usage

466```

467 

468**Melhores práticas**

469 

470```markdown theme={null}

471✅ *Dica: Os 4 hábitos que separam "tentei uma vez" de "uso diariamente"*

472 

473A maioria das pessoas que desistem de Claude Code pulou um destes. A maioria das pessoas

474que continuam fizeram todos os quatro na primeira semana.

475 

476 - Comece em plan mode para qualquer coisa tocando múltiplos arquivos

477 - Execute /init cedo; contexto se compõe

478 - Revise diffs antes de fazer commit; Claude pode estar confiante e errado

479 - Verifique mudanças que tocam caminhos críticos; trate como um junior afiado,

480 não um oráculo

481 

482*Tente agora:* se você fez apenas um ou dois destes, escolha o que você está

483perdendo e faça em sua próxima tarefa. Poste o que mudou em #claude-code.

484 

485📖 Melhores práticas → https://code.claude.com/docs/pt/best-practices

486```

487 

488## Referência rápida

489 

490### Respostas de FAQ

491 

492Respostas de uma linha para as perguntas que você será mais frequentemente questionado.

493 

494| Pergunta | Resposta |

495| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

496| "Funciona em VS Code?" | Sim. Há uma extensão VS Code e um plugin JetBrains com os mesmos recursos, incorporados em seu editor. [VS Code →](/pt/vs-code) |

497| "Preciso configurar algo primeiro?" | Não. Instale, depois execute `claude` em qualquer repositório. Execute `/init` uma vez e você está pronto. [Guia de início rápido →](/pt/quickstart) |

498| "Para onde vai meu código?" | O CLI funciona em seu terminal e envia contexto para a API da Anthropic para inferência, sem servidores de terceiros. Sob seu plano Enterprise, seu código e prompts não são usados para treinar modelos. [Uso de dados →](/pt/data-usage) |

499| "Pode ver meu repositório inteiro?" | Ele lê o que você dá acesso. Leituras de arquivo dentro de seu diretório de trabalho não solicitam; prompts de permissão controlam edições, comandos shell e qualquer coisa fora daquele diretório. [Permissões →](/pt/permissions) |

500| "Como isto é diferente do Copilot?" | Copilot autocompletar linhas. Claude Code é um agente que lê arquivos, executa comandos e faz edições de múltiplos arquivos. [Visão geral →](/pt/overview) |

501| "O que devo tentar primeiro?" | Um bug que você vem adiando porque é tedioso. "O teste em \[arquivo] é instável, descubra por que." [Guia de início rápido →](/pt/quickstart) |

502 

503### Modelos de prompt

504 

505Compartilhe estes prompts iniciais com engenheiros que instalaram mas não têm certeza do que pedir. Cada um é fraseado da maneira que seria digitado em uma sessão real; substitua as peças entre colchetes com arquivos do seu próprio repositório.

506 

507| Tarefa | Prompt |

508| ---------------------------- | --------------------------------------------------------------------------------------- |

509| Corrija um bug | "os testes em \[arquivo] estão falhando, descubra por que e corrija" |

510| Entenda código | "me mostre como \[módulo] funciona, depois me diga onde está o ponto de entrada" |

511| Refatoração segura | "refatore \[módulo] para \[objetivo], use plan mode para que eu possa revisar primeiro" |

512| Escreva testes | "escreva testes para \[arquivo] que cubram os casos extremos em torno de \[cenário]" |

513| Revise antes de fazer commit | "olhe meu diff funcionando e me diga o que parece arriscado" |

514| Abra um PR | "corrija \[problema], escreva um commit convencional e abra um PR com um resumo" |

515| Faça uma skill | "faça-me uma skill /ship que execute testes e lint antes de fazer commit" |

516| Depure um stack trace | "aqui está o stack trace, encontre a causa raiz, não apenas coloque um curativo" |

517 

518<Tip>

519 Claude Code é lançado frequentemente. Verifique detalhes específicos da versão contra a [página inicial da documentação](/pt/overview) antes de distribuir internamente.

520</Tip>

computer-use.md +207 −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# Deixe Claude usar seu computador a partir da CLI

6 

7> Ative o computer use na Claude Code CLI para que Claude possa abrir aplicativos, clicar, digitar e ver sua tela no macOS. Teste aplicativos nativos, depure problemas visuais e automatize ferramentas apenas com GUI sem sair do seu terminal.

8 

9<Note>

10 {/* plan-availability: feature=computer-use plans=pro,max */}

11 

12 Computer use é uma visualização de pesquisa no macOS que requer um plano Pro ou Max. Não está disponível em planos Team ou Enterprise. Requer Claude Code v2.1.85 ou posterior e uma sessão interativa, portanto não está disponível em modo não interativo com a flag `-p`.

13</Note>

14 

15Computer use permite que Claude abra aplicativos, controle sua tela e trabalhe em sua máquina da forma como você faria. A partir da CLI, Claude pode compilar um aplicativo Swift, iniciá-lo, clicar em cada botão e capturar uma tela do resultado, tudo na mesma conversa em que escreveu o código.

16 

17Esta página aborda como o computer use funciona na CLI. Para o aplicativo Desktop, consulte [computer use em Desktop](/pt/desktop#let-claude-use-your-computer).

18 

19## O que você pode fazer com computer use

20 

21Computer use lida com tarefas que requerem uma GUI: qualquer coisa que você normalmente teria que sair do terminal e fazer manualmente.

22 

23* **Construir e validar aplicativos nativos**: peça a Claude para construir um aplicativo de barra de menu do macOS. Claude escreve o Swift, compila, inicia e clica em cada controle para verificar se funciona antes de você abri-lo.

24* **Testes de UI de ponta a ponta**: aponte Claude para um aplicativo Electron local e diga "teste o fluxo de integração". Claude abre o aplicativo, clica na inscrição e captura cada etapa. Sem configuração do Playwright, sem teste harness.

25* **Depurar problemas visuais e de layout**: diga a Claude "o modal está sendo cortado em janelas pequenas". Claude redimensiona a janela, reproduz o bug, captura uma tela, corrige o CSS e verifica a correção. Claude vê o que você vê.

26* **Dirigir ferramentas apenas com GUI**: interaja com ferramentas de design, painéis de controle de hardware, o iOS Simulator ou aplicativos proprietários que não possuem CLI ou API.

27 

28## Quando computer use se aplica

29 

30Claude tem várias maneiras de interagir com um aplicativo ou serviço. Computer use é a mais ampla e lenta, portanto Claude tenta a ferramenta mais precisa primeiro:

31 

32* Se você tiver um [servidor MCP](/pt/mcp) para o serviço, Claude usa isso.

33* Se a tarefa for um comando shell, Claude usa Bash.

34* Se a tarefa for trabalho de navegador e você tiver [Claude no Chrome](/pt/chrome) configurado, Claude usa isso.

35* Se nenhum desses se aplicar, Claude usa computer use.

36 

37O controle de tela é reservado para coisas que nada mais pode alcançar: aplicativos nativos, simuladores e ferramentas sem uma API.

38 

39## Ativar computer use

40 

41Computer use está disponível como um servidor MCP integrado chamado `computer-use`. Está desativado por padrão até que você o ative.

42 

43<Steps>

44 <Step title="Abra o menu MCP">

45 Em uma sessão interativa do Claude Code, execute:

46 

47 ```text theme={null}

48 /mcp

49 ```

50 

51 Encontre `computer-use` na lista de servidores. Ele aparece como desativado.

52 </Step>

53 

54 <Step title="Ativar o servidor">

55 Selecione `computer-use` e escolha **Enable**. A configuração persiste por projeto, portanto você faz isso apenas uma vez para cada projeto onde deseja usar computer use.

56 </Step>

57 

58 <Step title="Conceder permissões do macOS">

59 Na primeira vez que Claude tentar usar seu computador, você verá um prompt para conceder duas permissões do macOS:

60 

61 * **Accessibility**: permite que Claude clique, digite e role

62 * **Screen Recording**: permite que Claude veja o que está em sua tela

63 

64 O prompt inclui links para abrir o painel System Settings relevante. Conceda ambos e selecione **Try again** no prompt. O macOS pode exigir que você reinicie Claude Code após conceder Screen Recording.

65 </Step>

66</Steps>

67 

68Após a configuração, peça a Claude para fazer algo que precise da GUI:

69 

70```text theme={null}

71Build the app target, launch it, and click through each tab to make

72sure nothing crashes. Screenshot any error states you find.

73```

74 

75## Aprovar aplicativos por sessão

76 

77Ativar o servidor `computer-use` não concede a Claude acesso a todos os aplicativos em sua máquina. Na primeira vez que Claude precisar de um aplicativo específico em uma sessão, um prompt aparece em seu terminal mostrando:

78 

79* Quais aplicativos Claude deseja controlar

80* Quaisquer permissões extras solicitadas, como acesso à área de transferência

81* Quantos outros aplicativos serão ocultados enquanto Claude trabalha

82 

83Escolha **Allow for this session** ou **Deny**. As aprovações duram para a sessão atual. Você pode aprovar vários aplicativos de uma vez quando Claude os solicita juntos.

84 

85Aplicativos com amplo alcance mostram um aviso extra no prompt para que você saiba o que aprovar concede:

86 

87| Aviso | Aplica-se a |

88| :------------------------------------ | :------------------------------------------------------- |

89| Equivalente ao acesso shell | Terminal, iTerm, VS Code, Warp e outros terminais e IDEs |

90| Pode ler ou escrever qualquer arquivo | Finder |

91| Pode alterar configurações do sistema | System Settings |

92 

93Esses aplicativos não são bloqueados. O aviso permite que você decida se a tarefa justifica esse nível de acesso.

94 

95O nível de controle de Claude também varia por categoria de aplicativo: navegadores e plataformas de negociação são apenas visualização, terminais e IDEs são apenas clique, e tudo o mais obtém controle total. Consulte [permissões de aplicativo em Desktop](/pt/desktop#app-permissions) para a divisão de camada completa.

96 

97## Como Claude trabalha em sua tela

98 

99Entender o fluxo ajuda você a antecipar o que Claude fará e como intervir.

100 

101### Uma sessão por vez

102 

103Computer use mantém um bloqueio em toda a máquina enquanto ativo. Se outra sessão do Claude Code já estiver usando seu computador, novas tentativas falharão com uma mensagem informando qual sessão mantém o bloqueio. Termine ou saia dessa sessão primeiro.

104 

105### Os aplicativos são ocultados enquanto Claude trabalha

106 

107Quando Claude começa a controlar sua tela, outros aplicativos visíveis são ocultados para que Claude interaja apenas com os aplicativos aprovados. Sua janela de terminal permanece visível e é excluída de capturas de tela, para que você possa assistir à sessão e Claude nunca veja sua própria saída.

108 

109Quando Claude termina a vez, os aplicativos ocultos são restaurados automaticamente.

110 

111### Parar a qualquer momento

112 

113Quando Claude adquire o bloqueio, uma notificação do macOS aparece: "Claude is using your computer · press Esc to stop". Pressione `Esc` em qualquer lugar para abortar a ação atual imediatamente, ou pressione `Ctrl+C` no terminal. De qualquer forma, Claude libera o bloqueio, mostra seus aplicativos e retorna o controle a você.

114 

115Uma segunda notificação aparece quando Claude termina.

116 

117## Segurança e o limite de confiança

118 

119<Warning>

120 Ao contrário da [ferramenta Bash em sandbox](/pt/sandboxing), computer use é executado em seu desktop real com acesso aos aplicativos que você aprova. Claude verifica cada ação e sinaliza possível injeção de prompt do conteúdo na tela, mas o limite de confiança é diferente. Consulte o [guia de segurança do computer use](https://support.claude.com/en/articles/14128542) para as melhores práticas.

121</Warning>

122 

123Os guardrails integrados reduzem o risco sem exigir configuração:

124 

125* **Aprovação por aplicativo**: Claude pode controlar apenas aplicativos que você aprovou na sessão atual.

126* **Avisos de sentinela**: aplicativos que concedem acesso shell, sistema de arquivos ou configurações do sistema são sinalizados antes de você aprovar.

127* **Terminal excluído de capturas de tela**: Claude nunca vê sua janela de terminal, portanto prompts na tela em sua sessão não podem alimentar o modelo.

128* **Escape global**: a tecla `Esc` aborta computer use de qualquer lugar, e o pressionamento de tecla é consumido para que injeção de prompt não possa usá-lo para descartar diálogos.

129* **Arquivo de bloqueio**: apenas uma sessão pode controlar sua máquina por vez.

130 

131## Fluxos de trabalho de exemplo

132 

133Esses exemplos mostram maneiras comuns de combinar computer use com tarefas de codificação.

134 

135### Validar uma compilação nativa

136 

137Após fazer alterações em um aplicativo macOS ou iOS, peça a Claude para compilar e verificar em uma única passagem:

138 

139```text theme={null}

140Build the MenuBarStats target, launch it, open the preferences window,

141and verify the interval slider updates the label. Screenshot the

142preferences window when you're done.

143```

144 

145Claude executa `xcodebuild`, inicia o aplicativo, interage com a UI e relata o que encontra.

146 

147### Reproduzir um bug de layout

148 

149Quando um bug visual aparece apenas em certos tamanhos de janela, deixe Claude encontrá-lo:

150 

151```text theme={null}

152The settings modal clips its footer on narrow windows. Resize the app

153window down until you can reproduce it, screenshot the clipped state,

154then check the CSS for the modal container.

155```

156 

157Claude redimensiona a janela, captura o estado quebrado e lê as folhas de estilo relevantes.

158 

159### Testar um fluxo do simulador

160 

161Dirija o iOS Simulator sem escrever XCTest:

162 

163```text theme={null}

164Open the iOS Simulator, launch the app, tap through the onboarding

165screens, and tell me if any screen takes more than a second to load.

166```

167 

168Claude controla o simulador da mesma forma que você faria com um mouse.

169 

170## Diferenças do aplicativo Desktop

171 

172As superfícies CLI e Desktop compartilham o mesmo mecanismo de computer use. Alguns controles específicos do Desktop ainda não estão na CLI:

173 

174| Recurso | Desktop | CLI |

175| :--------------------------- | :------------------------------------------------------ | :------------------------------ |

176| Ativar | Alternar em **Settings > General** (em **Desktop app**) | Ativar `computer-use` em `/mcp` |

177| Lista de aplicativos negados | Configurável em Settings | Ainda não disponível |

178| Alternância de auto-unhide | Opcional | Sempre ativado |

179| Integração do Dispatch | Sessões geradas por Dispatch podem usar computer use | Não aplicável |

180 

181## Troubleshooting

182 

183### "Computer use is in use by another Claude session"

184 

185Outra sessão do Claude Code mantém o bloqueio. Termine a tarefa nessa sessão ou saia dela. Se a outra sessão travou, o bloqueio é liberado automaticamente quando Claude detecta que o processo não está mais em execução.

186 

187### O prompt de permissões do macOS continua reaparecendo

188 

189O macOS às vezes requer uma reinicialização do processo solicitante após você conceder Screen Recording. Saia completamente do Claude Code e inicie uma nova sessão. Se o prompt persistir, abra **System Settings > Privacy & Security > Screen Recording** e confirme que seu aplicativo de terminal está listado e ativado.

190 

191### `computer-use` não aparece em `/mcp`

192 

193O servidor só aparece em configurações elegíveis. Verifique se:

194 

195* Você está no macOS. Computer use não está disponível no Linux ou Windows.

196* Você está executando Claude Code v2.1.85 ou posterior. Execute `claude --version` para verificar.

197* Você está em um plano Pro ou Max. Execute `/status` para confirmar sua assinatura.

198* Você está autenticado através de claude.ai. Computer use não está disponível com provedores de terceiros como Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry. Se você acessar Claude exclusivamente através de um provedor de terceiros, você precisa de uma conta claude.ai separada para usar este recurso.

199* Você está em uma sessão interativa. Computer use não está disponível em modo não interativo com a flag `-p`.

200 

201## Veja também

202 

203* [Computer use em Desktop](/pt/desktop#let-claude-use-your-computer): a mesma capacidade com uma página de configurações gráfica

204* [Claude no Chrome](/pt/chrome): automação de navegador para tarefas baseadas na web

205* [MCP](/pt/mcp): conecte Claude a ferramentas e APIs estruturadas

206* [Sandboxing](/pt/sandboxing): como a ferramenta Bash de Claude isola o acesso ao sistema de arquivos e rede

207* [Guia de segurança do computer use](https://support.claude.com/en/articles/14128542): melhores práticas para uso seguro de computer use

costs.md +203 −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# Gerencie custos de forma eficaz

6 

7> Rastreie o uso de tokens, defina limites de gastos da equipe e reduza os custos do Claude Code com gerenciamento de contexto, seleção de modelo, configurações de pensamento estendido e hooks de pré-processamento.

8 

9Claude Code cobra pelo consumo de tokens da API. Para preços do plano de assinatura (Pro, Max, Team, Enterprise), consulte [claude.com/pricing](https://claude.com/pricing). Os custos por desenvolvedor variam amplamente com base na seleção de modelo, tamanho da base de código e padrões de uso, como executar múltiplas instâncias ou automação.

10 

11Em implantações empresariais, o custo médio é de cerca de \$13 por desenvolvedor por dia ativo e \$150-250 por desenvolvedor por mês, com custos permanecendo abaixo de \$30 por dia ativo para 90% dos usuários. Para estimar gastos para sua própria equipe, comece com um pequeno grupo piloto e use as ferramentas de rastreamento abaixo para estabelecer uma linha de base antes de um lançamento mais amplo.

12 

13Esta página aborda como [rastrear seus custos](#track-your-costs), [gerenciar custos para equipes](#managing-costs-for-teams) e [reduzir o uso de tokens](#reduce-token-usage).

14 

15## Rastreie seus custos

16 

17### Usando o comando `/usage`

18 

19<Note>

20 O bloco Session em `/usage` mostra o uso de tokens da API e é destinado a usuários de API. Assinantes do Claude Max e Pro têm uso incluído em sua assinatura, portanto, a figura de custo da sessão não é relevante para fins de faturamento. Os assinantes veem barras de uso do plano e estatísticas de atividade na mesma tela.

21</Note>

22 

23O comando `/usage` fornece estatísticas detalhadas de uso de tokens para sua sessão atual. A figura em dólares é uma estimativa calculada localmente a partir de contagens de tokens e pode diferir de sua fatura real. Para faturamento autorizado, consulte a página de Uso no [Claude Console](https://platform.claude.com/usage).

24 

25```text theme={null}

26Total cost: $0.55

27Total duration (API): 6m 19.7s

28Total duration (wall): 6h 33m 10.2s

29Total code changes: 0 lines added, 0 lines removed

30```

31 

32## Gerenciando custos para equipes

33 

34Ao usar a API Claude, você pode [definir limites de gastos do workspace](https://platform.claude.com/docs/pt/build-with-claude/workspaces#workspace-limits) no gasto total do workspace do Claude Code. Administradores podem [visualizar relatórios de custo e uso](https://platform.claude.com/docs/pt/build-with-claude/workspaces#usage-and-cost-tracking) no Console.

35 

36<Note>

37 Quando você autentica pela primeira vez o Claude Code com sua conta do Claude Console, um workspace chamado "Claude Code" é criado automaticamente para você. Este workspace fornece rastreamento e gerenciamento centralizado de custos para todo o uso do Claude Code em sua organização. Você não pode criar chaves de API para este workspace; é exclusivamente para autenticação e uso do Claude Code.

38 

39 Para organizações com limites de taxa personalizados, o tráfego do Claude Code neste workspace conta para os limites de taxa geral da API da sua organização. Você pode definir um [limite de taxa do workspace](https://platform.claude.com/docs/pt/api/rate-limits#setting-lower-limits-for-workspaces) na página Limits deste workspace no Claude Console para limitar a cota do Claude Code e proteger outras cargas de trabalho de produção.

40</Note>

41 

42No Bedrock, Vertex e Foundry, Claude Code não envia métricas da sua nuvem. Para obter métricas de custo, várias grandes empresas relataram usar [LiteLLM](/pt/llm-gateway#litellm-configuration), que é uma ferramenta de código aberto que ajuda empresas a [rastrear gastos por chave](https://docs.litellm.ai/docs/proxy/virtual_keys#tracking-spend). Este projeto não é afiliado à Anthropic e não foi auditado quanto à segurança.

43 

44### Recomendações de limite de taxa

45 

46Ao configurar Claude Code para equipes, considere estas recomendações de Token Por Minuto (TPM) e Requisição Por Minuto (RPM) por usuário com base no tamanho da sua organização:

47 

48| Tamanho da equipe | TPM por usuário | RPM por usuário |

49| ----------------- | --------------- | --------------- |

50| 1-5 usuários | 200k-300k | 5-7 |

51| 5-20 usuários | 100k-150k | 2.5-3.5 |

52| 20-50 usuários | 50k-75k | 1.25-1.75 |

53| 50-100 usuários | 25k-35k | 0.62-0.87 |

54| 100-500 usuários | 15k-20k | 0.37-0.47 |

55| 500+ usuários | 10k-15k | 0.25-0.35 |

56 

57Por exemplo, se você tiver 200 usuários, você pode solicitar 20k TPM para cada usuário, ou 4 milhões de TPM total (200\*20.000 = 4 milhões).

58 

59O TPM por usuário diminui conforme o tamanho da equipe cresce porque menos usuários tendem a usar Claude Code simultaneamente em organizações maiores. Esses limites de taxa se aplicam no nível da organização, não por usuário individual, o que significa que usuários individuais podem consumir temporariamente mais do que sua cota calculada quando outros não estão usando ativamente o serviço.

60 

61<Note>

62 Se você antecipar cenários com uso concorrente incomumente alto (como sessões de treinamento ao vivo com grandes grupos), você pode precisar de alocações de TPM mais altas por usuário.

63</Note>

64 

65### Custos de tokens de equipes de agentes

66 

67[Equipes de agentes](/pt/agent-teams) geram múltiplas instâncias do Claude Code, cada uma com sua própria janela de contexto. O uso de tokens escala com o número de colegas de equipe ativos e quanto tempo cada um executa.

68 

69Para manter os custos das equipes de agentes gerenciáveis:

70 

71* Use Sonnet para colegas de equipe. Ele equilibra capacidade e custo para tarefas de coordenação.

72* Mantenha equipes pequenas. Cada colega de equipe executa sua própria janela de contexto, portanto, o uso de tokens é aproximadamente proporcional ao tamanho da equipe.

73* Mantenha prompts de geração focados. Colegas de equipe carregam CLAUDE.md, servidores MCP e skills automaticamente, mas tudo no prompt de geração adiciona ao seu contexto desde o início.

74* Limpe equipes quando o trabalho estiver concluído. Colegas de equipe ativos continuam consumindo tokens mesmo se ociosos.

75* Equipes de agentes são desabilitadas por padrão. Defina `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` em seu [settings.json](/pt/settings) ou ambiente para habilitá-las. Veja [habilitar equipes de agentes](/pt/agent-teams#enable-agent-teams).

76 

77## Reduza o uso de tokens

78 

79Os custos de tokens escalam com o tamanho do contexto: quanto mais contexto Claude processa, mais tokens você usa. Claude Code otimiza automaticamente os custos através do prompt caching (que reduz custos para conteúdo repetido como prompts do sistema) e auto-compaction (que resume o histórico de conversa ao se aproximar dos limites de contexto).

80 

81As seguintes estratégias ajudam você a manter o contexto pequeno e reduzir custos por mensagem.

82 

83### Gerencie o contexto proativamente

84 

85Use `/usage` para verificar seu uso atual de tokens, ou [configure sua linha de status](/pt/statusline#context-window-usage) para exibi-la continuamente.

86 

87* **Limpe entre tarefas**: Use `/clear` para começar do zero ao mudar para trabalho não relacionado. Contexto obsoleto desperdiça tokens em cada mensagem subsequente. Use `/rename` antes de limpar para que você possa encontrar facilmente a sessão depois, então `/resume` para retornar a ela.

88* **Adicione instruções de compactação personalizadas**: `/compact Focus on code samples and API usage` diz a Claude o que preservar durante a sumarização.

89 

90Você também pode personalizar o comportamento de compactação em seu CLAUDE.md:

91 

92```markdown theme={null}

93# Compact instructions

94 

95When you are using compact, please focus on test output and code changes

96```

97 

98### Escolha o modelo certo

99 

100Sonnet lida bem com a maioria das tarefas de codificação e custa menos que Opus. Reserve Opus para decisões arquitetônicas complexas ou raciocínio em múltiplas etapas. Use `/model` para alternar modelos no meio da sessão, ou defina um padrão em `/config`. Para tarefas simples de subagente, especifique `model: haiku` em sua [configuração de subagente](/pt/sub-agents#choose-a-model).

101 

102### Reduza a sobrecarga do servidor MCP

103 

104As definições de ferramentas MCP são [adiadas por padrão](/pt/mcp#scale-with-mcp-tool-search), portanto apenas nomes de ferramentas entram no contexto até Claude usar uma ferramenta específica. Execute `/context` para ver o que está consumindo espaço.

105 

106* **Prefira ferramentas CLI quando disponíveis**: Ferramentas como `gh`, `aws`, `gcloud` e `sentry-cli` são ainda mais eficientes em contexto do que servidores MCP porque não adicionam nenhuma listagem por ferramenta. Claude pode executar comandos CLI diretamente.

107* **Desabilite servidores não utilizados**: Execute `/mcp` para ver servidores configurados e desabilite qualquer um que você não esteja usando ativamente.

108 

109### Instale plugins de inteligência de código para linguagens tipadas

110 

111[Plugins de inteligência de código](/pt/discover-plugins#code-intelligence) dão a Claude navegação de símbolo precisa em vez de busca baseada em texto, reduzindo leituras de arquivo desnecessárias ao explorar código desconhecido. Uma única chamada "ir para definição" substitui o que poderia ser um grep seguido de leitura de múltiplos arquivos candidatos. Servidores de linguagem instalados também relatam erros de tipo automaticamente após edições, portanto Claude detecta erros sem executar um compilador.

112 

113### Descarregue o processamento para hooks e skills

114 

115[Hooks](/pt/hooks) personalizados podem pré-processar dados antes de Claude vê-los. Em vez de Claude ler um arquivo de log de 10.000 linhas para encontrar erros, um hook pode fazer grep para `ERROR` e retornar apenas linhas correspondentes, reduzindo contexto de dezenas de milhares de tokens para centenas.

116 

117Uma [skill](/pt/skills) pode dar a Claude conhecimento de domínio para que não tenha que explorar. Por exemplo, uma skill "codebase-overview" poderia descrever a arquitetura do seu projeto, diretórios-chave e convenções de nomenclatura. Quando Claude invoca a skill, obtém este contexto imediatamente em vez de gastar tokens lendo múltiplos arquivos para entender a estrutura.

118 

119Por exemplo, este hook PreToolUse filtra a saída de teste para mostrar apenas falhas:

120 

121<Tabs>

122 <Tab title="settings.json">

123 Adicione isto ao seu [settings.json](/pt/settings#settings-files) para executar o hook antes de cada comando Bash:

124 

125 ```json theme={null}

126 {

127 "hooks": {

128 "PreToolUse": [

129 {

130 "matcher": "Bash",

131 "hooks": [

132 {

133 "type": "command",

134 "command": "~/.claude/hooks/filter-test-output.sh"

135 }

136 ]

137 }

138 ]

139 }

140 }

141 ```

142 </Tab>

143 

144 <Tab title="filter-test-output.sh">

145 O hook chama este script, que verifica se o comando é um executor de teste e o modifica para mostrar apenas falhas:

146 

147 ```bash theme={null}

148 #!/bin/bash

149 input=$(cat)

150 cmd=$(echo "$input" | jq -r '.tool_input.command')

151 

152 # If running tests, filter to show only failures

153 if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then

154 filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"

155 echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"

156 else

157 echo "{}"

158 fi

159 ```

160 </Tab>

161</Tabs>

162 

163### Mova instruções de CLAUDE.md para skills

164 

165Seu arquivo [CLAUDE.md](/pt/memory) é carregado no contexto no início da sessão. Se contiver instruções detalhadas para fluxos de trabalho específicos (como revisões de PR ou migrações de banco de dados), esses tokens estão presentes mesmo quando você está fazendo trabalho não relacionado. [Skills](/pt/skills) carregam sob demanda apenas quando invocadas, portanto mover instruções especializadas para skills mantém seu contexto base menor. Procure manter CLAUDE.md com menos de 200 linhas incluindo apenas essenciais.

166 

167### Ajuste o pensamento estendido

168 

169O pensamento estendido é habilitado por padrão porque melhora significativamente o desempenho em tarefas complexas de planejamento e raciocínio. Tokens de pensamento são faturados como tokens de saída, e o orçamento padrão pode ser dezenas de milhares de tokens por solicitação dependendo do modelo. Para tarefas mais simples onde raciocínio profundo não é necessário, você pode reduzir custos baixando o [nível de esforço](/pt/model-config#adjust-effort-level) com `/effort` ou em `/model`, desabilitando pensamento em `/config`, ou baixando o orçamento com `MAX_THINKING_TOKENS=8000`.

170 

171### Delegue operações verbosas para subagentes

172 

173Executar testes, buscar documentação ou processar arquivos de log pode consumir contexto significativo. Delegue estes para [subagentes](/pt/sub-agents#isolate-high-volume-operations) para que a saída verbosa permaneça no contexto do subagente enquanto apenas um resumo retorna à sua conversa principal.

174 

175### Gerencie custos de equipes de agentes

176 

177Equipes de agentes usam aproximadamente 7x mais tokens do que sessões padrão quando colegas de equipe executam em modo de plano, porque cada colega de equipe mantém sua própria janela de contexto e executa como uma instância Claude separada. Mantenha tarefas de equipe pequenas e auto-contidas para limitar o uso de tokens por colega de equipe. Veja [equipes de agentes](/pt/agent-teams) para detalhes.

178 

179### Escreva prompts específicos

180 

181Solicitações vagas como "melhorar esta base de código" disparam varredura ampla. Solicitações específicas como "adicionar validação de entrada à função de login em auth.ts" deixam Claude trabalhar eficientemente com leituras de arquivo mínimas.

182 

183### Trabalhe eficientemente em tarefas complexas

184 

185Para trabalho mais longo ou complexo, esses hábitos ajudam a evitar tokens desperdiçados por seguir o caminho errado:

186 

187* **Use modo de plano para tarefas complexas**: Pressione Shift+Tab para entrar em [modo de plano](/pt/common-workflows#use-plan-mode-for-safe-code-analysis) antes da implementação. Claude explora a base de código e propõe uma abordagem para sua aprovação, prevenindo retrabalho caro quando a direção inicial está errada.

188* **Corrija o curso cedo**: Se Claude começar a seguir a direção errada, pressione Escape para parar imediatamente. Use `/rewind` ou toque duplo em Escape para restaurar conversa e código para um checkpoint anterior.

189* **Dê alvos de verificação**: Inclua casos de teste, cole capturas de tela ou defina saída esperada em seu prompt. Quando Claude pode verificar seu próprio trabalho, detecta problemas antes de você precisar solicitar correções.

190* **Teste incrementalmente**: Escreva um arquivo, teste-o, depois continue. Isto detecta problemas cedo quando são baratos de corrigir.

191 

192## Uso de tokens em segundo plano

193 

194Claude Code usa tokens para algumas funcionalidades em segundo plano mesmo quando ocioso:

195 

196* **Sumarização de conversa**: Trabalhos em segundo plano que resumem conversas anteriores para o recurso `claude --resume`

197* **Processamento de comando**: Alguns comandos como `/usage` podem gerar solicitações para verificar status

198 

199Esses processos em segundo plano consomem uma pequena quantidade de tokens (tipicamente menos de \$0.04 por sessão) mesmo sem interação ativa.

200 

201## Entendendo mudanças no comportamento do Claude Code

202 

203Claude Code recebe regularmente atualizações que podem mudar como os recursos funcionam, incluindo relatório de custos. Execute `claude --version` para verificar sua versão atual. Para perguntas específicas de faturamento, entre em contato com o suporte da Anthropic através de sua [conta Console](https://platform.claude.com/login).

data-usage.md +124 −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# Uso de dados

6 

7> Saiba mais sobre as políticas de uso de dados da Anthropic para Claude

8 

9## Políticas de dados

10 

11### Política de treinamento de dados

12 

13**Usuários consumidores (planos Free, Pro e Max)**:

14Oferecemos a você a opção de permitir que seus dados sejam usados para melhorar futuros modelos Claude. Treinaremos novos modelos usando dados de contas Free, Pro e Max quando essa configuração estiver ativada (inclusive quando você usa Claude Code dessas contas).

15 

16**Usuários comerciais**: (planos Team e Enterprise, API, plataformas de terceiros e Claude Gov) mantêm as políticas existentes: a Anthropic não treina modelos generativos usando código ou prompts enviados para Claude Code sob termos comerciais, a menos que o cliente tenha optado por fornecer seus dados para melhorias de modelo (por exemplo, o [Development Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program)).

17 

18### Development Partner Program

19 

20Se você optar explicitamente por métodos para nos fornecer materiais para treinar, como através do [Development Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program), podemos usar esses materiais fornecidos para treinar nossos modelos. Um administrador da organização pode optar explicitamente pelo Development Partner Program para sua organização. Observe que este programa está disponível apenas para API de primeira parte da Anthropic, e não para usuários de Bedrock ou Vertex.

21 

22### Feedback usando o comando `/feedback`

23 

24Se você optar por nos enviar feedback sobre Claude Code usando o comando `/feedback`, podemos usar seu feedback para melhorar nossos produtos e serviços. As transcrições compartilhadas via `/feedback` são retidas por 5 anos.

25 

26### Pesquisas de qualidade de sessão

27 

28Quando você vê o prompt "How is Claude doing this session?" em Claude Code, responder a esta pesquisa, inclusive selecionando "Dismiss", registra apenas sua classificação. Não coletamos ou armazenamos nenhuma transcrição de conversa, entradas, saídas ou outros dados de sessão como parte da pesquisa de classificação em si. Diferentemente do feedback com polegar para cima/para baixo ou relatórios `/feedback`, esta pesquisa de qualidade de sessão é uma métrica simples de satisfação do produto.

29 

30Após a pesquisa de classificação, você pode ver uma pergunta de acompanhamento separada perguntando "Can Anthropic look at your session transcript to help us improve Claude Code?" (Pode a Anthropic examinar sua transcrição de sessão para nos ajudar a melhorar Claude Code?). Esta é uma segunda etapa opcional distinta da classificação:

31 

32* **Yes** (Sim): carrega sua transcrição de conversa, qualquer transcrição de subagentos e o arquivo de log de sessão bruto do disco para a Anthropic. Padrões conhecidos de chave de API e token são redatados antes do carregamento. Código-fonte, conteúdo de arquivo e outro conteúdo de conversa são carregados como estão. As transcrições compartilhadas são retidas por até 6 meses.

33* **No** (Não): recusa sem enviar nada

34* **Don't ask again** (Não perguntar novamente): recusa e impede que este acompanhamento apareça em futuras sessões

35 

36Nada é carregado a menos que você selecione explicitamente **Yes**. Organizações com [zero data retention](/pt/zero-data-retention), ou onde o feedback de produto é desabilitado pela política da organização, nunca veem este acompanhamento. Suas respostas a esta pesquisa, inclusive transcrições de sessão enviadas após a pesquisa de classificação, não afetam suas preferências de treinamento de dados e não podem ser usadas para treinar nossos modelos de IA.

37 

38Para desabilitar essas pesquisas, defina `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. A pesquisa também é desabilitada quando `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está definido. Para controlar a frequência em vez de desabilitar, defina [`feedbackSurveyRate`](/pt/settings#available-settings) em seu arquivo de configurações para uma probabilidade entre `0` e `1`.

39 

40### Retenção de dados

41 

42A Anthropic retém dados de Claude Code com base no tipo de conta e preferências.

43 

44**Usuários consumidores (planos Free, Pro e Max)**:

45 

46* Usuários que permitem o uso de dados para melhorias de modelo: período de retenção de 5 anos para suportar desenvolvimento de modelo e melhorias de segurança

47* Usuários que não permitem o uso de dados para melhorias de modelo: período de retenção de 30 dias

48* As configurações de privacidade podem ser alteradas a qualquer momento em [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls).

49 

50**Usuários comerciais (Team, Enterprise e API)**:

51 

52* Padrão: período de retenção de 30 dias

53* [Zero data retention](/pt/zero-data-retention): disponível para Claude Code no Claude for Enterprise. ZDR é habilitado por organização; cada nova organização deve ter ZDR habilitado separadamente pela sua equipe de conta

54* Cache local: os clientes de Claude Code armazenam transcrições de sessão localmente em texto simples em `~/.claude/projects/` por 30 dias por padrão para permitir retomada de sessão. Ajuste o período com `cleanupPeriodDays`. Consulte [dados da aplicação](/pt/claude-directory#application-data) para saber o que é armazenado e como limpá-lo.

55 

56Você pode excluir sessões individuais de Claude Code na web a qualquer momento. Excluir uma sessão remove permanentemente os dados de evento da sessão. Para instruções sobre como excluir sessões, consulte [Excluir sessões](/pt/claude-code-on-the-web#delete-sessions).

57 

58Saiba mais sobre práticas de retenção de dados em nosso [Privacy Center](https://privacy.anthropic.com/).

59 

60Para detalhes completos, consulte nossos [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms) (para usuários de Team, Enterprise e API) ou [Consumer Terms](https://www.anthropic.com/legal/consumer-terms) (para usuários de Free, Pro e Max) e [Privacy Policy](https://www.anthropic.com/legal/privacy).

61 

62## Acesso a dados

63 

64Para todos os usuários de primeira parte, você pode aprender mais sobre quais dados são registrados para [Claude Code local](#local-claude-code-data-flow-and-dependencies) e [Claude Code remoto](#cloud-execution-data-flow-and-dependencies). As sessões de [Remote Control](/pt/remote-control) seguem o fluxo de dados local, pois toda a execução acontece em sua máquina. Observe que para Claude Code remoto, Claude acessa o repositório onde você inicia sua sessão de Claude Code. Claude não acessa repositórios que você conectou mas não iniciou uma sessão.

65 

66## Local Claude Code: Fluxo de dados e dependências

67 

68O diagrama abaixo mostra como Claude Code se conecta a serviços externos durante a instalação e operação normal. Linhas sólidas indicam conexões obrigatórias, enquanto linhas tracejadas representam fluxos de dados opcionais ou iniciados pelo usuário.

69 

70<img src="https://mintcdn.com/claude-code/YcBW2H7CArGcduPb/images/claude-code-data-flow.svg?fit=max&auto=format&n=YcBW2H7CArGcduPb&q=85&s=b600a89f84fc86f9ff7be00a466c0635" alt="Diagram showing Claude Code's external connections: install/update connects to the distribution server, and user requests connect to Anthropic services including Console auth, public-api, and optionally Statsig, Sentry, and bug reporting" width="720" height="520" data-path="images/claude-code-data-flow.svg" />

71 

72Claude Code é executado localmente. Para interagir com o LLM, Claude Code envia dados pela rede. Esses dados incluem todos os prompts do usuário e saídas do modelo, criptografados em trânsito via TLS 1.2+. Claude Code é compatível com a maioria dos VPNs e proxies LLM populares.

73 

74A criptografia em repouso depende do seu provedor de modelo:

75 

76| Provedor | Criptografia em repouso |

77| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |

78| Anthropic API | Criptografia de disco em nível de infraestrutura (AES-256). Ative [Zero Data Retention](/pt/zero-data-retention) para nenhuma persistência no servidor. |

79| Amazon Bedrock | AES-256 com chaves gerenciadas pela AWS. Chaves gerenciadas pelo cliente disponíveis via AWS KMS. |

80| Google Cloud Vertex AI | Chaves de criptografia gerenciadas pelo Google. CMEK disponível. |

81| Microsoft Foundry | Solicitações são roteadas para infraestrutura Anthropic com criptografia de disco AES-256. |

82 

83Claude Code é construído nas APIs da Anthropic. Para detalhes sobre controles de segurança da API, incluindo procedimentos de logging de API, consulte os artefatos de conformidade no [Anthropic Trust Center](https://trust.anthropic.com).

84 

85### Cloud execution: Fluxo de dados e dependências

86 

87Ao usar [Claude Code on the web](/pt/claude-code-on-the-web), as sessões são executadas em máquinas virtuais gerenciadas pela Anthropic em vez de localmente. Em ambientes de nuvem:

88 

89* **Armazenamento de código e dados:** Seu repositório é clonado para uma VM isolada. Código e dados de sessão estão sujeitos às políticas de retenção e uso para seu tipo de conta (consulte a seção Retenção de dados acima)

90* **Credenciais:** A autenticação do GitHub é tratada através de um proxy seguro; suas credenciais do GitHub nunca entram na sandbox

91* **Tráfego de rede:** Todo o tráfego de saída passa por um proxy de segurança para logging de auditoria e prevenção de abuso

92* **Dados de sessão:** Prompts, alterações de código e saídas seguem as mesmas políticas de dados que o uso local de Claude Code

93 

94Para detalhes de segurança sobre execução em nuvem, consulte [Security](/pt/security#cloud-execution-security).

95 

96## Serviços de telemetria

97 

98Claude Code se conecta de máquinas dos usuários ao serviço Statsig para registrar métricas operacionais como latência, confiabilidade e padrões de uso. Este logging não inclui nenhum código ou caminho de arquivo. Os dados são criptografados em trânsito usando TLS e em repouso usando criptografia AES de 256 bits. Leia mais na [documentação de segurança do Statsig](https://www.statsig.com/trust/security). Para desabilitar a telemetria do Statsig, defina a variável de ambiente `DISABLE_TELEMETRY`.

99 

100Claude Code se conecta de máquinas dos usuários ao Sentry para logging de erros operacionais. Os dados são criptografados em trânsito usando TLS e em repouso usando criptografia AES de 256 bits. Leia mais na [documentação de segurança do Sentry](https://sentry.io/security/). Para desabilitar o logging de erros, defina a variável de ambiente `DISABLE_ERROR_REPORTING`.

101 

102Quando os usuários executam o comando `/feedback`, uma cópia do histórico completo de conversa incluindo código é enviada para a Anthropic. Os dados são criptografados em trânsito usando TLS. Opcionalmente, um problema do GitHub é criado no repositório público. Para desabilitar, defina a variável de ambiente `DISABLE_FEEDBACK_COMMAND` como `1`.

103 

104## Comportamentos padrão por provedor de API

105 

106Por padrão, relatório de erros, telemetria e relatório de bugs são desabilitados ao usar Bedrock, Vertex ou Foundry. Pesquisas de qualidade de sessão e a verificação de segurança de domínio WebFetch são exceções e são executadas independentemente do provedor. Você pode desabilitar todo o tráfego não essencial, incluindo pesquisas, de uma vez definindo `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Esta variável não afeta a verificação WebFetch, que tem seu próprio opt-out. Aqui estão os comportamentos padrão completos:

107 

108| Serviço | Claude API | Vertex API | Bedrock API | Foundry API |

109| ------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ |

110| **Statsig (Métricas)** | Padrão ativado.<br />`DISABLE_TELEMETRY=1` para desabilitar. | Padrão desativado.<br />`CLAUDE_CODE_USE_VERTEX` deve ser 1. | Padrão desativado.<br />`CLAUDE_CODE_USE_BEDROCK` deve ser 1. | Padrão desativado.<br />`CLAUDE_CODE_USE_FOUNDRY` deve ser 1. |

111| **Sentry (Erros)** | Padrão ativado.<br />`DISABLE_ERROR_REPORTING=1` para desabilitar. | Padrão desativado.<br />`CLAUDE_CODE_USE_VERTEX` deve ser 1. | Padrão desativado.<br />`CLAUDE_CODE_USE_BEDROCK` deve ser 1. | Padrão desativado.<br />`CLAUDE_CODE_USE_FOUNDRY` deve ser 1. |

112| **Claude API (relatórios `/feedback`)** | Padrão ativado.<br />`DISABLE_FEEDBACK_COMMAND=1` para desabilitar. | Padrão desativado.<br />`CLAUDE_CODE_USE_VERTEX` deve ser 1. | Padrão desativado.<br />`CLAUDE_CODE_USE_BEDROCK` deve ser 1. | Padrão desativado.<br />`CLAUDE_CODE_USE_FOUNDRY` deve ser 1. |

113| **Pesquisas de qualidade de sessão** | Padrão ativado.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` para desabilitar. | Padrão ativado.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` para desabilitar. | Padrão ativado.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` para desabilitar. | Padrão ativado.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` para desabilitar. |

114| **Verificação de segurança de domínio WebFetch** | Padrão ativado.<br />`skipWebFetchPreflight: true` em [settings](/pt/settings) para desabilitar. | Padrão ativado.<br />`skipWebFetchPreflight: true` em [settings](/pt/settings) para desabilitar. | Padrão ativado.<br />`skipWebFetchPreflight: true` em [settings](/pt/settings) para desabilitar. | Padrão ativado.<br />`skipWebFetchPreflight: true` em [settings](/pt/settings) para desabilitar. |

115 

116Todas as variáveis de ambiente podem ser verificadas em `settings.json` (consulte [referência de configurações](/pt/settings)).

117 

118A partir da v2.1.126, quando uma plataforma host define `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`, as métricas Statsig são ativadas por padrão para Vertex, Bedrock e Foundry, e seguem o opt-out padrão `DISABLE_TELEMETRY`. O relatório de erros Sentry e os relatórios `/feedback` permanecem desativados por padrão nesses provedores.

119 

120### Verificação de segurança de domínio WebFetch

121 

122Antes de buscar uma URL, a ferramenta WebFetch envia o nome do host solicitado para `api.anthropic.com` para verificá-lo em relação a uma lista de bloqueio de segurança mantida pela Anthropic. Apenas o nome do host é enviado, não a URL completa, caminho ou conteúdo da página. Os resultados são armazenados em cache por nome do host por cinco minutos.

123 

124Esta verificação é executada independentemente de qual provedor de modelo você usa e não é afetada por `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Se sua rede bloqueia `api.anthropic.com`, as solicitações WebFetch falham até que você permita o domínio ou defina `skipWebFetchPreflight: true` em [settings](/pt/settings). Desabilitar a verificação significa que WebFetch tenta recuperar qualquer URL sem consultar a lista de bloqueio, portanto combine com [regras de permissão `WebFetch`](/pt/permissions#webfetch) se precisar restringir quais domínios Claude pode acessar.

debug-your-config.md +97 −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# Depure sua configuração

6 

7> Diagnostique por que CLAUDE.md, configurações, hooks, servidores MCP ou skills não estão tendo efeito. Use /context, /doctor, /hooks e /mcp para ver o que realmente foi carregado.

8 

9Quando Claude ignora uma instrução ou um recurso que você configurou não aparece, a causa geralmente é que o arquivo não foi carregado, foi carregado de um local diferente do esperado, ou outro arquivo o sobrescreveu. Este guia mostra como inspecionar o que Claude Code realmente carregou para que você possa estreitar qual se aplica.

10 

11Para problemas de instalação, autenticação e conectividade, consulte [Troubleshooting installation and login](/pt/troubleshoot-install) em vez disso.

12 

13## Veja o que foi carregado no contexto

14 

15O comando `/context` mostra tudo que ocupa a janela de contexto para a sessão atual, dividido por categoria: prompt do sistema, arquivos de memória, skills, ferramentas MCP e mensagens de conversa. Execute-o primeiro para confirmar se seu `CLAUDE.md`, regras ou descrições de skill estão presentes.

16 

17Para detalhes sobre uma categoria específica, acompanhe com o comando dedicado:

18 

19| Comando | Mostra |

20| :------------- | :--------------------------------------------------------------------------------------- |

21| `/memory` | Quais arquivos `CLAUDE.md` e rules foram carregados, além de entradas de auto-memória |

22| `/skills` | Skills disponíveis de fontes de projeto, usuário e plugin |

23| `/agents` | Subagentes configurados e suas configurações |

24| `/hooks` | Configurações de hook ativas |

25| `/mcp` | Servidores MCP conectados e seu status |

26| `/permissions` | Regras de permissão e negação resolvidas atualmente em vigor |

27| `/doctor` | Diagnósticos de configuração: chaves inválidas, erros de schema, saúde da instalação |

28| `/status` | Fontes de configurações ativas, incluindo se as configurações gerenciadas estão em vigor |

29 

30Se um arquivo de memória estiver faltando em `/memory`, verifique sua localização em relação a [como os arquivos CLAUDE.md são carregados](/pt/memory#how-claude-md-files-load). Os arquivos `CLAUDE.md` do subdiretório são carregados sob demanda quando Claude lê um arquivo nesse diretório com a ferramenta Read, não no início da sessão.

31 

32Se `/memory` confirmar que o arquivo foi carregado mas Claude ainda não está seguindo uma instrução particular, o problema provavelmente é como a instrução é escrita e não se foi carregada. CLAUDE.md funciona bem para o tipo de orientação que você daria a um novo colega de equipe, como convenções de projeto, comandos de compilação e onde os arquivos pertencem.

33 

34A aderência diminui quando uma instrução é vaga o suficiente para ser interpretada de várias maneiras, quando dois arquivos dão direções conflitantes, ou quando o arquivo cresceu o suficiente para que regras individuais recebam menos atenção. [Escreva instruções eficazes](/pt/memory#write-effective-instructions) cobre os padrões de especificidade, tamanho e estrutura que mantêm a aderência alta.

35 

36<Note>

37 CLAUDE.md e permissões resolvem problemas diferentes. CLAUDE.md diz a Claude como seu projeto funciona para que ele tome boas decisões. [Permissões](/pt/permissions) e [hooks](/pt/hooks) aplicam limites independentemente do que Claude decide. Use CLAUDE.md para "fazemos assim aqui". Use permissões ou hooks para limites de segurança e qualquer coisa que nunca deve acontecer, onde você precisa de uma garantia em vez de orientação.

38</Note>

39 

40## Verifique as configurações resolvidas

41 

42As configurações se mesclam entre escopos gerenciados, de usuário, de projeto e locais. As configurações gerenciadas sempre vencem quando presentes. Entre o resto, o escopo mais próximo substitui o mais amplo na ordem local, depois projeto, depois usuário. Algumas configurações também podem ser definidas por sinalizadores de linha de comando ou [variáveis de ambiente](/pt/env-vars), que atuam como outra camada de substituição. Quando uma configuração não parece se aplicar, o valor que você definiu geralmente está sendo substituído por outro escopo ou uma variável de ambiente.

43 

44Execute `/doctor` para validar seus arquivos de configuração e expor chaves inválidas ou erros de schema. Execute `/status` para ver quais fontes de configurações estão ativas, incluindo se as configurações gerenciadas estão em vigor. Para entender qual escopo vence para uma chave específica, consulte [Como os escopos interagem](/pt/settings#how-scopes-interact).

45 

46## Verifique os servidores MCP

47 

48Execute `/mcp` para ver cada servidor configurado, seu status de conexão e se você o aprovou para o projeto atual. Um servidor pode ser definido corretamente mas ainda não fornecer ferramentas por alguns motivos comuns:

49 

50* Servidores com escopo de projeto em `.mcp.json` requerem uma aprovação única. Se o prompt foi descartado, o servidor permanece desabilitado até que você o aprove em `/mcp`.

51* Um servidor que falha ao iniciar aparece como falho em `/mcp`. Caminhos de arquivo relativos em `command` ou `args` são uma causa frequente, pois são resolvidos em relação ao diretório de onde você iniciou Claude Code em vez da localização de `.mcp.json`.

52* Um servidor que aparece como conectado mas lista zero ferramentas iniciou com sucesso mas não está retornando uma lista de ferramentas. Selecione **Reconnect** em `/mcp`. Se a contagem permanecer em zero, execute `claude --debug mcp` para ver a saída stderr do servidor.

53 

54Para localizações de configuração e regras de escopo, consulte [MCP](/pt/mcp).

55 

56## Verifique hooks

57 

58Execute `/hooks` para listar cada hook registrado para a sessão atual, agrupado por evento. Se um hook que você definiu não aparecer, ele não está sendo lido: hooks vão sob a chave `"hooks"` em um arquivo de configurações, não em um arquivo autônomo.

59 

60Se o hook aparecer mas não disparar, o matcher é a causa usual. O campo `matcher` é uma única string que usa `|` para corresponder a vários nomes de ferramentas, por exemplo `"Edit|Write"`. Um nome de ferramenta digitado incorretamente falha silenciosamente porque o matcher nunca corresponde. Um valor de array é um erro de schema: Claude Code mostra um aviso de erro de configurações, `/doctor` relata a falha de validação e a entrada do hook é descartada para que não apareça em `/hooks`.

61 

62As edições em `settings.json` entram em vigor na sessão em execução após um breve atraso de estabilidade de arquivo. Você não precisa reiniciar. Se `/hooks` ainda mostrar a definição antiga alguns segundos após salvar, execute `/hooks` novamente para atualizar a visualização.

63 

64Se `/hooks` mostrar o hook mas ele ainda não disparar, o próximo passo é observar a avaliação do hook ao vivo. Inicie uma sessão com `claude --debug hooks` e dispare a chamada de ferramenta. O log de depuração registra cada evento, quais matchers foram verificados e o código de saída e saída do hook. Consulte [Debug hooks](/pt/hooks#debug-hooks) para o formato do log e [troubleshooting de hooks](/pt/hooks-guide#limitations-and-troubleshooting) para padrões de falha comuns.

65 

66## Causas comuns

67 

68A maioria das surpresas de configuração rastreia um pequeno conjunto de regras de localização e sintaxe. Verifique estas antes de assumir um bug:

69 

70| Sintoma | Causa | Correção |

71| :----------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

72| Hook nunca dispara | `matcher` é um array JSON em vez de uma string | Use uma única string com `\|` para corresponder a várias ferramentas, por exemplo `"Edit\|Write"`. Consulte [padrões de matcher](/pt/hooks#matcher-patterns). |

73| Hook nunca dispara | O valor de `matcher` está em minúsculas, por exemplo `"bash"` | A correspondência diferencia maiúsculas de minúsculas. Os nomes das ferramentas são capitalizados: `Bash`, `Edit`, `Write`, `Read`. |

74| Hook nunca dispara | Hooks estão em um arquivo `.claude/hooks.json` autônomo | Não há arquivo de hooks autônomo. Defina hooks sob a chave `"hooks"` em `settings.json`. Consulte [configuração de hook](/pt/hooks). |

75| Permissões, hooks ou env definidos globalmente são ignorados | A configuração foi adicionada a `~/.claude.json` | `~/.claude.json` contém estado do aplicativo e alternâncias de UI. `permissions`, `hooks` e `env` pertencem a `~/.claude/settings.json`. Estes são dois arquivos diferentes. |

76| Um valor de `settings.json` parece ser ignorado | A mesma chave está definida em `settings.local.json` | `settings.local.json` substitui `settings.json`, e ambos substituem `~/.claude/settings.json`. Consulte [precedência de configurações](/pt/settings#how-scopes-interact). |

77| Skill não aparece em `/skills` | O arquivo de skill está em `.claude/skills/name.md` em vez de em uma pasta | Use uma pasta com `SKILL.md` dentro: `.claude/skills/name/SKILL.md`. |

78| Skill aparece em `/skills` mas Claude nunca o invoca | Skill tem `disable-model-invocation: true` em seu frontmatter, ou sua descrição não corresponde a como você frasa a solicitação | Verifique o badge em `/skills`: um rótulo "user-only" significa que Claude não o acionará por conta própria. Consulte [invocação de skill](/pt/skills). |

79| As instruções de `CLAUDE.md` do subdiretório parecem ser ignoradas | Os arquivos do subdiretório são carregados sob demanda, não no início da sessão | Eles são carregados quando Claude lê um arquivo nesse diretório com a ferramenta Read, não no lançamento e não ao escrever ou criar arquivos lá. Consulte [como os arquivos CLAUDE.md são carregados](/pt/memory#how-claude-md-files-load). |

80| Subagente ignora as instruções de `CLAUDE.md` | Subagentes nem sempre herdam memória de projeto | Coloque regras críticas no corpo do arquivo do agente, que se torna o prompt do sistema do subagente. Consulte [configuração de subagente](/pt/sub-agents). |

81| A lógica de limpeza nunca é executada no final da sessão | Nenhum hook `SessionEnd` configurado | Adicione um hook `SessionEnd` em `settings.json`. Consulte a [lista de eventos de hook](/pt/hooks#hook-events). |

82| Servidores MCP em `.mcp.json` nunca são carregados | O arquivo está sob `.claude/` ou usa o formato de configuração do Claude Desktop | A configuração MCP do projeto vai na raiz do repositório como `.mcp.json`, não dentro de `.claude/`. Consulte [configuração MCP](/pt/mcp). |

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

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

85| Servidor MCP inicia sem variáveis de ambiente esperadas | As variáveis estão em `settings.json` `env`, que não se propaga para processos filhos MCP | Defina `env` por servidor dentro de `.mcp.json` em vez disso. |

86| 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](/pt/hooks-guide) ou o [sandbox](/pt/sandboxing) para uma garantia difícil. |

87 

88## Recursos relacionados

89 

90Para referência completa em cada superfície de configuração, consulte a página dedicada:

91 

92* **[Referência do diretório `.claude`](/pt/claude-directory)**: cada localização de arquivo de configuração e o que o lê

93* **[Configurações](/pt/settings)**: ordem de precedência e a lista completa de chaves

94* **[Referência de hooks](/pt/hooks)**: nomes de eventos, payloads e formato de saída `--debug hooks`

95* **[MCP](/pt/mcp)**: configuração de servidor, aprovação e saída `/mcp`

96* **[Solucionar problemas de instalação e login](/pt/troubleshoot-install)**: `comando não encontrado`, PATH e problemas de autenticação

97* **[Solução de problemas](/pt/troubleshooting)**: desempenho, travamentos e problemas de busca

desktop.md +761 −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# Use Claude Code Desktop

6 

7> Aproveite ao máximo o Claude Code Desktop: sessões paralelas com isolamento Git, layout de painel com arrastar e soltar, terminal integrado e editor de arquivo, chats laterais, computer use, Dispatch sessions do seu telefone, revisão visual de diff, visualizações de aplicativos, monitoramento de PR, conectores e configuração corporativa.

8 

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 

11<CardGroup cols={2}>

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

13 Universal build for Intel and Apple Silicon

14 </Card>

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

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23Apó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](/pt/desktop-quickstart).

24 

25Na aba Code, cada conversa é uma **sessão**: ela tem seu próprio histórico de chat, pasta de projeto e alterações de código, independente de qualquer outra sessão. A barra lateral lista suas sessões e permite que você execute várias em paralelo. Dentro de uma sessão você pode:

26 

27* [Revisar e comentar em diffs](#review-changes-with-diff-view), depois [monitorar o PR resultante através do CI](#monitor-pull-request-status)

28* [Visualizar seu aplicativo em execução](#preview-your-app) em um navegador integrado enquanto Claude verifica suas próprias alterações

29* [Organizar painéis](#arrange-your-workspace) para o chat, diff, visualização, terminal e editor de arquivo lado a lado

30* Fazer uma [pergunta lateral](#ask-a-side-question-without-derailing-the-session) que usa o contexto da sessão sem desviá-la

31* [Conectar ferramentas externas](#connect-external-tools) como GitHub, Slack e Linear

32* Permitir que Claude [abra aplicativos e controle sua tela](#let-claude-use-your-computer)

33* Executar em sua máquina, na [nuvem](#run-long-running-tasks-remotely), ou sobre [SSH](#ssh-sessions)

34 

35Para [trabalho recorrente agendado](/pt/desktop-scheduled-tasks), [atalhos de teclado](#keyboard-shortcuts), ou [envio de tarefas do seu telefone](#sessions-from-dispatch), consulte as páginas e seções vinculadas. Se você já usa o CLI baseado em terminal, consulte a [comparação CLI](#coming-from-the-cli) para ver o que é transferido.

36 

37## Iniciar uma sessão

38 

39Antes de enviar sua primeira mensagem, configure quatro coisas na área de prompt:

40 

41* **Ambiente**: escolha onde Claude é executado. Selecione **Local** para sua máquina, **Remote** para sessões em nuvem hospedadas pela Anthropic, ou uma [**conexão SSH**](#ssh-sessions) para uma máquina remota que você gerencia. Veja [configuração de ambiente](#environment-configuration).

42* **Pasta do projeto**: selecione a pasta ou repositório em que Claude trabalha. Para sessões remotas, você pode adicionar [múltiplos repositórios](#run-long-running-tasks-remotely).

43* **Modelo**: escolha um [modelo](/pt/model-config#available-models) no menu suspenso ao lado do botão enviar. Você pode alterar isso durante a sessão.

44* **Modo de permissão**: escolha quanto de autonomia Claude tem no [seletor de modo](#choose-a-permission-mode). Você pode alterar isso durante a sessão.

45 

46Digite sua tarefa e pressione **Enter** para começar. Cada sessão rastreia seu próprio contexto e alterações independentemente.

47 

48## Trabalhar com código

49 

50Dê a Claude o contexto certo, controle quanto ele faz por conta própria e revise o que ele alterou.

51 

52### Use a caixa de prompt

53 

54Digite o que você quer que Claude faça e pressione **Enter** para enviar. Claude lê seus arquivos de projeto, faz alterações e executa comandos com base no seu [modo de permissão](#choose-a-permission-mode). Você pode interromper Claude a qualquer momento: clique no botão parar ou digite sua correção e pressione **Enter**. Claude para o que está fazendo e se ajusta com base em sua entrada.

55 

56O botão **+** ao lado da caixa de prompt oferece acesso a anexos de arquivo, [skills](#use-skills), [conectores](#connect-external-tools) e [plugins](#install-plugins).

57 

58### Adicionar arquivos e contexto aos prompts

59 

60A caixa de prompt suporta duas maneiras de trazer contexto externo:

61 

62* **@mention de arquivos**: digite `@` seguido de um nome de arquivo para adicionar um arquivo ao contexto da conversa. Claude pode então ler e referenciar esse arquivo. @mention não está disponível em sessões remotas.

63* **Anexar arquivos**: anexe imagens, PDFs e outros arquivos ao seu prompt usando o botão de anexo, ou arraste e solte arquivos diretamente no prompt. Isso é útil para compartilhar capturas de tela de bugs, mockups de design ou documentos de referência.

64 

65### Escolher um modo de permissão

66 

67Os modos de permissão controlam quanto de autonomia Claude tem durante uma sessão: se ele pergunta antes de editar arquivos, executar comandos ou ambos. Você pode alternar modos a qualquer momento usando o seletor de modo ao lado do botão enviar. Comece com Ask permissions para ver exatamente o que Claude faz, depois mude para Auto accept edits ou Plan mode conforme você fica confortável.

68 

69| Modo | Chave de configuração | Comportamento |

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

71| **Ask permissions** | `default` | Claude pergunta antes de editar arquivos ou executar comandos. Você vê um diff e pode aceitar ou rejeitar cada alteração. Recomendado para novos usuários. |

72| **Auto accept edits** | `acceptEdits` | Claude aceita automaticamente edições de arquivo e comandos comuns do sistema de arquivos como `mkdir`, `touch` e `mv`, mas ainda pergunta antes de executar outros comandos de terminal. Use isso quando você confia em alterações de arquivo e quer iteração mais rápida. |

73| **Plan mode** | `plan` | Claude lê arquivos e executa comandos para explorar, depois propõe um plano sem editar seu código-fonte. Bom para tarefas complexas onde você quer revisar a abordagem primeiro. |

74| **Auto** | `auto` | Claude executa todas as ações com verificações de segurança em segundo plano que verificam o alinhamento com sua solicitação. Reduz prompts de permissão mantendo supervisão. Ative em suas Configurações → Claude Code. Veja [requisitos de disponibilidade](#auto-mode-availability) abaixo. |

75| **Bypass permissions** | `bypassPermissions` | Claude é executado sem nenhum prompt de permissão, equivalente a `--dangerously-skip-permissions` no CLI. Ative em suas Configurações → Claude Code em "Allow bypass permissions mode". Use apenas em containers ou VMs sandboxed. Administradores corporativos podem desabilitar essa opção. |

76 

77O modo de permissão `dontAsk` está disponível apenas no [CLI](/pt/permission-modes#allow-only-pre-approved-tools-with-dontask-mode).

78 

79<span id="auto-mode-availability" />

80 

81Auto mode é uma visualização de pesquisa disponível em planos Max, Team, Enterprise e API. Não está disponível em planos Pro ou provedores de terceiros. Em planos Team, Enterprise e API, requer Claude Sonnet 4.6, Opus 4.6 ou Opus 4.7. Em planos Max, requer Claude Opus 4.7.

82 

83<Tip title="Melhor prática">

84 Comece tarefas complexas em Plan mode para que Claude mapeie uma abordagem antes de fazer alterações. Depois de aprovar o plano, mude para Auto accept edits ou Ask permissions para executá-lo. Veja [explorar primeiro, depois planejar, depois codificar](/pt/best-practices#explore-first-then-plan-then-code) para mais sobre esse fluxo de trabalho.

85</Tip>

86 

87Sessões remotas suportam Auto accept edits e Plan mode. Ask permissions não está disponível porque sessões remotas aceitam automaticamente edições de arquivo por padrão, e Bypass permissions não está disponível porque o ambiente remoto já é sandboxed.

88 

89Administradores corporativos podem restringir quais modos de permissão estão disponíveis. Veja [configuração corporativa](#enterprise-configuration) para detalhes.

90 

91### Visualizar seu aplicativo

92 

93Claude pode iniciar um servidor de desenvolvimento e abrir um navegador incorporado para verificar suas alterações. Isso funciona para aplicativos web frontend e também para servidores backend: Claude pode testar endpoints de API, visualizar logs do servidor e iterar em problemas que encontra. Na maioria dos casos, Claude inicia o servidor automaticamente após editar arquivos de projeto. Você também pode pedir a Claude para visualizar a qualquer momento. Por padrão, Claude [verifica automaticamente](#auto-verify-changes) alterações após cada edição.

94 

95O painel de visualização também pode abrir arquivos HTML estáticos, PDFs, imagens e vídeos do seu projeto. Clique em um caminho HTML, PDF, imagem ou vídeo no chat para abri-lo em visualização.

96 

97No painel de visualização, você pode:

98 

99* Interagir com seu aplicativo em execução diretamente no navegador incorporado

100* Assistir Claude verificar suas próprias alterações automaticamente: ele tira capturas de tela, inspeciona o DOM, clica em elementos, preenche formulários e corrige problemas que encontra

101* Iniciar ou parar servidores no menu suspenso **Preview** na barra de ferramentas da sessão

102* Persistir cookies e armazenamento local entre reinicializações do servidor selecionando **Persist sessions** no menu suspenso, para que você não tenha que fazer login novamente durante o desenvolvimento

103* Editar a configuração do servidor ou parar todos os servidores de uma vez

104 

105Claude cria a configuração inicial do servidor com base em seu projeto. Se seu aplicativo usa um comando dev personalizado, edite `.claude/launch.json` para corresponder à sua configuração. Veja [Configurar servidores de visualização](#configure-preview-servers) para a referência completa.

106 

107Para limpar dados de sessão salvos, alterne **Persist preview sessions** desligado em Configurações → Claude Code. Para desabilitar a visualização completamente, alterne **Preview** desligado em Configurações → Claude Code.

108 

109### Revisar alterações com visualização de diff

110 

111Depois que Claude faz alterações em seu código, a visualização de diff permite que você revise modificações arquivo por arquivo antes de criar um pull request.

112 

113Quando Claude altera arquivos, um indicador de estatísticas de diff aparece mostrando o número de linhas adicionadas e removidas, como `+12 -1`. Clique neste indicador para abrir o visualizador de diff, que exibe uma lista de arquivos à esquerda e as alterações para cada arquivo à direita.

114 

115Para comentar em linhas específicas, clique em qualquer linha no diff para abrir uma caixa de comentário. Digite seu feedback e pressione **Enter** para adicionar o comentário. Depois de adicionar comentários a várias linhas, envie todos os comentários de uma vez:

116 

117* **macOS**: pressione **Cmd+Enter**

118* **Windows**: pressione **Ctrl+Enter**

119 

120Claude lê seus comentários e faz as alterações solicitadas, que aparecem como um novo diff que você pode revisar.

121 

122### Revisar seu código

123 

124Na visualização de diff, clique em **Review code** na barra de ferramentas superior direita para pedir a Claude para avaliar as alterações antes de você fazer commit. Claude examina os diffs atuais e deixa comentários diretamente na visualização de diff. Você pode responder a qualquer comentário ou pedir a Claude para revisar.

125 

126A revisão se concentra em problemas de alto sinal: erros de compilação, erros de lógica definidos, vulnerabilidades de segurança e bugs óbvios. Não sinaliza estilo, formatação, problemas pré-existentes ou qualquer coisa que um linter capturaria.

127 

128### Monitorar status de pull request

129 

130Depois de abrir um pull request, uma barra de status de CI aparece na sessão. Claude Code usa o GitHub CLI para pesquisar resultados de verificação e exibir falhas.

131 

132* **Auto-fix**: quando ativado, Claude tenta automaticamente corrigir verificações de CI falhando lendo a saída de falha e iterando.

133* **Auto-merge**: quando ativado, Claude mescla o PR assim que todas as verificações passam. O método de mesclagem é squash. Auto-merge deve ser [ativado nas configurações do seu repositório GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository) para isso funcionar.

134 

135Use os toggles **Auto-fix** e **Auto-merge** na barra de status de CI para ativar qualquer opção. Claude Code também envia uma notificação de desktop quando CI termina. Para arquivar a sessão automaticamente assim que o PR mescla ou fecha, ative [auto-archive](#work-in-parallel-with-sessions) em Configurações → Claude Code.

136 

137<Note>

138 O monitoramento de PR requer que o [GitHub CLI (`gh`)](https://cli.github.com/) esteja instalado e autenticado em sua máquina. Se `gh` não estiver instalado, Desktop o solicita a instalar na primeira vez que você tentar criar um PR.

139</Note>

140 

141## Organizar seu workspace

142 

143A aba Code é construída em torno de painéis que você pode organizar em qualquer layout: chat, diff, preview, terminal, file, plan, tasks e subagent. Arraste um painel por seu cabeçalho para reposicioná-lo, ou arraste uma borda de painel para redimensioná-lo. Pressione **Cmd+\\** no macOS ou **Ctrl+\\** no Windows para fechar o painel focado. Abra painéis adicionais no menu **Views** na barra de ferramentas da sessão.

144 

145<Note>

146 O layout do painel, terminal, editor de arquivo e modos de visualização nesta seção requerem Claude Desktop v1.2581.0 ou posterior. Abra **Claude → Check for Updates** no macOS ou **Help → Check for Updates** no Windows para atualizar.

147</Note>

148 

149### Executar comandos no terminal

150 

151O terminal integrado permite que você execute comandos ao lado de sua sessão sem alternar para outro aplicativo. Abra-o no menu **Views** ou pressione **Ctrl+\`** no macOS ou Windows. O terminal abre no diretório de trabalho de sua sessão e compartilha o mesmo ambiente que Claude, então comandos como `npm test` ou `git status` veem os mesmos arquivos que Claude está editando. O terminal está disponível apenas em sessões locais.

152 

153### Abrir e editar arquivos

154 

155Clique em um caminho de arquivo no chat ou visualizador de diff para abri-lo no painel de arquivo. Caminhos HTML, PDF, imagem e vídeo abrem no [painel de preview](#preview-your-app) em vez disso. Faça edições pontuais e clique em **Save** para escrevê-las de volta. Se o arquivo mudou no disco desde que você o abriu, o painel o avisa e permite que você sobrescreva ou descarte. Clique em **Discard** para reverter suas edições, ou clique no caminho no cabeçalho do painel para copiar o caminho absoluto.

156 

157O painel de arquivo está disponível em sessões locais e SSH. Para sessões remotas, peça a Claude para fazer a alteração.

158 

159### Abrir arquivos em outros aplicativos

160 

161Clique com o botão direito em qualquer caminho de arquivo no chat, visualizador de diff ou painel de arquivo para abrir um menu de contexto:

162 

163* **Attach as context**: adicione o arquivo ao seu próximo prompt

164* **Open in**: abra o arquivo em um editor instalado como VS Code, Cursor ou Zed

165* **Show in Finder** no macOS, **Show in Explorer** no Windows: abra a pasta contendo

166* **Copy path**: copie o caminho absoluto para sua área de transferência

167 

168### Alternar modos de visualização

169 

170Os modos de visualização controlam quanto detalhe aparece na transcrição do chat. Alterne modos no menu suspenso **Transcript view** ao lado do botão enviar, ou pressione **Ctrl+O** no macOS ou Windows para ciclar através deles.

171 

172| Modo | O que mostra |

173| ----------- | ------------------------------------------------------------------------------------ |

174| **Normal** | Chamadas de ferramenta recolhidas em resumos, com respostas de texto completo |

175| **Verbose** | Cada chamada de ferramenta, leitura de arquivo e passo intermediário que Claude toma |

176| **Summary** | Apenas as respostas finais de Claude e as alterações que fez |

177 

178Use Verbose ao depurar por que Claude tomou uma ação particular. Use Summary quando você está executando múltiplas sessões e quer escanear resultados rapidamente.

179 

180### Atalhos de teclado

181 

182Pressione **Cmd+/** no macOS ou **Ctrl+/** no Windows para ver todos os atalhos disponíveis na aba Code. No Windows, use **Ctrl** no lugar de **Cmd** para os atalhos abaixo. Ciclagem de sessão, alternância de terminal e alternância de modo de visualização usam **Ctrl** em todas as plataformas.

183 

184| Atalho | Ação |

185| ------------------------------------- | --------------------------------- |

186| `Cmd` `/` | Mostrar atalhos de teclado |

187| `Cmd` `N` | Nova sessão |

188| `Cmd` `W` | Fechar sessão |

189| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Próxima ou sessão anterior |

190| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Próxima ou sessão anterior |

191| `Esc` | Parar resposta de Claude |

192| `Cmd` `Shift` `D` | Alternar painel de diff |

193| `Cmd` `Shift` `P` | Alternar painel de preview |

194| `Cmd` `Shift` `S` | Selecionar um elemento em preview |

195| `Ctrl` `` ` `` | Alternar painel de terminal |

196| `Cmd` `\` | Fechar painel focado |

197| `Cmd` `;` | Abrir chat lateral |

198| `Ctrl` `O` | Ciclar modos de visualização |

199| `Cmd` `Shift` `M` | Abrir menu de modo de permissão |

200| `Cmd` `Shift` `I` | Abrir menu de modelo |

201| `Cmd` `Shift` `E` | Abrir menu de esforço |

202| `1`–`9` | Selecionar item em um menu aberto |

203 

204Esses atalhos se aplicam apenas à aba Code. Os [atalhos de modo interativo](/pt/interactive-mode#keyboard-shortcuts) baseados em terminal, como `Shift+Tab` para ciclar modos, não se aplicam em Desktop.

205 

206### Verificar uso

207 

208Clique no anel de uso ao lado do seletor de modelo para ver seu uso atual da janela de contexto e seu uso do plano para o período. O uso de contexto é por sessão; o uso do plano é compartilhado em todas as suas superfícies Claude Code.

209 

210## Deixar Claude usar seu computador

211 

212Computer use permite que Claude abra seus aplicativos, controle sua tela e trabalhe diretamente em sua máquina da forma como você faria. Peça a Claude para testar um aplicativo nativo em um simulador móvel, interagir com uma ferramenta de desktop que não tem CLI ou automatizar algo que só funciona através de uma GUI.

213 

214<Note>

215 Computer use é uma visualização de pesquisa no macOS e Windows que requer um plano Pro ou Max. Não está disponível em planos Team ou Enterprise. O aplicativo Claude Desktop deve estar em execução.

216</Note>

217 

218Computer use está desativado por padrão. [Ative-o em Configurações](#enable-computer-use) antes que Claude possa controlar sua tela. No macOS, você também precisa conceder permissões de Acessibilidade e Gravação de Tela.

219 

220<Warning>

221 Diferentemente da [ferramenta Bash sandboxed](/pt/sandboxing), computer use é executado em seu desktop real com acesso a tudo que você aprova. Claude verifica cada ação e sinaliza possível injeção de prompt do conteúdo na tela, mas o limite de confiança é diferente. Veja o [guia de segurança de computer use](https://support.claude.com/en/articles/14128542) para melhores práticas.

222</Warning>

223 

224### Quando computer use se aplica

225 

226Claude tem várias maneiras de interagir com um aplicativo ou serviço, e computer use é a mais ampla e lenta. Ele tenta a ferramenta mais precisa primeiro:

227 

228* Se você tem um [connector](#connect-external-tools) para um serviço, Claude usa o connector.

229* Se a tarefa é um comando shell, Claude usa Bash.

230* Se a tarefa é trabalho de navegador e você tem [Claude no Chrome](/pt/chrome) configurado, Claude usa isso.

231* Se nenhum desses se aplica, Claude usa computer use.

232 

233Os [níveis de acesso por aplicativo](#app-permissions) reforçam isso: navegadores são limitados a apenas visualização, e terminais e IDEs a apenas clique, direcionando Claude para a ferramenta dedicada mesmo quando computer use está ativo. O controle de tela é reservado para coisas que nada mais pode alcançar, como aplicativos nativos, painéis de controle de hardware, simuladores móveis ou ferramentas proprietárias sem uma API.

234 

235### Ativar computer use

236 

237Computer use está desativado por padrão. Se você pedir a Claude para fazer algo que precisa disso enquanto está desativado, Claude diz que poderia fazer a tarefa se você ativar computer use em Configurações.

238 

239<Steps>

240 <Step title="Atualizar o aplicativo desktop">

241 Certifique-se de que você tem a versão mais recente do Claude Desktop. Baixe ou atualize em [claude.com/download](https://claude.com/download), depois reinicie o aplicativo.

242 </Step>

243 

244 <Step title="Ativar o toggle">

245 No aplicativo desktop, vá para **Configurações > Geral** (em **Aplicativo Desktop**). Encontre o toggle **Computer use** e ative-o. No Windows, o toggle entra em efeito imediatamente e a configuração está completa. No macOS, continue para o próximo passo.

246 

247 Se você não vir o toggle, confirme que você está em macOS ou Windows com um plano Pro ou Max, depois atualize e reinicie o aplicativo.

248 </Step>

249 

250 <Step title="Conceder permissões macOS">

251 No macOS, conceda duas permissões do sistema antes do toggle entrar em efeito:

252 

253 * **Accessibility**: permite que Claude clique, digite e role

254 * **Screen Recording**: permite que Claude veja o que está em sua tela

255 

256 A página de Configurações mostra o status atual de cada permissão. Se alguma for negada, clique no badge para abrir o painel de Configurações do Sistema relevante.

257 </Step>

258</Steps>

259 

260### Permissões de aplicativo

261 

262A primeira vez que Claude precisa usar um aplicativo, um prompt aparece em sua sessão. Clique em **Allow for this session** ou **Deny**. As aprovações duram para a sessão atual, ou 30 minutos em [sessões geradas por Dispatch](#sessions-from-dispatch).

263 

264O prompt também mostra que nível de controle Claude obtém para esse aplicativo. Esses níveis são fixos por categoria de aplicativo e não podem ser alterados:

265 

266| Nível | O que Claude pode fazer | Se aplica a |

267| :----------- | :--------------------------------------------------------- | :------------------------------------- |

268| View only | Ver o aplicativo em capturas de tela | Navegadores, plataformas de negociação |

269| Click only | Clicar e rolar, mas não digitar ou usar atalhos de teclado | Terminais, IDEs |

270| Full control | Clicar, digitar, arrastar e usar atalhos de teclado | Tudo mais |

271 

272Aplicativos com alcance amplo como terminais, Finder ou File Explorer e System Settings ou Settings mostram um aviso extra no prompt para que você saiba o que aprovar concede.

273 

274Você pode configurar duas configurações em **Configurações > Geral** (em **Aplicativo Desktop**):

275 

276* **Denied apps**: adicione aplicativos aqui para rejeitá-los sem solicitar. Claude ainda pode afetar um aplicativo negado indiretamente através de ações em um aplicativo permitido, mas não pode interagir com o aplicativo negado diretamente.

277* **Unhide apps when Claude finishes**: enquanto Claude está trabalhando, suas outras janelas são ocultadas para que ele interaja apenas com o aplicativo aprovado. Quando Claude termina, as janelas ocultas são restauradas a menos que você desative essa configuração.

278 

279## Gerenciar sessões

280 

281Cada sessão é uma conversa independente com seu próprio contexto e alterações. Você pode executar múltiplas sessões em paralelo, ramificar chats laterais, enviar trabalho para a nuvem ou deixar Dispatch iniciar sessões para você do seu telefone.

282 

283### Trabalhar em paralelo com sessões

284 

285Clique em **+ New session** na barra lateral, ou pressione **Cmd+N** no macOS ou **Ctrl+N** no Windows, para trabalhar em múltiplas tarefas em paralelo. Pressione **Ctrl+Tab** e **Ctrl+Shift+Tab** para ciclar através de sessões na barra lateral. Para repositórios Git, cada sessão obtém sua própria cópia isolada do seu projeto usando [Git worktrees](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), para que alterações em uma sessão não afetem outras sessões até que você as faça commit.

286 

287Worktrees são armazenadas em `<project-root>/.claude/worktrees/` por padrão. Você pode alterar isso para um diretório personalizado em Configurações → Claude Code em "Worktree location". Você também pode definir um prefixo de branch que é adicionado a cada nome de branch worktree, o que é útil para manter branches criadas por Claude organizadas. Para remover um worktree quando terminar, passe o mouse sobre a sessão na barra lateral e clique no ícone de arquivo. Para ter sessões se arquivarem automaticamente quando seu pull request mescla ou fecha, ative **Auto-archive after PR merge or close** em Configurações → Claude Code. Auto-archive se aplica apenas a sessões locais que terminaram de executar.

288 

289Para incluir arquivos gitignored como `.env` em novos worktrees, crie um [arquivo `.worktreeinclude`](/pt/common-workflows#copy-gitignored-files-to-worktrees) na raiz do seu projeto.

290 

291<Note>

292 O isolamento de sessão requer [Git](https://git-scm.com/downloads). A maioria dos Macs inclui Git por padrão. Execute `git --version` no Terminal para verificar. No Windows, Git é necessário para a aba Code funcionar: [baixe Git para Windows](https://git-scm.com/downloads/win), instale-o e reinicie o aplicativo. Se você encontrar erros de Git, peça a Claude na aba [Cowork](https://claude.com/product/cowork) para ajudar a solucionar problemas de sua configuração.

293</Note>

294 

295Use os controles no topo da barra lateral para filtrar sessões por status, projeto ou ambiente, e para agrupar sessões por projeto. Para renomear uma sessão, clique no título da sessão na barra de ferramentas no topo da sessão ativa. Para verificar o uso de contexto, veja [Verificar uso](#check-usage). Quando o contexto se enche, Claude automaticamente resume a conversa e continua trabalhando. Você também pode digitar `/compact` para disparar a sumarização mais cedo e liberar espaço de contexto. Veja [a janela de contexto](/pt/how-claude-code-works#the-context-window) para detalhes sobre como a compactação funciona.

296 

297### Fazer uma pergunta lateral sem descarrilar a sessão

298 

299Um chat lateral permite que você faça a Claude uma pergunta que usa o contexto de sua sessão mas não adiciona nada de volta à conversa principal. Use-o quando você quer entender um pedaço de código, verificar uma suposição ou explorar uma ideia sem descarrilar a sessão.

300 

301Pressione **Cmd+;** no macOS ou **Ctrl+;** no Windows para abrir um chat lateral, ou digite `/btw` na caixa de prompt. O chat lateral pode ler tudo no thread principal até esse ponto. Quando terminar, feche o chat lateral e continue a sessão principal onde deixou. Chats laterais estão disponíveis em sessões locais e SSH.

302 

303### Assistir tarefas em segundo plano

304 

305O painel de tarefas mostra o trabalho em segundo plano em execução dentro da sessão atual: subagents, comandos shell em segundo plano e workflows. Abra-o no menu **Views** ou arraste-o para seu layout.

306 

307Clique em qualquer entrada para ver sua saída no painel de subagent ou pará-la. Para ver o que outras sessões estão fazendo, use a [barra lateral](#work-in-parallel-with-sessions).

308 

309### Executar tarefas de longa duração remotamente

310 

311Para grandes refatorações, suites de teste, migrações ou outras tarefas de longa duração, selecione **Remote** em vez de **Local** ao iniciar uma sessão. Sessões remotas são executadas na infraestrutura em nuvem da Anthropic e continuam mesmo se você fechar o aplicativo ou desligar seu computador. Verifique a qualquer momento para ver o progresso ou direcionar Claude em uma direção diferente. Você também pode monitorar sessões remotas de [claude.ai/code](https://claude.ai/code) ou do aplicativo Claude iOS.

312 

313Sessões remotas também suportam múltiplos repositórios. Depois de selecionar um ambiente em nuvem, clique no botão **+** ao lado do pill de repo para adicionar repositórios adicionais à sessão. Cada repo obtém seu próprio seletor de branch. Isso é útil para tarefas que abrangem múltiplas bases de código, como atualizar uma biblioteca compartilhada e seus consumidores.

314 

315Veja [Claude Code na web](/pt/claude-code-on-the-web) para mais sobre como sessões remotas funcionam.

316 

317### Continuar em outra superfície

318 

319O menu **Continue in**, acessível do ícone VS Code no canto inferior direito da barra de ferramentas da sessão, permite que você mova sua sessão para outra superfície:

320 

321* **Claude Code on the Web**: envia sua sessão local para continuar executando remotamente. Desktop envia seu branch, gera um resumo da conversa e cria uma nova sessão remota com o contexto completo. Você pode então escolher arquivar a sessão local ou mantê-la. Isso requer uma árvore de trabalho limpa e não está disponível para sessões SSH.

322* **Your IDE**: abre seu projeto em um IDE suportado no diretório de trabalho atual.

323 

324### Sessões do Dispatch

325 

326[Dispatch](https://support.claude.com/en/articles/13947068) é uma conversa persistente com Claude que vive na aba [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use). Você envia uma mensagem ao Dispatch com uma tarefa, e ele decide como lidar com ela.

327 

328Uma tarefa pode acabar como uma sessão de Code de duas maneiras: você pede uma diretamente, como "abra uma sessão Claude Code e corrija o bug de login", ou Dispatch decide que a tarefa é trabalho de desenvolvimento e gera uma por conta própria. Tarefas que normalmente são roteadas para Code incluem corrigir bugs, atualizar dependências, executar testes ou abrir pull requests. Pesquisa, edição de documentos e trabalho em planilhas ficam em Cowork.

329 

330De qualquer forma, a sessão de Code aparece na barra lateral da aba Code com um badge **Dispatch**. Você recebe uma notificação push em seu telefone quando termina ou precisa de sua aprovação.

331 

332Se você tem [computer use](#let-claude-use-your-computer) ativado, sessões de Code geradas por Dispatch também podem usá-lo. As aprovações de aplicativo nessas sessões expiram após 30 minutos e solicitam novamente, em vez de durarem a sessão completa como sessões de Code regulares.

333 

334Para configuração, emparelhamento e configurações de Dispatch, veja o [artigo de ajuda do Dispatch](https://support.claude.com/en/articles/13947068). Dispatch requer um plano Pro ou Max e não está disponível em planos Team ou Enterprise.

335 

336Dispatch é uma de várias maneiras de trabalhar com Claude quando você está longe de seu terminal. Veja [Plataformas e integrações](/pt/platforms#work-when-you-are-away-from-your-terminal) para compará-lo com Remote Control, Channels, Slack e tarefas agendadas.

337 

338## Estender Claude Code

339 

340Conecte serviços externos, adicione fluxos de trabalho reutilizáveis, customize o comportamento de Claude e configure servidores de visualização. Para gerenciar conectores, skills e plugins em um único lugar, clique em **Customize** na barra lateral.

341 

342### Conectar ferramentas externas

343 

344Para sessões locais e [SSH](#ssh-sessions), clique no botão **+** ao lado da caixa de prompt e selecione **Connectors** para adicionar integrações como Google Calendar, Slack, GitHub, Linear, Notion e muito mais. Você pode adicionar conectores antes ou durante uma sessão. O botão **+** não está disponível em sessões remotas, mas [routines](/pt/routines) configuram conectores no momento da criação da rotina.

345 

346Para gerenciar ou desconectar conectores, vá para Configurações → Connectors no aplicativo desktop, ou selecione **Manage connectors** no menu Connectors na caixa de prompt.

347 

348Uma vez conectado, Claude pode ler seu calendário, enviar mensagens, criar problemas e interagir com suas ferramentas diretamente. Você pode perguntar a Claude quais conectores estão configurados em sua sessão.

349 

350Conectores são [MCP servers](/pt/mcp) com um fluxo de configuração gráfica. Use-os para integração rápida com serviços suportados. Para integrações não listadas em Connectors, adicione MCP servers manualmente via [arquivos de configuração](/pt/mcp#installing-mcp-servers). Você também pode [criar conectores personalizados](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

351 

352### Use skills

353 

354[Skills](/pt/skills) estendem o que Claude pode fazer. Claude as carrega automaticamente quando relevante, ou você pode invocar uma diretamente: digite `/` na caixa de prompt ou clique no botão **+** e selecione **Slash commands** para navegar pelo que está disponível. Isso inclui [comandos integrados](/pt/commands), suas [skills personalizadas](/pt/skills#create-your-first-skill), skills de projeto de sua base de código e skills de qualquer [plugins instalados](/pt/plugins). Selecione uma e ela aparece destacada no campo de entrada. Digite sua tarefa depois dela e envie como usual.

355 

356### Instalar plugins

357 

358[Plugins](/pt/plugins) são pacotes reutilizáveis que adicionam skills, agents, hooks, MCP servers e configurações LSP ao Claude Code. Você pode instalar plugins do aplicativo desktop sem usar o terminal.

359 

360Para sessões locais e [SSH](#ssh-sessions), clique no botão **+** ao lado da caixa de prompt e selecione **Plugins** para ver seus plugins instalados e seus skills. Para adicionar um plugin, selecione **Add plugin** no submenu para abrir o navegador de plugins, que mostra plugins disponíveis de seus [marketplaces](/pt/plugin-marketplaces) configurados incluindo o marketplace oficial da Anthropic. Selecione **Manage plugins** para ativar, desativar ou desinstalar plugins.

361 

362Plugins podem ser escopo para sua conta de usuário, um projeto específico ou apenas local. Se sua organização gerencia plugins centralmente, esses plugins estão disponíveis em sessões desktop da mesma forma que estão no CLI. Plugins não estão disponíveis para sessões remotas. Para a referência completa de plugins incluindo criar seus próprios plugins, veja [plugins](/pt/plugins).

363 

364### Configurar servidores de visualização

365 

366Claude detecta automaticamente sua configuração de servidor de desenvolvimento e armazena a configuração em `.claude/launch.json` na raiz da pasta que você selecionou ao iniciar a sessão. Preview usa essa pasta como seu diretório de trabalho, então se você selecionou uma pasta pai, subpastas com seus próprios servidores de desenvolvimento não serão detectadas automaticamente. Para trabalhar com o servidor de uma subpasta, inicie uma sessão nessa pasta diretamente ou adicione uma configuração manualmente.

367 

368Para personalizar como seu servidor inicia, por exemplo para usar `yarn dev` em vez de `npm run dev` ou para alterar a porta, edite o arquivo manualmente ou clique em **Edit configuration** no menu Preview para abri-lo em seu editor de código. O arquivo suporta JSON com comentários.

369 

370```json theme={null}

371{

372 "version": "0.0.1",

373 "configurations": [

374 {

375 "name": "my-app",

376 "runtimeExecutable": "npm",

377 "runtimeArgs": ["run", "dev"],

378 "port": 3000

379 }

380 ]

381}

382```

383 

384Você pode definir múltiplas configurações para executar diferentes servidores do mesmo projeto, como um frontend e uma API. Veja os [exemplos](#examples) abaixo.

385 

386#### Auto-verify changes

387 

388Quando `autoVerify` está ativado, Claude verifica automaticamente alterações de código após editar arquivos. Ele tira capturas de tela, verifica erros e confirma que as alterações funcionam antes de completar sua resposta.

389 

390Auto-verify está ativado por padrão. Desative-o por projeto adicionando `"autoVerify": false` a `.claude/launch.json`, ou alterne-o no menu **Preview**.

391 

392```json theme={null}

393{

394 "version": "0.0.1",

395 "autoVerify": false,

396 "configurations": [...]

397}

398```

399 

400Quando desativado, ferramentas de visualização ainda estão disponíveis e você pode pedir a Claude para verificar a qualquer momento. Auto-verify torna isso automático após cada edição.

401 

402#### Configuration fields

403 

404Cada entrada no array `configurations` aceita os seguintes campos:

405 

406| Campo | Tipo | Descrição |

407| ------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

408| `name` | string | Um identificador único para este servidor |

409| `runtimeExecutable` | string | O comando a executar, como `npm`, `yarn` ou `node` |

410| `runtimeArgs` | string\[] | Argumentos passados para `runtimeExecutable`, como `["run", "dev"]` |

411| `port` | number | A porta em que seu servidor escuta. Padrão é 3000 |

412| `cwd` | string | Diretório de trabalho relativo à raiz do seu projeto. Padrão é a raiz do projeto. Use `${workspaceFolder}` para referenciar a raiz do projeto explicitamente |

413| `env` | object | Variáveis de ambiente adicionais como pares chave-valor, como `{ "NODE_ENV": "development" }`. Não coloque segredos aqui já que este arquivo é commitado em seu repo. Para passar segredos ao seu servidor de desenvolvimento, defina-os no [editor de ambiente local](#local-sessions) em vez disso. |

414| `autoPort` | boolean | Como lidar com conflitos de porta. Veja abaixo |

415| `program` | string | Um script a executar com `node`. Veja [quando usar `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |

416| `args` | string\[] | Argumentos passados para `program`. Usado apenas quando `program` está definido |

417 

418##### When to use `program` vs `runtimeExecutable`

419 

420Use `runtimeExecutable` com `runtimeArgs` para iniciar um servidor de desenvolvimento através de um gerenciador de pacotes. Por exemplo, `"runtimeExecutable": "npm"` com `"runtimeArgs": ["run", "dev"]` executa `npm run dev`.

421 

422Use `program` quando você tem um script independente que quer executar com `node` diretamente. Por exemplo, `"program": "server.js"` executa `node server.js`. Passe flags adicionais com `args`.

423 

424#### Port conflicts

425 

426O campo `autoPort` controla o que acontece quando sua porta preferida já está em uso:

427 

428* **`true`**: Claude encontra e usa uma porta livre automaticamente. Adequado para a maioria dos servidores de desenvolvimento.

429* **`false`**: Claude falha com um erro. Use isso quando seu servidor deve usar uma porta específica, como para callbacks OAuth ou allowlists CORS.

430* **Não definido (padrão)**: Claude pergunta se o servidor precisa dessa porta exata, depois salva sua resposta.

431 

432Quando Claude escolhe uma porta diferente, ele passa a porta atribuída ao seu servidor via a variável de ambiente `PORT`.

433 

434#### Examples

435 

436Essas configurações mostram setups comuns para diferentes tipos de projeto:

437 

438<Tabs>

439 <Tab title="Next.js">

440 Esta configuração executa um aplicativo Next.js usando Yarn na porta 3000:

441 

442 ```json theme={null}

443 {

444 "version": "0.0.1",

445 "configurations": [

446 {

447 "name": "web",

448 "runtimeExecutable": "yarn",

449 "runtimeArgs": ["dev"],

450 "port": 3000

451 }

452 ]

453 }

454 ```

455 </Tab>

456 

457 <Tab title="Multiple servers">

458 Para um monorepo com um servidor frontend e API, defina múltiplas configurações. O frontend usa `autoPort: true` para que escolha uma porta livre se 3000 estiver ocupada, enquanto o servidor API requer a porta 8080 exatamente:

459 

460 ```json theme={null}

461 {

462 "version": "0.0.1",

463 "configurations": [

464 {

465 "name": "frontend",

466 "runtimeExecutable": "npm",

467 "runtimeArgs": ["run", "dev"],

468 "cwd": "apps/web",

469 "port": 3000,

470 "autoPort": true

471 },

472 {

473 "name": "api",

474 "runtimeExecutable": "npm",

475 "runtimeArgs": ["run", "start"],

476 "cwd": "server",

477 "port": 8080,

478 "env": { "NODE_ENV": "development" },

479 "autoPort": false

480 }

481 ]

482 }

483 ```

484 </Tab>

485 

486 <Tab title="Node.js script">

487 Para executar um script Node.js diretamente em vez de usar um comando do gerenciador de pacotes, use o campo `program`:

488 

489 ```json theme={null}

490 {

491 "version": "0.0.1",

492 "configurations": [

493 {

494 "name": "server",

495 "program": "server.js",

496 "args": ["--verbose"],

497 "port": 4000

498 }

499 ]

500 }

501 ```

502 </Tab>

503</Tabs>

504 

505## Configuração de ambiente

506 

507O ambiente que você escolhe ao [iniciar uma sessão](#start-a-session) determina onde Claude é executado e como você se conecta:

508 

509* **Local**: é executado em sua máquina com acesso direto aos seus arquivos

510* **Remote**: é executado na infraestrutura em nuvem da Anthropic. Sessões continuam mesmo se você fechar o aplicativo.

511* **SSH**: é executado em uma máquina remota à qual você se conecta via SSH, como seus próprios servidores, VMs em nuvem ou dev containers

512 

513### Local sessions

514 

515O aplicativo desktop nem sempre herda seu ambiente de shell completo. No macOS, quando você inicia o aplicativo do Dock ou Finder, ele lê seu perfil de shell, como `~/.zshrc` ou `~/.bashrc`, para extrair `PATH` e um conjunto fixo de variáveis Claude Code, mas outras variáveis que você exporta lá não são capturadas. No Windows, o aplicativo herda variáveis de ambiente de usuário e sistema mas não lê perfis PowerShell.

516 

517Para definir variáveis de ambiente para sessões locais e servidores de desenvolvimento em qualquer plataforma, abra o menu suspenso de ambiente na caixa de prompt, passe o mouse sobre **Local** e clique no ícone de engrenagem para abrir o editor de ambiente local. Variáveis que você salva aqui são armazenadas criptografadas em sua máquina e se aplicam a cada sessão local e servidor de visualização que você inicia. Você também pode adicionar variáveis à chave `env` em seu arquivo `~/.claude/settings.json`, embora essas alcancem apenas sessões Claude e não servidores de desenvolvimento. Veja [variáveis de ambiente](/pt/env-vars) para a lista completa de variáveis suportadas.

518 

519[Extended thinking](/pt/common-workflows#use-extended-thinking-thinking-mode) está ativado por padrão, o que melhora o desempenho em tarefas de raciocínio complexo mas usa tokens adicionais. Para desabilitar o thinking completamente, defina `MAX_THINKING_TOKENS` para `0` no editor de ambiente local. Em modelos com [adaptive reasoning](/pt/model-config#adjust-effort-level), qualquer outro valor de `MAX_THINKING_TOKENS` é ignorado porque adaptive reasoning controla a profundidade do thinking. Em Opus 4.6 e Sonnet 4.6, defina `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` para `1` para usar um orçamento de thinking fixo; Opus 4.7 sempre usa adaptive reasoning e não tem modo de orçamento fixo.

520 

521### Remote sessions

522 

523Sessões remotas continuam em segundo plano mesmo se você fechar o aplicativo. O uso conta para seus [limites do plano de assinatura](/pt/costs) sem cobranças de computação separadas.

524 

525Você 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 remota e escolha **Add environment**. Veja [o ambiente em nuvem](/pt/claude-code-on-the-web#the-cloud-environment) para detalhes sobre configuração de acesso de rede e variáveis de ambiente.

526 

527### SSH sessions

528 

529Sessões SSH permitem que você execute Claude Code em uma máquina remota enquanto usa o aplicativo desktop como sua interface. Isso é útil para trabalhar com bases de código que vivem em VMs em nuvem, dev containers ou servidores com hardware ou dependências específicas.

530 

531Para adicionar uma conexão SSH, clique no menu suspenso de ambiente antes de iniciar uma sessão e selecione **+ Add SSH connection**. O diálogo solicita:

532 

533* **Name**: um rótulo amigável para esta conexão

534* **SSH Host**: `user@hostname` ou um host definido em `~/.ssh/config`

535* **SSH Port**: padrão é 22 se deixado vazio, ou usa a porta de seu SSH config

536* **Identity File**: caminho para sua chave privada, como `~/.ssh/id_rsa`. Deixe vazio para usar a chave padrão ou seu SSH config.

537 

538Uma vez adicionada, a conexão aparece no menu suspenso de ambiente. Selecione-a para iniciar uma sessão naquela máquina. Claude é executado na máquina remota com acesso aos seus arquivos e ferramentas.

539 

540A máquina remota deve executar Linux ou macOS. O aplicativo desktop instala Claude Code na máquina remota automaticamente na primeira vez que você se conecta. Uma vez conectado, sessões SSH suportam modos de permissão, conectores, plugins e MCP servers.

541 

542#### Pré-configurar conexões SSH para sua equipe

543 

544Administradores podem distribuir conexões SSH para membros da equipe adicionando `sshConfigs` a um arquivo de [configurações gerenciadas](/pt/settings#settings-precedence). Conexões definidas desta forma aparecem no menu suspenso de ambiente de cada usuário automaticamente e são mostradas como gerenciadas, para que os usuários possam selecioná-las mas não possam editá-las ou deletá-las no aplicativo.

545 

546O exemplo a seguir pré-configura uma única conexão que abre em `~/projects` no host remoto:

547 

548```json theme={null}

549{

550 "sshConfigs": [

551 {

552 "id": "shared-dev-vm",

553 "name": "Shared Dev VM",

554 "sshHost": "user@dev.example.com",

555 "sshPort": 22,

556 "sshIdentityFile": "~/.ssh/id_ed25519",

557 "startDirectory": "~/projects"

558 }

559 ]

560}

561```

562 

563Cada entrada requer `id`, `name` e `sshHost`. Os campos `sshPort`, `sshIdentityFile` e `startDirectory` são opcionais. Os usuários também podem adicionar `sshConfigs` ao seu próprio `~/.claude/settings.json`, que é onde as conexões adicionadas através do diálogo são armazenadas.

564 

565## Configuração corporativa

566 

567Organizações em planos Team ou Enterprise podem gerenciar o comportamento do aplicativo desktop através de controles do console de administração, arquivos de configurações gerenciadas e políticas de gerenciamento de dispositivos.

568 

569### Admin console controls

570 

571Essas configurações são configuradas através do [console de configurações de administração](https://claude.ai/admin-settings/claude-code):

572 

573* **Code in the desktop**: controle se usuários em sua organização podem acessar Claude Code no aplicativo desktop

574* **Code in the web**: ative ou desative [sessões web](/pt/claude-code-on-the-web) para sua organização

575* **Remote Control**: ative ou desative [Remote Control](/pt/remote-control) para sua organização

576* **Disable Bypass permissions mode**: impeça usuários em sua organização de ativar o modo bypass permissions

577 

578### Managed settings

579 

580Configurações gerenciadas sobrescrevem configurações de projeto e usuário e se aplicam quando Desktop gera sessões CLI. Você pode definir essas chaves no arquivo de [configurações gerenciadas](/pt/settings#settings-precedence) de sua organização ou enviá-las remotamente através do console de administração.

581 

582| Chave | Descrição |

583| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

584| `permissions.disableBypassPermissionsMode` | defina como `"disable"` para impedir usuários de ativar o modo Bypass permissions. |

585| `disableAutoMode` | defina como `"disable"` para impedir usuários de ativar o modo [Auto](/pt/permission-modes#eliminate-prompts-with-auto-mode). Remove Auto do seletor de modo. Também aceito em `permissions`. |

586| `autoMode` | customize o que o classificador de modo auto confia e bloqueia em sua organização. Veja [Configurar o modo auto](/pt/auto-mode-config). |

587| `sshConfigs` | pré-configure [conexões SSH](#pre-configure-ssh-connections-for-your-team) que aparecem no dropdown de ambiente. Usuários não podem editar ou excluir conexões gerenciadas. |

588 

589Um arquivo de configurações gerenciadas implantado em disco em cada máquina se aplica a sessões Desktop. Configurações gerenciadas enviadas remotamente através do console de administração atualmente alcançam apenas sessões CLI e IDE, portanto, para implantações Desktop, distribua o arquivo via MDM ou use os [controles do console de administração](#admin-console-controls) acima.

590 

591`permissions.disableBypassPermissionsMode` e `disableAutoMode` também funcionam em configurações de usuário e projeto, mas colocá-los em configurações gerenciadas impede que usuários os sobrescrevam. `autoMode` é lido de configurações de usuário, `.claude/settings.local.json` e configurações gerenciadas, mas não de `.claude/settings.json` verificado: um repo clonado não pode injetar suas próprias regras de classificador. Para a lista completa de configurações apenas gerenciadas incluindo `allowManagedPermissionRulesOnly` e `allowManagedHooksOnly`, veja [configurações apenas gerenciadas](/pt/permissions#managed-only-settings).

592 

593### Device management policies

594 

595Equipes de TI podem gerenciar o aplicativo desktop através de MDM em macOS ou group policy no Windows. As políticas disponíveis incluem ativar ou desativar o recurso Claude Code, controlar atualizações automáticas e definir uma URL de implantação personalizada.

596 

597* **macOS**: configure via domínio de preferência `com.anthropic.Claude` usando ferramentas como Jamf ou Kandji

598* **Windows**: configure via registro em `SOFTWARE\Policies\Claude`

599 

600### Authentication and SSO

601 

602Organizações corporativas podem exigir SSO para todos os usuários. Veja [autenticação](/pt/authentication) para detalhes de nível de plano e [Configurando SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso) para configuração SAML e OIDC.

603 

604### Data handling

605 

606Claude Code processa seu código localmente em sessões locais ou na infraestrutura em nuvem da Anthropic em sessões remotas. Conversas e contexto de código são enviados para a API da Anthropic para processamento. Veja [manipulação de dados](/pt/data-usage) para detalhes sobre retenção de dados, privacidade e conformidade.

607 

608### Deployment

609 

610Desktop pode ser distribuído através de ferramentas de implantação corporativa:

611 

612* **macOS**: distribua via MDM como Jamf ou Kandji usando o instalador `.dmg`

613* **Windows**: implante via pacote MSIX ou instalador `.exe`. Veja [Deploy Claude Desktop for Windows](https://support.claude.com/en/articles/12622703-deploy-claude-desktop-for-windows) para opções de implantação corporativa incluindo instalação silenciosa

614 

615Para configuração de rede como configurações de proxy, allowlisting de firewall e gateways LLM, veja [configuração de rede](/pt/network-config).

616 

617Para a referência completa de configuração corporativa, veja o [guia de configuração corporativa](https://support.claude.com/en/articles/12622667-enterprise-configuration).

618 

619## Vindo do CLI?

620 

621Se você já usa o CLI do Claude Code, Desktop executa o mesmo mecanismo subjacente com uma interface gráfica. Você pode executar ambos simultaneamente na mesma máquina, até mesmo no mesmo projeto. Cada um mantém histórico de sessão separado, mas compartilham configuração e memória de projeto via arquivos CLAUDE.md.

622 

623Para mover uma sessão CLI para Desktop, execute `/desktop` no terminal. Claude salva sua sessão e a abre no aplicativo desktop, depois sai do CLI. Este comando está disponível apenas em macOS e Windows.

624 

625<Tip>

626 Quando usar Desktop vs CLI: use Desktop quando você quer gerenciar sessões paralelas em uma janela, organizar painéis lado a lado ou revisar alterações visualmente. Use o CLI quando você precisa de scripting, automação ou prefere um fluxo de trabalho de terminal.

627</Tip>

628 

629### CLI flag equivalents

630 

631Esta tabela mostra o equivalente do aplicativo desktop para flags CLI comuns. Flags não listadas não têm equivalente desktop porque são projetadas para scripting ou automação.

632 

633| CLI | Equivalente desktop |

634| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

635| `--model sonnet` | Menu suspenso de modelo ao lado do botão enviar |

636| `--resume`, `--continue` | Clique em uma sessão na barra lateral |

637| `--permission-mode` | Seletor de modo ao lado do botão enviar |

638| `--dangerously-skip-permissions` | Modo Bypass permissions. Ative em Configurações → Claude Code → "Allow bypass permissions mode". Administradores corporativos podem desabilitar essa configuração. |

639| `--add-dir` | Adicione múltiplos repos com o botão **+** em sessões remotas |

640| `--allowedTools`, `--disallowedTools` | Nenhum equivalente por sessão. Regras de permissão em [arquivos de configuração](/pt/settings) ainda se aplicam. |

641| `--verbose` | [Modo de visualização Verbose](#switch-view-modes) no menu suspenso Transcript view |

642| `--print`, `--output-format` | Não disponível. Desktop é apenas interativo. |

643| Variável de ambiente `ANTHROPIC_MODEL` | Menu suspenso de modelo ao lado do botão enviar |

644| Variável de ambiente `MAX_THINKING_TOKENS` | Defina no editor de ambiente local. Veja [configuração de ambiente](#environment-configuration). |

645 

646### Shared configuration

647 

648Desktop e CLI leem os mesmos arquivos de configuração, então sua configuração é transferida:

649 

650* Arquivos **[CLAUDE.md](/pt/memory)** e `CLAUDE.local.md` em seu projeto são usados por ambos

651* **[MCP servers](/pt/mcp)** configurados em `~/.claude.json` ou `.mcp.json` funcionam em ambos

652* **[Hooks](/pt/hooks)** e **[skills](/pt/skills)** definidos em configurações se aplicam a ambos

653* **[Configurações](/pt/settings)** em `~/.claude.json` e `~/.claude/settings.json` são compartilhadas. Regras de permissão, ferramentas permitidas e outras configurações em `settings.json` se aplicam a sessões Desktop.

654* **Modelos**: Sonnet, Opus e Haiku estão disponíveis em ambos. Em Desktop, selecione o modelo no menu suspenso ao lado do botão enviar. Você pode alterar o modelo durante a sessão a partir do mesmo menu suspenso.

655 

656<Note>

657 **MCP servers: aplicativo de chat desktop vs Claude Code**: MCP servers configurados para o aplicativo de chat Claude Desktop em `claude_desktop_config.json` são separados do Claude Code e não aparecerão na aba Code. Para usar MCP servers em Claude Code, configure-os em `~/.claude.json` ou no arquivo `.mcp.json` do seu projeto. Veja [configuração MCP](/pt/mcp#installing-mcp-servers) para detalhes.

658</Note>

659 

660### Feature comparison

661 

662Esta tabela compara capacidades principais entre CLI e Desktop. Para uma lista completa de flags CLI, veja a [referência CLI](/pt/cli-reference).

663 

664| Recurso | CLI | Desktop |

665| ------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

666| Modos de permissão | Todos os modos incluindo `dontAsk` | Ask permissions, Auto accept edits, Plan mode, Auto e Bypass permissions via Configurações |

667| `--dangerously-skip-permissions` | Flag CLI | Modo Bypass permissions. Ative em Configurações → Claude Code → "Allow bypass permissions mode" |

668| [Provedores de terceiros](/pt/third-party-integrations) | Bedrock, Vertex, Foundry | API da Anthropic por padrão. Implantações corporativas podem configurar Vertex AI e provedores de gateway. Veja o [guia de configuração corporativa](https://support.claude.com/en/articles/12622667-enterprise-configuration). |

669| [MCP servers](/pt/mcp) | Configure em arquivos de configuração | UI de Connectors para sessões locais e SSH, ou arquivos de configuração |

670| [Plugins](/pt/plugins) | Comando `/plugin` | UI do gerenciador de plugins |

671| @mention de arquivos | Baseado em texto | Com autocompletar; sessões locais e SSH apenas |

672| Anexos de arquivo | Não disponível | Imagens, PDFs |

673| Isolamento de sessão | Flag [`--worktree`](/pt/cli-reference) | Worktrees automáticos |

674| Múltiplas sessões | Terminais separados | Abas na barra lateral |

675| Tarefas recorrentes | Cron jobs, pipelines CI | [Tarefas agendadas](/pt/desktop-scheduled-tasks) |

676| Computer use | [Ativar via `/mcp`](/pt/computer-use) no macOS | [Controle de aplicativo e tela](#let-claude-use-your-computer) no macOS e Windows |

677| Integração Dispatch | Não disponível | [Sessões Dispatch](#sessions-from-dispatch) na barra lateral |

678| Scripting e automação | [`--print`](/pt/cli-reference), [Agent SDK](/pt/headless) | Não disponível |

679 

680### What's not available in Desktop

681 

682Os seguintes recursos estão disponíveis apenas no CLI ou extensão VS Code:

683 

684* **Provedores de terceiros**: Desktop se conecta à API da Anthropic por padrão. Implantações corporativas podem configurar Vertex AI e provedores de gateway via [configurações gerenciadas](https://support.claude.com/en/articles/12622667-enterprise-configuration). Para Bedrock ou Foundry, use o [CLI](/pt/quickstart).

685* **Linux**: o aplicativo desktop está disponível apenas em macOS e Windows. No Linux, use o [CLI](/pt/quickstart).

686* **Sugestões de código inline**: Desktop não fornece sugestões no estilo autocompletar. Funciona através de prompts conversacionais e alterações de código explícitas.

687* **Equipes de agentes**: orquestração multi-agente está disponível via [CLI](/pt/agent-teams) e [Agent SDK](/pt/headless), não em Desktop.

688 

689## Solução de problemas

690 

691As seções abaixo cobrem problemas específicos do aplicativo desktop. Para erros de API de tempo de execução que aparecem no chat como `API Error: 500`, `529 Overloaded`, `429` ou `Prompt is too long`, veja a [referência de erros](/pt/errors). Esses erros e suas correções são os mesmos em CLI, desktop e web.

692 

693### Verificar sua versão

694 

695Para ver qual versão do aplicativo desktop você está executando:

696 

697* **macOS**: clique em **Claude** na barra de menu, depois **About Claude**

698* **Windows**: clique em **Help**, depois **About**

699 

700Clique no número da versão para copiá-lo para sua área de transferência.

701 

702### Erros 403 ou autenticação na aba Code

703 

704Se você vê `Error 403: Forbidden` ou outras falhas de autenticação ao usar a aba Code:

705 

7061. Saia e entre novamente no menu do aplicativo. Esta é a correção mais comum.

7072. Verifique se você tem uma assinatura paga ativa: Pro, Max, Team ou Enterprise.

7083. Se o CLI funciona mas Desktop não, saia completamente do aplicativo desktop, não apenas feche a janela, depois reabra e entre novamente.

7094. Verifique sua conexão de internet e configurações de proxy.

710 

711### Tela em branco ou travada ao iniciar

712 

713Se o aplicativo abre mas mostra uma tela em branco ou não responsiva:

714 

7151. Reinicie o aplicativo.

7162. Verifique se há atualizações pendentes. O aplicativo se atualiza automaticamente ao iniciar.

7173. No Windows, verifique o Event Viewer para logs de crash em **Windows Logs → Application**.

718 

719### "Failed to load session"

720 

721Se você vê `Failed to load session`, a pasta selecionada pode não existir mais, um repositório Git pode exigir Git LFS que não está instalado, ou permissões de arquivo podem impedir acesso. Tente selecionar uma pasta diferente ou reinicie o aplicativo.

722 

723### Sessão não encontrando ferramentas instaladas

724 

725Se Claude não consegue encontrar ferramentas como `npm`, `node` ou outros comandos CLI, verifique se as ferramentas funcionam em seu terminal regular, verifique se seu perfil de shell configura adequadamente PATH e reinicie o aplicativo desktop para recarregar variáveis de ambiente.

726 

727### Erros de Git e Git LFS

728 

729No Windows, Git é necessário para a aba Code iniciar sessões locais. Se você vê "Git is required," instale [Git para Windows](https://git-scm.com/downloads/win) e reinicie o aplicativo.

730 

731Se você vê "Git LFS is required by this repository but is not installed," instale Git LFS de [git-lfs.com](https://git-lfs.com/), execute `git lfs install` e reinicie o aplicativo.

732 

733### MCP servers não funcionando no Windows

734 

735Se toggles de MCP server não respondem ou servidores falham em conectar no Windows, verifique se o servidor está adequadamente configurado em suas configurações, reinicie o aplicativo, verifique se o processo do servidor está em execução no Task Manager e revise logs do servidor para erros de conexão.

736 

737### Aplicativo não quer sair

738 

739* **macOS**: pressione Cmd+Q. Se o aplicativo não responder, use Force Quit com Cmd+Option+Esc, selecione Claude e clique Force Quit.

740* **Windows**: use Task Manager com Ctrl+Shift+Esc para encerrar o processo Claude.

741 

742### Problemas específicos do Windows

743 

744* **PATH não atualizado após instalação**: abra uma nova janela de terminal. PATH é atualizado apenas para novas sessões de terminal.

745* **Erro de instalação concorrente**: se você vê um erro sobre outra instalação em progresso mas não há uma, tente executar o instalador como Administrador.

746 

747### "Branch doesn't exist yet" ao abrir em CLI

748 

749Sessões remotas podem criar branches que não existem em sua máquina local. Clique no nome do branch na barra de ferramentas da sessão para copiá-lo, depois busque-o localmente:

750 

751```bash theme={null}

752git fetch origin <branch-name>

753git checkout <branch-name>

754```

755 

756### Ainda preso?

757 

758* Pesquise ou registre um bug em [GitHub Issues](https://github.com/anthropics/claude-code/issues)

759* Visite o [centro de suporte Claude](https://support.claude.com/)

760 

761Ao registrar um bug, inclua a versão do seu aplicativo desktop, seu sistema operacional, a mensagem de erro exata e logs relevantes. Em macOS, verifique Console.app. No Windows, verifique Event Viewer → Windows Logs → Application.

desktop-quickstart.md +129 −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# Comece com o aplicativo de desktop

6 

7> Instale Claude Code no desktop e inicie sua primeira sessão de codificação

8 

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 

11<CardGroup cols={2}>

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

13 Universal build for Intel and Apple Silicon

14 </Card>

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

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23<Note>

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

25</Note>

26 

27Esta página orienta você na instalação do aplicativo e no início de sua primeira sessão. Se você já está configurado, consulte [Usar Claude Code Desktop](/pt/desktop) para a referência completa.

28 

29O aplicativo de desktop tem três abas:

30 

31* **Chat**: Conversa geral sem acesso a arquivos, semelhante ao claude.ai.

32* **Cowork**: Um agente autônomo em segundo plano que trabalha em tarefas em uma VM em nuvem com seu próprio ambiente. Pode funcionar independentemente enquanto você faz outro trabalho.

33* **Code**: Um assistente de codificação interativo com acesso direto aos seus arquivos locais. Você revisa e aprova cada alteração em tempo real.

34 

35Chat e Cowork são cobertos nos [artigos de suporte do Claude Desktop](https://support.claude.com/en/collections/16163169-claude-desktop). Esta página se concentra na aba **Code**.

36 

37## Instalar

38 

39<Steps>

40 <Step title="Instale e faça login">

41 Baixe o instalador para sua plataforma nos links acima e execute-o. Inicie Claude na sua pasta Applications no macOS ou no menu Iniciar no Windows e faça login com sua conta Anthropic.

42 </Step>

43 

44 <Step title="Abra a aba Code">

45 Clique na aba **Code** no topo do centro. Se clicar em Code solicitar que você faça upgrade, você precisa [se inscrever em um plano pago](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_upgrade) primeiro. Se solicitar que você faça login online, conclua o login e reinicie o aplicativo. Se você vir um erro 403, consulte [solução de problemas de autenticação](/pt/desktop#403-or-authentication-errors-in-the-code-tab).

46 </Step>

47</Steps>

48 

49O aplicativo de desktop inclui Claude Code. Você não precisa instalar Node.js ou a CLI separadamente. Para usar `claude` do terminal, instale a CLI separadamente. Consulte [Comece com a CLI](/pt/quickstart).

50 

51## Inicie sua primeira sessão

52 

53Com a aba Code aberta, escolha um projeto e dê a Claude algo para fazer.

54 

55<Steps>

56 <Step title="Escolha um ambiente e pasta">

57 Selecione **Local** para executar Claude em sua máquina usando seus arquivos diretamente. Clique em **Select folder** e escolha seu diretório de projeto.

58 

59 <Tip>

60 Comece com um pequeno projeto que você conhece bem. É a forma mais rápida de ver o que Claude Code pode fazer. No Windows, [Git](https://git-scm.com/downloads/win) deve estar instalado para que as sessões locais funcionem. A maioria dos Macs inclui Git por padrão.

61 </Tip>

62 

63 Você também pode selecionar:

64 

65 * **Remote**: Execute sessões na infraestrutura em nuvem da Anthropic que continuam mesmo se você fechar o aplicativo. As sessões remotas usam a mesma infraestrutura que [Claude Code na web](/pt/claude-code-on-the-web).

66 * **SSH**: Conecte-se a uma máquina remota via SSH (seus próprios servidores, VMs em nuvem ou dev containers). Claude Code deve estar instalado na máquina remota.

67 </Step>

68 

69 <Step title="Escolha um modelo">

70 Selecione um modelo no dropdown ao lado do botão enviar. Consulte [modelos](/pt/model-config#available-models) para uma comparação de Opus, Sonnet e Haiku. Você pode alterar o modelo mais tarde no mesmo dropdown.

71 </Step>

72 

73 <Step title="Diga a Claude o que fazer">

74 Digite o que você quer que Claude faça:

75 

76 * `Find a TODO comment and fix it`

77 * `Add tests for the main function`

78 * `Create a CLAUDE.md with instructions for this codebase`

79 

80 Uma [sessão](/pt/desktop#work-in-parallel-with-sessions) é uma conversa com Claude sobre seu código. Cada sessão rastreia seu próprio contexto e alterações, para que você possa trabalhar em várias tarefas sem que elas interfiram uma com a outra.

81 </Step>

82 

83 <Step title="Revise e aceite as alterações">

84 Por padrão, a aba Code inicia no [modo Ask permissions](/pt/desktop#choose-a-permission-mode), onde Claude propõe alterações e aguarda sua aprovação antes de aplicá-las. Você verá:

85 

86 1. Uma [visualização de diff](/pt/desktop#review-changes-with-diff-view) mostrando exatamente o que mudará em cada arquivo

87 2. Botões Accept/Reject para aprovar ou recusar cada alteração

88 3. Atualizações em tempo real conforme Claude trabalha em sua solicitação

89 

90 Se você recusar uma alteração, Claude perguntará como você gostaria de proceder de forma diferente. Seus arquivos não são modificados até que você aceite.

91 </Step>

92</Steps>

93 

94## E agora?

95 

96Você fez sua primeira edição. Para a referência completa sobre tudo que o Desktop pode fazer, consulte [Usar Claude Code Desktop](/pt/desktop). Aqui estão algumas coisas para tentar a seguir.

97 

98**Interrompa e direcione.** Você pode interromper Claude a qualquer momento. Se estiver seguindo o caminho errado, clique no botão parar ou digite sua correção e pressione **Enter**. Claude para o que está fazendo e se ajusta com base em sua entrada. Você não precisa esperar que termine ou começar novamente.

99 

100**Dê a Claude mais contexto.** Digite `@filename` na caixa de prompt para puxar um arquivo específico para a conversa, anexe imagens e PDFs usando o botão de anexo, ou arraste e solte arquivos diretamente no prompt. Quanto mais contexto Claude tiver, melhores serão os resultados. Consulte [Adicionar arquivos e contexto](/pt/desktop#add-files-and-context-to-prompts).

101 

102**Use skills para tarefas repetíveis.** Digite `/` ou clique em **+** → **Slash commands** para procurar [comandos integrados](/pt/commands), [skills personalizadas](/pt/skills) e skills de plugin. Skills são prompts reutilizáveis que você pode invocar sempre que precisar, como listas de verificação de revisão de código ou etapas de implantação.

103 

104**Revise as alterações antes de fazer commit.** Depois que Claude edita arquivos, um indicador `+12 -1` aparece. Clique nele para abrir a [visualização de diff](/pt/desktop#review-changes-with-diff-view), revise as modificações arquivo por arquivo e comente em linhas específicas. Claude lê seus comentários e revisa. Clique em **Review code** para que Claude avalie os diffs e deixe sugestões inline.

105 

106**Ajuste quanto controle você tem.** Seu [modo de permissão](/pt/desktop#choose-a-permission-mode) controla o equilíbrio. Ask permissions (padrão) requer aprovação antes de cada edição. Auto accept edits aceita automaticamente edições de arquivo para iteração mais rápida. Plan mode permite que Claude mapeie uma abordagem sem tocar em nenhum arquivo, o que é útil antes de uma grande refatoração.

107 

108**Adicione plugins para mais capacidades.** Clique no botão **+** ao lado da caixa de prompt e selecione **Plugins** para procurar e instalar [plugins](/pt/desktop#install-plugins) que adicionam skills, agentes, MCP servers e muito mais.

109 

110**Organize seu espaço de trabalho.** Arraste os painéis de chat, diff, terminal, arquivo e visualização para qualquer layout que desejar. Abra o terminal com **Ctrl+\`** para executar comandos ao lado de sua sessão, ou clique em um caminho de arquivo para abri-lo no painel de arquivo. Consulte [Organize seu espaço de trabalho](/pt/desktop#arrange-your-workspace).

111 

112**Visualize seu aplicativo.** Clique no dropdown **Preview** para executar seu servidor de desenvolvimento diretamente no desktop. Claude pode visualizar o aplicativo em execução, testar endpoints, inspecionar logs e iterar sobre o que vê. Consulte [Visualize seu aplicativo](/pt/desktop#preview-your-app).

113 

114**Rastreie sua solicitação de pull.** Depois de abrir um PR, Claude Code monitora os resultados de verificação de CI e pode corrigir automaticamente falhas ou mesclar o PR assim que todas as verificações passarem. Consulte [Monitore o status da solicitação de pull](/pt/desktop#monitor-pull-request-status).

115 

116**Coloque Claude em um cronograma.** Configure [tarefas agendadas](/pt/desktop-scheduled-tasks) para executar Claude automaticamente em uma base recorrente: uma revisão de código diária todas as manhãs, uma auditoria de dependência semanal ou um briefing que extrai de suas ferramentas conectadas.

117 

118**Escale quando estiver pronto.** Abra [sessões paralelas](/pt/desktop#work-in-parallel-with-sessions) na barra lateral para trabalhar em várias tarefas ao mesmo tempo, cada uma em seu próprio Git worktree, e abra o [painel de tarefas](/pt/desktop#watch-background-tasks) para observar os subagentes e comandos em segundo plano que uma sessão está executando. Abra um [side chat](/pt/desktop#ask-a-side-question-without-derailing-the-session) para fazer uma pergunta sem descarrilar a thread principal. Envie [trabalho de longa duração para a nuvem](/pt/desktop#run-long-running-tasks-remotely) para que continue mesmo se você fechar o aplicativo, ou [continue uma sessão na web ou em seu IDE](/pt/desktop#continue-in-another-surface) se uma tarefa levar mais tempo do que o esperado. [Conecte ferramentas externas](/pt/desktop#extend-claude-code) como GitHub, Slack e Linear para reunir seu fluxo de trabalho.

119 

120## Vindo da CLI?

121 

122Desktop executa o mesmo mecanismo que a CLI com uma interface gráfica. Você pode executar ambos simultaneamente no mesmo projeto, e eles compartilham configuração (arquivos CLAUDE.md, MCP servers, hooks, skills e configurações). Para uma comparação completa de recursos, equivalentes de flag e o que não está disponível no Desktop, consulte [Comparação de CLI](/pt/desktop#coming-from-the-cli).

123 

124## Próximas etapas

125 

126* [Usar Claude Code Desktop](/pt/desktop): modos de permissão, sessões paralelas, visualização de diff, conectores e configuração corporativa

127* [Solução de problemas](/pt/desktop#troubleshooting): soluções para erros comuns e problemas de configuração

128* [Melhores práticas](/pt/best-practices): dicas para escrever prompts eficazes e aproveitar ao máximo Claude Code

129* [Fluxos de trabalho comuns](/pt/common-workflows): tutoriais para depuração, refatoração, testes e muito mais

devcontainer.md +194 −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# Contêineres de desenvolvimento

6 

7> Execute Claude Code dentro de um contêiner de desenvolvimento para ambientes consistentes e isolados em toda sua equipe.

8 

9Um [contêiner de desenvolvimento](https://containers.dev/), ou dev container, permite que você defina um ambiente idêntico e isolado que cada engenheiro da sua equipe possa executar. Com Claude Code instalado nesse contêiner, os comandos que Claude executa funcionam dentro dele em vez de na máquina host, enquanto as edições nos arquivos do seu projeto aparecem no seu repositório local conforme você trabalha.

10 

11Esta página aborda [instalar Claude Code em um dev container](#add-claude-code-to-your-dev-container) e os tópicos de configuração que se seguem. Cada tópico é independente, então pule para os que correspondem ao que você precisa configurar:

12 

13* [Persistir autenticação e configurações entre reconstruções](#persist-authentication-and-settings-across-rebuilds)

14* [Aplicar política organizacional](#enforce-organization-policy)

15* [Restringir saída de rede](#restrict-network-egress)

16* [Executar sem prompts de permissão](#run-without-permission-prompts)

17 

18<Warning>

19 Embora o dev container forneça proteções substanciais, nenhum sistema é completamente imune a todos os ataques.

20 Quando executado com `--dangerously-skip-permissions`, dev containers não impedem que um projeto malicioso exfiltre qualquer coisa acessível dentro do contêiner, incluindo as credenciais do Claude Code armazenadas em [`~/.claude`](/pt/claude-directory).

21 Use dev containers apenas ao desenvolver com repositórios confiáveis e monitore as atividades do Claude.

22 Evite montar segredos do host como `~/.ssh` ou arquivos de credenciais de nuvem no contêiner; prefira tokens com escopo de repositório ou de curta duração.

23</Warning>

24 

25<Accordion title="Como dev containers funcionam com seu editor">

26 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagrama mostrando um editor no host conectando a um contêiner dev Docker. Claude Code, o terminal e ferramentas de compilação executam dentro do contêiner. O repositório do host é bind-mounted no contêiner como o workspace." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

27 

28 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Diagrama mostrando um editor no host conectando a um contêiner dev Docker. Claude Code, o terminal e ferramentas de compilação executam dentro do contêiner. O repositório do host é bind-mounted no contêiner como o workspace." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

29 

30 Um dev container é executado como um contêiner Docker, seja na sua máquina ou em um host de nuvem como GitHub Codespaces. Um editor que suporta a especificação Dev Containers, como VS Code, GitHub Codespaces, um IDE JetBrains ou Cursor, se conecta a esse contêiner: você navega e edita arquivos no editor como de costume, mas o terminal integrado, servidores de linguagem e ferramentas de compilação todos executam dentro do contêiner em vez de no seu host. Editores sem suporte a dev container, como Vim simples, não fazem parte deste fluxo de trabalho.

31 

32 Claude Code é executado dentro do contêiner, então ele vê os mesmos arquivos, dependências e ferramentas que o resto da cadeia de ferramentas do seu projeto. No VS Code você pode usar o [painel de extensão Claude Code](/pt/vs-code) ou executar `claude` no terminal integrado; ambos executam dentro do contêiner e compartilham a mesma configuração `~/.claude`.

33</Accordion>

34 

35## Adicionar Claude Code ao seu dev container

36 

37Claude Code é instalado em qualquer dev container através do [Claude Code Dev Container Feature](https://github.com/anthropics/devcontainer-features/tree/main/src/claude-code).

38 

39As configurações funcionam com qualquer ferramenta que suporte a especificação Dev Containers, como VS Code, GitHub Codespaces ou IDEs JetBrains. Os passos abaixo usam VS Code como exemplo.

40 

41Quando você abre o contêiner no VS Code ou Codespaces, o feature também adiciona a extensão Claude Code VS Code; outros editores ignoram essa parte.

42 

43<Tip>

44 Novo em dev containers? O [tutorial Dev Containers do VS Code](https://code.visualstudio.com/docs/devcontainers/tutorial) orienta você na instalação do Docker, da extensão e na abertura do seu primeiro contêiner. Para um exemplo mais completo e endurecido com firewall e volumes persistentes, veja [Experimente o contêiner de referência](#try-the-reference-container).

45</Tip>

46 

47<Steps>

48 <Step title="Criar ou atualizar devcontainer.json">

49 Salve o seguinte como `.devcontainer/devcontainer.json` no seu repositório, ou adicione o bloco `features` ao seu arquivo existente.

50 

51 A tag de versão no final, como `:1.0`, fixa o script de instalação do feature, não a versão do Claude Code. O feature instala o Claude Code mais recente, e Claude Code se atualiza automaticamente dentro do contêiner por padrão.

52 

53 Para fixar a versão da CLI ou desabilitar auto-atualização, veja [Aplicar política organizacional](#enforce-organization-policy).

54 

55 ```json .devcontainer/devcontainer.json theme={null}

56 {

57 "image": "mcr.microsoft.com/devcontainers/base:ubuntu",

58 "features": {

59 "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}

60 }

61 }

62 ```

63 

64 Substitua a linha `image` pela imagem base do seu projeto ou remova-a se seu arquivo existente usar um Dockerfile.

65 </Step>

66 

67 <Step title="Reconstruir o contêiner">

68 Abra a Paleta de Comandos do VS Code com `Cmd+Shift+P` no Mac ou `Ctrl+Shift+P` no Windows e Linux, e execute **Dev Containers: Rebuild Container**.

69 

70 Para outras ferramentas, siga a ação de reconstrução dessa ferramenta: veja [reconstruindo no GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), a [CLI Dev Containers](https://github.com/devcontainers/cli), ou a documentação de dev container do seu IDE.

71 </Step>

72 

73 <Step title="Entrar no Claude Code">

74 Abra um terminal no contêiner reconstruído e execute `claude`, depois siga o prompt de autenticação.

75 </Step>

76</Steps>

77 

78O que você vê no prompt de autenticação depende do seu provedor:

79 

80* **Anthropic**: entre através de um navegador com sua conta Claude ou Anthropic Console

81* **[Amazon Bedrock, Google Vertex AI ou Microsoft Foundry](/pt/third-party-integrations)**: Claude Code usa suas credenciais do provedor de nuvem, sem prompt de navegador

82 

83Para provedores de nuvem, passe credenciais para o contêiner como variáveis de ambiente através de `containerEnv`, um segredo do Codespaces, ou a identidade de carga de trabalho da sua nuvem em vez de montar arquivos de credenciais do host. Veja [Amazon Bedrock](/pt/amazon-bedrock), [Google Vertex AI](/pt/google-vertex-ai) ou [Microsoft Foundry](/pt/microsoft-foundry) para a cadeia de credenciais que Claude Code lê.

84 

85Veja [Escolha seu provedor de API](/pt/admin-setup#choose-your-api-provider) para decidir qual caminho se adequa à sua organização.

86 

87<Note>

88 Se a entrada do navegador for concluída mas o callback nunca chegar ao contêiner, copie o código mostrado no navegador e cole-o no prompt `Paste code here if prompted` no terminal. Isso pode acontecer quando o encaminhamento de porta do editor não roteia o callback localhost.

89</Note>

90 

91## Persistir autenticação e configurações entre reconstruções

92 

93Por padrão, o diretório home do contêiner é descartado na reconstrução, então os engenheiros devem entrar novamente a cada vez. Claude Code armazena seu token de autenticação, configurações do usuário e histórico de sessão em [`~/.claude`](/pt/claude-directory). Monte um volume nomeado nesse caminho para manter esse estado entre reconstruções.

94 

95O exemplo a seguir monta um volume no diretório home do usuário `node`:

96 

97```json devcontainer.json theme={null}

98"mounts": [

99 "source=claude-code-config,target=/home/node/.claude,type=volume"

100]

101```

102 

103Substitua `/home/node` pelo diretório home do `remoteUser` do seu contêiner. Se você montar o volume em algum lugar diferente de `~/.claude`, defina [`CLAUDE_CONFIG_DIR`](/pt/env-vars) para o caminho de montagem para que Claude Code leia e escreva lá.

104 

105Para isolar o estado por projeto em vez de compartilhar um volume em todos os repositórios, inclua a variável `${devcontainerId}` no nome da fonte. A [configuração de referência](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) usa `source=claude-code-config-${devcontainerId}` para esse propósito.

106 

107No GitHub Codespaces, `~/.claude` persiste entre parar e iniciar um codespace, mas ainda é limpo quando você reconstrói o contêiner, então a montagem de volume acima se aplica lá também. Para levar autenticação entre codespaces, armazene `ANTHROPIC_API_KEY` ou um `CLAUDE_CODE_OAUTH_TOKEN` de [`claude setup-token`](/pt/authentication#generate-a-long-lived-token) como um [segredo do Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces disponibiliza segredos como variáveis de ambiente dentro do contêiner automaticamente.

108 

109## Aplicar política organizacional

110 

111Um dev container é um lugar conveniente para aplicar política organizacional, porque a mesma imagem e configuração executam na máquina de cada engenheiro.

112 

113Claude Code lê `/etc/claude-code/managed-settings.json` no Linux e a aplica com a precedência mais alta na [hierarquia de configurações](/pt/settings#how-scopes-interact), então valores lá substituem qualquer coisa que um engenheiro defina em `~/.claude` ou no diretório `.claude/` do projeto. Copie o arquivo para o lugar certo a partir do seu Dockerfile:

114 

115```dockerfile Dockerfile theme={null}

116RUN mkdir -p /etc/claude-code

117COPY managed-settings.json /etc/claude-code/managed-settings.json

118```

119 

120Como o Dockerfile fica no repositório, qualquer pessoa com acesso de escrita pode alterar ou remover essa etapa. Para política que engenheiros não possam contornar editando arquivos do repositório, entregue configurações gerenciadas através de [configurações gerenciadas pelo servidor](/pt/server-managed-settings) ou seu MDM em vez disso. Veja [arquivos de configurações gerenciadas](/pt/settings#settings-files) para as chaves disponíveis e os outros caminhos de entrega.

121 

122Para definir [variáveis de ambiente](/pt/env-vars) que se apliquem a cada sessão do Claude Code no contêiner, adicione-as a `containerEnv` no seu `devcontainer.json`. O exemplo a seguir desativa telemetria e relatório de erros e impede que Claude Code se atualize automaticamente após a instalação:

123 

124```json devcontainer.json theme={null}

125"containerEnv": {

126 "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",

127 "DISABLE_AUTOUPDATER": "1"

128}

129```

130 

131O Dev Container Feature sempre instala a versão mais recente do Claude Code. Para fixar uma versão específica do Claude Code para compilações reproduzíveis, instale-o a partir do seu Dockerfile com `npm install -g @anthropic-ai/claude-code@X.Y.Z` em vez de usar o feature, e defina `DISABLE_AUTOUPDATER` como mostrado acima.

132 

133Para a lista completa de controles de política incluindo regras de permissão, restrições de ferramentas e listas de permissão de servidores MCP, veja [Configure Claude Code para sua organização](/pt/admin-setup).

134 

135Para disponibilizar [servidores MCP](/pt/mcp) dentro do contêiner, defina-os no [escopo do projeto](/pt/mcp#mcp-installation-scopes) em um arquivo `.mcp.json` na raiz do repositório para que sejam verificados junto com sua configuração de dev container. Instale quaisquer binários dos quais servidores stdio locais dependem no seu Dockerfile, e adicione domínios de servidor remoto à sua lista de permissão de rede.

136 

137## Restringir saída de rede

138 

139Você pode limitar o tráfego de saída do contêiner apenas aos domínios que Claude Code precisa. Veja [Requisitos de acesso à rede](/pt/network-config#network-access-requirements) para os domínios de inferência e autenticação, e [Serviços de telemetria](/pt/data-usage#telemetry-services) para as conexões opcionais de telemetria e relatório de erros e como desabilitá-las.

140 

141O contêiner de referência inclui um script [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) que bloqueia todo o tráfego de saída exceto os domínios que Claude Code e suas ferramentas de desenvolvimento precisam. Executar um firewall dentro de um contêiner requer permissões extras, então a referência adiciona as capacidades `NET_ADMIN` e `NET_RAW` através de `runArgs`. O script de firewall e essas capacidades não são necessários para o próprio Claude Code: você pode deixá-los de fora e confiar em seus próprios controles de rede em vez disso.

142 

143## Executar sem prompts de permissão

144 

145Como o contêiner executa Claude Code como um usuário não-root e confina a execução de comandos ao contêiner, você pode passar `--dangerously-skip-permissions` para operação autônoma. A CLI rejeita essa flag quando lançada como root, então confirme que `remoteUser` está definido para uma conta não-root.

146 

147Pular prompts de permissão remove sua oportunidade de revisar chamadas de ferramentas antes de serem executadas. Claude ainda pode modificar qualquer arquivo no workspace bind-mounted, que aparece diretamente no seu host, e alcançar qualquer coisa que a política de rede do contêiner permite. Combine essa flag com as [restrições de saída de rede](#restrict-network-egress) acima para limitar o que uma sessão contornada pode alcançar.

148 

149Se você quer menos prompts sem desabilitar verificações de segurança, considere [modo automático](/pt/permission-modes#eliminate-prompts-with-auto-mode) em vez disso, que tem um classificador revisando ações antes de serem executadas. Para impedir que engenheiros usem `--dangerously-skip-permissions` completamente, defina `permissions.disableBypassPermissionsMode` para `"disable"` em [configurações gerenciadas](/pt/settings#permission-settings).

150 

151## Experimente o contêiner de referência

152 

153O repositório [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/.devcontainer) inclui um exemplo de dev container que combina a CLI, o firewall de saída, volumes persistentes e um shell baseado em Zsh. É fornecido como um exemplo funcional em vez de uma imagem base mantida; use-o para ver como as peças se encaixam antes de aplicá-las à sua própria configuração.

154 

155<Steps>

156 <Step title="Instalar pré-requisitos">

157 Instale VS Code e a [extensão Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).

158 </Step>

159 

160 <Step title="Clonar a referência">

161 Clone o [repositório Claude Code](https://github.com/anthropics/claude-code) e abra-o no VS Code.

162 </Step>

163 

164 <Step title="Reabrir no contêiner">

165 Quando solicitado, clique em **Reopen in Container**, ou execute **Dev Containers: Reopen in Container** na Paleta de Comandos.

166 </Step>

167 

168 <Step title="Iniciar Claude Code">

169 Assim que o contêiner terminar de compilar, abra um terminal com `` Ctrl+` `` e execute `claude` para entrar e iniciar sua primeira sessão.

170 </Step>

171</Steps>

172 

173Para usar essa configuração com seu próprio projeto, copie o diretório `.devcontainer/` para seu repositório e ajuste o Dockerfile para sua cadeia de ferramentas, ou retorne a [Adicionar Claude Code ao seu dev container](#add-claude-code-to-your-dev-container) para adicionar apenas o feature a uma configuração que você já tem.

174 

175A configuração de referência consiste em três arquivos. Nenhum deles é necessário quando você adiciona Claude Code ao seu próprio dev container através do feature, mas eles mostram uma maneira de combinar as peças.

176 

177| Arquivo | Propósito |

178| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |

179| [`devcontainer.json`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) | Montagens de volume, capacidades `runArgs`, extensões VS Code e `containerEnv` |

180| [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile) | Imagem base, ferramentas de desenvolvimento e a instalação do Claude Code |

181| [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) | Bloqueia todo o tráfego de rede de saída exceto os domínios permitidos |

182 

183## Próximos passos

184 

185Assim que Claude Code estiver executando no seu dev container, as páginas abaixo cobrem o resto de um rollout organizacional: escolher um caminho de autenticação, entregar política gerenciada fora do repositório, monitorar uso e entender o que Claude Code armazena e envia.

186 

187* [Configure Claude Code para sua organização](/pt/admin-setup): escolha um provedor de autenticação, decida como a política chega aos dispositivos e planeje o rollout

188* [Configurações gerenciadas pelo servidor](/pt/server-managed-settings): entregue política gerenciada do console de administrador Claude.ai para que engenheiros não possam contorná-la editando arquivos do repositório

189* [Monitore uso e atividade de auditoria](/pt/monitoring-usage): exporte métricas OpenTelemetry e revise o que sua equipe está executando

190* [Requisitos de acesso à rede](/pt/network-config#network-access-requirements): a lista completa de domínios para proxies e firewalls

191* [Serviços de telemetria e opt-out](/pt/data-usage#telemetry-services): o que Claude Code envia por padrão e as variáveis de ambiente que desabilitam

192* [Explore o diretório `.claude`](/pt/claude-directory): o que a montagem de volume contém, incluindo credenciais, configurações e histórico de sessão

193* [Modelo de segurança](/pt/security): como o sistema de permissões do Claude Code, sandboxing e proteções contra injeção de prompt se encaixam

194* [Modos de permissão](/pt/permission-modes): a gama completa de modo de plano para modo automático para contorno, e quando usar cada um

discover-plugins.md +427 −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# Descubra e instale plugins pré-construídos através de marketplaces

6 

7> Encontre e instale plugins de marketplaces para estender Claude Code com novos comandos, agentes e capacidades.

8 

9Plugins estendem Claude Code com skills, agentes, hooks e MCP servers. Marketplaces de plugins são catálogos que ajudam você a descobrir e instalar essas extensões sem construí-las você mesmo.

10 

11Procurando criar e distribuir seu próprio marketplace? Veja [Criar e distribuir um marketplace de plugins](/pt/plugin-marketplaces).

12 

13## Como os marketplaces funcionam

14 

15Um marketplace é um catálogo de plugins que alguém criou e compartilhou. Usar um marketplace é um processo de duas etapas:

16 

17<Steps>

18 <Step title="Adicione o marketplace">

19 Isso registra o catálogo com Claude Code para que você possa navegar o que está disponível. Nenhum plugin é instalado ainda.

20 </Step>

21 

22 <Step title="Instale plugins individuais">

23 Navegue pelo catálogo e instale os plugins que você deseja.

24 </Step>

25</Steps>

26 

27Pense nisso como adicionar uma loja de aplicativos: adicionar a loja oferece acesso para navegar sua coleção, mas você ainda escolhe quais aplicativos baixar individualmente.

28 

29## Marketplace oficial da Anthropic

30 

31O marketplace oficial da Anthropic (`claude-plugins-official`) está automaticamente disponível quando você inicia Claude Code. Execute `/plugin` e vá para a aba **Discover** para navegar o que está disponível, ou visualize o catálogo em [claude.com/plugins](https://claude.com/plugins).

32 

33Para instalar um plugin do marketplace oficial, use `/plugin install <name>@claude-plugins-official`. Por exemplo, para instalar a integração do GitHub:

34 

35```shell theme={null}

36/plugin install github@claude-plugins-official

37```

38 

39<Note>

40 O marketplace oficial é mantido pela Anthropic. Para enviar um plugin para o marketplace oficial, use um dos formulários de envio no aplicativo:

41 

42 * **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

43 * **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

44 

45 Para distribuir plugins independentemente, [crie seu próprio marketplace](/pt/plugin-marketplaces) e compartilhe com usuários.

46</Note>

47 

48O marketplace oficial inclui várias categorias de plugins:

49 

50### Code intelligence

51 

52Plugins de code intelligence habilitam a ferramenta LSP integrada do Claude Code, dando a Claude a capacidade de pular para definições, encontrar referências e ver erros de tipo imediatamente após edições. Esses plugins configuram conexões do [Language Server Protocol](https://microsoft.github.io/language-server-protocol/), a mesma tecnologia que alimenta a code intelligence do VS Code.

53 

54Esses plugins requerem que o binário do language server esteja instalado no seu sistema. Se você já tem um language server instalado, Claude pode solicitar que você instale o plugin correspondente quando abrir um projeto.

55 

56| Linguagem | Plugin | Binário necessário |

57| :--------- | :------------------ | :--------------------------- |

58| C/C++ | `clangd-lsp` | `clangd` |

59| C# | `csharp-lsp` | `csharp-ls` |

60| Go | `gopls-lsp` | `gopls` |

61| Java | `jdtls-lsp` | `jdtls` |

62| Kotlin | `kotlin-lsp` | `kotlin-language-server` |

63| Lua | `lua-lsp` | `lua-language-server` |

64| PHP | `php-lsp` | `intelephense` |

65| Python | `pyright-lsp` | `pyright-langserver` |

66| Rust | `rust-analyzer-lsp` | `rust-analyzer` |

67| Swift | `swift-lsp` | `sourcekit-lsp` |

68| TypeScript | `typescript-lsp` | `typescript-language-server` |

69 

70Você também pode [criar seu próprio plugin LSP](/pt/plugins-reference#lsp-servers) para outras linguagens.

71 

72<Note>

73 Se você vir `Executable not found in $PATH` na aba Errors do `/plugin` após instalar um plugin, instale o binário necessário da tabela acima.

74</Note>

75 

76#### O que Claude ganha com plugins de code intelligence

77 

78Uma vez que um plugin de code intelligence está instalado e seu binário de language server está disponível, Claude ganha duas capacidades:

79 

80* **Diagnósticos automáticos**: após cada edição de arquivo que Claude faz, o language server analisa as mudanças e relata erros e avisos automaticamente. Claude vê erros de tipo, importações faltantes e problemas de sintaxe sem precisar executar um compilador ou linter. Se Claude introduzir um erro, ele percebe e corrige o problema na mesma volta. Isso não requer configuração além de instalar o plugin. Você pode ver diagnósticos inline pressionando **Ctrl+O** quando o indicador "diagnostics found" aparecer.

81* **Navegação de código**: Claude pode usar o language server para pular para definições, encontrar referências, obter informações de tipo ao passar o mouse, listar símbolos, encontrar implementações e rastrear hierarquias de chamadas. Essas operações dão a Claude navegação mais precisa do que busca baseada em grep, embora a disponibilidade possa variar por linguagem e ambiente.

82 

83Se você encontrar problemas, veja [Troubleshooting de code intelligence](#code-intelligence-issues).

84 

85### Integrações externas

86 

87Esses plugins agrupam [MCP servers](/pt/mcp) pré-configurados para que você possa conectar Claude a serviços externos sem configuração manual:

88 

89* **Controle de fonte**: `github`, `gitlab`

90* **Gerenciamento de projetos**: `atlassian` (Jira/Confluence), `asana`, `linear`, `notion`

91* **Design**: `figma`

92* **Infraestrutura**: `vercel`, `firebase`, `supabase`

93* **Comunicação**: `slack`

94* **Monitoramento**: `sentry`

95 

96### Fluxos de trabalho de desenvolvimento

97 

98Plugins que adicionam comandos e agentes para tarefas comuns de desenvolvimento:

99 

100* **commit-commands**: Fluxos de trabalho de commit do Git incluindo commit, push e criação de PR

101* **pr-review-toolkit**: Agentes especializados para revisar pull requests

102* **agent-sdk-dev**: Ferramentas para construir com o Claude Agent SDK

103* **plugin-dev**: Toolkit para criar seus próprios plugins

104 

105### Estilos de saída

106 

107Customize como Claude responde:

108 

109* **explanatory-output-style**: Insights educacionais sobre escolhas de implementação

110* **learning-output-style**: Modo de aprendizado interativo para construção de skills

111 

112## Experimente: adicione o marketplace de demonstração

113 

114Anthropic também mantém um [marketplace de plugins de demonstração](https://github.com/anthropics/claude-code/tree/main/plugins) (`claude-code-plugins`) com plugins de exemplo que mostram o que é possível com o sistema de plugins. Diferentemente do marketplace oficial, você precisa adicionar este manualmente.

115 

116<Steps>

117 <Step title="Adicione o marketplace">

118 De dentro do Claude Code, execute o comando `plugin marketplace add` para o marketplace `anthropics/claude-code`:

119 

120 ```shell theme={null}

121 /plugin marketplace add anthropics/claude-code

122 ```

123 

124 Isso baixa o catálogo do marketplace e torna seus plugins disponíveis para você.

125 </Step>

126 

127 <Step title="Navegue pelos plugins disponíveis">

128 Execute `/plugin` para abrir o gerenciador de plugins. Isso abre uma interface com abas com quatro abas que você pode percorrer usando **Tab** (ou **Shift+Tab** para ir para trás):

129 

130 * **Discover**: navegue pelos plugins disponíveis de todos os seus marketplaces

131 * **Installed**: visualize e gerencie seus plugins instalados

132 * **Marketplaces**: adicione, remova ou atualize seus marketplaces adicionados

133 * **Errors**: visualize quaisquer erros de carregamento de plugins

134 

135 Vá para a aba **Discover** para ver plugins do marketplace que você acabou de adicionar.

136 </Step>

137 

138 <Step title="Instale um plugin">

139 Selecione um plugin para visualizar seus detalhes e escolha um escopo de instalação:

140 

141 * **User scope**: instale para você em todos os projetos

142 * **Project scope**: instale para todos os colaboradores neste repositório

143 * **Local scope**: instale para você neste repositório apenas

144 

145 Por exemplo, selecione **commit-commands** (um plugin que adiciona comandos de fluxo de trabalho git) e instale-o no seu escopo de usuário.

146 

147 Você também pode instalar diretamente da linha de comando:

148 

149 ```shell theme={null}

150 /plugin install commit-commands@anthropics-claude-code

151 ```

152 

153 Veja [Configuration scopes](/pt/settings#configuration-scopes) para aprender mais sobre escopos.

154 </Step>

155 

156 <Step title="Use seu novo plugin">

157 Após instalar, execute `/reload-plugins` para ativar o plugin. Comandos de plugin são nomeados com namespace pelo nome do plugin, então **commit-commands** fornece comandos como `/commit-commands:commit`.

158 

159 Experimente fazendo uma mudança em um arquivo e executando:

160 

161 ```shell theme={null}

162 /commit-commands:commit

163 ```

164 

165 Isso prepara suas mudanças, gera uma mensagem de commit e cria o commit.

166 

167 Cada plugin funciona diferentemente. Verifique a descrição do plugin na aba **Discover** ou sua página inicial para aprender quais comandos e capacidades ele fornece.

168 </Step>

169</Steps>

170 

171O resto deste guia cobre todas as maneiras que você pode adicionar marketplaces, instalar plugins e gerenciar sua configuração.

172 

173## Adicione marketplaces

174 

175Use o comando `/plugin marketplace add` para adicionar marketplaces de diferentes fontes.

176 

177<Tip>

178 **Atalhos**: Você pode usar `/plugin market` em vez de `/plugin marketplace` e `rm` em vez de `remove`.

179</Tip>

180 

181* **Repositórios GitHub**: formato `owner/repo` (por exemplo, `anthropics/claude-code`)

182* **URLs Git**: qualquer URL de repositório git (GitLab, Bitbucket, auto-hospedado)

183* **Caminhos locais**: diretórios ou caminhos diretos para arquivos `marketplace.json`

184* **URLs remotas**: URLs diretas para arquivos `marketplace.json` hospedados

185 

186### Adicione do GitHub

187 

188Adicione um repositório GitHub que contém um arquivo `.claude-plugin/marketplace.json` usando o formato `owner/repo`—onde `owner` é o nome de usuário ou organização do GitHub e `repo` é o nome do repositório.

189 

190Por exemplo, `anthropics/claude-code` refere-se ao repositório `claude-code` de propriedade de `anthropics`:

191 

192```shell theme={null}

193/plugin marketplace add anthropics/claude-code

194```

195 

196### Adicione de outros hosts Git

197 

198Adicione qualquer repositório git fornecendo a URL completa. Isso funciona com qualquer host Git, incluindo GitLab, Bitbucket e servidores auto-hospedados:

199 

200Usando HTTPS:

201 

202```shell theme={null}

203/plugin marketplace add https://gitlab.com/company/plugins.git

204```

205 

206Usando SSH:

207 

208```shell theme={null}

209/plugin marketplace add git@gitlab.com:company/plugins.git

210```

211 

212Para adicionar um branch ou tag específico, acrescente `#` seguido pela ref:

213 

214```shell theme={null}

215/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

216```

217 

218### Adicione de caminhos locais

219 

220Adicione um diretório local que contém um arquivo `.claude-plugin/marketplace.json`:

221 

222```shell theme={null}

223/plugin marketplace add ./my-marketplace

224```

225 

226Você também pode adicionar um caminho direto para um arquivo `marketplace.json`:

227 

228```shell theme={null}

229/plugin marketplace add ./path/to/marketplace.json

230```

231 

232### Adicione de URLs remotas

233 

234Adicione um arquivo `marketplace.json` remoto via URL:

235 

236```shell theme={null}

237/plugin marketplace add https://example.com/marketplace.json

238```

239 

240<Note>

241 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](/pt/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

242</Note>

243 

244## Instale plugins

245 

246Uma vez que você adicionou marketplaces, você pode instalar plugins diretamente (instala no escopo de usuário por padrão):

247 

248```shell theme={null}

249/plugin install plugin-name@marketplace-name

250```

251 

252Para escolher um [escopo de instalação](/pt/settings#configuration-scopes) diferente, use a UI interativa: execute `/plugin`, vá para a aba **Discover** e pressione **Enter** em um plugin. Você verá opções para:

253 

254* **User scope** (padrão): instale para você em todos os projetos

255* **Project scope**: instale para todos os colaboradores neste repositório (adiciona a `.claude/settings.json`)

256* **Local scope**: instale para você neste repositório apenas (não compartilhado com colaboradores)

257 

258Você também pode ver plugins com escopo **managed**—esses são instalados por administradores via [managed settings](/pt/settings#settings-files) e não podem ser modificados.

259 

260Execute `/plugin` e vá para a aba **Installed** para ver seus plugins agrupados por escopo.

261 

262<Warning>

263 Certifique-se de confiar em um plugin antes de instalá-lo. Anthropic não controla quais MCP servers, arquivos ou outro software estão incluídos em plugins e não pode verificar que funcionam conforme pretendido. Verifique a página inicial de cada plugin para mais informações.

264</Warning>

265 

266## Gerencie plugins instalados

267 

268Execute `/plugin` e vá para a aba **Installed** para visualizar, habilitar, desabilitar ou desinstalar seus plugins. Digite para filtrar a lista por nome ou descrição do plugin.

269 

270Você também pode gerenciar plugins com comandos diretos.

271 

272Desabilite um plugin sem desinstalá-lo:

273 

274```shell theme={null}

275/plugin disable plugin-name@marketplace-name

276```

277 

278Reabilite um plugin desabilitado:

279 

280```shell theme={null}

281/plugin enable plugin-name@marketplace-name

282```

283 

284Remova completamente um plugin:

285 

286```shell theme={null}

287/plugin uninstall plugin-name@marketplace-name

288```

289 

290A opção `--scope` permite que você direcione um escopo específico com comandos CLI:

291 

292```shell theme={null}

293claude plugin install formatter@your-org --scope project

294claude plugin uninstall formatter@your-org --scope project

295```

296 

297### Aplique mudanças de plugin sem reiniciar

298 

299Quando você instala, habilita ou desabilita plugins durante uma sessão, execute `/reload-plugins` para ativar todas as mudanças sem reiniciar:

300 

301```shell theme={null}

302/reload-plugins

303```

304 

305Claude Code recarrega todos os plugins ativos e mostra contagens para plugins, skills, agentes, hooks, MCP servers de plugin e servidores LSP de plugin.

306 

307## Gerencie marketplaces

308 

309Você pode gerenciar marketplaces através da interface interativa `/plugin` ou com comandos CLI.

310 

311### Use a interface interativa

312 

313Execute `/plugin` e vá para a aba **Marketplaces** para:

314 

315* Visualize todos os seus marketplaces adicionados com suas fontes e status

316* Adicione novos marketplaces

317* Atualize listagens de marketplace para buscar os plugins mais recentes

318* Remova marketplaces que você não precisa mais

319 

320### Use comandos CLI

321 

322Você também pode gerenciar marketplaces com comandos diretos.

323 

324Liste todos os marketplaces configurados:

325 

326```shell theme={null}

327/plugin marketplace list

328```

329 

330Atualize listagens de plugins de um marketplace:

331 

332```shell theme={null}

333/plugin marketplace update marketplace-name

334```

335 

336Remova um marketplace:

337 

338```shell theme={null}

339/plugin marketplace remove marketplace-name

340```

341 

342<Warning>

343 Remover um marketplace desinstalará quaisquer plugins que você instalou dele.

344</Warning>

345 

346### Configure atualizações automáticas

347 

348Claude Code pode atualizar automaticamente marketplaces e seus plugins instalados na inicialização. Quando a atualização automática está habilitada para um marketplace, Claude Code atualiza os dados do marketplace e atualiza plugins instalados para suas versões mais recentes. Se quaisquer plugins foram atualizados, você verá uma notificação solicitando que execute `/reload-plugins`.

349 

350Alterne a atualização automática para marketplaces individuais através da UI:

351 

3521. Execute `/plugin` para abrir o gerenciador de plugins

3532. Selecione **Marketplaces**

3543. Escolha um marketplace da lista

3554. Selecione **Enable auto-update** ou **Disable auto-update**

356 

357Marketplaces oficiais da Anthropic têm atualização automática habilitada por padrão. Marketplaces de terceiros e de desenvolvimento local têm atualização automática desabilitada por padrão.

358 

359Para desabilitar todas as atualizações automáticas inteiramente para Claude Code e todos os plugins, defina a variável de ambiente `DISABLE_AUTOUPDATER`. Veja [Auto updates](/pt/setup#auto-updates) para detalhes.

360 

361Para manter atualizações automáticas de plugins habilitadas enquanto desabilita atualizações automáticas de Claude Code, defina `FORCE_AUTOUPDATE_PLUGINS=1` junto com `DISABLE_AUTOUPDATER`:

362 

363```bash theme={null}

364export DISABLE_AUTOUPDATER=1

365export FORCE_AUTOUPDATE_PLUGINS=1

366```

367 

368Isso é útil quando você quer gerenciar atualizações de Claude Code manualmente mas ainda receber atualizações automáticas de plugins.

369 

370## Configure marketplaces de equipe

371 

372Administradores de equipe podem configurar instalação automática de marketplace para projetos adicionando configuração de marketplace a `.claude/settings.json`. Quando membros da equipe confiam na pasta do repositório, Claude Code os solicita a instalar esses marketplaces e plugins.

373 

374Adicione `extraKnownMarketplaces` ao `.claude/settings.json` do seu projeto:

375 

376```json theme={null}

377{

378 "extraKnownMarketplaces": {

379 "my-team-tools": {

380 "source": {

381 "source": "github",

382 "repo": "your-org/claude-plugins"

383 }

384 }

385 }

386}

387```

388 

389Para opções de configuração completas incluindo `extraKnownMarketplaces` e `enabledPlugins`, veja [Plugin settings](/pt/settings#plugin-settings).

390 

391## Segurança

392 

393Plugins e marketplaces são componentes altamente confiáveis que podem executar código arbitrário em sua máquina com seus privilégios de usuário. Instale apenas plugins e adicione marketplaces de fontes que você confia. Organizações podem restringir quais marketplaces os usuários podem adicionar usando [managed marketplace restrictions](/pt/plugin-marketplaces#managed-marketplace-restrictions).

394 

395## Troubleshooting

396 

397### Comando /plugin não reconhecido

398 

399Se você vir "unknown command" ou o comando `/plugin` não aparecer:

400 

4011. **Verifique sua versão**: Execute `claude --version` para ver o que está instalado.

4022. **Atualize Claude Code**:

403 * **Homebrew**: `brew upgrade claude-code`

404 * **npm**: `npm update -g @anthropic-ai/claude-code`

405 * **Native installer**: Re-execute o comando de instalação de [Setup](/pt/setup)

4063. **Reinicie Claude Code**: Após atualizar, reinicie seu terminal e execute `claude` novamente.

407 

408### Problemas comuns

409 

410* **Marketplace não carregando**: Verifique se a URL está acessível e se `.claude-plugin/marketplace.json` existe no caminho

411* **Falhas de instalação de plugin**: Verifique se as URLs de fonte do plugin estão acessíveis e repositórios são públicos (ou você tem acesso)

412* **Arquivos não encontrados após instalação**: Plugins são copiados para um cache, então caminhos referenciando arquivos fora do diretório do plugin não funcionarão

413* **Skills de plugin não aparecendo**: Limpe o cache com `rm -rf ~/.claude/plugins/cache`, reinicie Claude Code e reinstale o plugin.

414 

415Para troubleshooting detalhado com soluções, veja [Troubleshooting](/pt/plugin-marketplaces#troubleshooting) no guia de marketplace. Para ferramentas de debugging, veja [Debugging and development tools](/pt/plugins-reference#debugging-and-development-tools).

416 

417### Problemas de code intelligence

418 

419* **Language server não iniciando**: verifique se o binário está instalado e disponível em seu `$PATH`. Verifique a aba Errors do `/plugin` para detalhes.

420* **Alto uso de memória**: language servers como `rust-analyzer` e `pyright` podem consumir memória significativa em projetos grandes. Se você experimentar problemas de memória, desabilite o plugin com `/plugin disable <plugin-name>` e confie nas ferramentas de busca integradas do Claude.

421* **Diagnósticos falsos positivos em monorepos**: language servers podem relatar erros de importação não resolvida para pacotes internos se o workspace não estiver configurado corretamente. Esses não afetam a capacidade do Claude de editar código.

422 

423## Próximos passos

424 

425* **Construa seus próprios plugins**: Veja [Plugins](/pt/plugins) para criar skills, agentes e hooks

426* **Crie um marketplace**: Veja [Criar um marketplace de plugins](/pt/plugin-marketplaces) para distribuir plugins para sua equipe ou comunidade

427* **Referência técnica**: Veja [Plugins reference](/pt/plugins-reference) para especificações completas

env-vars.md +238 −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# Variáveis de ambiente

6 

7> Referência completa para variáveis de ambiente que controlam o comportamento do Claude Code.

8 

9Claude Code suporta as seguintes variáveis de ambiente para controlar seu comportamento. Configure-as no seu shell antes de iniciar `claude`, ou configure-as em [`settings.json`](/pt/settings#available-settings) sob a chave `env` para aplicá-las a cada sessão ou distribuí-las em sua equipe.

10 

11| Variável | Propósito |

12| :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

13| `ANTHROPIC_API_KEY` | Chave de API enviada como cabeçalho `X-Api-Key`. Quando definida, essa chave é usada em vez de sua assinatura Claude Pro, Max, Team ou Enterprise, mesmo que você esteja conectado. Em modo não interativo (`-p`), a chave é sempre usada quando presente. Em modo interativo, você é solicitado a aprovar a chave uma vez antes de ela substituir sua assinatura. Para usar sua assinatura em vez disso, execute `unset ANTHROPIC_API_KEY` |

14| `ANTHROPIC_AUTH_TOKEN` | Valor personalizado para o cabeçalho `Authorization` (o valor que você definir aqui será prefixado com `Bearer `) |

15| `ANTHROPIC_BASE_URL` | Substitua o endpoint da API para rotear solicitações através de um proxy ou gateway. Quando definido para um host que não é de primeira parte, [busca de ferramentas MCP](/pt/mcp#scale-with-mcp-tool-search) é desabilitada por padrão. Defina `ENABLE_TOOL_SEARCH=true` se seu proxy encaminha blocos `tool_reference` |

16| `ANTHROPIC_BEDROCK_BASE_URL` | Substitua a URL do endpoint Bedrock. Use para endpoints Bedrock personalizados ou ao rotear através de um [gateway LLM](/pt/llm-gateway). Veja [Amazon Bedrock](/pt/amazon-bedrock) |

17| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Substitua a URL do endpoint Bedrock Mantle. Veja [endpoint Mantle](/pt/amazon-bedrock#use-the-mantle-endpoint) |

18| `ANTHROPIC_BEDROCK_SERVICE_TIER` | Bedrock [service tier](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) (`default`, `flex` ou `priority`). Enviado como cabeçalho `X-Amzn-Bedrock-Service-Tier`. Veja [Amazon Bedrock](/pt/amazon-bedrock#service-tiers) |

19| `ANTHROPIC_BETAS` | Lista separada por vírgula de valores de cabeçalho `anthropic-beta` adicionais para incluir em solicitações de API. Claude Code já envia os cabeçalhos beta que precisa; use isso para optar por um [beta da API Anthropic](https://platform.claude.com/docs/en/api/beta-headers) antes que Claude Code adicione suporte nativo. Diferentemente da flag [`--betas`](/pt/cli-reference#cli-flags), que requer autenticação de chave de API, essa variável funciona com todos os métodos de autenticação, incluindo assinatura Claude.ai |

20| `ANTHROPIC_CUSTOM_HEADERS` | Cabeçalhos personalizados para adicionar às solicitações (formato `Name: Value`, separados por quebra de linha para múltiplos cabeçalhos) |

21| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID do modelo para adicionar como entrada personalizada no seletor `/model`. Use isso para tornar um modelo não padrão ou específico de gateway selecionável sem substituir aliases integrados. Veja [Configuração de modelo](/pt/model-config#add-a-custom-model-option) |

22| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Descrição de exibição para a entrada de modelo personalizado no seletor `/model`. Padrão é `Custom model (<model-id>)` quando não definido |

23| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nome de exibição para a entrada de modelo personalizado no seletor `/model`. Padrão é o ID do modelo quando não definido |

24| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

25| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Veja [Configuração de modelo](/pt/model-config#environment-variables) |

26| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

27| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

28| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

29| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Veja [Configuração de modelo](/pt/model-config#environment-variables) |

30| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

31| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

32| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

33| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Veja [Configuração de modelo](/pt/model-config#environment-variables) |

34| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

35| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

36| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Veja [Configuração de modelo](/pt/model-config#customize-pinned-model-display-and-capabilities) |

37| `ANTHROPIC_FOUNDRY_API_KEY` | Chave de API para autenticação do Microsoft Foundry (veja [Microsoft Foundry](/pt/microsoft-foundry)) |

38| `ANTHROPIC_FOUNDRY_BASE_URL` | URL base completa para o recurso Foundry (por exemplo, `https://my-resource.services.ai.azure.com/anthropic`). Alternativa para `ANTHROPIC_FOUNDRY_RESOURCE` (veja [Microsoft Foundry](/pt/microsoft-foundry)) |

39| `ANTHROPIC_FOUNDRY_RESOURCE` | Nome do recurso Foundry (por exemplo, `my-resource`). Obrigatório se `ANTHROPIC_FOUNDRY_BASE_URL` não estiver definido (veja [Microsoft Foundry](/pt/microsoft-foundry)) |

40| `ANTHROPIC_MODEL` | Nome da configuração de modelo a usar (veja [Configuração de modelo](/pt/model-config#environment-variables)) |

41| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Nome do [modelo da classe Haiku para tarefas em segundo plano](/pt/costs) |

42| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Substitua a região AWS para o modelo da classe Haiku ao usar Bedrock ou Bedrock Mantle |

43| `ANTHROPIC_VERTEX_BASE_URL` | Substitua a URL do endpoint Vertex AI. Use para endpoints Vertex personalizados ou ao rotear através de um [gateway LLM](/pt/llm-gateway). Veja [Google Vertex AI](/pt/google-vertex-ai) |

44| `ANTHROPIC_VERTEX_PROJECT_ID` | ID do projeto GCP para Vertex AI. Obrigatório ao usar [Google Vertex AI](/pt/google-vertex-ai) |

45| `API_TIMEOUT_MS` | Tempo limite para solicitações de API em milissegundos (padrão: 600000, ou 10 minutos; máximo: 2147483647). Aumente isso quando as solicitações expiram em redes lentas ou ao rotear através de um proxy. Valores acima do máximo causam overflow do temporizador subjacente e fazem com que as solicitações falhem imediatamente |

46| `AWS_BEARER_TOKEN_BEDROCK` | Chave de API do Bedrock para autenticação (veja [Chaves de API do Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

47| `BASH_DEFAULT_TIMEOUT_MS` | Tempo limite padrão para comandos bash de longa duração (padrão: 120000, ou 2 minutos) |

48| `BASH_MAX_OUTPUT_LENGTH` | Número máximo de caracteres nas saídas bash antes de serem truncadas no meio |

49| `BASH_MAX_TIMEOUT_MS` | Tempo limite máximo que o modelo pode definir para comandos bash de longa duração (padrão: 600000, ou 10 minutos) |

50| `CCR_FORCE_BUNDLE` | Defina como `1` para forçar [`claude --remote`](/pt/claude-code-on-the-web#send-local-repositories-without-github) a agrupar e fazer upload do seu repositório local mesmo quando o acesso ao GitHub está disponível |

51| `CLAUDECODE` | Defina como `1` em ambientes de shell que Claude Code gera (ferramenta Bash, sessões tmux). Não definido em [hooks](/pt/hooks) ou comandos de [linha de status](/pt/statusline). Use para detectar quando um script está sendo executado dentro de um shell gerado por Claude Code |

52| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Defina como `1` para desabilitar todos os tipos de [subagente](/pt/sub-agents) integrados, como Explore e Plan. Aplica-se apenas em modo não interativo (a flag `-p`). Útil para usuários do SDK que desejam uma tela em branco |

53| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Defina como `1` para pular o prefixo `mcp__<server>__` em nomes de ferramentas de servidores MCP criados pelo SDK. As ferramentas usam seus nomes originais. Apenas uso do SDK |

54| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Defina a porcentagem da capacidade de contexto (1-100) na qual a auto-compactação é acionada. Por padrão, a auto-compactação é acionada em aproximadamente 95% de capacidade. Use valores mais baixos como `50` para compactar mais cedo. Valores acima do limite padrão não têm efeito. Aplica-se a conversas principais e subagentes. Esta porcentagem se alinha com o campo `context_window.used_percentage` disponível na [linha de status](/pt/statusline) |

55| `CLAUDE_AUTO_BACKGROUND_TASKS` | Defina como `1` para forçar a habilitação do envio automático para segundo plano de tarefas de agente de longa duração. Quando habilitado, subagentes são movidos para o segundo plano após executarem por aproximadamente dois minutos |

56| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Retorne ao diretório de trabalho original após cada comando Bash ou PowerShell na sessão principal |

57| `CLAUDE_CODE_ACCESSIBILITY` | Defina como `1` para manter o cursor do terminal nativo visível e desabilitar o indicador de cursor de texto invertido. Permite que ampliadores de tela como macOS Zoom rastreiem a posição do cursor |

58| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Defina como `1` para carregar arquivos de memória de diretórios especificados com `--add-dir`. Carrega `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` e `CLAUDE.local.md`. Por padrão, diretórios adicionais não carregam arquivos de memória |

59| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalo em milissegundos no qual as credenciais devem ser atualizadas (ao usar [`apiKeyHelper`](/pt/settings#available-settings)) |

60| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Defina como `0` para omitir o bloco de atribuição (versão do cliente e impressão digital do prompt) do início do prompt do sistema. Desabilitá-lo melhora as taxas de acerto do cache de prompt ao rotear através de um [gateway LLM](/pt/llm-gateway). O cache da API Anthropic não é afetado |

61| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Defina a capacidade de contexto em tokens usada para cálculos de auto-compactação. Padrão é a janela de contexto do modelo: 200K para modelos padrão ou 1M para modelos de [contexto estendido](/pt/model-config#extended-context). Use um valor mais baixo como `500000` em um modelo de 1M para tratar a janela como 500K para fins de compactação. O valor é limitado à janela de contexto real do modelo. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` é aplicado como uma porcentagem deste valor. Definir esta variável desacopla o limite de compactação do `used_percentage` da linha de status, que sempre usa a janela de contexto completa do modelo |

62| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Substitua a [conexão IDE](/pt/vs-code) automática. Por padrão, Claude Code se conecta automaticamente quando iniciado dentro do terminal integrado de uma IDE suportada. Defina como `false` para evitar isso. Defina como `true` para forçar uma tentativa de conexão quando a detecção automática falha, como quando tmux obscurece o terminal pai |

63| `CLAUDE_CODE_CERT_STORE` | Lista separada por vírgula de fontes de certificado CA para conexões TLS. `bundled` é o conjunto de CA Mozilla fornecido com Claude Code. `system` é o armazenamento de confiança do sistema operacional. Padrão é `bundled,system`. A distribuição binária nativa é necessária para integração de armazenamento do sistema. No runtime Node.js, apenas o conjunto agrupado é usado independentemente deste valor |

64| `CLAUDE_CODE_CLIENT_CERT` | Caminho para arquivo de certificado do cliente para autenticação mTLS |

65| `CLAUDE_CODE_CLIENT_KEY` | Caminho para arquivo de chave privada do cliente para autenticação mTLS |

66| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frase-passe para `CLAUDE_CODE_CLIENT_KEY` criptografada (opcional) |

67| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Substitua o caminho do arquivo de log de depuração. Apesar do nome, este é um caminho de arquivo, não um diretório. Requer que o modo de depuração seja habilitado separadamente via `--debug` ou `/debug`: definir apenas essa variável não habilita o logging. A flag [`--debug-file`](/pt/cli-reference#cli-flags) faz ambos de uma vez. Padrão é `~/.claude/debug/<session-id>.txt` |

68| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Nível de log mínimo escrito no arquivo de log de depuração. Valores: `verbose`, `debug` (padrão), `info`, `warn`, `error`. Defina como `verbose` para incluir diagnósticos de alto volume como saída completa de comando de linha de status, ou aumente para `error` para reduzir ruído |

69| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Defina como `1` para desabilitar suporte a [janela de contexto de 1M](/pt/model-config#extended-context). Quando definido, variantes de modelo de 1M não estão disponíveis no seletor de modelo. Útil para ambientes corporativos com requisitos de conformidade |

70| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Defina como `1` para desabilitar [raciocínio adaptativo](/pt/model-config#adjust-effort-level) em Opus 4.6 e Sonnet 4.6 e voltar ao orçamento de pensamento fixo controlado por `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Não tem efeito em Opus 4.7, que sempre usa raciocínio adaptativo |

71| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Defina como `1` para desabilitar o processamento de anexos. Menções de arquivo com sintaxe `@` são enviadas como texto simples em vez de serem expandidas para conteúdo de arquivo |

72| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Defina como `1` para desabilitar [memória automática](/pt/memory#auto-memory). Defina como `0` para forçar a memória automática durante o lançamento gradual. Quando desabilitada, Claude não cria ou carrega arquivos de memória automática |

73| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Defina como `1` para desabilitar toda a funcionalidade de tarefas em segundo plano, incluindo o parâmetro `run_in_background` em ferramentas Bash e subagent, auto-backgrounding e o atalho Ctrl+B |

74| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Defina como `1` para evitar carregar qualquer arquivo de memória CLAUDE.md no contexto, incluindo arquivos de usuário, projeto e memória automática |

75| `CLAUDE_CODE_DISABLE_CRON` | Defina como `1` para desabilitar [tarefas agendadas](/pt/scheduled-tasks). A skill `/loop` e ferramentas cron ficam indisponíveis e qualquer tarefa já agendada para de disparar, incluindo tarefas que já estão em execução no meio da sessão |

76| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Defina como `1` para remover cabeçalhos de solicitação `anthropic-beta` específicos do Anthropic e campos de esquema de ferramenta beta (como `defer_loading` e `eager_input_streaming`) de solicitações de API. Use isso quando um gateway proxy rejeita solicitações com erros como "Unexpected value(s) for the `anthropic-beta` header" ou "Extra inputs are not permitted". Campos padrão (`name`, `description`, `input_schema`, `cache_control`) são preservados. |

77| `CLAUDE_CODE_DISABLE_FAST_MODE` | Defina como `1` para desabilitar [modo rápido](/pt/fast-mode) |

78| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Defina como `1` para desabilitar as pesquisas de qualidade de sessão "Como Claude está se saindo?". Pesquisas também são desabilitadas quando `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está definido. Veja [Pesquisas de qualidade de sessão](/pt/data-usage#session-quality-surveys) |

79| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Defina como `1` para desabilitar [checkpointing](/pt/checkpointing) de arquivo. O comando `/rewind` não será capaz de restaurar alterações de código |

80| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Defina como `1` para remover instruções de fluxo de trabalho de commit e PR integradas e o snapshot de status git do prompt do sistema do Claude. Útil ao usar suas próprias skills de fluxo de trabalho git. Tem precedência sobre a configuração [`includeGitInstructions`](/pt/settings#available-settings) quando definido |

81| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Defina como `1` para evitar remapeamento automático de Opus 4.0 e 4.1 para a versão Opus atual na API Anthropic. Use quando você deseja intencionalmente fixar um modelo mais antigo. O remapeamento não é executado em Bedrock, Vertex ou Foundry |

82| `CLAUDE_CODE_DISABLE_MOUSE` | Defina como `1` para desabilitar rastreamento de mouse em [renderização em tela cheia](/pt/fullscreen). A rolagem por teclado com `PgUp` e `PgDn` ainda funciona. Use isso para manter o comportamento nativo de cópia ao selecionar do seu terminal |

83| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Equivalente a definir `DISABLE_AUTOUPDATER`, `DISABLE_FEEDBACK_COMMAND`, `DISABLE_ERROR_REPORTING` e `DISABLE_TELEMETRY` |

84| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Defina como `1` para desabilitar o fallback não-streaming quando uma solicitação de streaming falha no meio do stream. Erros de streaming se propagam para a camada de retry em vez disso. Útil quando um proxy ou gateway causa o fallback para produzir execução de ferramenta duplicada |

85| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Defina como `1` para pular a adição automática do marketplace de plugin oficial na primeira execução |

86| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Defina como `1` para pular o carregamento de skills do diretório de skills gerenciado em todo o sistema. Útil para sessões de contêiner ou CI que não devem carregar skills provisionadas pelo operador |

87| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Defina como `1` para desabilitar atualizações automáticas de título do terminal com base no contexto da conversa |

88| `CLAUDE_CODE_DISABLE_THINKING` | Defina como `1` para forçar a desabilitação de [pensamento estendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) independentemente do suporte do modelo ou outras configurações. Mais direto que `MAX_THINKING_TOKENS=0` |

89| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Defina como `1` para desabilitar rolagem virtual em [renderização em tela cheia](/pt/fullscreen) e renderizar cada mensagem na transcrição. Use isso se a rolagem em modo tela cheia mostrar regiões em branco onde as mensagens deveriam aparecer |

90| `CLAUDE_CODE_EFFORT_LEVEL` | Defina o nível de esforço para modelos suportados. Valores: `low`, `medium`, `high`, `xhigh`, `max` ou `auto` para usar o padrão do modelo. Os níveis disponíveis dependem do modelo. Tem precedência sobre `/effort` e a configuração `effortLevel`. Veja [Ajustar nível de esforço](/pt/model-config#adjust-effort-level) |

91| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Substitua a disponibilidade de [recapitulação de sessão](/pt/interactive-mode#session-recap). Defina como `0` para forçar recapitulações desativadas independentemente do toggle `/config`. Defina como `1` para forçar recapitulações ativadas quando [`awaySummaryEnabled`](/pt/settings#available-settings) é `false`. Tem precedência sobre a configuração e toggle `/config` |

92| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Defina como `1` para atualizar o estado do plugin em limites de turno em [modo não interativo](/pt/headless) após a conclusão de uma instalação em segundo plano. Desativado por padrão porque a atualização altera o prompt do sistema no meio da sessão, o que invalida [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) para esse turno |

93| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Defina como `1` para forçar a habilitação do streaming de entrada de ferramenta de granulação fina. Sem isso, a API armazena em buffer parâmetros de entrada de ferramenta completamente antes de enviar eventos delta, o que pode atrasar a exibição em entradas de ferramenta grandes. Apenas API Anthropic: não tem efeito em Bedrock, Vertex ou Foundry |

94| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Defina como `false` para desabilitar sugestões de prompt (o toggle "Prompt suggestions" em `/config`). Estas são as previsões acinzentadas que aparecem na sua entrada de prompt após Claude responder. Veja [Sugestões de prompt](/pt/interactive-mode#prompt-suggestions) |

95| `CLAUDE_CODE_ENABLE_TASKS` | Defina como `1` para habilitar o sistema de rastreamento de tarefas em modo não interativo (a flag `-p`). As tarefas estão ativadas por padrão em modo interativo. Veja [Lista de tarefas](/pt/interactive-mode#task-list) |

96| `CLAUDE_CODE_ENABLE_TELEMETRY` | Defina como `1` para habilitar coleta de dados OpenTelemetry para métricas e logging. Obrigatório antes de configurar exportadores OTel. Veja [Monitoramento](/pt/monitoring-usage) |

97| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tempo em milissegundos para aguardar após o loop de consulta ficar ocioso antes de sair automaticamente. Útil para fluxos de trabalho automatizados e scripts usando modo SDK |

98| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Defina como `1` para habilitar [equipes de agentes](/pt/agent-teams). As equipes de agentes são experimentais e desabilitadas por padrão |

99| `CLAUDE_CODE_EXTRA_BODY` | Objeto JSON para mesclar no nível superior de cada corpo de solicitação de API. Útil para passar parâmetros específicos do provedor que Claude Code não expõe diretamente |

100| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Substitua o limite de token padrão para leituras de arquivo. Útil quando você precisa ler arquivos maiores na íntegra |

101| `CLAUDE_CODE_FORK_SUBAGENT` | Defina como `1` para habilitar [subagentes bifurcados](/pt/sub-agents#fork-the-current-conversation). Um subagente bifurcado herda o contexto de conversa completo da sessão principal em vez de começar do zero. Quando habilitado, `/fork` gera um subagente bifurcado em vez de agir como um alias para [`/branch`](/pt/commands), e todos os spawns de subagente são executados em segundo plano. Funciona em modo interativo e via SDK ou `claude -p` |

102| `CLAUDE_CODE_GIT_BASH_PATH` | Apenas Windows: caminho para o executável Git Bash (`bash.exe`). Use quando Git Bash está instalado mas não está no seu PATH. Veja [Configuração do Windows](/pt/setup#set-up-on-windows) |

103| `CLAUDE_CODE_GLOB_HIDDEN` | Defina como `false` para excluir dotfiles dos resultados quando Claude invoca a [ferramenta Glob](/pt/tools-reference). Incluído por padrão. Não afeta autocomplete de arquivo `@`, `ls`, Grep ou Read |

104| `CLAUDE_CODE_GLOB_NO_IGNORE` | Defina como `false` para fazer a [ferramenta Glob](/pt/tools-reference) respeitar padrões `.gitignore`. Por padrão, Glob retorna todos os arquivos correspondentes, incluindo os ignorados pelo git. Não afeta autocomplete de arquivo `@`, que tem sua própria [configuração `respectGitignore`](/pt/settings#available-settings) |

105| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Tempo limite em segundos para descoberta de arquivo da ferramenta Glob. Padrão é 20 segundos na maioria das plataformas e 60 segundos no WSL |

106| `CLAUDE_CODE_HIDE_CWD` | Defina como `1` para ocultar o diretório de trabalho no logo de inicialização. Útil para compartilhamentos de tela ou gravações onde o caminho expõe seu nome de usuário do SO |

107| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Substitua o endereço de host usado para conectar à extensão IDE. Por padrão, Claude Code detecta automaticamente o endereço correto, incluindo roteamento WSL-para-Windows |

108| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Pule a auto-instalação de extensões IDE. Equivalente a definir [`autoInstallIdeExtension`](/pt/settings#global-config-settings) como `false` |

109| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Defina como `1` para pular validação de entradas de arquivo de bloqueio IDE durante a conexão. Use quando a auto-conexão falha em encontrar sua IDE apesar dela estar em execução |

110| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Substitua o tamanho da janela de contexto que Claude Code assume para o modelo ativo. Só tem efeito quando `DISABLE_COMPACT` também está definido. Use isso ao rotear para um modelo através de `ANTHROPIC_BASE_URL` cuja janela de contexto não corresponde ao tamanho integrado para seu nome |

111| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Defina o número máximo de tokens de saída para a maioria das solicitações. Padrões e limites variam por modelo; veja [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Aumentar este valor reduz a janela de contexto efetiva disponível antes que [auto-compactação](/pt/costs#reduce-token-usage) seja acionada. |

112| `CLAUDE_CODE_MAX_RETRIES` | Substitua o número de vezes para tentar novamente solicitações de API falhadas (padrão: 10) |

113| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Número máximo de ferramentas somente leitura e subagentes que podem executar em paralelo (padrão: 10). Valores mais altos aumentam o paralelismo mas consomem mais recursos |

114| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Defina como `1` para gerar servidores MCP stdio com apenas um ambiente de linha de base segura mais o `env` configurado do servidor, em vez de herdar seu ambiente de shell |

115| `CLAUDE_CODE_NEW_INIT` | Defina como `1` para fazer `/init` executar um fluxo de configuração interativo. O fluxo pergunta quais arquivos gerar, incluindo CLAUDE.md, skills e hooks, antes de explorar a base de código e escrevê-los. Sem essa variável, `/init` gera um CLAUDE.md automaticamente sem solicitar. |

116| `CLAUDE_CODE_NO_FLICKER` | Defina como `1` para habilitar [renderização em tela cheia](/pt/fullscreen), uma visualização de pesquisa que reduz cintilação e mantém memória plana em conversas longas. Equivalente à configuração [`tui`](/pt/settings#available-settings); você também pode alternar com `/tui fullscreen` |

117| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token de atualização OAuth para autenticação Claude.ai. Quando definido, `claude auth login` troca esse token diretamente em vez de abrir um navegador. Requer `CLAUDE_CODE_OAUTH_SCOPES`. Útil para provisionar autenticação em ambientes automatizados |

118| `CLAUDE_CODE_OAUTH_SCOPES` | Escopos OAuth separados por espaço com os quais o token de atualização foi emitido, como `"user:profile user:inference user:sessions:claude_code"`. Obrigatório quando `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` está definido |

119| `CLAUDE_CODE_OAUTH_TOKEN` | Token de acesso OAuth para autenticação Claude.ai. Alternativa a `/login` para SDK e ambientes automatizados. Tem precedência sobre credenciais armazenadas em keychain. Gere um com [`claude setup-token`](/pt/authentication#generate-a-long-lived-token) |

120| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Tempo limite em milissegundos para liberar spans OpenTelemetry pendentes (padrão: 5000). Veja [Monitoramento](/pt/monitoring-usage) |

121| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalo para atualizar cabeçalhos OpenTelemetry dinâmicos em milissegundos (padrão: 1740000 / 29 minutos). Veja [Cabeçalhos dinâmicos](/pt/monitoring-usage#dynamic-headers) |

122| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Tempo limite em milissegundos para o exportador OpenTelemetry terminar no desligamento (padrão: 2000). Aumente se métricas forem descartadas na saída. Veja [Monitoramento](/pt/monitoring-usage) |

123| `CLAUDE_CODE_PERFORCE_MODE` | Defina como `1` para habilitar proteção de escrita ciente de Perforce. Quando definido, Edit, Write e NotebookEdit falham com uma dica `p4 edit <file>` se o arquivo de destino não tiver o bit de escrita do proprietário, que Perforce limpa em arquivos sincronizados até que `p4 edit` os abra. Isso evita que Claude Code contorne o rastreamento de mudanças do Perforce |

124| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Substitua o diretório raiz de plugins. Apesar do nome, isso define o diretório pai, não o cache em si: marketplaces e o cache de plugin vivem em subdiretórios sob este caminho. Padrão é `~/.claude/plugins` |

125| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tempo limite em milissegundos para operações git ao instalar ou atualizar plugins (padrão: 120000). Aumente este valor para repositórios grandes ou conexões de rede lentas. Veja [Operações Git expiram](/pt/plugin-marketplaces#git-operations-time-out) |

126| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Defina como `1` para manter o cache de marketplace existente quando um `git pull` falha em vez de limpar e re-clonar. Útil em ambientes offline ou airgapped onde re-clonar falharia da mesma forma. Veja [Atualizações de marketplace falham em ambientes offline](/pt/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |

127| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Caminho para um ou mais diretórios de seed de plugin somente leitura, separados por `:` em Unix ou `;` no Windows. Use isso para agrupar um diretório de plugins pré-populado em uma imagem de contêiner. Claude Code registra marketplaces desses diretórios na inicialização e usa plugins pré-armazenados em cache sem re-clonar. Veja [Pré-popular plugins para contêineres](/pt/plugin-marketplaces#pre-populate-plugins-for-containers) |

128| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Definido por plataformas host que incorporam Claude Code e gerenciam roteamento de provedor de modelo em seu nome. Quando definido, seleção de provedor, endpoint e variáveis de autenticação como `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` e `ANTHROPIC_API_KEY` em arquivos de configuração são ignorados para que configurações de usuário não possam substituir o roteamento do host. O opt-out automático de telemetria para Bedrock, Vertex e Foundry também é ignorado, então a telemetria segue o opt-out padrão `DISABLE_TELEMETRY`. Veja [Comportamentos padrão por provedor de API](/pt/data-usage#default-behaviors-by-api-provider) |

129| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Defina como `1` para permitir que o proxy execute resolução DNS em vez do chamador. Opt-in para ambientes onde o proxy deve lidar com resolução de nome de host |

130| `CLAUDE_CODE_REMOTE` | Definido automaticamente como `true` quando Claude Code está em execução como uma [sessão em nuvem](/pt/claude-code-on-the-web). Leia isso de um hook ou script de configuração para detectar se você está em um ambiente em nuvem |

131| `CLAUDE_CODE_REMOTE_SESSION_ID` | Definido automaticamente em [sessões em nuvem](/pt/claude-code-on-the-web) para o ID da sessão atual. Leia isso para construir um link de volta para a transcrição da sessão. Veja [Vincular artefatos de volta à sessão](/pt/claude-code-on-the-web#link-artifacts-back-to-the-session) |

132| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Defina como `1` para retomar automaticamente se a sessão anterior terminou no meio de uma volta. Usado em modo SDK para que o modelo continue sem exigir que o SDK reenvie o prompt |

133| `CLAUDE_CODE_SCRIPT_CAPS` | Objeto JSON limitando quantas vezes scripts específicos podem ser invocados por sessão quando `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` está definido. As chaves são substrings correspondidas contra o texto do comando; os valores são limites de chamadas inteiras. Por exemplo, `{"deploy.sh": 2}` permite que `deploy.sh` seja chamado no máximo duas vezes. A correspondência é baseada em substring, então truques de expansão de shell como `./scripts/deploy.sh $(evil)` ainda contam contra o limite. Fan-out em tempo de execução via `xargs` ou `find -exec` não é detectado; este é um controle de defesa em profundidade |

134| `CLAUDE_CODE_SCROLL_SPEED` | Defina o multiplicador de rolagem da roda do mouse em [renderização em tela cheia](/pt/fullscreen#mouse-wheel-scrolling). Aceita valores de 1 a 20. Defina como `3` para corresponder a `vim` se seu terminal enviar um evento de roda por entalhe sem amplificação |

135| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Substitua o orçamento de tempo em milissegundos para hooks [SessionEnd](/pt/hooks#sessionend). Aplica-se à saída de sessão, `/clear` e alternância de sessões via `/resume` interativo. Por padrão, o orçamento é 1,5 segundos, automaticamente aumentado para o `timeout` por hook mais alto configurado em arquivos de configuração, até 60 segundos. Timeouts em hooks fornecidos por plugin não aumentam o orçamento |

136| `CLAUDE_CODE_SHELL` | Substitua a detecção automática de shell. Útil quando seu shell de login difere do seu shell de trabalho preferido (por exemplo, `bash` vs `zsh`) |

137| `CLAUDE_CODE_SHELL_PREFIX` | Prefixo de comando que envolve comandos shell que Claude Code gera: chamadas de ferramenta Bash, comandos [hook](/pt/hooks) e comandos de inicialização de [servidor MCP](/pt/mcp) stdio. Útil para logging ou auditoria. Exemplo: definir `/path/to/logger.sh` executa cada comando como `/path/to/logger.sh <command>` |

138| `CLAUDE_CODE_SIMPLE` | Defina como `1` para executar com um prompt do sistema mínimo e apenas as ferramentas Bash, leitura de arquivo e edição de arquivo. Ferramentas MCP de `--mcp-config` ainda estão disponíveis. Desabilita auto-descoberta de hooks, skills, plugins, servidores MCP, memória automática e CLAUDE.md. A flag CLI [`--bare`](/pt/headless#start-faster-with-bare-mode) define isso |

139| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Defina como `1` para usar um prompt do sistema mais curto e descrições de ferramenta abreviadas em Opus 4.7. Não tem efeito em outros modelos. O conjunto de ferramentas completo, hooks, servidores MCP e descoberta de CLAUDE.md permanecem habilitados |

140| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Pule autenticação AWS para Bedrock (por exemplo, ao usar um gateway LLM) |

141| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Pule autenticação Azure para Microsoft Foundry (por exemplo, ao usar um gateway LLM) |

142| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Pule autenticação AWS para Bedrock Mantle (por exemplo, ao usar um gateway LLM) |

143| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Defina como `1` para pular a escrita de histórico de prompt e transcrições de sessão em disco. Sessões iniciadas com essa variável definida não aparecem em `--resume`, `--continue` ou histórico de seta para cima. Útil para sessões com script efêmeras |

144| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Pule autenticação Google para Vertex (por exemplo, ao usar um gateway LLM) |

145| `CLAUDE_CODE_SUBAGENT_MODEL` | Veja [Configuração de modelo](/pt/model-config) |

146| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Defina como `1` para remover credenciais do Anthropic e do provedor de nuvem de ambientes de subprocesso (ferramenta Bash, hooks, servidores MCP stdio). O processo Claude pai mantém essas credenciais para chamadas de API, mas processos filhos não podem lê-las, reduzindo a exposição a ataques de injeção de prompt que tentam exfiltrar segredos via expansão de shell. No Linux, isso também executa subprocessos Bash em um namespace PID isolado para que não possam ler ambientes de processo do host via `/proc`; como efeito colateral, `ps`, `pgrep` e `kill` não podem ver ou sinalizar processos do host. `claude-code-action` define isso automaticamente quando `allowed_non_write_users` está configurado |

147| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Defina como `1` em modo não interativo (a flag `-p`) para aguardar a conclusão da instalação de plugin antes da primeira consulta. Sem isso, plugins instalam em segundo plano e podem não estar disponíveis na primeira volta. Combine com `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` para limitar a espera |

148| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Tempo limite em milissegundos para instalação síncrona de plugin. Quando excedido, Claude Code prossegue sem plugins e registra um erro. Sem padrão: sem essa variável, instalação síncrona aguarda até a conclusão |

149| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Defina como `false` para desabilitar destaque de sintaxe na saída de diff. Útil quando cores interferem com sua configuração de terminal |

150| `CLAUDE_CODE_TASK_LIST_ID` | Compartilhe uma lista de tarefas entre sessões. Defina o mesmo ID em múltiplas instâncias do Claude Code para coordenar em uma lista de tarefas compartilhada. Veja [Lista de tarefas](/pt/interactive-mode#task-list) |

151| `CLAUDE_CODE_TEAM_NAME` | Nome da equipe de agentes à qual este companheiro pertence. Definido automaticamente em membros de [equipe de agentes](/pt/agent-teams) |

152| `CLAUDE_CODE_TMPDIR` | Substitua o diretório temporário usado para arquivos temporários internos. Claude Code acrescenta `/claude-{uid}/` (Unix) ou `/claude/` (Windows) a este caminho. Padrão: `/tmp` em macOS, `os.tmpdir()` em Linux/Windows |

153| `CLAUDE_CODE_TMUX_TRUECOLOR` | Defina como `1` para permitir saída truecolor de 24 bits dentro de tmux. Por padrão, Claude Code limita a 256 cores quando `$TMUX` está definido porque tmux não passa sequências de escape truecolor a menos que esteja configurado para isso. Defina isso após adicionar `set -ga terminal-overrides ',*:Tc'` ao seu `~/.tmux.conf`. Veja [Configuração de terminal](/pt/terminal-config) para outras configurações de tmux |

154| `CLAUDE_CODE_USE_BEDROCK` | Use [Bedrock](/pt/amazon-bedrock) |

155| `CLAUDE_CODE_USE_FOUNDRY` | Use [Microsoft Foundry](/pt/microsoft-foundry) |

156| `CLAUDE_CODE_USE_MANTLE` | Use o endpoint [Mantle](/pt/amazon-bedrock#use-the-mantle-endpoint) do Bedrock |

157| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Defina como `1` para descobrir comandos personalizados, subagentes e estilos de saída usando APIs de arquivo Node.js em vez de ripgrep. Defina isso se o binário ripgrep agrupado estiver indisponível ou bloqueado em seu ambiente. Não afeta as ferramentas Grep ou busca de arquivo |

158| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Controla a ferramenta PowerShell. No Windows sem Git Bash, a ferramenta é habilitada automaticamente; defina como `0` para desabilitá-la. No Windows com Git Bash instalado, a ferramenta está sendo lançada progressivamente: defina como `1` para optar por participar ou `0` para optar por não participar. No Linux, macOS e WSL, defina como `1` para habilitá-la, o que requer `pwsh` no seu `PATH`. Quando habilitada no Windows, Claude pode executar comandos PowerShell nativamente em vez de rotear através do Git Bash. Veja [Ferramenta PowerShell](/pt/tools-reference#powershell-tool) |

159| `CLAUDE_CODE_USE_VERTEX` | Use [Vertex](/pt/google-vertex-ai) |

160| `CLAUDE_CONFIG_DIR` | Substitua o diretório de configuração (padrão: `~/.claude`). Todas as configurações, credenciais, histórico de sessão e plugins são armazenados sob este caminho. Útil para executar múltiplas contas lado a lado: por exemplo, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

161| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Defina como `1` para forçar a habilitação do watchdog ocioso de nível de byte, ou defina como `0` para forçar a desabilitação. Quando não definido, o watchdog é habilitado por padrão para conexões da API Anthropic. O watchdog de byte aborta uma conexão quando nenhum byte chega no fio pela duração definida por `CLAUDE_STREAM_IDLE_TIMEOUT_MS`, com um mínimo de 5 minutos, independente do watchdog de nível de evento |

162| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Defina como `1` para habilitar o watchdog ocioso de streaming de nível de evento. Desativado por padrão. Para Bedrock, Vertex e Foundry, este é o único watchdog ocioso disponível. Configure o tempo limite com `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

163| `CLAUDE_ENV_FILE` | Caminho para um script de shell cujo conteúdo Claude Code executa antes de cada comando Bash no mesmo processo de shell, para que as exportações no arquivo sejam visíveis para o comando. Use para persistir ativação de virtualenv ou conda entre comandos. Também preenchido dinamicamente por hooks [SessionStart](/pt/hooks#persist-environment-variables), [Setup](/pt/hooks#setup), [CwdChanged](/pt/hooks#cwdchanged) e [FileChanged](/pt/hooks#filechanged) |

164| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefixo para nomes de sessão [Remote Control](/pt/remote-control) gerados automaticamente quando nenhum nome explícito é fornecido. Padrão é o nome do host da sua máquina, produzindo nomes como `myhost-graceful-unicorn`. A flag CLI `--remote-control-session-name-prefix` define o mesmo valor para uma única invocação |

165| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Tempo limite em milissegundos antes que o watchdog ocioso de streaming feche uma conexão travada. Padrão e mínimo `300000` (5 minutos) para ambos os watchdogs de nível de byte e de nível de evento; valores mais baixos são silenciosamente fixados para absorver pausas de pensamento estendido e buffering de proxy. Para provedores de terceiros, requer `CLAUDE_ENABLE_STREAM_WATCHDOG=1` |

166| `DISABLE_AUTOUPDATER` | Defina como `1` para desabilitar atualizações automáticas em segundo plano. Manual `claude update` ainda funciona. Use `DISABLE_UPDATES` para bloquear ambos |

167| `DISABLE_AUTO_COMPACT` | Defina como `1` para desabilitar compactação automática ao se aproximar do limite de contexto. O comando manual `/compact` permanece disponível. Use quando você deseja controle explícito sobre quando a compactação ocorre |

168| `DISABLE_COMPACT` | Defina como `1` para desabilitar toda compactação: tanto compactação automática quanto o comando manual `/compact` |

169| `DISABLE_COST_WARNINGS` | Defina como `1` para desabilitar mensagens de aviso de custo |

170| `DISABLE_DOCTOR_COMMAND` | Defina como `1` para ocultar o comando `/doctor`. Útil para implantações gerenciadas onde usuários não devem executar diagnósticos de instalação |

171| `DISABLE_ERROR_REPORTING` | Defina como `1` para optar por não participar do relatório de erros do Sentry |

172| `DISABLE_EXTRA_USAGE_COMMAND` | Defina como `1` para ocultar o comando `/extra-usage` que permite aos usuários comprar uso adicional além dos limites de taxa |

173| `DISABLE_FEEDBACK_COMMAND` | Defina como `1` para desabilitar o comando `/feedback`. O nome mais antigo `DISABLE_BUG_COMMAND` também é aceito |

174| `DISABLE_GROWTHBOOK` | Defina como `1` para desabilitar busca de flag de recurso GrowthBook e usar padrões de código para cada flag. Logging de eventos de telemetria permanece ativado a menos que `DISABLE_TELEMETRY` também esteja definido |

175| `DISABLE_INSTALLATION_CHECKS` | Defina como `1` para desabilitar avisos de instalação. Use apenas ao gerenciar manualmente o local de instalação, pois isso pode mascarar problemas com instalações padrão |

176| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Defina como `1` para ocultar o comando `/install-github-app`. Já oculto ao usar provedores de terceiros (Bedrock, Vertex ou Foundry) |

177| `DISABLE_INTERLEAVED_THINKING` | Defina como `1` para evitar enviar o cabeçalho beta de pensamento intercalado. Útil quando seu gateway LLM ou provedor não suporta [pensamento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |

178| `DISABLE_LOGIN_COMMAND` | Defina como `1` para ocultar o comando `/login`. Útil quando a autenticação é tratada externamente via chaves de API ou `apiKeyHelper` |

179| `DISABLE_LOGOUT_COMMAND` | Defina como `1` para ocultar o comando `/logout` |

180| `DISABLE_PROMPT_CACHING` | Defina como `1` para desabilitar cache de prompt para todos os modelos (tem precedência sobre configurações por modelo) |

181| `DISABLE_PROMPT_CACHING_HAIKU` | Defina como `1` para desabilitar cache de prompt para modelos Haiku |

182| `DISABLE_PROMPT_CACHING_OPUS` | Defina como `1` para desabilitar cache de prompt para modelos Opus |

183| `DISABLE_PROMPT_CACHING_SONNET` | Defina como `1` para desabilitar cache de prompt para modelos Sonnet |

184| `DISABLE_TELEMETRY` | Defina como `1` para optar por não participar da telemetria Statsig (note que eventos Statsig não incluem dados do usuário como código, caminhos de arquivo ou comandos bash) |

185| `DISABLE_UPDATES` | Defina como `1` para bloquear todas as atualizações, incluindo manual `claude update` e `claude install`. Mais rigoroso que `DISABLE_AUTOUPDATER`. Use ao distribuir Claude Code através de seus próprios canais e usuários não devem auto-atualizar |

186| `DISABLE_UPGRADE_COMMAND` | Defina como `1` para ocultar o comando `/upgrade` |

187| `ENABLE_CLAUDEAI_MCP_SERVERS` | Defina como `false` para desabilitar [servidores MCP claude.ai](/pt/mcp#use-mcp-servers-from-claude-ai) no Claude Code. Habilitado por padrão para usuários conectados |

188| `ENABLE_PROMPT_CACHING_1H` | Defina como `1` para solicitar um TTL de cache de prompt de 1 hora em vez do padrão de 5 minutos. Destinado para usuários de chave de API, [Bedrock](/pt/amazon-bedrock), [Vertex](/pt/google-vertex-ai) e [Foundry](/pt/microsoft-foundry). Usuários de assinatura recebem TTL de 1 hora automaticamente. Escritas de cache de 1 hora são cobradas a uma taxa mais alta |

189| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Descontinuado. Use `ENABLE_PROMPT_CACHING_1H` em vez disso |

190| `ENABLE_TOOL_SEARCH` | Controla [busca de ferramentas MCP](/pt/mcp#scale-with-mcp-tool-search). Não definido: todas as ferramentas MCP adiadas por padrão, mas carregadas antecipadamente em Vertex AI ou quando `ANTHROPIC_BASE_URL` aponta para um host que não é de primeira parte. Valores: `true` (sempre adia incluindo proxies e Vertex AI), `auto` (modo de limite: carrega antecipadamente se as ferramentas se encaixarem em 10% do contexto), `auto:N` (limite personalizado, por exemplo, `auto:5` para 5%), `false` (carrega tudo antecipadamente) |

191| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Defina como qualquer valor não vazio para acionador fallback para [`--fallback-model`](/pt/cli-reference#cli-flags) após erros de sobrecarga repetidos em qualquer modelo primário. Por padrão, apenas modelos Opus acionam o fallback |

192| `FORCE_AUTOUPDATE_PLUGINS` | Defina como `1` para forçar auto-atualizações de plugins mesmo quando o auto-atualizador principal está desabilitado via `DISABLE_AUTOUPDATER` |

193| `FORCE_PROMPT_CACHING_5M` | Defina como `1` para forçar o TTL de cache de prompt de 5 minutos mesmo quando o TTL de 1 hora se aplicaria de outra forma. Substitui `ENABLE_PROMPT_CACHING_1H` |

194| `HTTP_PROXY` | Especifique servidor proxy HTTP para conexões de rede |

195| `HTTPS_PROXY` | Especifique servidor proxy HTTPS para conexões de rede |

196| `IS_DEMO` | Defina como `1` para habilitar modo demo: oculta seu email e nome da organização do cabeçalho e saída `/status`, e pula onboarding. Útil ao fazer streaming ou gravar uma sessão |

197| `MAX_MCP_OUTPUT_TOKENS` | Número máximo de tokens permitidos em respostas de ferramentas MCP. Claude Code exibe um aviso quando a saída excede 10.000 tokens. Ferramentas que declaram [`anthropic/maxResultSizeChars`](/pt/mcp#raise-the-limit-for-a-specific-tool) usam esse limite de caracteres para conteúdo de texto em vez disso, mas conteúdo de imagem dessas ferramentas ainda está sujeito a essa variável (padrão: 25000) |

198| `MAX_STRUCTURED_OUTPUT_RETRIES` | Número de vezes para tentar novamente quando a resposta do modelo falha na validação contra o [`--json-schema`](/pt/cli-reference#cli-flags) em modo não interativo (a flag `-p`). Padrão é 5 |

199| `MAX_THINKING_TOKENS` | Substitua o orçamento de token de [pensamento estendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). O teto é o [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) do modelo menos um. Defina como `0` para desabilitar pensamento inteiramente. Em modelos com [raciocínio adaptativo](/pt/model-config#adjust-effort-level), o orçamento é ignorado a menos que raciocínio adaptativo seja desabilitado via `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` |

200| `MCP_CLIENT_SECRET` | Segredo do cliente OAuth para servidores MCP que requerem [credenciais pré-configuradas](/pt/mcp#use-pre-configured-oauth-credentials). Evita o prompt interativo ao adicionar um servidor com `--client-secret` |

201| `MCP_CONNECTION_NONBLOCKING` | Defina como `true` em modo não interativo (`-p`) para pular a espera de conexão MCP inteiramente. Útil para pipelines com script onde ferramentas MCP não são necessárias. Sem essa variável, a primeira consulta aguarda até 5 segundos para conexões de servidor `--mcp-config` |

202| `MCP_OAUTH_CALLBACK_PORT` | Porta fixa para o callback de redirecionamento OAuth, como alternativa a `--callback-port` ao adicionar um servidor MCP com [credenciais pré-configuradas](/pt/mcp#use-pre-configured-oauth-credentials) |

203| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP remotos (HTTP/SSE) para conectar em paralelo durante a inicialização (padrão: 20) |

204| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP locais (stdio) para conectar em paralelo durante a inicialização (padrão: 3) |

205| `MCP_TIMEOUT` | Tempo limite em milissegundos para inicialização do servidor MCP (padrão: 30000, ou 30 segundos) |

206| `MCP_TOOL_TIMEOUT` | Tempo limite em milissegundos para execução de ferramentas MCP (padrão: 100000000, aproximadamente 28 horas) |

207| `NO_PROXY` | Lista de domínios e IPs para os quais as solicitações serão emitidas diretamente, contornando proxy |

208| `OTEL_LOG_RAW_API_BODIES` | Emita solicitação e resposta JSON da API Anthropic Messages como eventos de log `api_request_body` / `api_response_body`. Defina como `1` para corpos inline truncados em 60 KB, ou `file:<dir>` para escrever corpos não truncados em disco e emitir um caminho `body_ref` em vez disso. Desabilitado por padrão; corpos incluem todo o histórico de conversa. Veja [Monitoramento](/pt/monitoring-usage#api-request-body-event) |

209| `OTEL_LOG_TOOL_CONTENT` | Defina como `1` para incluir conteúdo de entrada e saída de ferramenta em eventos de span OpenTelemetry. Desabilitado por padrão para proteger dados sensíveis. Veja [Monitoramento](/pt/monitoring-usage) |

210| `OTEL_LOG_TOOL_DETAILS` | Defina como `1` para incluir argumentos de entrada de ferramenta, nomes de servidor MCP, strings de erro bruto em falhas de ferramenta e outros detalhes de ferramenta em rastreamentos e logs OpenTelemetry. Desabilitado por padrão para proteger PII. Veja [Monitoramento](/pt/monitoring-usage) |

211| `OTEL_LOG_USER_PROMPTS` | Defina como `1` para incluir texto de prompt do usuário em rastreamentos e logs OpenTelemetry. Desabilitado por padrão (prompts são redatados). Veja [Monitoramento](/pt/monitoring-usage) |

212| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Defina como `false` para excluir UUID da conta dos atributos de métricas (padrão: incluído). Veja [Monitoramento](/pt/monitoring-usage) |

213| `OTEL_METRICS_INCLUDE_SESSION_ID` | Defina como `false` para excluir ID de sessão dos atributos de métricas (padrão: incluído). Veja [Monitoramento](/pt/monitoring-usage) |

214| `OTEL_METRICS_INCLUDE_VERSION` | Defina como `true` para incluir versão do Claude Code em atributos de métricas (padrão: excluído). Veja [Monitoramento](/pt/monitoring-usage) |

215| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Substitua o orçamento de caracteres para metadados de skill mostrados à [ferramenta Skill](/pt/skills#control-who-invokes-a-skill). O orçamento escala dinamicamente em 1% da janela de contexto, com um fallback de 8.000 caracteres. Nome legado mantido para compatibilidade com versões anteriores |

216| `TASK_MAX_OUTPUT_LENGTH` | Número máximo de caracteres na saída de [subagente](/pt/sub-agents) antes de truncamento (padrão: 32000, máximo: 160000). Quando truncado, a saída completa é salva em disco e o caminho é incluído na resposta truncada |

217| `USE_BUILTIN_RIPGREP` | Defina como `0` para usar `rg` instalado no sistema em vez de `rg` incluído com Claude Code |

218| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Substitua região para Claude 3.5 Haiku ao usar Vertex AI |

219| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Substitua região para Claude 3.5 Sonnet ao usar Vertex AI |

220| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Substitua região para Claude 3.7 Sonnet ao usar Vertex AI |

221| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Substitua região para Claude 4.0 Opus ao usar Vertex AI |

222| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Substitua região para Claude 4.0 Sonnet ao usar Vertex AI |

223| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Substitua região para Claude 4.1 Opus ao usar Vertex AI |

224| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Substitua região para Claude Opus 4.5 ao usar Vertex AI |

225| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Substitua região para Claude Sonnet 4.5 ao usar Vertex AI |

226| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Substitua região para Claude Opus 4.6 ao usar Vertex AI |

227| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Substitua região para Claude Sonnet 4.6 ao usar Vertex AI |

228| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}Substitua região para Claude Opus 4.7 ao usar Vertex AI |

229| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Substitua região para Claude Haiku 4.5 ao usar Vertex AI |

230 

231Variáveis padrão do exportador OpenTelemetry (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` e variantes específicas de sinal) também são suportadas. Veja [Monitoramento](/pt/monitoring-usage) para detalhes de configuração.

232 

233## Veja também

234 

235* [Configurações](/pt/settings): configure variáveis de ambiente em `settings.json` para que se apliquem a cada sessão

236* [Referência CLI](/pt/cli-reference): flags de tempo de inicialização

237* [Configuração de rede](/pt/network-config): configuração de proxy e TLS

238* [Monitoramento](/pt/monitoring-usage): configuração OpenTelemetry

errors.md +536 −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# Referência de erros

6 

7> Procure mensagens de erro de tempo de execução do Claude Code com o que cada uma significa e como corrigi-la.

8 

9Esta página lista os erros de tempo de execução que o Claude Code exibe e como se recuperar de cada um, além do que verificar quando as respostas parecem incorretas sem um erro. Para erros de instalação como `command not found` ou falhas de TLS durante a configuração, consulte [Troubleshooting installation and login](/pt/troubleshoot-install).

10 

11Esses erros e comandos de recuperação se aplicam em toda a CLI, no [aplicativo Desktop](/pt/desktop) e no [Claude Code na web](/pt/claude-code-on-the-web), já que todos os três envolvem a mesma CLI do Claude Code. Para problemas específicos da superfície, consulte a seção de solução de problemas na página dessa superfície.

12 

13<Note>

14 O Claude Code chama a API Claude para respostas do modelo, portanto, a maioria dos erros de tempo de execução mapeia para um código de erro de API subjacente. Esta página cobre o que cada erro significa dentro do Claude Code e como se recuperar. Para as definições de código de status HTTP bruto, consulte a [referência de erro da plataforma Claude](https://platform.claude.com/docs/en/api/errors).

15</Note>

16 

17## Encontre seu erro

18 

19Corresponda a mensagem que você vê em seu terminal a uma seção abaixo.

20 

21| Mensagem | Seção |

22| :----------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |

23| `API Error: 500 ... Internal server error` | [Erros de servidor](#api-error-500-internal-server-error) |

24| `API Error: Repeated 529 Overloaded errors` | [Erros de servidor](#api-error-repeated-529-overloaded-errors) |

25| `Request timed out` | [Erros de servidor](#request-timed-out), ou [Rede](#unable-to-connect-to-api) se a mensagem mencionar sua conexão com a internet |

26| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Erros de servidor](#auto-mode-cannot-determine-the-safety-of-an-action) |

27| `You've hit your session limit` / `You've hit your weekly limit` | [Limites de uso](#youve-hit-your-session-limit) |

28| `Server is temporarily limiting requests` | [Limites de uso](#server-is-temporarily-limiting-requests) |

29| `Request rejected (429)` | [Limites de uso](#request-rejected-429) |

30| `Credit balance is too low` | [Limites de uso](#credit-balance-is-too-low) |

31| `Not logged in · Please run /login` | [Autenticação](#not-logged-in) |

32| `Invalid API key` | [Autenticação](#invalid-api-key) |

33| `This organization has been disabled` | [Autenticação](#this-organization-has-been-disabled) |

34| `OAuth token revoked` / `OAuth token has expired` | [Autenticação](#oauth-token-revoked-or-expired) |

35| `does not meet scope requirement user:profile` | [Autenticação](#oauth-scope-requirement) |

36| `Unable to connect to API` | [Rede](#unable-to-connect-to-api) |

37| `SSL certificate verification failed` | [Rede](#ssl-certificate-errors) |

38| `Prompt is too long` | [Erros de solicitação](#prompt-is-too-long) |

39| `Error during compaction: Conversation too long` | [Erros de solicitação](#error-during-compaction-conversation-too-long) |

40| `Request too large` | [Erros de solicitação](#request-too-large) |

41| `Image was too large` | [Erros de solicitação](#image-was-too-large) |

42| `PDF too large` / `PDF is password protected` | [Erros de solicitação](#pdf-errors) |

43| `Extra inputs are not permitted` | [Erros de solicitação](#extra-inputs-are-not-permitted) |

44| `There's an issue with the selected model` | [Erros de solicitação](#theres-an-issue-with-the-selected-model) |

45| `Claude Opus is not available with the Claude Pro plan` | [Erros de solicitação](#claude-opus-is-not-available-with-the-claude-pro-plan) |

46| `thinking.type.enabled is not supported for this model` | [Erros de solicitação](#thinking-type-enabled-is-not-supported-for-this-model) |

47| `max_tokens must be greater than thinking.budget_tokens` | [Erros de solicitação](#thinking-budget-exceeds-output-limit) |

48| `API Error: 400 due to tool use concurrency issues` | [Erros de solicitação](#tool-use-or-thinking-block-mismatch) |

49| Respostas parecem de qualidade inferior ao normal | [Qualidade de resposta](#responses-seem-lower-quality-than-usual) |

50 

51## Tentativas automáticas

52 

53O Claude Code tenta novamente falhas transitórias antes de mostrar um erro. Erros de servidor, respostas sobrecarregadas, tempos limite de solicitação, throttles 429 temporários e conexões perdidas são todos repetidos até 10 vezes com backoff exponencial. Enquanto tenta novamente, o spinner mostra uma contagem regressiva `Retrying in Ns · attempt x/y`.

54 

55Quando você vê um dos erros nesta página, essas tentativas já foram esgotadas. Você pode ajustar o comportamento com duas variáveis de ambiente:

56 

57| Variável | Padrão | Efeito |

58| :---------------------------------------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------- |

59| [`CLAUDE_CODE_MAX_RETRIES`](/pt/env-vars) | 10 | Número de tentativas de repetição. Reduza-o para expor falhas mais rapidamente em scripts; aumente-o para aguardar incidentes mais longos. |

60| [`API_TIMEOUT_MS`](/pt/env-vars) | 600000 | Tempo limite por solicitação em milissegundos. Aumente-o para redes lentas ou proxies. |

61 

62## Erros de servidor

63 

64Esses erros vêm da infraestrutura Anthropic em vez de sua conta ou solicitação.

65 

66### API Error: 500 Internal server error

67 

68O Claude Code mostra o corpo da resposta bruta da API para qualquer status 5xx. O exemplo abaixo mostra uma resposta 500:

69 

70```text theme={null}

71API Error: 500 {"type":"error","error":{"type":"api_error","message":"Internal server error"}} · check status.claude.com

72```

73 

74Isso indica uma falha inesperada dentro da API. Não é causado pelo seu prompt, configurações ou conta.

75 

76**O que fazer:**

77 

78* Verifique [status.claude.com](https://status.claude.com) para incidentes ativos

79* Aguarde um minuto e envie sua mensagem novamente. Sua mensagem original ainda está na conversa, portanto, para um prompt longo você pode digitar `try again` em vez de colar tudo novamente.

80* Se o erro persistir sem incidente postado, execute `/feedback` para que a Anthropic possa investigar com os detalhes da sua solicitação. Consulte [Relatar um erro](#report-an-error) se `/feedback` não estiver disponível no seu provedor.

81 

82### API Error: Repeated 529 Overloaded errors

83 

84A API está temporariamente em capacidade máxima em todos os usuários. O Claude Code já tentou novamente várias vezes antes de mostrar esta mensagem:

85 

86```text theme={null}

87API Error: Repeated 529 Overloaded errors · check status.claude.com

88```

89 

90Um 529 não é seu limite de uso e não conta contra sua cota.

91 

92**O que fazer:**

93 

94* Verifique [status.claude.com](https://status.claude.com) para avisos de capacidade

95* Tente novamente em alguns minutos

96* Execute `/model` e mude para um modelo diferente para continuar trabalhando, já que a capacidade é rastreada por modelo. O Claude Code o solicita fazer isso quando um modelo está sob carga particularmente alta, por exemplo `Opus is experiencing high load, please use /model to switch to Sonnet`.

97 

98### Request timed out

99 

100A API não respondeu antes do prazo de conexão.

101 

102```text theme={null}

103Request timed out

104```

105 

106Isso pode acontecer durante períodos de alta carga ou quando uma resposta muito grande está sendo gerada. O tempo limite padrão de solicitação é de 10 minutos.

107 

108**O que fazer:**

109 

110* Tente novamente a solicitação

111* Para tarefas de longa duração, divida o trabalho em prompts menores

112* Se uma rede lenta ou proxy for a causa, aumente `API_TIMEOUT_MS` conforme descrito em [Tentativas automáticas](#automatic-retries)

113* Se os tempos limite forem frequentes e sua rede estiver saudável, consulte [Erros de rede e conexão](#network-and-connection-errors) abaixo

114 

115### Auto mode cannot determine the safety of an action

116 

117O modelo que [modo automático](/pt/permission-modes#eliminate-prompts-with-auto-mode) usa para classificar ações está sobrecarregado, portanto, o modo automático bloqueou a ação em vez de aprová-la sem verificação.

118 

119```text theme={null}

120<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait briefly and then try this action again.

121```

122 

123Leituras, buscas e edições dentro do seu diretório de trabalho ignoram o classificador, portanto, continuam funcionando durante a interrupção.

124 

125**O que fazer:**

126 

127* Tente novamente após alguns segundos; Claude vê a mesma mensagem e geralmente tenta novamente por conta própria

128* Se as tentativas continuarem falhando, continue com tarefas somente leitura e volte à ação bloqueada mais tarde

129* Isso é transitório e não relacionado à [elegibilidade do modo automático](/pt/permission-modes#eliminate-prompts-with-auto-mode); você não precisa alterar as configurações

130 

131## Limites de uso

132 

133Esses erros significam que uma cota vinculada à sua conta ou plano foi atingida. Eles são distintos dos [erros de servidor](#server-errors), que afetam todos.

134 

135### You've hit your session limit

136 

137Os planos de assinatura incluem uma permissão de uso contínua. Quando acaba, você vê uma dessas mensagens:

138 

139```text theme={null}

140You've hit your session limit · resets 3:45pm

141You've hit your weekly limit · resets Mon 12:00am

142You've hit your Opus limit · resets 3:45pm

143```

144 

145O Claude Code bloqueia solicitações adicionais até o tempo de reset mostrado na mensagem.

146 

147**O que fazer:**

148 

149* Aguarde o tempo de reset mostrado no erro

150* Execute `/usage` para ver seus limites de plano e quando eles são redefinidos

151* Execute `/extra-usage` para comprar uso adicional em Pro e Max, ou para solicitá-lo ao seu administrador em Team e Enterprise. Consulte [Extra usage for paid plans](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) para saber como isso é cobrado.

152* Para atualizar seu plano para limites de base mais altos, consulte [claude.com/pricing](https://claude.com/pricing)

153 

154Para monitorar sua permissão restante antes de atingir o limite, adicione os campos `rate_limits` a uma [linha de status personalizada](/pt/statusline#rate-limit-usage), ou no aplicativo Desktop clique no [anel de uso](/pt/desktop#check-usage) ao lado do seletor de modelo.

155 

156### Server is temporarily limiting requests

157 

158A API aplicou um throttle de curta duração que não está relacionado à sua cota de plano.

159 

160```text theme={null}

161API Error: Server is temporarily limiting requests (not your usage limit)

162```

163 

164Isso é [repetido automaticamente](#automatic-retries) antes de ser mostrado.

165 

166**O que fazer:**

167 

168* Aguarde brevemente e tente novamente

169* Verifique [status.claude.com](https://status.claude.com) se persistir

170 

171### Request rejected (429)

172 

173Você atingiu o limite de taxa configurado para sua chave de API, projeto Amazon Bedrock ou projeto Google Vertex AI.

174 

175```text theme={null}

176API Error: Request rejected (429) · this may be a temporary capacity issue

177```

178 

179**O que fazer:**

180 

181* Execute `/status` e confirme que a credencial ativa é a que você espera. Um `ANTHROPIC_API_KEY` perdido em seu ambiente pode rotear solicitações através de uma chave de nível inferior em vez de sua assinatura.

182* Verifique o console do seu provedor para os limites ativos e solicite um nível superior se necessário

183* Para chaves de API Anthropic, consulte a [referência de limites de taxa](https://platform.claude.com/docs/en/api/rate-limits) para saber como os níveis funcionam e como definir limites por workspace

184* Reduza a concorrência: reduza [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/pt/env-vars), evite executar muitos subagentes paralelos ou mude para um modelo menor com `/model` para execuções de script de alto volume

185 

186### Credit balance is too low

187 

188Sua organização Console ficou sem créditos pré-pagos.

189 

190```text theme={null}

191Credit balance is too low

192```

193 

194**O que fazer:**

195 

196* Adicione créditos em [platform.claude.com/settings/billing](https://platform.claude.com/settings/billing) e considere ativar o auto-reload lá para que o saldo seja recarregado antes de atingir zero

197* Mude para autenticação de assinatura com `/login` se você tiver um plano Pro, Max, Team ou Enterprise

198* Defina limites de gastos por workspace no Console para evitar que um único projeto drene o saldo da organização. Consulte [Manage costs effectively](/pt/costs).

199 

200## Erros de autenticação

201 

202Esses erros significam que o Claude Code não pode provar quem você é para a API. Execute `/status` a qualquer momento para ver qual credencial está ativa no momento.

203 

204### Not logged in

205 

206Nenhuma credencial válida está disponível para esta sessão.

207 

208```text theme={null}

209Not logged in · Please run /login

210```

211 

212**O que fazer:**

213 

214* Execute `/login` para autenticar com sua assinatura Claude ou conta Console

215* Se você esperava que uma variável de ambiente o autenticasse, confirme que `ANTHROPIC_API_KEY` está definido e exportado no shell onde você iniciou `claude`

216* Para CI ou automação onde login interativo não é possível, configure um script [`apiKeyHelper`](/pt/settings#available-settings) que busca uma chave na inicialização

217* Consulte [Authentication precedence](/pt/authentication#authentication-precedence) para entender qual credencial vence quando várias estão presentes

218 

219Se você for solicitado a fazer login repetidamente, consulte [Not logged in or token expired](/pt/troubleshoot-install#not-logged-in-or-token-expired) para correções de relógio do sistema e Keychain do macOS.

220 

221### Invalid API key

222 

223A variável de ambiente `ANTHROPIC_API_KEY` ou script `apiKeyHelper` retornou uma chave que a API rejeitou.

224 

225```text theme={null}

226Invalid API key · Fix external API key

227```

228 

229**O que fazer:**

230 

231* Verifique se há erros de digitação e confirme que a chave não foi revogada no [Console](https://platform.claude.com/settings/keys)

232* Execute `env | grep ANTHROPIC` no mesmo shell. Ferramentas como direnv, plugins de shell dotenv e terminais IDE podem carregar uma chave obsoleta de um arquivo `.env` em seu projeto sem você defini-la explicitamente.

233* Desdefina `ANTHROPIC_API_KEY` e execute `/login` para usar autenticação de assinatura

234* Se a chave vem de um script [`apiKeyHelper`](/pt/settings#available-settings), execute o script diretamente para confirmar que ele imprime uma chave válida em stdout

235* Execute `/status` para confirmar qual fonte de credencial o Claude Code está realmente usando

236 

237### This organization has been disabled

238 

239Uma `ANTHROPIC_API_KEY` obsoleta de uma organização Console desabilitada está substituindo seu login de assinatura.

240 

241```text theme={null}

242Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your other credentials

243API Error: 400 ... This organization has been disabled.

244```

245 

246As variáveis de ambiente têm precedência sobre `/login`, portanto, uma chave exportada no seu perfil de shell ou carregada de um arquivo `.env` é usada mesmo quando você tem uma assinatura Pro ou Max funcionando. No modo não interativo (`-p`), a chave é sempre usada quando presente.

247 

248**O que fazer:**

249 

250* Desdefina `ANTHROPIC_API_KEY` no shell atual e remova-o do seu perfil de shell, depois relance `claude`

251* Execute `/status` depois para confirmar que a credencial ativa é sua assinatura

252* Se nenhuma variável de ambiente estiver definida e o erro persistir, a organização desabilitada é a vinculada ao seu `/login`. Entre em contato com o suporte ou faça login com uma conta diferente.

253 

254### OAuth token revoked or expired

255 

256Seu login salvo não é mais válido. Um token revogado significa que você se desconectou em todos os lugares ou um administrador removeu o acesso; um token expirado significa que a atualização automática falhou no meio da sessão.

257 

258```text theme={null}

259OAuth token revoked · Please run /login

260OAuth token has expired · Please run /login

261API Error: 401 ... authentication_error

262```

263 

264**O que fazer:**

265 

266* Execute `/login` para fazer login novamente

267* Se o erro retornar na mesma sessão após re-autenticar, execute `/logout` primeiro para limpar completamente o token armazenado, depois `/login`

268* Para prompts repetidos de login entre inicializações, consulte as verificações de relógio do sistema e Keychain do macOS em [Troubleshooting](/pt/troubleshoot-install#not-logged-in-or-token-expired)

269* Para outras falhas incluindo `403 Forbidden` e problemas de navegador OAuth, consulte [Login and authentication](/pt/troubleshoot-install#login-and-authentication)

270 

271### OAuth scope requirement

272 

273O token armazenado é anterior a um escopo de permissão que um recurso mais novo precisa. Você vê isso com mais frequência em `/usage` e no indicador de uso da linha de status:

274 

275```text theme={null}

276OAuth token does not meet scope requirement: user:profile

277```

278 

279**O que fazer:**

280 

281* Execute `/login` para criar um novo token com os escopos atuais. Você não precisa fazer logout primeiro.

282 

283## Erros de rede e conexão

284 

285Esses erros significam que o Claude Code não conseguiu alcançar a API. Eles quase sempre se originam em sua rede local, proxy ou firewall em vez da infraestrutura Anthropic.

286 

287### Unable to connect to API

288 

289A conexão TCP com a API falhou ou nunca foi concluída.

290 

291```text theme={null}

292Unable to connect to API. Check your internet connection

293Unable to connect to API (ECONNREFUSED)

294Unable to connect to API (ECONNRESET)

295Unable to connect to API (ETIMEDOUT)

296fetch failed

297Request timed out. Check your internet connection and proxy settings

298```

299 

300As causas comuns incluem sem acesso à internet, uma VPN que bloqueia `api.anthropic.com` ou um proxy corporativo necessário que não está configurado.

301 

302**O que fazer:**

303 

304* Confirme que você pode alcançar o host da API do mesmo shell executando `curl -I https://api.anthropic.com`. No Windows PowerShell use `curl.exe -I https://api.anthropic.com` para que o alias `Invoke-WebRequest` integrado não seja usado.

305* Se você estiver atrás de um proxy corporativo, defina `HTTPS_PROXY` antes de iniciar o Claude Code e consulte [Network configuration](/pt/network-config)

306* Se você rotear através de um gateway LLM ou relay, defina [`ANTHROPIC_BASE_URL`](/pt/env-vars) para seu endereço. Consulte [LLM gateway configuration](/pt/llm-gateway) para configuração.

307* Certifique-se de que seu firewall permite os hosts listados em [Network access requirements](/pt/network-config#network-access-requirements)

308* Falhas intermitentes são [repetidas automaticamente](#automatic-retries); falhas persistentes apontam para um problema de rede local

309 

310Se `curl` for bem-sucedido mas o Claude Code ainda falhar, a causa geralmente é algo entre Node.js e a rede em vez da rede em si:

311 

312* No Linux e WSL, verifique `/etc/resolv.conf` para um servidor de nomes inacessível. WSL em particular pode herdar um resolvedor quebrado do host.

313* No macOS, um cliente VPN que foi desconectado ou desinstalado pode deixar uma interface de túnel ou regra de roteamento para trás. Verifique `ifconfig` para interfaces `utun` obsoletas e remova a extensão de rede da VPN em Configurações do Sistema.

314* Docker Desktop e runtimes de contêiner semelhantes podem interceptar tráfego de saída. Saia deles e tente novamente para descartar isso.

315 

316### SSL certificate errors

317 

318Um proxy ou dispositivo de segurança em sua rede está interceptando tráfego TLS com seu próprio certificado, e Node.js não confia nele.

319 

320```text theme={null}

321Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates

322Unable to connect to API: Self-signed certificate detected

323```

324 

325**O que fazer:**

326 

327* Exporte o pacote CA da sua organização e aponte Node para ele com `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem`

328* Consulte [Network configuration](/pt/network-config#custom-ca-certificates) para instruções de configuração completas

329* Não defina `NODE_TLS_REJECT_UNAUTHORIZED=0`, que desabilita completamente a validação de certificado

330 

331## Erros de solicitação

332 

333Esses erros significam que a API recebeu sua solicitação mas rejeitou seu conteúdo.

334 

335### Prompt is too long

336 

337A conversa mais arquivos anexados excedem a janela de contexto do modelo.

338 

339```text theme={null}

340Prompt is too long

341```

342 

343**O que fazer:**

344 

345* Execute `/compact` para resumir turnos anteriores e liberar espaço, ou `/clear` para começar do zero

346* Execute `/context` para ver um detalhamento do que está consumindo a janela: prompt do sistema, ferramentas, arquivos de memória e mensagens

347* Desabilite servidores MCP que você não está usando com `/mcp disable <name>` para remover suas definições de ferramentas do contexto

348* Reduza arquivos de memória `CLAUDE.md` grandes, ou mova instruções para [regras com escopo de caminho](/pt/memory#path-specific-rules) que carregam apenas quando relevante

349* Subagentes herdam todas as definições de ferramentas MCP da sessão pai, o que pode preencher sua janela de contexto antes do primeiro turno. Desabilite servidores MCP que você não está usando antes de gerar subagentes.

350* Auto-compact está ativado por padrão e normalmente previne esse erro. Se você tiver definido [`DISABLE_AUTO_COMPACT`](/pt/env-vars), reabilite-o ou execute `/compact` manualmente antes da janela se encher.

351 

352Consulte [Explore the context window](/pt/context-window) para uma visualização interativa de como o contexto se preenche.

353 

354### Error during compaction: Conversation too long

355 

356`/compact` em si falhou porque não há contexto livre suficiente para manter o resumo que produz.

357 

358```text theme={null}

359Error during compaction: Conversation too long. Press esc twice to go up a few messages and try again.

360```

361 

362Isso pode acontecer quando a janela já está cheia no momento em que auto-compact é acionado, ou quando você executa `/compact` depois de ver `Prompt is too long`.

363 

364**O que fazer:**

365 

366* Pressione Esc duas vezes para abrir a lista de mensagens e voltar vários turnos. Isso remove as mensagens mais recentes do contexto. Depois execute `/compact` novamente.

367* Se voltar não liberar espaço suficiente, execute `/clear` para iniciar uma sessão nova. Sua conversa anterior é preservada e pode ser reabierta com `/resume`.

368 

369### Request too large

370 

371O corpo da solicitação bruta excedeu o limite de bytes da API antes da tokenização, geralmente por causa de um arquivo ou anexo grande colado.

372 

373```text theme={null}

374Request too large (max 30 MB). Double press esc to go back and remove or shrink the attached content.

375```

376 

377Este é um limite de tamanho na solicitação HTTP, separado do [limite de janela de contexto](#prompt-is-too-long).

378 

379**O que fazer:**

380 

381* Pressione Esc duas vezes e volte passado o turno que adicionou o conteúdo de tamanho excessivo

382* Referencie arquivos grandes por caminho em vez de colar seu conteúdo, para que Claude possa lê-los em pedaços

383* Para imagens, consulte [Image was too large](#image-was-too-large) abaixo

384 

385### Image was too large

386 

387Uma imagem colada ou anexada excede os limites de tamanho ou dimensão da API.

388 

389```text theme={null}

390Image was too large. Double press esc to go back and try again with a smaller image.

391API Error: 400 ... image dimensions exceed max allowed size

392```

393 

394A imagem permanece no histórico de conversa após o erro, portanto, cada mensagem subsequente falha com o mesmo erro até você removê-la.

395 

396**O que fazer:**

397 

398* Pressione Esc duas vezes e volte passado o turno onde a imagem foi adicionada

399* Redimensione a imagem antes de colar. A API aceita imagens de até 8000 pixels na borda mais longa para uma única imagem, ou 2000 pixels quando muitas imagens estão em contexto.

400* Faça uma captura de tela mais apertada da região relevante em vez da tela inteira

401 

402### PDF errors

403 

404O PDF que você anexou não pôde ser processado.

405 

406```text theme={null}

407PDF too large (max 100 pages, 32 MB). Try splitting it or extracting text first.

408PDF is password protected. Try removing protection or extracting text first.

409The PDF file was not valid. Try converting to a different format first.

410```

411 

412**O que fazer:**

413 

414* Para PDFs de tamanho excessivo, peça ao Claude para ler um intervalo de páginas com a ferramenta Read em vez de anexar o arquivo inteiro, ou extraia texto com uma ferramenta como `pdftotext` e referencie o arquivo de saída por caminho

415* Para PDFs protegidos ou inválidos, remova a senha ou re-exporte o arquivo de seu aplicativo de origem, depois tente novamente

416 

417### Extra inputs are not permitted

418 

419Um proxy ou gateway LLM entre Claude Code e a API removeu o cabeçalho de solicitação `anthropic-beta`, portanto, a API rejeitou campos que dependem dele.

420 

421```text theme={null}

422API Error: 400 ... Extra inputs are not permitted ... context_management

423API Error: 400 ... Extra inputs are not permitted ... tools.0.custom.input_examples

424API Error: 400 ... Unexpected value(s) for the `anthropic-beta` header

425```

426 

427O Claude Code envia campos somente beta como `context_management`, `effort` e `input_examples` de ferramentas junto com um cabeçalho `anthropic-beta` que os habilita. Quando um gateway encaminha o corpo mas remove o cabeçalho, a API vê campos que não reconhece.

428 

429**O que fazer:**

430 

431* Configure seu gateway para encaminhar o cabeçalho `anthropic-beta`. Consulte [LLM gateway configuration](/pt/llm-gateway).

432* Como fallback, defina [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/pt/env-vars) antes de iniciar. Isso desabilita recursos que requerem o cabeçalho beta para que as solicitações tenham sucesso através de um gateway que não pode encaminhá-lo.

433 

434### There's an issue with the selected model

435 

436O nome do modelo configurado não foi reconhecido ou sua conta não tem acesso a ele.

437 

438```text theme={null}

439There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to select a different one.

440```

441 

442**O que fazer:**

443 

444* Execute `/model` para escolher entre modelos disponíveis para sua conta

445* Use um alias como `sonnet` ou `opus` em vez de um ID versionado completo. Aliases rastreiam a versão mais recente para que não fiquem obsoletos. Consulte [Model configuration](/pt/model-config).

446* Se o modelo errado continuar voltando, um ID obsoleto está definido em algum lugar. Verifique em [ordem de prioridade](/pt/model-config#setting-your-model): a flag `--model`, a variável de ambiente `ANTHROPIC_MODEL`, depois o campo `model` em `.claude/settings.local.json`, o `.claude/settings.json` do seu projeto e `~/.claude/settings.json`. Remova o valor obsoleto e Claude Code volta ao padrão da sua conta.

447* Para implantações Vertex AI, consulte [Vertex AI troubleshooting](/pt/google-vertex-ai#troubleshooting).

448 

449### Claude Opus is not available with the Claude Pro plan

450 

451Seu plano de assinatura ativo não inclui o modelo que você selecionou.

452 

453```text theme={null}

454Claude Opus is not available with the Claude Pro plan · Select a different model in /model

455```

456 

457**O que fazer:**

458 

459* Execute `/model` e selecione um modelo que seu plano inclui

460* Se você atualizou seu plano recentemente e ainda vê isso, execute `/logout` depois `/login`. O token armazenado reflete seu plano no momento em que você fez login, portanto, atualizar na web não entra em vigor em uma sessão existente até você se re-autenticar.

461* Consulte [claude.com/pricing](https://claude.com/pricing) para saber quais modelos cada plano inclui

462 

463### thinking.type.enabled is not supported for this model

464 

465Sua versão do Claude Code é mais antiga que o mínimo para Opus 4.7. A CLI enviou uma configuração de thinking que o modelo não aceita mais.

466 

467```text theme={null}

468API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.

469```

470 

471**O que fazer:**

472 

473* Execute `claude update` para atualizar para v2.1.111 ou posterior, depois reinicie o Claude Code

474* Se você não conseguir atualizar, execute `/model` e selecione Opus 4.6 ou Sonnet

475* Se você atingir isso no Agent SDK, consulte [SDK troubleshooting](/pt/agent-sdk/quickstart#troubleshooting)

476 

477### Thinking budget exceeds output limit

478 

479O orçamento de thinking estendido configurado excede o comprimento máximo de resposta, portanto, não há espaço deixado para a resposta real.

480 

481```text theme={null}

482API Error: 400 ... max_tokens must be greater than thinking.budget_tokens

483```

484 

485O Claude Code ajusta esses valores automaticamente na API Anthropic. Você normalmente vê esse erro em Amazon Bedrock ou Google Vertex AI quando [`MAX_THINKING_TOKENS`](/pt/env-vars) está definido mais alto que o limite de saída do provedor, ou quando o modo plano aumenta o orçamento de thinking.

486 

487**O que fazer:**

488 

489* Reduza `MAX_THINKING_TOKENS`, ou aumente [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/pt/env-vars) acima do orçamento de thinking

490* Consulte [Extended thinking](/pt/common-workflows#use-extended-thinking-thinking-mode) para saber como o orçamento interage com o comprimento de saída

491 

492### Tool use or thinking block mismatch

493 

494O histórico de conversa chegou à API em um estado inconsistente, geralmente após uma chamada de ferramenta ser interrompida ou um turno ser editado no meio do fluxo.

495 

496```text theme={null}

497API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.

498API Error: 400 ... unexpected `tool_use_id` found in `tool_result` blocks

499API Error: 400 ... thinking blocks ... cannot be modified

500```

501 

502Todas as três variantes significam a mesma coisa: a sequência de blocos `tool_use`, `tool_result` e `thinking` no histórico não corresponde mais ao que a API espera.

503 

504**O que fazer:**

505 

506* Execute `/rewind`, ou pressione Esc duas vezes, para voltar a um checkpoint antes do turno corrompido e continuar de lá. Consulte [Checkpointing](/pt/checkpointing) para saber como os checkpoints são criados e restaurados.

507 

508## As respostas parecem ter qualidade inferior ao usual

509 

510Se as respostas do Claude parecem menos capazes do que você espera, mas nenhum erro é exibido, a causa geralmente é o estado da conversa em vez do modelo em si. O Claude Code não muda silenciosamente versões de modelo. Ele pode mudar para um modelo fallback em casos específicos, como uma cota Opus sendo atingida ou um Bedrock ou Vertex AI region não tendo seu modelo; a verificação de seleção de modelo abaixo captura ambos, e [Model configuration](/pt/model-config) explica quando fallback se aplica.

511 

512Verifique estes primeiro:

513 

514* **Seleção de modelo**: execute `/model` para confirmar que você está no modelo que espera. Uma escolha anterior `/model` ou uma variável de ambiente `ANTHROPIC_MODEL` pode tê-lo em um modelo menor do que pretendia.

515* **Nível de esforço**: execute `/effort` para verificar o nível de raciocínio atual e aumente-o para debugging difícil ou trabalho de design. Os padrões variam por modelo, portanto, verifique antes de assumir que você está abaixo do máximo. Consulte [Adjust effort level](/pt/model-config#adjust-effort-level) para padrões por modelo e o atalho `ultrathink`.

516* **Pressão de contexto**: execute `/context` para ver como a janela está cheia. Se estiver perto da capacidade, execute `/compact` em um ponto natural ou `/clear` para começar do zero. Consulte [Explore the context window](/pt/context-window) para saber como auto-compact afeta turnos anteriores.

517* **Instruções obsoletas**: arquivos `CLAUDE.md` grandes ou desatualizados e definições de ferramentas MCP consomem contexto e podem orientar respostas. `/doctor` sinaliza arquivos de memória de tamanho excessivo e definições de subagentes; `/context` mostra uso de token de ferramentas MCP.

518 

519Quando uma resposta dá errado, retroceder geralmente funciona melhor do que responder com correções. Pressione Esc duas vezes ou execute `/rewind` para voltar antes do turno ruim, depois reformule o prompt com mais especificidades. Corrigir no thread mantém a tentativa errada em contexto, o que pode ancorar respostas posteriores a ela. Consulte [Checkpointing](/pt/checkpointing).

520 

521Se a qualidade ainda parecer incorreta após verificar o acima, execute `/feedback` e descreva o que você esperava versus o que obteve. Feedback enviado dessa forma inclui a transcrição da conversa, que é a forma mais rápida para Anthropic diagnosticar uma regressão real. Consulte [Report an error](#report-an-error) se `/feedback` não estiver disponível no seu provedor.

522 

523## Relatar um erro

524 

525Esta página cobre erros da API Claude. Para erros de outros componentes do Claude Code, consulte o guia relevante:

526 

527* Servidor MCP falhou ao conectar ou autenticar: [MCP](/pt/mcp)

528* Script hook falhou ou bloqueou uma ferramenta: [Debug hooks](/pt/hooks#debug-hooks)

529* Permissão negada ou erros de sistema de arquivos durante instalação: [Troubleshooting installation and login](/pt/troubleshoot-install)

530 

531Se um erro não estiver listado aqui ou a correção sugerida não ajudar:

532 

533* Execute `/feedback` dentro do Claude Code para enviar a transcrição e uma descrição para Anthropic. O comando também oferece abrir um problema GitHub pré-preenchido. Feedback não está disponível em implantações Bedrock, Vertex AI e Foundry.

534* Execute `/doctor` para verificar problemas de configuração local

535* Verifique [status.claude.com](https://status.claude.com) para incidentes ativos

536* Procure [problemas existentes](https://github.com/anthropics/claude-code/issues) no GitHub

fast-mode.md +151 −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# Acelere respostas com modo rápido

6 

7> Obtenha respostas mais rápidas do Opus 4.6 no Claude Code alternando o modo rápido.

8 

9<Note>

10 O modo rápido está em [visualização de pesquisa](#research-preview). O recurso, preços e disponibilidade podem mudar com base no feedback.

11</Note>

12 

13O modo rápido é uma configuração de alta velocidade para Claude Opus 4.6, tornando o modelo 2,5x mais rápido a um custo maior por token. Ative-o com `/fast` quando você precisar de velocidade para trabalho interativo como iteração rápida ou depuração ao vivo, e desative-o quando o custo importa mais do que a latência.

14 

15O modo rápido não é um modelo diferente. Ele usa o mesmo Opus 4.6 com uma configuração de API diferente que prioriza a velocidade sobre a eficiência de custo. Você obtém qualidade e capacidades idênticas, apenas respostas mais rápidas.

16 

17<Note>

18 O modo rápido requer Claude Code v2.1.36 ou posterior. Verifique sua versão com `claude --version`.

19</Note>

20 

21O que você precisa saber:

22 

23* Use `/fast` para alternar o modo rápido no CLI do Claude Code. Também disponível via `/fast` na Extensão Claude Code VS Code.

24* O preço do modo rápido para Opus 4.6 começa em \$30/150 MTok. O modo rápido está disponível com desconto de 50% para todos os planos até 23:59 PT em 16 de fevereiro.

25* Disponível para todos os usuários do Claude Code em planos de assinatura (Pro/Max/Team/Enterprise) e Claude Console.

26* Para usuários do Claude Code em planos de assinatura (Pro/Max/Team/Enterprise), o modo rápido está disponível apenas via uso extra e não está incluído nos limites de taxa de assinatura.

27 

28Esta página cobre como [alternar o modo rápido](#toggle-fast-mode), seu [tradeoff de custo](#understand-the-cost-tradeoff), [quando usá-lo](#decide-when-to-use-fast-mode), [requisitos](#requirements), [opt-in por sessão](#require-per-session-opt-in) e [comportamento de limite de taxa](#handle-rate-limits).

29 

30## Alternar modo rápido

31 

32Alterne o modo rápido de uma destas formas:

33 

34* Digite `/fast` e pressione Tab para alternar ativado ou desativado

35* Defina `"fastMode": true` no seu [arquivo de configurações do usuário](/pt/settings)

36 

37Por padrão, o modo rápido persiste entre sessões. Os administradores podem configurar o modo rápido para ser redefinido a cada sessão. Consulte [require per-session opt-in](#require-per-session-opt-in) para obter detalhes.

38 

39Para melhor eficiência de custo, ative o modo rápido no início de uma sessão em vez de alternar no meio da conversa. Consulte [understand the cost tradeoff](#understand-the-cost-tradeoff) para obter detalhes.

40 

41Quando você ativa o modo rápido:

42 

43* Se você estiver em um modelo diferente, o Claude Code alterna automaticamente para Opus 4.6

44* Você verá uma mensagem de confirmação: "Fast mode ON"

45* Um pequeno ícone `↯` aparece ao lado do prompt enquanto o modo rápido está ativo

46* Execute `/fast` novamente a qualquer momento para verificar se o modo rápido está ativado ou desativado

47 

48Quando você desativa o modo rápido com `/fast` novamente, você permanece no Opus 4.6. O modelo não reverte para seu modelo anterior. Para alternar para um modelo diferente, use `/model`.

49 

50## Entender o tradeoff de custo

51 

52O modo rápido tem preços por token mais altos do que o Opus 4.6 padrão:

53 

54| Modo | Entrada (MTok) | Saída (MTok) |

55| -------------------------------- | -------------- | ------------ |

56| Modo rápido no Opus 4.6 (\<200K) | \$30 | \$150 |

57| Modo rápido no Opus 4.6 (>200K) | \$60 | \$225 |

58 

59O modo rápido é compatível com a janela de contexto estendida de 1M token.

60 

61Quando você alterna para o modo rápido no meio de uma conversa, você paga o preço total do token de entrada não armazenado em cache do modo rápido para todo o contexto da conversa. Isso custa mais do que se você tivesse ativado o modo rápido desde o início.

62 

63## Decidir quando usar o modo rápido

64 

65O modo rápido é melhor para trabalho interativo onde a latência de resposta importa mais do que o custo:

66 

67* Iteração rápida em mudanças de código

68* Sessões de depuração ao vivo

69* Trabalho sensível ao tempo com prazos apertados

70 

71O modo padrão é melhor para:

72 

73* Tarefas autônomas longas onde a velocidade importa menos

74* Processamento em lote ou pipelines CI/CD

75* Cargas de trabalho sensíveis ao custo

76 

77### Modo rápido vs nível de esforço

78 

79O modo rápido e o nível de esforço afetam a velocidade de resposta, mas de formas diferentes:

80 

81| Configuração | Efeito |

82| ------------------------------- | ----------------------------------------------------------------------------------------------------------- |

83| **Modo rápido** | Mesma qualidade de modelo, latência mais baixa, custo mais alto |

84| **Nível de esforço mais baixo** | Menos tempo de pensamento, respostas mais rápidas, qualidade potencialmente mais baixa em tarefas complexas |

85 

86Você pode combinar ambos: use o modo rápido com um [nível de esforço](/pt/model-config#adjust-effort-level) mais baixo para máxima velocidade em tarefas diretas.

87 

88## Requisitos

89 

90O modo rápido requer todos os seguintes:

91 

92* **Não disponível em provedores de nuvem de terceiros**: o modo rápido não está disponível no Amazon Bedrock, Google Vertex AI ou Microsoft Azure Foundry. O modo rápido está disponível através da API do Anthropic Console e para planos de assinatura Claude usando uso extra.

93* **Uso extra ativado**: sua conta deve ter o uso extra ativado, o que permite cobrança além do uso incluído no seu plano. Para contas individuais, ative isso nas suas [configurações de cobrança do Console](https://platform.claude.com/settings/organization/billing). Para Teams e Enterprise, um administrador deve ativar o uso extra para a organização.

94 

95<Note>

96 O uso do modo rápido é cobrado diretamente no uso extra, mesmo que você tenha uso restante no seu plano. Isso significa que os tokens do modo rápido não contam contra o uso incluído do seu plano e são cobrados à taxa do modo rápido desde o primeiro token.

97</Note>

98 

99* **Habilitação de administrador para Teams e Enterprise**: o modo rápido está desativado por padrão para organizações Teams e Enterprise. Um administrador deve explicitamente [ativar o modo rápido](#enable-fast-mode-for-your-organization) antes que os usuários possam acessá-lo.

100 

101<Note>

102 Se seu administrador não tiver ativado o modo rápido para sua organização, o comando `/fast` mostrará "Fast mode has been disabled by your organization."

103</Note>

104 

105### Ativar modo rápido para sua organização

106 

107Os administradores podem ativar o modo rápido em:

108 

109* **Console** (clientes de API): [Preferências do Claude Code](https://platform.claude.com/claude-code/preferences)

110* **Claude AI** (Teams e Enterprise): [Admin Settings > Claude Code](https://claude.ai/admin-settings/claude-code)

111 

112Outra opção para desativar completamente o modo rápido é definir `CLAUDE_CODE_DISABLE_FAST_MODE=1`. Consulte [Variáveis de ambiente](/pt/env-vars).

113 

114### Require per-session opt-in

115 

116Por padrão, o modo rápido persiste entre sessões: se um usuário ativa o modo rápido, ele permanece ativado em futuras sessões. Os administradores em planos [Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) ou [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) podem evitar isso definindo `fastModePerSessionOptIn` como `true` em [managed settings](/pt/settings#settings-files) ou [server-managed settings](/pt/server-managed-settings). Isso faz com que cada sessão comece com o modo rápido desativado, exigindo que os usuários o ativem explicitamente com `/fast`.

117 

118```json theme={null}

119{

120 "fastModePerSessionOptIn": true

121}

122```

123 

124Isso é útil para controlar custos em organizações onde os usuários executam várias sessões simultâneas. Os usuários ainda podem ativar o modo rápido com `/fast` quando precisam de velocidade, mas ele é redefinido no início de cada nova sessão. A preferência de modo rápido do usuário ainda é salva, portanto remover essa configuração restaura o comportamento padrão persistente.

125 

126## Lidar com limites de taxa

127 

128O modo rápido tem limites de taxa separados do Opus 4.6 padrão. Quando você atinge o limite de taxa do modo rápido ou fica sem créditos de uso extra:

129 

1301. O modo rápido automaticamente volta para Opus 4.6 padrão

1312. O ícone `↯` fica cinza para indicar cooldown

1323. Você continua trabalhando com velocidade e preços padrão

1334. Quando o cooldown expira, o modo rápido é automaticamente reativado

134 

135Para desativar o modo rápido manualmente em vez de esperar pelo cooldown, execute `/fast` novamente.

136 

137## Research preview

138 

139O modo rápido é um recurso de visualização de pesquisa. Isso significa:

140 

141* O recurso pode mudar com base no feedback

142* A disponibilidade e preços estão sujeitos a alterações

143* A configuração de API subjacente pode evoluir

144 

145Relate problemas ou feedback através de seus canais de suporte Anthropic usuais.

146 

147## Veja também

148 

149* [Configuração de modelo](/pt/model-config): alterne modelos e ajuste níveis de esforço

150* [Gerenciar custos efetivamente](/pt/costs): rastreie o uso de tokens e reduza custos

151* [Configuração da linha de status](/pt/statusline): exiba informações de modelo e contexto

features-overview.md +294 −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# Estender Claude Code

6 

7> Entenda quando usar CLAUDE.md, Skills, subagents, hooks, MCP e plugins.

8 

9Claude Code combina um modelo que raciocina sobre seu código com [ferramentas integradas](/pt/how-claude-code-works#tools) para operações de arquivo, busca, execução e acesso à web. As ferramentas integradas cobrem a maioria das tarefas de codificação. Este guia cobre a camada de extensão: recursos que você adiciona para personalizar o que Claude sabe, conectá-lo a serviços externos e automatizar fluxos de trabalho.

10 

11<Note>

12 Para saber como o loop agentic principal funciona, consulte [Como Claude Code funciona](/pt/how-claude-code-works).

13</Note>

14 

15**Novo no Claude Code?** Comece com [CLAUDE.md](/pt/memory) para convenções de projeto. Adicione outras extensões conforme necessário.

16 

17## Visão geral

18 

19As extensões se conectam a diferentes partes do loop agentic:

20 

21* **[CLAUDE.md](/pt/memory)** adiciona contexto persistente que Claude vê a cada sessão

22* **[Skills](/pt/skills)** adicionam conhecimento reutilizável e fluxos de trabalho invocáveis

23* **[MCP](/pt/mcp)** conecta Claude a serviços e ferramentas externas

24* **[Subagents](/pt/sub-agents)** executam seus próprios loops em contexto isolado, retornando resumos

25* **[Agent teams](/pt/agent-teams)** coordenam múltiplas sessões independentes com tarefas compartilhadas e mensagens ponto a ponto

26* **[Hooks](/pt/hooks)** executam fora do loop inteiramente como scripts determinísticos

27* **[Plugins](/pt/plugins)** e **[marketplaces](/pt/plugin-marketplaces)** empacotam e distribuem esses recursos

28 

29[Skills](/pt/skills) são a extensão mais flexível. Uma skill é um arquivo markdown contendo conhecimento, fluxos de trabalho ou instruções. Você pode invocar skills com um comando como `/deploy`, ou Claude pode carregá-las automaticamente quando relevante. Skills podem ser executadas em sua conversa atual ou em contexto isolado via subagents.

30 

31## Corresponder recursos ao seu objetivo

32 

33Os recursos variam de contexto sempre ativo que Claude vê a cada sessão, a capacidades sob demanda que você ou Claude podem invocar, a automação em segundo plano que é executada em eventos específicos. A tabela abaixo mostra o que está disponível e quando cada um faz sentido.

34 

35| Recurso | O que faz | Quando usar | Exemplo |

36| ---------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |

37| **CLAUDE.md** | Contexto persistente carregado a cada conversa | Convenções de projeto, regras "sempre faça X" | "Use pnpm, não npm. Execute testes antes de fazer commit." |

38| **Skill** | Instruções, conhecimento e fluxos de trabalho que Claude pode usar | Conteúdo reutilizável, documentos de referência, tarefas repetíveis | `/deploy` executa sua lista de verificação de implantação; skill de documentação de API com padrões de endpoint |

39| **Subagent** | Contexto de execução isolado que retorna resultados resumidos | Isolamento de contexto, tarefas paralelas, trabalhadores especializados | Tarefa de pesquisa que lê muitos arquivos mas retorna apenas descobertas principais |

40| **[Agent teams](/pt/agent-teams)** | Coordenar múltiplas sessões independentes do Claude Code | Pesquisa paralela, desenvolvimento de novos recursos, depuração com hipóteses concorrentes | Gerar revisores para verificar segurança, desempenho e testes simultaneamente |

41| **MCP** | Conectar a serviços externos | Dados ou ações externas | Consultar seu banco de dados, postar no Slack, controlar um navegador |

42| **Hook** | Script determinístico que é executado em eventos | Automação previsível, sem envolvimento de LLM | Executar ESLint após cada edição de arquivo |

43 

44**[Plugins](/pt/plugins)** são a camada de empacotamento. Um plugin agrupa skills, hooks, subagents e servidores MCP em uma única unidade instalável. Skills de plugin são nomeadas (como `/my-plugin:review`) para que múltiplos plugins possam coexistir. Use plugins quando quiser reutilizar a mesma configuração em múltiplos repositórios ou distribuir para outros via um **[marketplace](/pt/plugin-marketplaces)**.

45 

46### Comparar recursos similares

47 

48Alguns recursos podem parecer similares. Aqui está como diferenciá-los.

49 

50<Tabs>

51 <Tab title="Skill vs Subagent">

52 Skills e subagents resolvem problemas diferentes:

53 

54 * **Skills** são conteúdo reutilizável que você pode carregar em qualquer contexto

55 * **Subagents** são trabalhadores isolados que são executados separadamente de sua conversa principal

56 

57 | Aspecto | Skill | Subagent |

58 | ----------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------- |

59 | **O que é** | Instruções, conhecimento ou fluxos de trabalho reutilizáveis | Trabalhador isolado com seu próprio contexto |

60 | **Benefício principal** | Compartilhar conteúdo entre contextos | Isolamento de contexto. O trabalho acontece separadamente, apenas o resumo retorna |

61 | **Melhor para** | Material de referência, fluxos de trabalho invocáveis | Tarefas que leem muitos arquivos, trabalho paralelo, trabalhadores especializados |

62 

63 **Skills podem ser referência ou ação.** Skills de referência fornecem conhecimento que Claude usa ao longo de sua sessão (como seu guia de estilo de API). Skills de ação dizem a Claude para fazer algo específico (como `/deploy` que executa seu fluxo de trabalho de implantação).

64 

65 **Use um subagent** quando você precisar de isolamento de contexto ou quando sua janela de contexto estiver ficando cheia. O subagent pode ler dezenas de arquivos ou executar buscas extensas, mas sua conversa principal recebe apenas um resumo. Como o trabalho do subagent não consome seu contexto principal, isso também é útil quando você não precisa que o trabalho intermediário permaneça visível. Subagents personalizados podem ter suas próprias instruções e podem pré-carregar skills.

66 

67 **Eles podem se combinar.** Um subagent pode pré-carregar skills específicas (campo `skills:`). Uma skill pode ser executada em contexto isolado usando `context: fork`. Consulte [Skills](/pt/skills) para detalhes.

68 </Tab>

69 

70 <Tab title="CLAUDE.md vs Skill">

71 Ambos armazenam instruções, mas carregam de forma diferente e servem a propósitos diferentes.

72 

73 | Aspecto | CLAUDE.md | Skill |

74 | ------------------------------------ | ------------------------------ | ----------------------------------------------------- |

75 | **Carrega** | A cada sessão, automaticamente | Sob demanda |

76 | **Pode incluir arquivos** | Sim, com importações `@path` | Sim, com importações `@path` |

77 | **Pode disparar fluxos de trabalho** | Não | Sim, com `/<name>` |

78 | **Melhor para** | Regras "sempre faça X" | Material de referência, fluxos de trabalho invocáveis |

79 

80 **Coloque em CLAUDE.md** se Claude sempre deve saber: convenções de codificação, comandos de compilação, estrutura do projeto, regras "nunca faça X".

81 

82 **Coloque em uma skill** se for material de referência que Claude precisa às vezes (documentação de API, guias de estilo) ou um fluxo de trabalho que você dispara com `/<name>` (deploy, review, release).

83 

84 **Regra prática:** Mantenha CLAUDE.md com menos de 200 linhas. Se estiver crescendo, mova conteúdo de referência para skills ou divida em arquivos [`.claude/rules/`](/pt/memory#organize-rules-with-clauderules).

85 </Tab>

86 

87 <Tab title="CLAUDE.md vs Rules vs Skills">

88 Todos os três armazenam instruções, mas carregam de forma diferente:

89 

90 | Aspecto | CLAUDE.md | `.claude/rules/` | Skill |

91 | --------------- | ---------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------- |

92 | **Carrega** | A cada sessão | A cada sessão, ou quando arquivos correspondentes são abertos | Sob demanda, quando invocado ou relevante |

93 | **Escopo** | Projeto inteiro | Pode ser limitado a caminhos de arquivo | Específico da tarefa |

94 | **Melhor para** | Convenções principais e comandos de compilação | Diretrizes específicas de linguagem ou diretório | Material de referência, fluxos de trabalho repetíveis |

95 

96 **Use CLAUDE.md** para instruções que cada sessão precisa: comandos de compilação, convenções de teste, arquitetura do projeto.

97 

98 **Use rules** para manter CLAUDE.md focado. Rules com [frontmatter `paths`](/pt/memory#path-specific-rules) carregam apenas quando Claude trabalha com arquivos correspondentes, economizando contexto.

99 

100 **Use skills** para conteúdo que Claude só precisa às vezes, como documentação de API ou uma lista de verificação de implantação que você dispara com `/<name>`.

101 </Tab>

102 

103 <Tab title="Subagent vs Agent team">

104 Ambos paralelizam o trabalho, mas são arquitetonicamente diferentes:

105 

106 * **Subagents** são executados dentro de sua sessão e relatam resultados de volta ao seu contexto principal

107 * **Agent teams** são sessões independentes do Claude Code que se comunicam entre si

108 

109 | Aspecto | Subagent | Agent team |

110 | ------------------ | --------------------------------------------------------------- | ----------------------------------------------------------------- |

111 | **Contexto** | Sua própria janela de contexto; resultados retornam ao chamador | Sua própria janela de contexto; totalmente independente |

112 | **Comunicação** | Relata resultados de volta apenas ao agente principal | Companheiros de equipe se mensageiam diretamente |

113 | **Coordenação** | Agente principal gerencia todo o trabalho | Lista de tarefas compartilhada com auto-coordenação |

114 | **Melhor para** | Tarefas focadas onde apenas o resultado importa | Trabalho complexo que requer discussão e colaboração |

115 | **Custo de token** | Menor: resultados resumidos de volta ao contexto principal | Maior: cada companheiro de equipe é uma instância Claude separada |

116 

117 **Use um subagent** quando você precisar de um trabalhador rápido e focado: pesquisar uma pergunta, verificar uma afirmação, revisar um arquivo. O subagent faz o trabalho e retorna um resumo. Sua conversa principal fica limpa.

118 

119 **Use um agent team** quando companheiros de equipe precisam compartilhar descobertas, desafiar um ao outro e se coordenar independentemente. Agent teams são melhores para pesquisa com hipóteses concorrentes, revisão de código paralela e desenvolvimento de novos recursos onde cada companheiro de equipe possui uma peça separada.

120 

121 **Ponto de transição:** Se você está executando subagents paralelos mas atingindo limites de contexto, ou se seus subagents precisam se comunicar entre si, agent teams são o próximo passo natural.

122 

123 <Note>

124 Agent teams são experimentais e desabilitados por padrão. Consulte [agent teams](/pt/agent-teams) para configuração e limitações atuais.

125 </Note>

126 </Tab>

127 

128 <Tab title="MCP vs Skill">

129 MCP conecta Claude a serviços externos. Skills estendem o que Claude sabe, incluindo como usar esses serviços efetivamente.

130 

131 | Aspecto | MCP | Skill |

132 | ------------ | -------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |

133 | **O que é** | Protocolo para conectar a serviços externos | Conhecimento, fluxos de trabalho e material de referência |

134 | **Fornece** | Ferramentas e acesso a dados | Conhecimento, fluxos de trabalho, material de referência |

135 | **Exemplos** | Integração Slack, consultas de banco de dados, controle de navegador | Lista de verificação de revisão de código, fluxo de trabalho de implantação, guia de estilo de API |

136 

137 Esses resolvem problemas diferentes e funcionam bem juntos:

138 

139 **MCP** dá a Claude a capacidade de interagir com sistemas externos. Sem MCP, Claude não pode consultar seu banco de dados ou postar no Slack.

140 

141 **Skills** dão a Claude conhecimento sobre como usar essas ferramentas efetivamente, além de fluxos de trabalho que você pode disparar com `/<name>`. Uma skill pode incluir o esquema do banco de dados da sua equipe e padrões de consulta, ou um fluxo de trabalho `/post-to-slack` com as regras de formatação de mensagem da sua equipe.

142 

143 Exemplo: Um servidor MCP conecta Claude ao seu banco de dados. Uma skill ensina a Claude seu modelo de dados, padrões de consulta comuns e quais tabelas usar para diferentes tarefas.

144 </Tab>

145</Tabs>

146 

147### Entender como os recursos se sobrepõem

148 

149Os recursos podem ser definidos em múltiplos níveis: em toda a máquina, por projeto, via plugins ou através de políticas gerenciadas. Você também pode aninhar arquivos CLAUDE.md em subdiretórios ou colocar skills em pacotes específicos de um monorepo. Quando o mesmo recurso existe em múltiplos níveis, aqui está como eles se sobrepõem:

150 

151* **Arquivos CLAUDE.md** são aditivos: todos os níveis contribuem conteúdo ao contexto de Claude simultaneamente. Arquivos do seu diretório de trabalho e acima carregam no lançamento; subdiretórios carregam conforme você trabalha neles. Quando as instruções entram em conflito, Claude usa julgamento para reconciliá-las, com instruções mais específicas tipicamente tendo precedência. Consulte [como arquivos CLAUDE.md carregam](/pt/memory#how-claudemd-files-load).

152* **Skills e subagents** substituem por nome: quando o mesmo nome existe em múltiplos níveis, uma definição vence com base na prioridade (gerenciado > usuário > projeto para skills; gerenciado > sinalizador CLI > projeto > usuário > plugin para subagents). Skills de plugin são [nomeadas](/pt/plugins#add-skills-to-your-plugin) para evitar conflitos. Consulte [descoberta de skill](/pt/skills#where-skills-live) e [escopo de subagent](/pt/sub-agents#choose-the-subagent-scope).

153* **Servidores MCP** substituem por nome: local > projeto > usuário. Consulte [escopo MCP](/pt/mcp#scope-hierarchy-and-precedence).

154* **Hooks** se mesclam: todos os hooks registrados disparam para seus eventos correspondentes independentemente da fonte. Consulte [hooks](/pt/hooks).

155 

156### Combinar recursos

157 

158Cada extensão resolve um problema diferente: CLAUDE.md lida com contexto sempre ativo, skills lidam com conhecimento sob demanda e fluxos de trabalho, MCP lida com conexões externas, subagents lidam com isolamento e hooks lidam com automação. Configurações reais combinam eles com base em seu fluxo de trabalho.

159 

160Por exemplo, você pode usar CLAUDE.md para convenções de projeto, uma skill para seu fluxo de trabalho de implantação, MCP para conectar ao seu banco de dados e um hook para executar linting após cada edição. Cada recurso lida com o que é melhor.

161 

162| Padrão | Como funciona | Exemplo |

163| ---------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |

164| **Skill + MCP** | MCP fornece a conexão; uma skill ensina a Claude como usá-la bem | MCP conecta ao seu banco de dados, uma skill documenta seu esquema e padrões de consulta |

165| **Skill + Subagent** | Uma skill gera subagents para trabalho paralelo | Skill `/audit` inicia subagents de segurança, desempenho e estilo que trabalham em contexto isolado |

166| **CLAUDE.md + Skills** | CLAUDE.md contém regras sempre ativas; skills contêm material de referência carregado sob demanda | CLAUDE.md diz "siga nossas convenções de API," uma skill contém o guia de estilo de API completo |

167| **Hook + MCP** | Um hook dispara ações externas através de MCP | Hook pós-edição envia uma notificação Slack quando Claude modifica arquivos críticos |

168 

169## Entender custos de contexto

170 

171Cada recurso que você adiciona consome algum contexto de Claude. Muito pode preencher sua janela de contexto, mas também pode adicionar ruído que torna Claude menos eficaz; skills podem não disparar corretamente, ou Claude pode perder o controle de suas convenções. Entender esses trade-offs ajuda você a construir uma configuração eficaz.

172 

173### Custo de contexto por recurso

174 

175Cada recurso tem uma estratégia de carregamento e custo de contexto diferentes:

176 

177| Recurso | Quando carrega | O que carrega | Custo de contexto |

178| ------------------ | ------------------------------- | ---------------------------------------------------- | ------------------------------------------------- |

179| **CLAUDE.md** | Início da sessão | Conteúdo completo | A cada requisição |

180| **Skills** | Início da sessão + quando usado | Descrições no início, conteúdo completo quando usado | Baixo (descrições a cada requisição)\* |

181| **Servidores MCP** | Início da sessão | Todas as definições de ferramentas e esquemas | A cada requisição |

182| **Subagents** | Quando gerado | Contexto fresco com skills especificadas | Isolado da sessão principal |

183| **Hooks** | No disparo | Nada (executa externamente) | Zero, a menos que hook retorne contexto adicional |

184 

185\*Por padrão, descrições de skill carregam no início da sessão para que Claude possa decidir quando usá-las. Defina `disable-model-invocation: true` no frontmatter de uma skill para ocultá-la de Claude inteiramente até que você a invoque manualmente. Isso reduz o custo de contexto para zero para skills que você só dispara você mesmo.

186 

187### Entender como os recursos carregam

188 

189Cada recurso carrega em diferentes pontos em sua sessão. As abas abaixo explicam quando cada um carrega e o que entra em contexto.

190 

191<img src="https://mintcdn.com/claude-code/6yTCYq1p37ZB8-CQ/images/context-loading.svg?fit=max&auto=format&n=6yTCYq1p37ZB8-CQ&q=85&s=5a58ce953a35a2412892015e2ad6cb67" alt="Carregamento de contexto: CLAUDE.md e MCP carregam no início da sessão e permanecem em cada requisição. Skills carregam descrições no início, conteúdo completo na invocação. Subagents obtêm contexto isolado. Hooks são executados externamente." width="720" height="410" data-path="images/context-loading.svg" />

192 

193<Tabs>

194 <Tab title="CLAUDE.md">

195 **Quando:** Início da sessão

196 

197 **O que carrega:** Conteúdo completo de todos os arquivos CLAUDE.md (níveis gerenciado, usuário e projeto).

198 

199 **Herança:** Claude lê arquivos CLAUDE.md do seu diretório de trabalho até a raiz e descobre aninhados em subdiretórios conforme acessa esses arquivos. Consulte [Como arquivos CLAUDE.md carregam](/pt/memory#how-claudemd-files-load) para detalhes.

200 

201 <Tip>Mantenha CLAUDE.md com menos de 200 linhas. Mova material de referência para skills, que carregam sob demanda.</Tip>

202 </Tab>

203 

204 <Tab title="Skills">

205 Skills são capacidades extras no kit de ferramentas de Claude. Podem ser material de referência (como um guia de estilo de API) ou fluxos de trabalho invocáveis que você dispara com `/<name>` (como `/deploy`). Claude Code vem com [skills agrupadas](/pt/skills#bundled-skills) como `/simplify`, `/batch` e `/debug` que funcionam imediatamente. Você também pode criar as suas próprias. Claude usa skills quando apropriado, ou você pode invocar uma diretamente.

206 

207 **Quando:** Depende da configuração da skill. Por padrão, descrições carregam no início da sessão e conteúdo completo carrega quando usado. Para skills apenas de usuário (`disable-model-invocation: true`), nada carrega até que você as invoque.

208 

209 **O que carrega:** Para skills invocáveis por modelo, Claude vê nomes e descrições em cada requisição. Quando você invoca uma skill com `/<name>` ou Claude a carrega automaticamente, o conteúdo completo carrega em sua conversa.

210 

211 **Como Claude escolhe skills:** Claude corresponde sua tarefa contra descrições de skill para decidir quais são relevantes. Se descrições forem vagas ou se sobrepuserem, Claude pode carregar a skill errada ou perder uma que ajudaria. Para dizer a Claude para usar uma skill específica, invoque-a com `/<name>`. Skills com `disable-model-invocation: true` são invisíveis a Claude até que você as invoque.

212 

213 **Custo de contexto:** Baixo até ser usado. Skills apenas de usuário têm custo zero até invocação.

214 

215 **Em subagents:** Skills funcionam diferentemente em subagents. Em vez de carregamento sob demanda, skills passadas para um subagent são totalmente pré-carregadas em seu contexto no lançamento. Subagents não herdam skills da sessão principal; você deve especificá-las explicitamente.

216 

217 <Tip>Use `disable-model-invocation: true` para skills com efeitos colaterais. Isso economiza contexto e garante que apenas você as dispare.</Tip>

218 </Tab>

219 

220 <Tab title="Servidores MCP">

221 **Quando:** Início da sessão.

222 

223 **O que carrega:** Todas as definições de ferramentas e esquemas JSON de servidores conectados.

224 

225 **Custo de contexto:** [Busca de ferramentas](/pt/mcp#scale-with-mcp-tool-search) (habilitada por padrão) carrega ferramentas MCP até 10% de contexto e adia o resto até ser necessário.

226 

227 **Nota de confiabilidade:** Conexões MCP podem falhar silenciosamente no meio da sessão. Se um servidor se desconectar, suas ferramentas desaparecem sem aviso. Claude pode tentar usar uma ferramenta que não existe mais. Se você notar Claude falhando em usar uma ferramenta MCP que anteriormente podia acessar, verifique a conexão com `/mcp`.

228 

229 <Tip>Execute `/mcp` para ver custos de token por servidor. Desconecte servidores que você não está usando ativamente.</Tip>

230 </Tab>

231 

232 <Tab title="Subagents">

233 **Quando:** Sob demanda, quando você ou Claude gera um para uma tarefa.

234 

235 **O que carrega:** Contexto fresco e isolado contendo:

236 

237 * O prompt do sistema (compartilhado com pai para eficiência de cache)

238 * Conteúdo completo de skills listadas no campo `skills:` do agente

239 * CLAUDE.md e status git (herdados do pai)

240 * Qualquer contexto que o agente principal passa no prompt

241 

242 **Custo de contexto:** Isolado da sessão principal. Subagents não herdam seu histórico de conversa ou skills invocadas.

243 

244 <Tip>Use subagents para trabalho que não precisa de seu contexto de conversa completo. Seu isolamento previne inchar sua sessão principal.</Tip>

245 </Tab>

246 

247 <Tab title="Hooks">

248 **Quando:** No disparo. Hooks disparam em eventos de ciclo de vida específicos como execução de ferramenta, limites de sessão, envio de prompt, solicitações de permissão e compactação. Consulte [Hooks](/pt/hooks) para a lista completa.

249 

250 **O que carrega:** Nada por padrão. Hooks são executados como scripts externos.

251 

252 **Custo de contexto:** Zero, a menos que o hook retorne saída que seja adicionada como mensagens à sua conversa.

253 

254 <Tip>Hooks são ideais para efeitos colaterais (linting, logging) que não precisam afetar o contexto de Claude.</Tip>

255 </Tab>

256</Tabs>

257 

258## Saiba mais

259 

260Cada recurso tem seu próprio guia com instruções de configuração, exemplos e opções de configuração.

261 

262<CardGroup cols={2}>

263 <Card title="CLAUDE.md" icon="file-lines" href="/pt/memory">

264 Armazenar contexto de projeto, convenções e instruções

265 </Card>

266 

267 <Card title="Skills" icon="brain" href="/pt/skills">

268 Dar a Claude expertise de domínio e fluxos de trabalho reutilizáveis

269 </Card>

270 

271 <Card title="Subagents" icon="users" href="/pt/sub-agents">

272 Descarregar trabalho para contexto isolado

273 </Card>

274 

275 <Card title="Agent teams" icon="network" href="/pt/agent-teams">

276 Coordenar múltiplas sessões trabalhando em paralelo

277 </Card>

278 

279 <Card title="MCP" icon="plug" href="/pt/mcp">

280 Conectar Claude a serviços externos

281 </Card>

282 

283 <Card title="Hooks" icon="bolt" href="/pt/hooks-guide">

284 Automatizar fluxos de trabalho com hooks

285 </Card>

286 

287 <Card title="Plugins" icon="puzzle-piece" href="/pt/plugins">

288 Empacotar e compartilhar conjuntos de recursos

289 </Card>

290 

291 <Card title="Marketplaces" icon="store" href="/pt/plugin-marketplaces">

292 Hospedar e distribuir coleções de plugins

293 </Card>

294</CardGroup>

fullscreen.md +159 −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# Renderização em tela cheia

6 

7> Ative um modo de renderização mais suave e sem cintilação com suporte a mouse e uso de memória estável em conversas longas.

8 

9<Note>

10 A renderização em tela cheia é uma [visualização de pesquisa](#research-preview) opcional e requer Claude Code v2.1.89 ou posterior. Execute `/tui fullscreen` para alternar em sua conversa atual, ou defina `CLAUDE_CODE_NO_FLICKER=1` em versões anteriores a v2.1.110. O comportamento pode mudar com base no feedback.

11</Note>

12 

13A renderização em tela cheia é um caminho de renderização alternativo para o Claude Code CLI que elimina cintilação, mantém o uso de memória constante em conversas longas e adiciona suporte a mouse. Ela desenha a interface no buffer de tela alternativa do terminal, como `vim` ou `htop`, e renderiza apenas as mensagens que estão visíveis no momento. Isso reduz a quantidade de dados enviados para seu terminal em cada atualização.

14 

15A diferença é mais notável em emuladores de terminal onde a taxa de transferência de renderização é o gargalo, como o terminal integrado do VS Code, tmux e iTerm2. Se a posição de rolagem do seu terminal pular para o topo enquanto Claude está trabalhando, ou a tela piscar conforme a saída da ferramenta é transmitida, este modo resolve esses problemas.

16 

17<Note>

18 O termo tela cheia descreve como Claude Code assume a superfície de desenho do terminal, da mesma forma que `vim` faz. Não tem nada a ver com maximizar a janela do seu terminal e funciona em qualquer tamanho de janela.

19</Note>

20 

21## Ativar renderização em tela cheia

22 

23Execute `/tui fullscreen` dentro de qualquer conversa do Claude Code. O CLI salva a configuração [`tui`](/pt/settings#available-settings) e reinicia em tela cheia com sua conversa intacta, para que você possa alternar no meio da sessão sem perder contexto. Execute `/tui` sem argumentos para imprimir qual renderizador está ativo.

24 

25Você também pode definir a variável de ambiente `CLAUDE_CODE_NO_FLICKER` antes de iniciar Claude Code:

26 

27```bash theme={null}

28CLAUDE_CODE_NO_FLICKER=1 claude

29```

30 

31A configuração `tui` e a variável de ambiente são equivalentes. O comando `/tui` limpa `CLAUDE_CODE_NO_FLICKER` do processo reiniciado para que a configuração que ele escreve tenha efeito.

32 

33## O que muda

34 

35A renderização em tela cheia altera como o CLI desenha no seu terminal. A caixa de entrada permanece fixa na parte inferior da tela em vez de se mover conforme a saída é transmitida. Se a entrada permanecer no lugar enquanto Claude está trabalhando, a renderização em tela cheia está ativa. Apenas as mensagens visíveis são mantidas na árvore de renderização, portanto a memória permanece constante independentemente do comprimento da conversa.

36 

37Como a conversa vive no buffer de tela alternativa em vez do scrollback do seu terminal, algumas coisas funcionam de forma diferente:

38 

39| Antes | Agora | Detalhes |

40| :----------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------- |

41| `Cmd+f` ou busca tmux para encontrar texto | `Ctrl+o` para modo de transcrição, depois `/` para buscar ou `[` para escrever no scrollback | [Buscar e revisar a conversa](#search-and-review-the-conversation) |

42| Clique e arraste nativo do terminal para selecionar e copiar | Seleção no aplicativo, copia automaticamente ao soltar o mouse | [Usar o mouse](#use-the-mouse) |

43| `Cmd`-clique para abrir uma URL | Clique na URL | [Usar o mouse](#use-the-mouse) |

44 

45Se a captura de mouse interferir no seu fluxo de trabalho, você pode [desativá-la](#keep-native-text-selection) mantendo a renderização sem cintilação.

46 

47## Usar o mouse

48 

49A renderização em tela cheia captura eventos de mouse e os manipula dentro do Claude Code:

50 

51* **Clique na entrada do prompt** para posicionar seu cursor em qualquer lugar no texto que você está digitando.

52* **Clique em um resultado de ferramenta recolhido** para expandi-lo e ver a saída completa. Clique novamente para recolher. A chamada de ferramenta e seu resultado se expandem juntos. Apenas mensagens que têm mais a mostrar são clicáveis.

53* **Clique em uma URL ou caminho de arquivo** para abri-lo. Caminhos de arquivo na saída da ferramenta, como os impressos após um Edit ou Write, abrem no seu aplicativo padrão. URLs simples `http://` e `https://` abrem no seu navegador. Na maioria dos terminais, isso substitui o `Cmd`-clique ou `Ctrl`-clique nativo, que a captura de mouse intercepta. No terminal integrado do VS Code e terminais semelhantes baseados em xterm.js, continue usando `Cmd`-clique. Claude Code defere para o próprio manipulador de links do terminal para evitar abrir links duas vezes.

54* **Clique e arraste** para selecionar texto em qualquer lugar da conversa. Clique duplo seleciona uma palavra, correspondendo aos limites de palavra do iTerm2 para que um caminho de arquivo seja selecionado como uma unidade. Clique triplo seleciona a linha.

55* **Role com a roda do mouse** para se mover pela conversa.

56 

57O texto selecionado é copiado para sua área de transferência automaticamente ao soltar o mouse. Para desativar isso, alterne Copiar ao selecionar em `/config`. Com isso desativado, pressione `Ctrl+Shift+c` para copiar manualmente. Em terminais que suportam o protocolo de teclado kitty, como kitty, WezTerm, Ghostty e iTerm2, `Cmd+c` também funciona. Se você tiver uma seleção ativa, `Ctrl+c` copia em vez de cancelar.

58 

59Com uma seleção ativa, mantenha `Shift` pressionado e pressione as teclas de seta para estendê-la a partir do teclado. `Shift+↑` e `Shift+↓` rolam a janela de visualização quando a seleção atinge a borda superior ou inferior. `Shift+Home` e `Shift+End` estendem para o início ou fim da linha atual.

60 

61## Rolar a conversa

62 

63A renderização em tela cheia manipula a rolagem dentro do aplicativo. Use estes atalhos para navegar:

64 

65| Atalho | Ação |

66| :-------------- | :-------------------------------------------------------- |

67| `PgUp` / `PgDn` | Role para cima ou para baixo por meia tela |

68| `Ctrl+Home` | Pule para o início da conversa |

69| `Ctrl+End` | Pule para a mensagem mais recente e reative o auto-follow |

70| Roda do mouse | Role algumas linhas por vez |

71 

72Em teclados sem teclas dedicadas `PgUp`, `PgDn`, `Home` ou `End`, como teclados MacBook, mantenha `Fn` pressionado com as teclas de seta: `Fn+↑` envia `PgUp`, `Fn+↓` envia `PgDn`, `Fn+←` envia `Home` e `Fn+→` envia `End`. Isso torna `Ctrl+Fn+→` o atalho de pulo para o final. Se isso parecer desconfortável, role para o final com a roda do mouse para retomar o seguimento, ou rebinde `scroll:bottom` para algo acessível.

73 

74Essas ações são rebindáveis. Veja [Ações de rolagem](/pt/keybindings#scroll-actions) para a lista completa de nomes de ações, incluindo variantes de meia página e página completa que não têm vinculação padrão.

75 

76### Auto-follow

77 

78Rolar para cima pausa o auto-follow para que a nova saída não o puxe de volta para o final. Pressione `Ctrl+End` ou role para o final para retomar o seguimento.

79 

80Para desativar o auto-follow completamente para que a visualização permaneça onde você a deixar, abra `/config` e defina Auto-scroll como desativado. Com auto-scroll desativado, a visualização nunca pula para o final por conta própria. Prompts de permissão e outros diálogos que precisam de uma resposta ainda rolam para a visualização independentemente dessa configuração.

81 

82### Rolagem da roda do mouse

83 

84A rolagem da roda do mouse requer que seu terminal encaminhe eventos de mouse para Claude Code. A maioria dos terminais faz isso sempre que um aplicativo solicita. O iTerm2 torna isso uma configuração por perfil: se a roda não fizer nada, mas `PgUp` e `PgDn` funcionarem, abra Configurações → Perfis → Terminal e ative Ativar relatório de mouse. A mesma configuração também é necessária para clique para expandir e seleção de texto funcionarem.

85 

86Se a rolagem da roda do mouse parecer lenta, seu terminal pode estar enviando um evento de rolagem por entalhe físico sem multiplicador. Alguns terminais, como Ghostty e iTerm2 com rolagem mais rápida ativada, já amplificam eventos de roda. Outros, incluindo o terminal integrado do VS Code, enviam exatamente um evento por entalhe. Claude Code não consegue detectar qual.

87 

88Defina `CLAUDE_CODE_SCROLL_SPEED` para multiplicar a distância de rolagem base:

89 

90```bash theme={null}

91export CLAUDE_CODE_SCROLL_SPEED=3

92```

93 

94Um valor de `3` corresponde ao padrão em `vim` e aplicativos semelhantes. A configuração aceita valores de 1 a 20.

95 

96## Buscar e revisar a conversa

97 

98`Ctrl+o` alterna entre o prompt normal e o modo de transcrição. Para uma visualização mais silenciosa que mostra apenas seu último prompt, um resumo de uma linha de chamadas de ferramenta com estatísticas de diff de edição e a resposta final, execute `/focus`. A configuração persiste entre sessões. Execute `/focus` novamente para desativá-la.

99 

100O modo de transcrição ganha navegação e busca no estilo `less`:

101 

102| Tecla | Ação |

103| :----------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------- |

104| `/` | Abrir busca. Digite para encontrar correspondências, `Enter` para aceitar, `Esc` para cancelar e restaurar sua posição de rolagem |

105| `n` / `N` | Pule para a próxima ou anterior correspondência. Funciona depois que você fechou a barra de busca |

106| `j` / `k` ou `↑` / `↓` | Role uma linha |

107| `g` / `G` ou `Home` / `End` | Pule para o topo ou final |

108| `Ctrl+u` / `Ctrl+d` | Role meia página |

109| `Ctrl+b` / `Ctrl+f` ou `Space` / `b` | Role uma página completa |

110| `Ctrl+o`, `Esc`, ou `q` | Sair do modo de transcrição e retornar ao prompt |

111 

112O `Cmd+f` do seu terminal e a busca tmux não veem a conversa porque ela vive no buffer de tela alternativa, não no scrollback nativo. Para devolver o conteúdo ao seu terminal, pressione `Ctrl+o` para entrar no modo de transcrição primeiro, depois:

113 

114* **`[`**: escreve a conversa completa no buffer de scrollback nativo do seu terminal, com toda a saída da ferramenta expandida. A conversa agora é texto comum no seu terminal, portanto `Cmd+f`, modo de cópia tmux e qualquer outra ferramenta nativa pode buscá-la ou selecioná-la. Sessões longas podem pausar por um momento enquanto isso acontece. Isso dura até você sair do modo de transcrição com `Esc` ou `q`, que o retorna à renderização em tela cheia. O próximo `Ctrl+o` começa do zero.

115* **`v`**: escreve a conversa em um arquivo temporário e a abre em `$VISUAL` ou `$EDITOR`.

116 

117Pressione `Esc` ou `q` para retornar ao prompt.

118 

119## Limpar a conversa

120 

121Pressione `Ctrl+L` duas vezes em dois segundos para executar `/clear` e iniciar uma nova conversa. O primeiro pressionamento redesenha a tela e mostra uma dica; o segundo pressionamento limpa a conversa. No macOS, pressionar duas vezes `Cmd+K` também executa `/clear`.

122 

123## Usar com tmux

124 

125A renderização em tela cheia funciona dentro do tmux, com duas ressalvas.

126 

127A rolagem da roda do mouse requer o modo de mouse do tmux. Se seu `~/.tmux.conf` ainda não o ativa, adicione esta linha e recarregue sua configuração:

128 

129```bash theme={null}

130set -g mouse on

131```

132 

133Sem o modo de mouse, os eventos de roda vão para tmux em vez de Claude Code. A rolagem do teclado com `PgUp` e `PgDn` funciona de qualquer forma. Claude Code imprime uma dica única na inicialização se detectar tmux com o modo de mouse desativado.

134 

135A renderização em tela cheia é incompatível com o modo de integração tmux do iTerm2, que é o modo que você entra com `tmux -CC`. No modo de integração, o iTerm2 renderiza cada painel tmux como uma divisão nativa em vez de deixar o tmux desenhar no terminal. O buffer de tela alternativa e o rastreamento de mouse não funcionam corretamente lá: a roda do mouse não faz nada e o clique duplo pode corromper o estado do terminal. Não ative a renderização em tela cheia em sessões `tmux -CC`. O tmux regular dentro do iTerm2, sem `-CC`, funciona bem.

136 

137## Manter seleção de texto nativa

138 

139A captura de mouse é o ponto de atrito mais comum, especialmente sobre SSH ou dentro do tmux. Quando Claude Code captura eventos de mouse, a cópia nativa ao selecionar do seu terminal para de funcionar. A seleção que você faz com clique e arraste existe dentro do Claude Code, não no buffer de seleção do seu terminal, portanto o modo de cópia tmux, dicas do Kitty e ferramentas semelhantes não a veem.

140 

141Claude Code tenta escrever a seleção na sua área de transferência, mas o caminho que usa depende da sua configuração. Dentro do tmux, escreve no buffer de colagem do tmux. Sobre SSH, volta para sequências de escape OSC 52, que alguns terminais bloqueiam por padrão. O iTerm2 bloqueia até que você ative Configurações → Geral → Seleção → Aplicativos no terminal podem acessar a área de transferência. Executar [`/terminal-setup`](/pt/terminal-config) no iTerm2 ativa isso para você. Claude Code imprime um toast após cada cópia informando qual caminho foi usado.

142 

143Para uma seleção nativa única, mantenha pressionada a tecla modificadora de bypass do seu terminal enquanto clica e arrasta: `Option` no iTerm2, ou `Shift` na maioria dos terminais Linux e Windows. O modificador diz ao seu terminal para manipular a seleção em si em vez de encaminhar eventos de mouse para Claude Code, portanto `Cmd+C` e outros atalhos de cópia do seu terminal funcionam nela.

144 

145Se você depender da seleção nativa o tempo todo, defina `CLAUDE_CODE_DISABLE_MOUSE=1` para optar por não participar da captura de mouse mantendo a renderização sem cintilação e memória plana:

146 

147```bash theme={null}

148CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

149```

150 

151Com a captura de mouse desativada, a rolagem do teclado com `PgUp`, `PgDn`, `Ctrl+Home` e `Ctrl+End` ainda funciona, e seu terminal manipula a seleção nativamente. Você perde clique para posicionar cursor, clique para expandir saída de ferramenta, clique em URL e rolagem de roda dentro do Claude Code.

152 

153## Visualização de pesquisa

154 

155A renderização em tela cheia é um recurso de visualização de pesquisa. Ela foi testada em emuladores de terminal comuns, mas você pode encontrar problemas de renderização em terminais menos comuns ou configurações incomuns.

156 

157Se encontrar um problema, execute `/feedback` dentro do Claude Code para relatá-lo, ou abra uma issue no [repositório GitHub claude-code](https://github.com/anthropics/claude-code/issues). Inclua o nome e a versão do seu emulador de terminal.

158 

159Para desativar a renderização em tela cheia, execute `/tui default`, ou desdefina a variável de ambiente se você a ativou dessa forma.

github-actions.md +670 −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 GitHub Actions

6 

7> Saiba como integrar Claude Code no seu fluxo de trabalho de desenvolvimento com Claude Code GitHub Actions

8 

9Claude Code GitHub Actions traz automação alimentada por IA para seu fluxo de trabalho do GitHub. Com uma simples menção `@claude` em qualquer PR ou issue, Claude pode analisar seu código, criar pull requests, implementar recursos e corrigir bugs - tudo enquanto segue os padrões do seu projeto. Para análises automáticas postadas em cada PR sem um gatilho, consulte [GitHub Code Review](/pt/code-review).

10 

11<Note>

12 Claude Code GitHub Actions é construído sobre o [Claude Agent SDK](/pt/agent-sdk/overview), que permite integração programática do Claude Code em suas aplicações. Você pode usar o SDK para construir fluxos de trabalho de automação personalizados além do GitHub Actions.

13</Note>

14 

15<Info>

16 **Claude Opus 4.7 agora está disponível.** Claude Code GitHub Actions usa Sonnet por padrão. Para usar Opus 4.7, configure o [parâmetro de modelo](#breaking-changes-reference) para usar `claude-opus-4-7`.

17</Info>

18 

19## Por que usar Claude Code GitHub Actions?

20 

21* **Criação instantânea de PR**: Descreva o que você precisa, e Claude cria um PR completo com todas as alterações necessárias

22* **Implementação de código automatizada**: Transforme issues em código funcional com um único comando

23* **Segue seus padrões**: Claude respeita suas diretrizes `CLAUDE.md` e padrões de código existentes

24* **Configuração simples**: Comece em minutos com nosso instalador e chave de API

25* **Seguro por padrão**: Seu código permanece nos runners do Github

26 

27## O que Claude pode fazer?

28 

29Claude Code fornece uma poderosa GitHub Action que transforma como você trabalha com código:

30 

31### Claude Code Action

32 

33Esta GitHub Action permite que você execute Claude Code dentro de seus fluxos de trabalho do GitHub Actions. Você pode usar isso para construir qualquer fluxo de trabalho personalizado sobre Claude Code.

34 

35[Ver repositório →](https://github.com/anthropics/claude-code-action)

36 

37## Configuração

38 

39## Configuração rápida

40 

41A maneira mais fácil de configurar esta action é através do Claude Code no terminal. Basta abrir claude e executar `/install-github-app`.

42 

43Este comando o guiará através da configuração do aplicativo GitHub e dos secrets necessários.

44 

45<Note>

46 * Você deve ser um administrador do repositório para instalar o aplicativo GitHub e adicionar secrets

47 * O aplicativo GitHub solicitará permissões de leitura e escrita para Contents, Issues e Pull requests

48 * Este método de início rápido está disponível apenas para usuários diretos da Claude API. Se você está usando Amazon Bedrock ou Google Vertex AI, consulte a seção [Usando com Amazon Bedrock & Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai).

49</Note>

50 

51## Configuração manual

52 

53Se o comando `/install-github-app` falhar ou você preferir configuração manual, siga estas instruções de configuração manual:

54 

551. **Instale o aplicativo Claude GitHub** em seu repositório: [https://github.com/apps/claude](https://github.com/apps/claude)

56 

57 O aplicativo Claude GitHub requer as seguintes permissões de repositório:

58 

59 * **Contents**: Leitura e escrita (para modificar arquivos do repositório)

60 * **Issues**: Leitura e escrita (para responder a issues)

61 * **Pull requests**: Leitura e escrita (para criar PRs e fazer push de alterações)

62 

63 Para mais detalhes sobre segurança e permissões, consulte a [documentação de segurança](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

642. **Adicione ANTHROPIC\_API\_KEY** aos seus secrets do repositório ([Saiba como usar secrets no GitHub Actions](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions))

653. **Copie o arquivo de fluxo de trabalho** de [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) para a pasta `.github/workflows/` do seu repositório

66 

67<Tip>

68 Após concluir a configuração rápida ou manual, teste a action marcando `@claude` em um comentário de issue ou PR.

69</Tip>

70 

71## Atualizando da versão Beta

72 

73<Warning>

74 Claude Code GitHub Actions v1.0 introduz mudanças significativas que exigem atualizar seus arquivos de fluxo de trabalho para fazer upgrade da versão beta para v1.0.

75</Warning>

76 

77Se você está usando a versão beta do Claude Code GitHub Actions, recomendamos que você atualize seus fluxos de trabalho para usar a versão GA. A nova versão simplifica a configuração enquanto adiciona recursos poderosos como detecção automática de modo.

78 

79### Mudanças essenciais

80 

81Todos os usuários beta devem fazer essas alterações em seus arquivos de fluxo de trabalho para fazer upgrade:

82 

831. **Atualize a versão da action**: Mude `@beta` para `@v1`

842. **Remova a configuração de modo**: Delete `mode: "tag"` ou `mode: "agent"` (agora detectado automaticamente)

853. **Atualize as entradas de prompt**: Substitua `direct_prompt` por `prompt`

864. **Mova as opções de CLI**: Converta `max_turns`, `model`, `custom_instructions`, etc. para `claude_args`

87 

88### Referência de Mudanças Significativas

89 

90| Entrada Beta Antiga | Nova Entrada v1.0 |

91| --------------------- | ---------------------------------------- |

92| `mode` | *(Removido - detectado automaticamente)* |

93| `direct_prompt` | `prompt` |

94| `override_prompt` | `prompt` com variáveis do GitHub |

95| `custom_instructions` | `claude_args: --append-system-prompt` |

96| `max_turns` | `claude_args: --max-turns` |

97| `model` | `claude_args: --model` |

98| `allowed_tools` | `claude_args: --allowedTools` |

99| `disallowed_tools` | `claude_args: --disallowedTools` |

100| `claude_env` | `settings` formato JSON |

101 

102### Exemplo Antes e Depois

103 

104**Versão beta:**

105 

106```yaml theme={null}

107- uses: anthropics/claude-code-action@beta

108 with:

109 mode: "tag"

110 direct_prompt: "Review this PR for security issues"

111 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

112 custom_instructions: "Follow our coding standards"

113 max_turns: "10"

114 model: "claude-sonnet-4-6"

115```

116 

117**Versão GA (v1.0):**

118 

119```yaml theme={null}

120- uses: anthropics/claude-code-action@v1

121 with:

122 prompt: "Review this PR for security issues"

123 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

124 claude_args: |

125 --append-system-prompt "Follow our coding standards"

126 --max-turns 10

127 --model claude-sonnet-4-6

128```

129 

130<Tip>

131 A action agora detecta automaticamente se deve executar em modo interativo (responde a menções `@claude`) ou modo de automação (executa imediatamente com um prompt) com base em sua configuração.

132</Tip>

133 

134## Exemplos de casos de uso

135 

136Claude Code GitHub Actions pode ajudá-lo com uma variedade de tarefas. O [diretório de exemplos](https://github.com/anthropics/claude-code-action/tree/main/examples) contém fluxos de trabalho prontos para uso em diferentes cenários.

137 

138### Fluxo de trabalho básico

139 

140```yaml theme={null}

141name: Claude Code

142on:

143 issue_comment:

144 types: [created]

145 pull_request_review_comment:

146 types: [created]

147jobs:

148 claude:

149 runs-on: ubuntu-latest

150 steps:

151 - uses: anthropics/claude-code-action@v1

152 with:

153 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

154 # Responds to @claude mentions in comments

155```

156 

157### Usando skills

158 

159```yaml theme={null}

160name: Code Review

161on:

162 pull_request:

163 types: [opened, synchronize]

164jobs:

165 review:

166 runs-on: ubuntu-latest

167 steps:

168 - uses: anthropics/claude-code-action@v1

169 with:

170 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

171 prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."

172 claude_args: "--max-turns 5"

173```

174 

175### Automação personalizada com prompts

176 

177```yaml theme={null}

178name: Daily Report

179on:

180 schedule:

181 - cron: "0 9 * * *"

182jobs:

183 report:

184 runs-on: ubuntu-latest

185 steps:

186 - uses: anthropics/claude-code-action@v1

187 with:

188 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

189 prompt: "Generate a summary of yesterday's commits and open issues"

190 claude_args: "--model opus"

191```

192 

193### Casos de uso comuns

194 

195Em comentários de issue ou PR:

196 

197```text theme={null}

198@claude implement this feature based on the issue description

199@claude how should I implement user authentication for this endpoint?

200@claude fix the TypeError in the user dashboard component

201```

202 

203Claude analisará automaticamente o contexto e responderá apropriadamente.

204 

205## Melhores práticas

206 

207### Configuração CLAUDE.md

208 

209Crie um arquivo `CLAUDE.md` na raiz do seu repositório para definir diretrizes de estilo de código, critérios de revisão, regras específicas do projeto e padrões preferidos. Este arquivo guia a compreensão de Claude dos padrões do seu projeto.

210 

211### Considerações de segurança

212 

213<Warning>Nunca faça commit de chaves de API diretamente em seu repositório.</Warning>

214 

215Para orientação abrangente de segurança incluindo permissões, autenticação e melhores práticas, consulte a [documentação de segurança do Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

216 

217Sempre use GitHub Secrets para chaves de API:

218 

219* Adicione sua chave de API como um secret do repositório nomeado `ANTHROPIC_API_KEY`

220* Referencie-a em fluxos de trabalho: `anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}`

221* Limite as permissões da action apenas ao necessário

222* Revise as sugestões de Claude antes de fazer merge

223 

224Sempre use GitHub Secrets (por exemplo, `${{ secrets.ANTHROPIC_API_KEY }}`) em vez de codificar chaves de API diretamente em seus arquivos de fluxo de trabalho.

225 

226### Otimizando desempenho

227 

228Use templates de issue para fornecer contexto, mantenha seu `CLAUDE.md` conciso e focado, e configure timeouts apropriados para seus fluxos de trabalho.

229 

230### Custos de CI

231 

232Ao usar Claude Code GitHub Actions, esteja ciente dos custos associados:

233 

234**Custos do GitHub Actions:**

235 

236* Claude Code é executado em runners hospedados pelo GitHub, que consomem seus minutos do GitHub Actions

237* Consulte a [documentação de faturamento do GitHub](https://docs.github.com/en/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions) para detalhes de preços e limites de minutos

238 

239**Custos de API:**

240 

241* Cada interação com Claude consome tokens de API com base no comprimento de prompts e respostas

242* O uso de tokens varia pela complexidade da tarefa e tamanho da base de código

243* Consulte a [página de preços do Claude](https://claude.com/platform/api) para as taxas de token atuais

244 

245**Dicas de otimização de custos:**

246 

247* Use comandos específicos `@claude` para reduzir chamadas de API desnecessárias

248* Configure `--max-turns` apropriado em `claude_args` para evitar iterações excessivas

249* Defina timeouts no nível do fluxo de trabalho para evitar jobs descontrolados

250* Considere usar controles de concorrência do GitHub para limitar execuções paralelas

251 

252## Exemplos de configuração

253 

254A Claude Code Action v1 simplifica a configuração com parâmetros unificados:

255 

256```yaml theme={null}

257- uses: anthropics/claude-code-action@v1

258 with:

259 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

260 prompt: "Your instructions here" # Optional

261 claude_args: "--max-turns 5" # Optional CLI arguments

262```

263 

264Recursos principais:

265 

266* **Interface de prompt unificada** - Use `prompt` para todas as instruções

267* **Skills** - Invoque [skills](/pt/skills) instaladas diretamente do prompt

268* **Passagem de CLI** - Qualquer argumento de CLI do Claude Code via `claude_args`

269* **Gatilhos flexíveis** - Funciona com qualquer evento do GitHub

270 

271Visite o [diretório de exemplos](https://github.com/anthropics/claude-code-action/tree/main/examples) para arquivos de fluxo de trabalho completos.

272 

273<Tip>

274 Ao responder a comentários de issue ou PR, Claude responde automaticamente a menções @claude. Para outros eventos, use o parâmetro `prompt` para fornecer instruções.

275</Tip>

276 

277## Usando com Amazon Bedrock & Google Vertex AI

278 

279Para ambientes empresariais, você pode usar Claude Code GitHub Actions com sua própria infraestrutura em nuvem. Esta abordagem oferece controle sobre residência de dados e faturamento enquanto mantém a mesma funcionalidade.

280 

281### Pré-requisitos

282 

283Antes de configurar Claude Code GitHub Actions com provedores de nuvem, você precisa:

284 

285#### Para Google Cloud Vertex AI:

286 

2871. Um Projeto Google Cloud com Vertex AI habilitado

2882. Workload Identity Federation configurado para GitHub Actions

2893. Uma conta de serviço com as permissões necessárias

2904. Uma GitHub App (recomendado) ou use o GITHUB\_TOKEN padrão

291 

292#### Para Amazon Bedrock:

293 

2941. Uma conta AWS com Amazon Bedrock habilitado

2952. GitHub OIDC Identity Provider configurado na AWS

2963. Uma função IAM com permissões do Bedrock

2974. Uma GitHub App (recomendado) ou use o GITHUB\_TOKEN padrão

298 

299<Steps>

300 <Step title="Crie uma GitHub App personalizada (Recomendado para Provedores 3P)">

301 Para melhor controle e segurança ao usar provedores 3P como Vertex AI ou Bedrock, recomendamos criar sua própria GitHub App:

302 

303 1. Vá para [https://github.com/settings/apps/new](https://github.com/settings/apps/new)

304 2. Preencha as informações básicas:

305 * **Nome da GitHub App**: Escolha um nome único (por exemplo, "YourOrg Claude Assistant")

306 * **URL da Homepage**: O site da sua organização ou a URL do repositório

307 3. Configure as configurações da app:

308 * **Webhooks**: Desmarque "Active" (não necessário para esta integração)

309 4. Defina as permissões necessárias:

310 * **Permissões do Repositório**:

311 * Contents: Read & Write

312 * Issues: Read & Write

313 * Pull requests: Read & Write

314 5. Clique em "Create GitHub App"

315 6. Após a criação, clique em "Generate a private key" e salve o arquivo `.pem` baixado

316 7. Anote seu App ID na página de configurações da app

317 8. Instale a app em seu repositório:

318 * Na página de configurações da sua app, clique em "Install App" na barra lateral esquerda

319 * Selecione sua conta ou organização

320 * Escolha "Only select repositories" e selecione o repositório específico

321 * Clique em "Install"

322 9. Adicione a chave privada como um secret ao seu repositório:

323 * Vá para Settings → Secrets and variables → Actions do seu repositório

324 * Crie um novo secret nomeado `APP_PRIVATE_KEY` com o conteúdo do arquivo `.pem`

325 10. Adicione o App ID como um secret:

326 

327 * Crie um novo secret nomeado `APP_ID` com o ID da sua GitHub App

328 

329 <Note>

330 Esta app será usada com a action [actions/create-github-app-token](https://github.com/actions/create-github-app-token) para gerar tokens de autenticação em seus fluxos de trabalho.

331 </Note>

332 

333 **Alternativa para Claude API ou se você não quiser configurar sua própria Github app**: Use a app oficial do Anthropic:

334 

335 1. Instale de: [https://github.com/apps/claude](https://github.com/apps/claude)

336 2. Nenhuma configuração adicional necessária para autenticação

337 </Step>

338 

339 <Step title="Configure a autenticação do provedor de nuvem">

340 Escolha seu provedor de nuvem e configure autenticação segura:

341 

342 <AccordionGroup>

343 <Accordion title="Amazon Bedrock">

344 **Configure a AWS para permitir que GitHub Actions se autentique com segurança sem armazenar credenciais.**

345 

346 > **Nota de Segurança**: Use configurações específicas do repositório e conceda apenas as permissões mínimas necessárias.

347 

348 **Configuração Necessária**:

349 

350 1. **Habilite Amazon Bedrock**:

351 * Solicite acesso aos modelos Claude no Amazon Bedrock

352 * Para modelos entre regiões, solicite acesso em todas as regiões necessárias

353 

354 2. **Configure GitHub OIDC Identity Provider**:

355 * URL do Provedor: `https://token.actions.githubusercontent.com`

356 * Audience: `sts.amazonaws.com`

357 

358 3. **Crie Função IAM para GitHub Actions**:

359 * Tipo de entidade confiável: Web identity

360 * Provedor de identidade: `token.actions.githubusercontent.com`

361 * Permissões: política `AmazonBedrockFullAccess`

362 * Configure política de confiança para seu repositório específico

363 

364 **Valores Necessários**:

365 

366 Após a configuração, você precisará:

367 

368 * **AWS\_ROLE\_TO\_ASSUME**: O ARN da função IAM que você criou

369 

370 <Tip>

371 OIDC é mais seguro do que usar chaves de acesso AWS estáticas porque as credenciais são temporárias e rotacionadas automaticamente.

372 </Tip>

373 

374 Consulte a [documentação da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) para instruções detalhadas de configuração de OIDC.

375 </Accordion>

376 

377 <Accordion title="Google Vertex AI">

378 **Configure o Google Cloud para permitir que GitHub Actions se autentique com segurança sem armazenar credenciais.**

379 

380 > **Nota de Segurança**: Use configurações específicas do repositório e conceda apenas as permissões mínimas necessárias.

381 

382 **Configuração Necessária**:

383 

384 1. **Habilite APIs** em seu projeto Google Cloud:

385 * IAM Credentials API

386 * Security Token Service (STS) API

387 * Vertex AI API

388 

389 2. **Crie recursos de Workload Identity Federation**:

390 * Crie um Workload Identity Pool

391 * Adicione um provedor OIDC do GitHub com:

392 * Issuer: `https://token.actions.githubusercontent.com`

393 * Mapeamentos de atributos para repositório e proprietário

394 * **Recomendação de segurança**: Use condições de atributo específicas do repositório

395 

396 3. **Crie uma Conta de Serviço**:

397 * Conceda apenas a função `Vertex AI User`

398 * **Recomendação de segurança**: Crie uma conta de serviço dedicada por repositório

399 

400 4. **Configure vinculações IAM**:

401 * Permita que o Workload Identity Pool represente a conta de serviço

402 * **Recomendação de segurança**: Use conjuntos de principais específicos do repositório

403 

404 **Valores Necessários**:

405 

406 Após a configuração, você precisará:

407 

408 * **GCP\_WORKLOAD\_IDENTITY\_PROVIDER**: O nome completo do recurso do provedor

409 * **GCP\_SERVICE\_ACCOUNT**: O endereço de email da conta de serviço

410 

411 <Tip>

412 Workload Identity Federation elimina a necessidade de chaves de conta de serviço para download, melhorando a segurança.

413 </Tip>

414 

415 Para instruções de configuração detalhadas, consulte a [documentação de Workload Identity Federation do Google Cloud](https://cloud.google.com/iam/docs/workload-identity-federation).

416 </Accordion>

417 </AccordionGroup>

418 </Step>

419 

420 <Step title="Adicione Secrets Necessários">

421 Adicione os seguintes secrets ao seu repositório (Settings → Secrets and variables → Actions):

422 

423 #### Para Claude API (Direto):

424 

425 1. **Para Autenticação de API**:

426 * `ANTHROPIC_API_KEY`: Sua chave de API Claude de [console.anthropic.com](https://console.anthropic.com)

427 

428 2. **Para GitHub App (se usar sua própria app)**:

429 * `APP_ID`: O ID da sua GitHub App

430 * `APP_PRIVATE_KEY`: O conteúdo da chave privada (.pem)

431 

432 #### Para Google Cloud Vertex AI

433 

434 1. **Para Autenticação GCP**:

435 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

436 * `GCP_SERVICE_ACCOUNT`

437 

438 2. **Para GitHub App (se usar sua própria app)**:

439 * `APP_ID`: O ID da sua GitHub App

440 * `APP_PRIVATE_KEY`: O conteúdo da chave privada (.pem)

441 

442 #### Para Amazon Bedrock

443 

444 1. **Para Autenticação AWS**:

445 * `AWS_ROLE_TO_ASSUME`

446 

447 2. **Para GitHub App (se usar sua própria app)**:

448 * `APP_ID`: O ID da sua GitHub App

449 * `APP_PRIVATE_KEY`: O conteúdo da chave privada (.pem)

450 </Step>

451 

452 <Step title="Crie arquivos de fluxo de trabalho">

453 Crie arquivos de fluxo de trabalho do GitHub Actions que se integrem com seu provedor de nuvem. Os exemplos abaixo mostram configurações completas para Amazon Bedrock e Google Vertex AI:

454 

455 <AccordionGroup>

456 <Accordion title="Fluxo de trabalho Amazon Bedrock">

457 **Pré-requisitos:**

458 

459 * Acesso ao Amazon Bedrock habilitado com permissões de modelo Claude

460 * GitHub configurado como um provedor de identidade OIDC na AWS

461 * Função IAM com permissões do Bedrock que confia no GitHub Actions

462 

463 **Secrets necessários do GitHub:**

464 

465 | Nome do Secret | Descrição |

466 | -------------------- | -------------------------------------------------- |

467 | `AWS_ROLE_TO_ASSUME` | ARN da função IAM para acesso ao Bedrock |

468 | `APP_ID` | Seu ID de GitHub App (das configurações da app) |

469 | `APP_PRIVATE_KEY` | A chave privada que você gerou para sua GitHub App |

470 

471 ```yaml theme={null}

472 name: Claude PR Action

473 

474 permissions:

475 contents: write

476 pull-requests: write

477 issues: write

478 id-token: write

479 

480 on:

481 issue_comment:

482 types: [created]

483 pull_request_review_comment:

484 types: [created]

485 issues:

486 types: [opened, assigned]

487 

488 jobs:

489 claude-pr:

490 if: |

491 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

492 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

493 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

494 runs-on: ubuntu-latest

495 env:

496 AWS_REGION: us-west-2

497 steps:

498 - name: Checkout repository

499 uses: actions/checkout@v4

500 

501 - name: Generate GitHub App token

502 id: app-token

503 uses: actions/create-github-app-token@v2

504 with:

505 app-id: ${{ secrets.APP_ID }}

506 private-key: ${{ secrets.APP_PRIVATE_KEY }}

507 

508 - name: Configure AWS Credentials (OIDC)

509 uses: aws-actions/configure-aws-credentials@v4

510 with:

511 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}

512 aws-region: us-west-2

513 

514 - uses: anthropics/claude-code-action@v1

515 with:

516 github_token: ${{ steps.app-token.outputs.token }}

517 use_bedrock: "true"

518 claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'

519 ```

520 

521 <Tip>

522 O formato de ID de modelo para Bedrock inclui um prefixo de região (por exemplo, `us.anthropic.claude-sonnet-4-6`).

523 </Tip>

524 </Accordion>

525 

526 <Accordion title="Fluxo de trabalho Google Vertex AI">

527 **Pré-requisitos:**

528 

529 * Vertex AI API habilitada em seu projeto GCP

530 * Workload Identity Federation configurada para GitHub

531 * Conta de serviço com permissões do Vertex AI

532 

533 **Secrets necessários do GitHub:**

534 

535 | Nome do Secret | Descrição |

536 | -------------------------------- | ----------------------------------------------------- |

537 | `GCP_WORKLOAD_IDENTITY_PROVIDER` | Nome do recurso do provedor de identidade de workload |

538 | `GCP_SERVICE_ACCOUNT` | Email da conta de serviço com acesso ao Vertex AI |

539 | `APP_ID` | Seu ID de GitHub App (das configurações da app) |

540 | `APP_PRIVATE_KEY` | A chave privada que você gerou para sua GitHub App |

541 

542 ```yaml theme={null}

543 name: Claude PR Action

544 

545 permissions:

546 contents: write

547 pull-requests: write

548 issues: write

549 id-token: write

550 

551 on:

552 issue_comment:

553 types: [created]

554 pull_request_review_comment:

555 types: [created]

556 issues:

557 types: [opened, assigned]

558 

559 jobs:

560 claude-pr:

561 if: |

562 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

563 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

564 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

565 runs-on: ubuntu-latest

566 steps:

567 - name: Checkout repository

568 uses: actions/checkout@v4

569 

570 - name: Generate GitHub App token

571 id: app-token

572 uses: actions/create-github-app-token@v2

573 with:

574 app-id: ${{ secrets.APP_ID }}

575 private-key: ${{ secrets.APP_PRIVATE_KEY }}

576 

577 - name: Authenticate to Google Cloud

578 id: auth

579 uses: google-github-actions/auth@v2

580 with:

581 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}

582 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

583 

584 - uses: anthropics/claude-code-action@v1

585 with:

586 github_token: ${{ steps.app-token.outputs.token }}

587 trigger_phrase: "@claude"

588 use_vertex: "true"

589 claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'

590 env:

591 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}

592 CLOUD_ML_REGION: us-east5

593 VERTEX_REGION_CLAUDE_4_5_SONNET: us-east5

594 ```

595 

596 <Tip>

597 O ID do projeto é recuperado automaticamente da etapa de autenticação do Google Cloud, portanto você não precisa codificá-lo.

598 </Tip>

599 </Accordion>

600 </AccordionGroup>

601 </Step>

602</Steps>

603 

604## Troubleshooting

605 

606### Claude não responde aos comandos @claude

607 

608Verifique se a GitHub App está instalada corretamente, confirme que os fluxos de trabalho estão habilitados, garanta que a chave de API está definida nos secrets do repositório e confirme que o comentário contém `@claude` (não `/claude`).

609 

610### CI não está sendo executado nos commits de Claude

611 

612Garanta que você está usando a GitHub App ou app personalizada (não usuário Actions), verifique se os gatilhos do fluxo de trabalho incluem os eventos necessários e confirme que as permissões da app incluem gatilhos de CI.

613 

614### Erros de autenticação

615 

616Confirme que a chave de API é válida e tem permissões suficientes. Para Bedrock/Vertex, verifique a configuração de credenciais e garanta que os secrets estejam nomeados corretamente nos fluxos de trabalho.

617 

618## Configuração avançada

619 

620### Parâmetros da Action

621 

622A Claude Code Action v1 usa uma configuração simplificada:

623 

624| Parâmetro | Descrição | Necessário |

625| ------------------- | ------------------------------------------------------------------------ | ---------- |

626| `prompt` | Instruções para Claude (texto simples ou um nome de [skill](/pt/skills)) | Não\* |

627| `claude_args` | Argumentos de CLI passados para Claude Code | Não |

628| `anthropic_api_key` | Chave de API Claude | Sim\*\* |

629| `github_token` | Token do GitHub para acesso à API | Não |

630| `trigger_phrase` | Frase de gatilho personalizada (padrão: "@claude") | Não |

631| `use_bedrock` | Use Amazon Bedrock em vez da Claude API | Não |

632| `use_vertex` | Use Google Vertex AI em vez da Claude API | Não |

633 

634\*Prompt é opcional - quando omitido para comentários de issue/PR, Claude responde à frase de gatilho\

635\*\*Necessário para Claude API direto, não para Bedrock/Vertex

636 

637#### Passe argumentos de CLI

638 

639O parâmetro `claude_args` aceita qualquer argumento de CLI do Claude Code:

640 

641```yaml theme={null}

642claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"

643```

644 

645Argumentos comuns:

646 

647* `--max-turns`: Máximo de turnos de conversa (padrão: 10)

648* `--model`: Modelo a usar (por exemplo, `claude-sonnet-4-6`)

649* `--mcp-config`: Caminho para configuração MCP

650* `--allowedTools`: Lista separada por vírgula de ferramentas permitidas. O alias `--allowed-tools` também funciona.

651* `--debug`: Habilitar saída de debug

652 

653### Métodos de integração alternativos

654 

655Enquanto o comando `/install-github-app` é a abordagem recomendada, você também pode:

656 

657* **GitHub App Personalizada**: Para organizações que precisam de nomes de usuário personalizados ou fluxos de autenticação personalizados. Crie sua própria GitHub App com permissões necessárias (contents, issues, pull requests) e use a action actions/create-github-app-token para gerar tokens em seus fluxos de trabalho.

658* **GitHub Actions Manual**: Configuração direta de fluxo de trabalho para máxima flexibilidade

659* **Configuração MCP**: Carregamento dinâmico de servidores Model Context Protocol

660 

661Consulte a [documentação do Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs) para guias detalhados sobre autenticação, segurança e configuração avançada.

662 

663### Personalizando o comportamento de Claude

664 

665Você pode configurar o comportamento de Claude de duas maneiras:

666 

6671. **CLAUDE.md**: Defina padrões de codificação, critérios de revisão e regras específicas do projeto em um arquivo `CLAUDE.md` na raiz do seu repositório. Claude seguirá essas diretrizes ao criar PRs e responder a solicitações. Confira nossa [documentação de Memory](/pt/memory) para mais detalhes.

6682. **Prompts personalizados**: Use o parâmetro `prompt` no arquivo de fluxo de trabalho para fornecer instruções específicas do fluxo de trabalho. Isso permite que você personalize o comportamento de Claude para diferentes fluxos de trabalho ou tarefas.

669 

670Claude seguirá essas diretrizes ao criar PRs e responder a solicitações.

gitlab-ci-cd.md +466 −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 GitLab CI/CD

6 

7> Saiba como integrar Claude Code no seu fluxo de trabalho de desenvolvimento com GitLab CI/CD

8 

9<Info>

10 Claude Code para GitLab CI/CD está atualmente em beta. Os recursos e funcionalidades podem evoluir conforme refinamos a experiência.

11 

12 Esta integração é mantida pelo GitLab. Para obter suporte, consulte o seguinte [problema do GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/573776).

13</Info>

14 

15<Note>

16 Esta integração é construída sobre o [Claude Code CLI e Agent SDK](/pt/agent-sdk/overview), permitindo o uso programático do Claude em seus trabalhos de CI/CD e fluxos de trabalho de automação personalizados.

17</Note>

18 

19## Por que usar Claude Code com GitLab?

20 

21* **Criação instantânea de MR**: Descreva o que você precisa, e Claude propõe um MR completo com alterações e explicação

22* **Implementação automatizada**: Transforme problemas em código funcional com um único comando ou menção

23* **Ciente do projeto**: Claude segue suas diretrizes `CLAUDE.md` e padrões de código existentes

24* **Configuração simples**: Adicione um trabalho a `.gitlab-ci.yml` e uma variável de CI/CD mascarada

25* **Pronto para empresas**: Escolha Claude API, Amazon Bedrock ou Google Vertex AI para atender às necessidades de residência de dados e compras

26* **Seguro por padrão**: Executa em seus executores GitLab com sua proteção de branch e aprovações

27 

28## Como funciona

29 

30Claude Code usa GitLab CI/CD para executar tarefas de IA em trabalhos isolados e confirmar resultados de volta via MRs:

31 

321. **Orquestração orientada por eventos**: GitLab escuta seus gatilhos escolhidos (por exemplo, um comentário que menciona `@claude` em um problema, MR ou thread de revisão). O trabalho coleta contexto da thread e do repositório, constrói prompts a partir dessa entrada e executa Claude Code.

33 

342. **Abstração de provedor**: Use o provedor que se adequa ao seu ambiente:

35 * Claude API (SaaS)

36 * Amazon Bedrock (acesso baseado em IAM, opções entre regiões)

37 * Google Vertex AI (nativo do GCP, Workload Identity Federation)

38 

393. **Execução em sandbox**: Cada interação é executada em um contêiner com regras rigorosas de rede e sistema de arquivos. Claude Code impõe permissões com escopo de workspace para restringir gravações. Cada alteração flui através de um MR para que os revisores vejam o diff e as aprovações ainda se apliquem.

40 

41Escolha endpoints regionais para reduzir latência e atender aos requisitos de soberania de dados enquanto usa acordos de nuvem existentes.

42 

43## O que Claude pode fazer?

44 

45Claude Code permite fluxos de trabalho poderosos de CI/CD que transformam a forma como você trabalha com código:

46 

47* Criar e atualizar MRs a partir de descrições ou comentários de problemas

48* Analisar regressões de desempenho e propor otimizações

49* Implementar recursos diretamente em um branch, depois abrir um MR

50* Corrigir bugs e regressões identificados por testes ou comentários

51* Responder a comentários de acompanhamento para iterar sobre as alterações solicitadas

52 

53## Configuração

54 

55### Configuração rápida

56 

57A forma mais rápida de começar é adicionar um trabalho mínimo ao seu `.gitlab-ci.yml` e definir sua chave de API como uma variável mascarada.

58 

591. **Adicione uma variável de CI/CD mascarada**

60 * Vá para **Settings** → **CI/CD** → **Variables**

61 * Adicione `ANTHROPIC_API_KEY` (mascarada, protegida conforme necessário)

62 

632. **Adicione um trabalho Claude ao `.gitlab-ci.yml`**

64 

65```yaml theme={null}

66stages:

67 - ai

68 

69claude:

70 stage: ai

71 image: node:24-alpine3.21

72 # Ajuste as regras para se adequar a como você deseja disparar o trabalho:

73 # - execuções manuais

74 # - eventos de merge request

75 # - gatilhos web/API quando um comentário contém '@claude'

76 rules:

77 - if: '$CI_PIPELINE_SOURCE == "web"'

78 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

79 variables:

80 GIT_STRATEGY: fetch

81 before_script:

82 - apk update

83 - apk add --no-cache git curl bash

84 - curl -fsSL https://claude.ai/install.sh | bash

85 script:

86 # Opcional: inicie um servidor GitLab MCP se sua configuração fornecer um

87 - /bin/gitlab-mcp-server || true

88 # Use variáveis AI_FLOW_* ao invocar via gatilhos web/API com payloads de contexto

89 - echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"

90 - >

91 claude

92 -p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"

93 --permission-mode acceptEdits

94 --allowedTools "Bash Read Edit Write mcp__gitlab"

95 --debug

96```

97 

98Após adicionar o trabalho e sua variável `ANTHROPIC_API_KEY`, teste executando o trabalho manualmente em **CI/CD** → **Pipelines**, ou dispare-o a partir de um MR para deixar Claude propor atualizações em um branch e abrir um MR se necessário.

99 

100<Note>

101 Para executar no Amazon Bedrock ou Google Vertex AI em vez da Claude API, consulte a seção [Usando com Amazon Bedrock & Google Vertex AI](#usando-com-amazon-bedrock--google-vertex-ai) abaixo para configuração de autenticação e ambiente.

102</Note>

103 

104### Configuração manual (recomendada para produção)

105 

106Se você preferir uma configuração mais controlada ou precisar de provedores corporativos:

107 

1081. **Configure o acesso do provedor**:

109 * **Claude API**: Crie e armazene `ANTHROPIC_API_KEY` como uma variável de CI/CD mascarada

110 * **Amazon Bedrock**: **Configure GitLab** → **AWS OIDC** e crie uma função IAM para Bedrock

111 * **Google Vertex AI**: **Configure Workload Identity Federation para GitLab** → **GCP**

112 

1132. **Adicione credenciais de projeto para operações da API GitLab**:

114 * Use `CI_JOB_TOKEN` por padrão, ou crie um Project Access Token com escopo `api`

115 * Armazene como `GITLAB_ACCESS_TOKEN` (mascarado) se usar um PAT

116 

1173. **Adicione o trabalho Claude ao `.gitlab-ci.yml`** (veja exemplos abaixo)

118 

1194. **(Opcional) Ative gatilhos orientados por menção**:

120 * Adicione um webhook de projeto para "Comments (notes)" ao seu ouvinte de eventos (se você usar um)

121 * Faça o ouvinte chamar a API de gatilho de pipeline com variáveis como `AI_FLOW_INPUT` e `AI_FLOW_CONTEXT` quando um comentário contiver `@claude`

122 

123## Exemplos de casos de uso

124 

125### Transforme problemas em MRs

126 

127Em um comentário de problema:

128 

129```text theme={null}

130@claude implement this feature based on the issue description

131```

132 

133Claude analisa o problema e a base de código, escreve alterações em um branch e abre um MR para revisão.

134 

135### Obtenha ajuda de implementação

136 

137Em uma discussão de MR:

138 

139```text theme={null}

140@claude suggest a concrete approach to cache the results of this API call

141```

142 

143Claude propõe alterações, adiciona código com cache apropriado e atualiza o MR.

144 

145### Corrija bugs rapidamente

146 

147Em um comentário de problema ou MR:

148 

149```text theme={null}

150@claude fix the TypeError in the user dashboard component

151```

152 

153Claude localiza o bug, implementa uma correção e atualiza o branch ou abre um novo MR.

154 

155## Usando com Amazon Bedrock & Google Vertex AI

156 

157Para ambientes corporativos, você pode executar Claude Code inteiramente em sua infraestrutura de nuvem com a mesma experiência do desenvolvedor.

158 

159<Tabs>

160 <Tab title="Amazon Bedrock">

161 ### Pré-requisitos

162 

163 Antes de configurar Claude Code com Amazon Bedrock, você precisa de:

164 

165 1. Uma conta AWS com acesso ao Amazon Bedrock para os modelos Claude desejados

166 2. GitLab configurado como um provedor de identidade OIDC no AWS IAM

167 3. Uma função IAM com permissões de Bedrock e uma política de confiança restrita ao seu projeto/refs do GitLab

168 4. Variáveis de CI/CD do GitLab para assunção de função:

169 * `AWS_ROLE_TO_ASSUME` (ARN da função)

170 * `AWS_REGION` (região do Bedrock)

171 

172 ### Instruções de configuração

173 

174 Configure AWS para permitir que trabalhos de CI do GitLab assumam uma função IAM via OIDC (sem chaves estáticas).

175 

176 **Configuração necessária:**

177 

178 1. Ative Amazon Bedrock e solicite acesso aos seus modelos Claude alvo

179 2. Crie um provedor OIDC do IAM para GitLab se ainda não estiver presente

180 3. Crie uma função IAM confiável pelo provedor OIDC do GitLab, restrita ao seu projeto e refs protegidos

181 4. Anexe permissões de privilégio mínimo para APIs de invocação do Bedrock

182 

183 **Valores necessários para armazenar em variáveis de CI/CD:**

184 

185 * `AWS_ROLE_TO_ASSUME`

186 * `AWS_REGION`

187 

188 Adicione variáveis em Settings → CI/CD → Variables:

189 

190 ```yaml theme={null}

191 # Para Amazon Bedrock:

192 - AWS_ROLE_TO_ASSUME

193 - AWS_REGION

194 ```

195 

196 Use o exemplo de trabalho do Amazon Bedrock acima para trocar o token de trabalho do GitLab por credenciais AWS temporárias em tempo de execução.

197 </Tab>

198 

199 <Tab title="Google Vertex AI">

200 ### Pré-requisitos

201 

202 Antes de configurar Claude Code com Google Vertex AI, você precisa de:

203 

204 1. Um projeto Google Cloud com:

205 * Vertex AI API habilitada

206 * Workload Identity Federation configurada para confiar no OIDC do GitLab

207 2. Uma conta de serviço dedicada com apenas as funções Vertex AI necessárias

208 3. Variáveis de CI/CD do GitLab para WIF:

209 * `GCP_WORKLOAD_IDENTITY_PROVIDER` (nome completo do recurso)

210 * `GCP_SERVICE_ACCOUNT` (email da conta de serviço)

211 

212 ### Instruções de configuração

213 

214 Configure Google Cloud para permitir que trabalhos de CI do GitLab representem uma conta de serviço via Workload Identity Federation.

215 

216 **Configuração necessária:**

217 

218 1. Ative IAM Credentials API, STS API e Vertex AI API

219 2. Crie um Workload Identity Pool e provedor para OIDC do GitLab

220 3. Crie uma conta de serviço dedicada com funções Vertex AI

221 4. Conceda ao principal WIF permissão para representar a conta de serviço

222 

223 **Valores necessários para armazenar em variáveis de CI/CD:**

224 

225 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

226 * `GCP_SERVICE_ACCOUNT`

227 

228 Adicione variáveis em Settings → CI/CD → Variables:

229 

230 ```yaml theme={null}

231 # Para Google Vertex AI:

232 - GCP_WORKLOAD_IDENTITY_PROVIDER

233 - GCP_SERVICE_ACCOUNT

234 - CLOUD_ML_REGION (por exemplo, us-east5)

235 ```

236 

237 Use o exemplo de trabalho do Google Vertex AI acima para autenticar sem armazenar chaves.

238 </Tab>

239</Tabs>

240 

241## Exemplos de configuração

242 

243Abaixo estão trechos prontos para usar que você pode adaptar ao seu pipeline.

244 

245### .gitlab-ci.yml básico (Claude API)

246 

247```yaml theme={null}

248stages:

249 - ai

250 

251claude:

252 stage: ai

253 image: node:24-alpine3.21

254 rules:

255 - if: '$CI_PIPELINE_SOURCE == "web"'

256 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

257 variables:

258 GIT_STRATEGY: fetch

259 before_script:

260 - apk update

261 - apk add --no-cache git curl bash

262 - curl -fsSL https://claude.ai/install.sh | bash

263 script:

264 - /bin/gitlab-mcp-server || true

265 - >

266 claude

267 -p "${AI_FLOW_INPUT:-'Summarize recent changes and suggest improvements'}"

268 --permission-mode acceptEdits

269 --allowedTools "Bash Read Edit Write mcp__gitlab"

270 --debug

271 # Claude Code usará ANTHROPIC_API_KEY das variáveis de CI/CD

272```

273 

274### Exemplo de trabalho Amazon Bedrock (OIDC)

275 

276**Pré-requisitos:**

277 

278* Amazon Bedrock habilitado com acesso ao seu modelo Claude escolhido

279* OIDC do GitLab configurado no AWS com uma função que confia no seu projeto e refs do GitLab

280* Função IAM com permissões de Bedrock (privilégio mínimo recomendado)

281 

282**Variáveis de CI/CD necessárias:**

283 

284* `AWS_ROLE_TO_ASSUME`: ARN da função IAM para acesso ao Bedrock

285* `AWS_REGION`: Região do Bedrock (por exemplo, `us-west-2`)

286 

287```yaml theme={null}

288claude-bedrock:

289 stage: ai

290 image: node:24-alpine3.21

291 rules:

292 - if: '$CI_PIPELINE_SOURCE == "web"'

293 before_script:

294 - apk add --no-cache bash curl jq git python3 py3-pip

295 - pip install --no-cache-dir awscli

296 - curl -fsSL https://claude.ai/install.sh | bash

297 # Troque o token OIDC do GitLab por credenciais AWS

298 - export AWS_WEB_IDENTITY_TOKEN_FILE="${CI_JOB_JWT_FILE:-/tmp/oidc_token}"

299 - if [ -n "${CI_JOB_JWT_V2}" ]; then printf "%s" "$CI_JOB_JWT_V2" > "$AWS_WEB_IDENTITY_TOKEN_FILE"; fi

300 - >

301 aws sts assume-role-with-web-identity

302 --role-arn "$AWS_ROLE_TO_ASSUME"

303 --role-session-name "gitlab-claude-$(date +%s)"

304 --web-identity-token "file://$AWS_WEB_IDENTITY_TOKEN_FILE"

305 --duration-seconds 3600 > /tmp/aws_creds.json

306 - export AWS_ACCESS_KEY_ID="$(jq -r .Credentials.AccessKeyId /tmp/aws_creds.json)"

307 - export AWS_SECRET_ACCESS_KEY="$(jq -r .Credentials.SecretAccessKey /tmp/aws_creds.json)"

308 - export AWS_SESSION_TOKEN="$(jq -r .Credentials.SessionToken /tmp/aws_creds.json)"

309 script:

310 - /bin/gitlab-mcp-server || true

311 - >

312 claude

313 -p "${AI_FLOW_INPUT:-'Implement the requested changes and open an MR'}"

314 --permission-mode acceptEdits

315 --allowedTools "Bash Read Edit Write mcp__gitlab"

316 --debug

317 variables:

318 AWS_REGION: "us-west-2"

319```

320 

321<Note>

322 IDs de modelo para Bedrock incluem prefixos específicos de região (por exemplo, `us.anthropic.claude-sonnet-4-6`). Passe o modelo desejado via sua configuração de trabalho ou prompt se seu fluxo de trabalho suportar.

323</Note>

324 

325### Exemplo de trabalho Google Vertex AI (Workload Identity Federation)

326 

327**Pré-requisitos:**

328 

329* Vertex AI API habilitada em seu projeto GCP

330* Workload Identity Federation configurada para confiar no OIDC do GitLab

331* Uma conta de serviço com permissões Vertex AI

332 

333**Variáveis de CI/CD necessárias:**

334 

335* `GCP_WORKLOAD_IDENTITY_PROVIDER`: Nome completo do recurso do provedor

336* `GCP_SERVICE_ACCOUNT`: Email da conta de serviço

337* `CLOUD_ML_REGION`: Região do Vertex (por exemplo, `us-east5`)

338 

339```yaml theme={null}

340claude-vertex:

341 stage: ai

342 image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim

343 rules:

344 - if: '$CI_PIPELINE_SOURCE == "web"'

345 before_script:

346 - apt-get update && apt-get install -y git && apt-get clean

347 - curl -fsSL https://claude.ai/install.sh | bash

348 # Autentique no Google Cloud via WIF (sem chaves baixadas)

349 - >

350 gcloud auth login --cred-file=<(cat <<EOF

351 {

352 "type": "external_account",

353 "audience": "${GCP_WORKLOAD_IDENTITY_PROVIDER}",

354 "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",

355 "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken",

356 "token_url": "https://sts.googleapis.com/v1/token"

357 }

358 EOF

359 )

360 - gcloud config set project "$(gcloud projects list --format='value(projectId)' --filter="name:${CI_PROJECT_NAMESPACE}" | head -n1)" || true

361 script:

362 - /bin/gitlab-mcp-server || true

363 - >

364 CLOUD_ML_REGION="${CLOUD_ML_REGION:-us-east5}"

365 claude

366 -p "${AI_FLOW_INPUT:-'Review and update code as requested'}"

367 --permission-mode acceptEdits

368 --allowedTools "Bash Read Edit Write mcp__gitlab"

369 --debug

370 variables:

371 CLOUD_ML_REGION: "us-east5"

372```

373 

374<Note>

375 Com Workload Identity Federation, você não precisa armazenar chaves de conta de serviço. Use condições de confiança específicas do repositório e contas de serviço com privilégio mínimo.

376</Note>

377 

378## Melhores práticas

379 

380### Configuração CLAUDE.md

381 

382Crie um arquivo `CLAUDE.md` na raiz do repositório para definir padrões de codificação, critérios de revisão e regras específicas do projeto. Claude lê este arquivo durante as execuções e segue suas convenções ao propor alterações.

383 

384### Considerações de segurança

385 

386**Nunca confirme chaves de API ou credenciais de nuvem em seu repositório**. Sempre use variáveis de CI/CD do GitLab:

387 

388* Adicione `ANTHROPIC_API_KEY` como uma variável mascarada (e proteja-a se necessário)

389* Use OIDC específico do provedor onde possível (sem chaves de longa duração)

390* Limite permissões de trabalho e saída de rede

391* Revise os MRs do Claude como qualquer outro colaborador

392 

393### Otimizando desempenho

394 

395* Mantenha `CLAUDE.md` focado e conciso

396* Forneça descrições claras de problema/MR para reduzir iterações

397* Configure timeouts de trabalho sensatos para evitar execuções descontroladas

398* Cache npm e instalações de pacotes em executores onde possível

399 

400### Custos de CI

401 

402Ao usar Claude Code com GitLab CI/CD, esteja ciente dos custos associados:

403 

404* **Tempo do GitLab Runner**:

405 * Claude é executado em seus executores GitLab e consome minutos de computação

406 * Consulte a cobrança de executor do seu plano GitLab para detalhes

407 

408* **Custos de API**:

409 * Cada interação do Claude consome tokens com base no tamanho do prompt e resposta

410 * O uso de tokens varia pela complexidade da tarefa e tamanho da base de código

411 * Consulte [Preços da Anthropic](https://platform.claude.com/docs/pt/about-claude/pricing) para detalhes

412 

413* **Dicas de otimização de custos**:

414 * Use comandos `@claude` específicos para reduzir turnos desnecessários

415 * Defina valores apropriados de `max_turns` e timeout de trabalho

416 * Limite concorrência para controlar execuções paralelas

417 

418## Segurança e governança

419 

420* Cada trabalho é executado em um contêiner isolado com acesso de rede restrito

421* As alterações do Claude fluem através de MRs para que os revisores vejam cada diff

422* Regras de proteção de branch e aprovação se aplicam ao código gerado por IA

423* Claude Code usa permissões com escopo de workspace para restringir gravações

424* Os custos permanecem sob seu controle porque você traz suas próprias credenciais de provedor

425 

426## Solução de problemas

427 

428### Claude não responde aos comandos @claude

429 

430* Verifique se seu pipeline está sendo disparado (manualmente, evento de MR ou via ouvinte de nota/webhook)

431* Certifique-se de que as variáveis de CI/CD (`ANTHROPIC_API_KEY` ou configurações de provedor de nuvem) estão presentes e desmascaradas

432* Verifique se o comentário contém `@claude` (não `/claude`) e se seu gatilho de menção está configurado

433 

434### O trabalho não consegue escrever comentários ou abrir MRs

435 

436* Certifique-se de que `CI_JOB_TOKEN` tem permissões suficientes para o projeto, ou use um Project Access Token com escopo `api`

437* Verifique se a ferramenta `mcp__gitlab` está habilitada em `--allowedTools`

438* Confirme se o trabalho é executado no contexto do MR ou tem contexto suficiente via variáveis `AI_FLOW_*`

439 

440### Erros de autenticação

441 

442* **Para Claude API**: Confirme que `ANTHROPIC_API_KEY` é válida e não expirou

443* **Para Bedrock/Vertex**: Verifique configuração de OIDC/WIF, representação de função e nomes de segredos; confirme disponibilidade de região e modelo

444 

445## Configuração avançada

446 

447### Parâmetros e variáveis comuns

448 

449Claude Code suporta estas entradas comumente usadas:

450 

451* `prompt` / `prompt_file`: Forneça instruções inline (`-p`) ou via arquivo

452* `max_turns`: Limite o número de iterações de ida e volta

453* `timeout_minutes`: Limite o tempo total de execução

454* `ANTHROPIC_API_KEY`: Necessário para Claude API (não usado para Bedrock/Vertex)

455* Ambiente específico do provedor: `AWS_REGION`, variáveis de projeto/região para Vertex

456 

457<Note>

458 Sinalizadores e parâmetros exatos podem variar por versão de `@anthropic-ai/claude-code`. Execute `claude --help` em seu trabalho para ver as opções suportadas.

459</Note>

460 

461### Personalizando o comportamento do Claude

462 

463Você pode guiar Claude de duas formas principais:

464 

4651. **CLAUDE.md**: Defina padrões de codificação, requisitos de segurança e convenções de projeto. Claude lê isso durante as execuções e segue suas regras.

4662. **Prompts personalizados**: Passe instruções específicas da tarefa via `prompt`/`prompt_file` no trabalho. Use prompts diferentes para trabalhos diferentes (por exemplo, revisão, implementação, refatoração).

glossary.md +307 −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# Glossário

6 

7> Definições da terminologia do Claude Code. Aprenda o que significam agentic loop, compaction, CLAUDE.md, hooks, subagents, MCP e outros conceitos principais.

8 

9Este glossário define a terminologia do Claude Code. Cada entrada vincula à página onde o conceito é abordado em profundidade. Para conceitos em nível de modelo como tokens, temperature e RAG, consulte o [glossário da plataforma](https://platform.claude.com/docs/pt/about-claude/glossary).

10 

11## A

12 

13### Agent teams

14 

15Múltiplas sessões independentes do Claude Code coordenadas por um líder de equipe, com uma lista de tarefas compartilhada e mensagens ponto a ponto. Diferentemente de [subagents](#subagent), que executam dentro de uma única sessão e relatam apenas ao pai, os membros da equipe têm cada um sua própria janela de contexto e você pode interagir com qualquer um deles diretamente. Agent teams são experimentais e devem ser habilitados definindo `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

16 

17Saiba mais: [Run agent teams](/pt/agent-teams)

18 

19### Agentic coding

20 

21Um fluxo de trabalho onde a IA pode ler arquivos, executar comandos e fazer alterações autonomamente enquanto você observa, redireciona ou se afasta, em contraste com assistentes baseados em chat que apenas respondem com texto que você deve aplicar você mesmo. Claude Code é agentic porque possui [tools](#tool) que permitem agir, não apenas aconselhar.

22 

23Saiba mais: [How Claude Code works](/pt/how-claude-code-works)

24 

25### Agentic harness

26 

27As tools, gerenciamento de contexto e ambiente de execução que transformam um modelo de linguagem em um agente de codificação capaz. Claude Code é o harness; Claude é o modelo dentro dele. O harness fornece acesso a arquivos, execução de shell, gating de permissões, carregamento de memória e o loop que encadeia ações juntas.

28 

29Saiba mais: [How Claude Code works](/pt/how-claude-code-works)

30 

31### Agentic loop

32 

33O ciclo que Claude percorre para cada tarefa: reunir contexto, tomar ação, verificar resultados e repetir até terminar. Cada uso de tool retorna informações que informam o próximo passo. Você pode interromper o loop em qualquer ponto para redirecionar. A maioria dos pontos de extensão, incluindo [hooks](#hook), [skills](#skill) e [MCP](#mcp-model-context-protocol), se conectam a fases específicas deste loop.

34 

35Saiba mais: [How Claude Code works](/pt/how-claude-code-works#the-agentic-loop)

36 

37### Auto memory

38 

39Notas que Claude escreve para si mesmo com base em suas correções e preferências, armazenadas por repositório git em `~/.claude/projects/`. Todos os worktrees do mesmo repositório compartilham um diretório de auto memory. As primeiras 200 linhas ou 25 KB do índice `MEMORY.md` carregam no início de cada sessão. Auto memory é a contrapartida escrita por Claude para [CLAUDE.md](#claude-md), que você escreve.

40 

41Saiba mais: [Auto memory](/pt/memory#auto-memory)

42 

43### Auto mode

44 

45Um [permission mode](#permission-mode) onde um modelo classificador separado revisa cada ação em segundo plano em vez de mostrar prompts de aprovação. O classificador bloqueia escalação de escopo, infraestrutura não confiável e [prompt injection](#prompt-injection). Ele nunca vê resultados de tool, então instruções injetadas não podem influenciar suas decisões. Auto mode é uma visualização de pesquisa disponível em planos Max, Team, Enterprise e API.

46 

47Saiba mais: [Eliminate prompts with auto mode](/pt/permission-modes#eliminate-prompts-with-auto-mode)

48 

49## B

50 

51### Bare mode

52 

53Uma flag de inicialização, `--bare`, que pula a descoberta automática de hooks, skills, plugins, servidores MCP, auto memory e CLAUDE.md. Apenas flags que você passa explicitamente têm efeito. Recomendado para CI e chamadas com script onde você precisa de comportamento idêntico entre máquinas independentemente da configuração local.

54 

55Saiba mais: [Start faster with bare mode](/pt/headless#start-faster-with-bare-mode)

56 

57### Bundled skills

58 

59Playbooks baseados em prompt incluídos com Claude Code, como `/batch`, `/simplify`, `/debug` e `/loop`. Diferentemente de comandos built-in, que executam lógica fixa, bundled skills dão a Claude um prompt detalhado e deixam que ele orquestre o trabalho, então podem gerar agentes, ler arquivos e se adaptar à sua base de código.

60 

61Saiba mais: [Bundled skills](/pt/skills#bundled-skills)

62 

63## C

64 

65### Channel

66 

67Um [MCP server](#mcp-model-context-protocol) que envia eventos para sua sessão em execução para que Claude possa reagir a coisas que acontecem enquanto você está longe do terminal. Channels podem ser bidirecionais: Claude lê um evento de entrada e responde de volta através do mesmo channel. Telegram, Discord e iMessage estão incluídos na visualização de pesquisa.

68 

69Saiba mais: [Channels](/pt/channels)

70 

71### Checkpoint

72 

73Um snapshot automático do seu código capturado antes de cada edição que Claude faz. Pressione `Esc` duas vezes ou execute `/rewind` para restaurar código, conversa ou ambos para um ponto anterior. Checkpoints são locais à sessão, separados do git, e não rastreiam alterações feitas através da tool Bash.

74 

75Saiba mais: [Checkpointing](/pt/checkpointing)

76 

77### `.claude` directory

78 

79O diretório onde Claude Code lê configuração com escopo de projeto: settings, hooks, skills, subagents, rules e auto memory. Um projeto tem `.claude/` em sua raiz; seus padrões em nível de usuário estão em `~/.claude/`.

80 

81Saiba mais: [The `.claude` directory](/pt/claude-directory)

82 

83### CLAUDE.md

84 

85Um arquivo markdown de instruções persistentes que você escreve para Claude, carregado no início de cada sessão como uma mensagem de usuário após o prompt do sistema. Coloque convenções de projeto, notas de arquitetura e regras "sempre faça X" aqui. CLAUDE.md sobrevive a [compaction](#compaction) e é relido fresco do disco depois.

86 

87Você pode colocar CLAUDE.md no escopo do projeto em `./CLAUDE.md` ou `./.claude/CLAUDE.md`, no escopo do usuário em `~/.claude/CLAUDE.md`, ou como [managed policy](#managed-settings) para sua organização. Locais mais específicos têm precedência.

88 

89Saiba mais: [CLAUDE.md files](/pt/memory#claude-md-files)

90 

91### Command

92 

93Uma instrução reutilizável que você invoca digitando `/name` no prompt. Comandos built-in como `/clear`, `/model` e `/compact` controlam a sessão. Você pode definir seus próprios comandos como arquivos em `.claude/commands/`, ou instalá-los de um [plugin](#plugin). [Skills](#skill) são a forma recomendada de empacotar comandos multi-etapa.

94 

95Saiba mais: [Commands](/pt/commands) · [Skills](/pt/skills)

96 

97### Compaction

98 

99Sumarização automática de sua conversa quando a [context window](#context-window) se aproxima de seu limite. Saídas de tool mais antigas são limpas primeiro, depois a conversa é sumarizada. CLAUDE.md na raiz do projeto e auto memory sobrevivem a compaction e recarregam do disco; instruções dadas apenas em conversa podem ser perdidas. Execute `/compact` para disparar manualmente, opcionalmente com um foco como `/compact focus on the API changes`.

100 

101Saiba mais: [What survives compaction](/pt/context-window#what-survives-compaction) · [When context fills up](/pt/how-claude-code-works#when-context-fills-up)

102 

103### Context window

104 

105A memória de trabalho para uma sessão, contendo histórico de conversa, conteúdos de arquivo, saídas de comando, CLAUDE.md, auto memory, skills carregadas e instruções do sistema. Conforme você trabalha, o contexto se enche até que [compaction](#compaction) o resuma. Execute `/context` para ver o que está usando espaço. Para o conceito de modelo subjacente, consulte o [glossário da plataforma](https://platform.claude.com/docs/pt/about-claude/glossary#context-window).

106 

107Saiba mais: [Explore the context window](/pt/context-window)

108 

109## D

110 

111### Dispatch

112 

113Um roteador de tarefas iniciado por telefone que gera uma sessão do Claude Code no aplicativo Desktop quando você envia uma tarefa de codificação do aplicativo móvel Claude. Seu prompt é roteado para a ferramenta certa automaticamente. Disponível em planos Pro e Max.

114 

115Saiba mais: [Sessions from Dispatch](/pt/desktop#sessions-from-dispatch)

116 

117## E

118 

119### Effort level

120 

121Uma configuração que controla quanto do orçamento de pensamento de raciocínio adaptativo Claude usa em cada turno. Esforço mais alto significa mais tokens de pensamento e raciocínio mais profundo; esforço mais baixo é mais rápido e barato. Effort é suportado em Opus 4.7, Opus 4.6 e Sonnet 4.6.

122 

123Saiba mais: [Adjust effort level](/pt/model-config#adjust-effort-level)

124 

125### Extended thinking

126 

127Raciocínio passo a passo visível que o modelo realiza antes de responder. Você pode limitar tokens de pensamento com `MAX_THINKING_TOKENS` ou ajustar o [effort level](#effort-level). Thinking aparece em texto itálico cinza no terminal.

128 

129Saiba mais: [Use extended thinking](/pt/common-workflows#use-extended-thinking-thinking-mode)

130 

131## H

132 

133### Hook

134 

135Um manipulador definido pelo usuário que executa automaticamente em um ponto específico do ciclo de vida do Claude Code, como antes de uma tool ser executada, após uma edição de arquivo ou no início da sessão. Manipuladores podem ser um comando shell, endpoint HTTP, tool MCP, prompt LLM ou subagent. Hooks são determinísticos: eles disparam em pontos de ciclo de vida fixos em vez de à discrição do modelo.

136 

137Uma configuração de hook tem três níveis:

138 

139* **Hook event**: o ponto do ciclo de vida

140* **Matcher**: filtra quais eventos o disparam

141* **Hook handler**: o que executa

142 

143Saiba mais: [Get started with hooks](/pt/hooks-guide) · [Hooks reference](/pt/hooks)

144 

145## M

146 

147### Managed settings

148 

149Um arquivo de settings imposto em toda a organização por TI ou DevOps, colocado em um caminho em nível de SO fora de `~/.claude`. Os usuários não podem substituir ou excluir managed settings. Use isso para políticas de segurança, requisitos de conformidade ou ferramentas padronizadas em uma frota.

150 

151Saiba mais: [Server-managed settings](/pt/server-managed-settings)

152 

153### MCP (Model Context Protocol)

154 

155Um padrão aberto para conectar tools de IA a fontes de dados externas e serviços. Servidores MCP dão a Claude novas tools para Slack, Jira, bancos de dados, navegadores e centenas de outras integrações. Você conecta servidores via `/mcp` ou adicionando-os a `.mcp.json`. Para o protocolo em si, consulte o [glossário da plataforma](https://platform.claude.com/docs/pt/about-claude/glossary#mcp-model-context-protocol).

156 

157Saiba mais: [Model Context Protocol](/pt/mcp)

158 

159### MCP Tool Search

160 

161Um mecanismo de economia de contexto que adia schemas de tool MCP até serem necessários. Apenas nomes de tool carregam na inicialização; Claude busca o schema completo sob demanda quando decide usar uma tool específica. Isso evita que servidores MCP ociosos consumam muito contexto.

162 

163Saiba mais: [Scale with MCP Tool Search](/pt/mcp#scale-with-mcp-tool-search)

164 

165## N

166 

167### Non-interactive mode

168 

169Um modo que executa um único prompt e sai sem uma sessão conversacional, invocado com `-p` ou `--print`. Usado para CI, scripts e piping. O [Agent SDK](/pt/agent-sdk/overview) é o equivalente em Python e TypeScript. Anteriormente chamado de headless mode.

170 

171Saiba mais: [Run Claude Code programmatically](/pt/headless)

172 

173## O

174 

175### Output style

176 

177Uma configuração que modifica o prompt do sistema de Claude para alterar comportamento de resposta, tom ou formato. Output styles desligam as partes específicas de engenharia de software do prompt do sistema padrão, diferentemente de [CLAUDE.md](#claude-md) que é entregue como uma mensagem de usuário seguindo o prompt do sistema. Estilos built-in incluem Default, Explanatory e Learning.

178 

179Saiba mais: [Output styles](/pt/output-styles)

180 

181## P

182 

183### Permission mode

184 

185O comportamento de aprovação de linha de base para a sessão. Cicle com `Shift+Tab` na CLI ou use o seletor de modo em VS Code, Desktop e claude.ai. Os modos disponíveis são `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` e `bypassPermissions`.

186 

187Saiba mais: [Choose a permission mode](/pt/permission-modes)

188 

189### Permission rule

190 

191Uma entrada de settings que permite, pergunta sobre ou nega uma invocação de tool com base no nome da tool e padrão de argumento. Regras são avaliadas deny→ask→allow, primeira correspondência vence. Permission rules são controles de granulação fina em camadas sobre o [permission mode](#permission-mode) mais amplo.

192 

193Saiba mais: [Configure permissions](/pt/permissions)

194 

195### Plan mode

196 

197Um [permission mode](#permission-mode) onde Claude pesquisa e propõe alterações sem editar seus arquivos de origem. Pode ler, pesquisar e executar comandos de exploração, depois apresenta um plano para aprovação antes de tocar em qualquer coisa. Entre em plan mode com `/plan` ou pressionando `Shift+Tab`.

198 

199Saiba mais: [Analyze before you edit with plan mode](/pt/permission-modes#analyze-before-you-edit-with-plan-mode)

200 

201### Plugin

202 

203Um pacote de skills, hooks, subagents e servidores MCP empacotados como uma unidade instalável única. Plugin skills são nomeados como `plugin-name:skill-name` para que múltiplos plugins coexistam. Distribua plugins entre equipes via um [marketplace](/pt/plugin-marketplaces).

204 

205Saiba mais: [Plugins](/pt/plugins)

206 

207### Project trust

208 

209Um diálogo único aceitando um diretório antes que Claude Code carregue sua configuração. Trust gates auto-instalação de plugins de marketplace e execução de hooks definidos pelo projeto. Confiar em um diretório significa que seus arquivos `.claude/settings.json`, `.mcp.json` e outros arquivos de config têm efeito.

210 

211Saiba mais: [The `.claude` directory](/pt/claude-directory)

212 

213### Prompt injection

214 

215Instruções hostis incorporadas em um arquivo, página web ou resultado de tool que tentam redirecionar Claude para ações que você nunca pediu. As defesas do Claude Code incluem o sistema de permissões, listas de bloqueio de comandos e verificação de confiança. [Auto mode](#auto-mode) adiciona uma sonda do lado do servidor que escaneia resultados de tool para conteúdo suspeito e um classificador que nunca vê resultados de tool, então texto injetado não pode influenciar suas decisões de aprovação.

216 

217Saiba mais: [Protect against prompt injection](/pt/security#protect-against-prompt-injection)

218 

219## R

220 

221### Remote Control

222 

223Uma forma de continuar uma sessão local do Claude Code do seu telefone ou navegador via claude.ai. Seu código fica em sua máquina; apenas a UI é remota. Diferente de Claude Code na web, que executa em um sandbox na nuvem.

224 

225Saiba mais: [Remote Control](/pt/remote-control)

226 

227### Rules

228 

229Arquivos de instrução modular em `.claude/rules/` que carregam junto com CLAUDE.md. Uma rule pode ser com escopo de caminho com frontmatter YAML `paths:` para que carregue apenas quando Claude lê um arquivo correspondente, mantendo o contexto enxuto até que seja relevante.

230 

231Saiba mais: [Organize rules with `.claude/rules/`](/pt/memory#organize-rules-with-claude/rules/)

232 

233## S

234 

235### Sandboxing

236 

237Isolamento de filesystem e rede em nível de SO para a tool Bash. Comandos executam dentro de um limite que você define antecipadamente, para que Claude possa trabalhar livremente dentro dele sem prompts de aprovação por comando. Sandboxing é uma camada separada de [permission rules](#permission-rule).

238 

239Saiba mais: [Sandboxing](/pt/sandboxing)

240 

241### Session

242 

243Uma conversa vinculada ao seu diretório atual, com sua própria [context window](#context-window) independente. Sessões podem ser retomadas com `claude -c`, bifurcadas com `--fork-session` para preservar histórico sob um novo ID de sessão, ou executadas em paralelo entre terminais. Executar `/clear` inicia uma nova sessão; a anterior fica armazenada e está disponível via `/resume`. A transcrição de cada sessão é armazenada em `~/.claude/projects/`.

244 

245Saiba mais: [Work with sessions](/pt/how-claude-code-works#work-with-sessions)

246 

247### Settings layers

248 

249A hierarquia que Claude Code lê configuração, em ordem de precedência de mais alta para mais baixa: [managed policy](#managed-settings), argumentos de linha de comando, settings locais em `.claude/settings.local.json`, settings de projeto em `.claude/settings.json`, depois settings de usuário em `~/.claude/settings.json`. Arrays se mesclam entre camadas; escalares em uma camada mais alta substituem as mais baixas.

250 

251Saiba mais: [Settings files](/pt/settings#settings-files)

252 

253### Skill

254 

255Um arquivo `SKILL.md` contendo instruções, conhecimento ou um fluxo de trabalho que Claude adiciona ao seu toolkit. Claude carrega uma skill automaticamente quando relevante, ou você a invoca diretamente com `/skill-name`. Skills seguem o padrão aberto Agent Skills; Claude Code o estende com controle de invocação e execução de subagent.

256 

257Skills são o sucessor recomendado para comandos customizados. Um arquivo em `.claude/commands/deploy.md` e um em `.claude/skills/deploy/SKILL.md` ambos criam `/deploy` e funcionam da mesma forma; arquivos de comando existentes continuam funcionando.

258 

259Saiba mais: [Extend Claude with skills](/pt/skills)

260 

261### Subagent

262 

263Um assistente de IA especializado que executa em sua própria context window com um prompt do sistema customizado, acesso a tool específico e permissões independentes. Funciona em uma tarefa delegada e retorna um resumo para a conversa principal. Use subagents para manter grandes explorações fora do seu contexto primário ou para executar pesquisa paralela. Diferente de [agent teams](#agent-teams), onde cada agente é uma sessão independente completa com a qual você pode falar diretamente.

264 

265Subagents built-in incluem Explore, Plan e propósito geral.

266 

267Saiba mais: [Create custom subagents](/pt/sub-agents)

268 

269### Surface

270 

271Qualquer lugar onde você acessa Claude Code: a CLI, VS Code, JetBrains, Desktop ou claude.ai. Todas as surfaces compartilham o mesmo engine, então seu CLAUDE.md, settings e skills funcionam da mesma forma entre elas. Slack e a extensão Chrome são integrações que se conectam a uma surface em vez de surfaces em si.

272 

273Saiba mais: [Platforms and integrations](/pt/platforms)

274 

275## T

276 

277### Teleport

278 

279Um comando, `/teleport`, que puxa uma sessão Claude Code na nuvem para seu terminal local. Claude busca o branch, carrega o histórico de conversa e retoma do último estado da sessão web. A direção reversa é `--remote`, que envia uma tarefa local para executar na web.

280 

281Saiba mais: [From web to terminal](/pt/claude-code-on-the-web#from-web-to-terminal)

282 

283### Tool

284 

285Uma ação que Claude pode tomar: ler um arquivo, editar código, executar um comando shell, pesquisar a web, gerar um subagent. Tools são o que tornam Claude Code agentic. Sem elas, Claude pode apenas responder com texto. Cada uso de tool retorna um resultado que informa a próxima decisão de Claude no [agentic loop](#agentic-loop).

286 

287Saiba mais: [Tools available to Claude](/pt/tools-reference)

288 

289## W

290 

291### Worktree isolation

292 

293Um modo de isolamento que executa Claude em um git worktree separado em `.claude/worktrees/`, habilitado com a flag `-w` ou `isolation: worktree` na config de subagent. Alterações ficam em um branch separado em um diretório separado, para que agentes paralelos não sobrescrevam os arquivos uns dos outros.

294 

295Saiba mais: [Run parallel sessions with git worktrees](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees)

296 

297***

298 

299## Deprecated and renamed terms

300 

301Estes termos aparecem em docs mais antigas, posts de blog e conteúdo da comunidade. Use o nome atual ao pesquisar neste site.

302 

303| Old term | Now called | Notes |

304| --------------- | --------------------------------------------- | ------------------------------------ |

305| Headless mode | [Non-interactive mode](#non-interactive-mode) | Same `-p` flag, same behavior |

306| Custom commands | [Skills](#skill) | `.claude/commands/` files still work |

307| Slash commands | Commands | "Slash" dropped from product copy |

google-vertex-ai.md +387 −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 Google Vertex AI

6 

7> Saiba como configurar Claude Code através do Google Vertex AI, incluindo configuração, configuração de IAM e resolução de problemas.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="vertex" />} />

190 

191## Pré-requisitos

192 

193Antes de configurar Claude Code com Vertex AI, certifique-se de que você tem:

194 

195* Uma conta do Google Cloud Platform (GCP) com faturamento ativado

196* Um projeto GCP com a API Vertex AI ativada

197* Acesso aos modelos Claude desejados (por exemplo, Claude Sonnet 4.6)

198* Google Cloud SDK (`gcloud`) instalado e configurado

199* Cota alocada na região GCP desejada

200 

201Para entrar com suas próprias credenciais do Vertex AI, siga [Entrar com Vertex AI](#sign-in-with-vertex-ai) abaixo. Para implantar Claude Code em toda uma equipe, use as etapas de [configuração manual](#set-up-manually) e [fixe suas versões de modelo](#5-pin-model-versions) antes de fazer o lançamento.

202 

203## Entrar com Vertex AI

204 

205Se você tem credenciais do Google Cloud e deseja começar a usar Claude Code através do Vertex AI, o assistente de login o guia através disso. Você completa os pré-requisitos do lado do GCP uma vez por projeto; o assistente cuida do lado do Claude Code.

206 

207<Note>

208 O assistente de configuração do Vertex AI requer Claude Code v2.1.98 ou posterior. Execute `claude --version` para verificar.

209</Note>

210 

211<Steps>

212 <Step title="Ativar modelos Claude no seu projeto GCP">

213 [Ative a API Vertex AI](#1-enable-vertex-ai-api) para seu projeto, depois solicite acesso aos modelos Claude que você deseja no [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden). Veja [Configuração de IAM](#iam-configuration) para as permissões que sua conta precisa.

214 </Step>

215 

216 <Step title="Inicie Claude Code e escolha Vertex AI">

217 Execute `claude`. No prompt de login, selecione **plataforma de terceiros**, depois **Google Vertex AI**.

218 </Step>

219 

220 <Step title="Siga os prompts do assistente">

221 Escolha como você se autentica no Google Cloud: Application Default Credentials do `gcloud`, um arquivo de chave de conta de serviço, ou credenciais já em seu ambiente. O assistente detecta seu projeto e região, verifica quais modelos Claude seu projeto pode invocar, e permite que você os fixe. Ele salva o resultado no bloco `env` do seu [arquivo de configurações do usuário](/pt/settings), para que você não precise exportar variáveis de ambiente você mesmo.

222 </Step>

223</Steps>

224 

225Depois de entrar, execute `/setup-vertex` a qualquer momento para reabrir o assistente e alterar suas credenciais, projeto, região ou fixações de modelo.

226 

227## Configuração de região

228 

229Claude Code suporta endpoints [globais](https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai), multi-região e regionais do Vertex AI. Defina `CLOUD_ML_REGION` como `global`, um local multi-região como `eu` ou `us`, ou uma região específica como `us-east5`. Claude Code seleciona o nome de host correto do Vertex AI para cada formulário, incluindo os hosts `aiplatform.eu.rep.googleapis.com` e `aiplatform.us.rep.googleapis.com` para locais multi-região.

230 

231<Note>

232 Vertex AI pode não suportar os modelos padrão do Claude Code em todos os tipos de endpoint. A disponibilidade de modelos varia entre [regiões específicas](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations#genai-partner-models), locais multi-região e [endpoints globais](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#supported_models). Você pode precisar mudar para um local suportado ou especificar um modelo suportado.

233</Note>

234 

235## Configurar manualmente

236 

237Para configurar Vertex AI através de variáveis de ambiente em vez do assistente, por exemplo em CI ou um lançamento empresarial com script, siga as etapas abaixo.

238 

239### 1. Ativar a API Vertex AI

240 

241Ative a API Vertex AI no seu projeto GCP:

242 

243```bash theme={null}

244# Defina seu ID de projeto

245gcloud config set project YOUR-PROJECT-ID

246 

247# Ativar a API Vertex AI

248gcloud services enable aiplatform.googleapis.com

249```

250 

251### 2. Solicitar acesso ao modelo

252 

253Solicite acesso aos modelos Claude no Vertex AI:

254 

2551. Navegue até o [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

2562. Procure por modelos "Claude"

2573. Solicite acesso aos modelos Claude desejados (por exemplo, Claude Sonnet 4.6)

2584. Aguarde a aprovação (pode levar 24-48 horas)

259 

260### 3. Configurar credenciais GCP

261 

262Claude Code usa autenticação padrão do Google Cloud.

263 

264Para mais informações, consulte a [documentação de autenticação do Google Cloud](https://cloud.google.com/docs/authentication).

265 

266Claude Code v2.1.121 ou posterior suporta [Federação de Identidade de Carga de Trabalho baseada em certificado X.509](https://cloud.google.com/iam/docs/workload-identity-federation-with-x509-certificates) através da mesma cadeia de Credenciais Padrão da Aplicação. Defina `GOOGLE_APPLICATION_CREDENTIALS` para o caminho do seu arquivo de configuração de credenciais.

267 

268<Note>

269 Ao autenticar, Claude Code usará automaticamente o ID do projeto da variável de ambiente `ANTHROPIC_VERTEX_PROJECT_ID`. Para substituir isso, defina uma destas variáveis de ambiente: `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` ou `GOOGLE_APPLICATION_CREDENTIALS`.

270</Note>

271 

272### 4. Configurar Claude Code

273 

274Defina as seguintes variáveis de ambiente:

275 

276```bash theme={null}

277# Ativar integração Vertex AI

278export CLAUDE_CODE_USE_VERTEX=1

279export CLOUD_ML_REGION=global

280export ANTHROPIC_VERTEX_PROJECT_ID=YOUR-PROJECT-ID

281 

282# Opcional: Substituir a URL do endpoint Vertex para endpoints personalizados ou gateways

283# export ANTHROPIC_VERTEX_BASE_URL=https://aiplatform.googleapis.com

284 

285# Opcional: Desativar prompt caching se necessário

286export DISABLE_PROMPT_CACHING=1

287 

288# Opcional: Solicitar TTL de cache de prompt de 1 hora em vez do padrão de 5 minutos

289export ENABLE_PROMPT_CACHING_1H=1

290 

291# Quando CLOUD_ML_REGION=global, substituir região para modelos que não suportam endpoints globais

292export VERTEX_REGION_CLAUDE_HAIKU_4_5=us-east5

293export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

294```

295 

296A maioria das versões de modelo tem uma variável `VERTEX_REGION_CLAUDE_*` correspondente. Veja a [referência de variáveis de ambiente](/pt/env-vars) para a lista completa. Verifique o [Vertex Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) para determinar quais modelos suportam endpoints globais versus apenas regionais.

297 

298[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) é ativado automaticamente. Para desativá-lo, defina `DISABLE_PROMPT_CACHING=1`. Para solicitar um TTL de cache de 1 hora em vez do padrão de 5 minutos, defina `ENABLE_PROMPT_CACHING_1H=1`; gravações de cache com TTL de 1 hora são cobradas a uma taxa mais alta. Para limites de taxa aumentados, entre em contato com o suporte do Google Cloud. Ao usar Vertex AI, os comandos `/login` e `/logout` são desativados, pois a autenticação é tratada através das credenciais do Google Cloud.

299 

300[MCP tool search](/pt/mcp#scale-with-mcp-tool-search) é desativado por padrão no Vertex AI porque o endpoint não aceita o cabeçalho beta necessário. Todas as definições de ferramenta MCP são carregadas antecipadamente. Para aceitar, defina `ENABLE_TOOL_SEARCH=true`.

301 

302### 5. Fixar versões de modelo

303 

304<Warning>

305 Fixe versões de modelo específicas ao implantar para vários usuários. Sem fixação, aliases de modelo como `sonnet` e `opus` resolvem para a versão mais recente, que pode ainda não estar ativada no seu projeto Vertex AI quando Anthropic lançar uma atualização. Claude Code [volta](#startup-model-checks) para a versão anterior na inicialização quando a mais recente não está disponível, mas fixar permite que você controle quando seus usuários se movem para um novo modelo.

306</Warning>

307 

308Defina estas variáveis de ambiente para IDs de modelo Vertex AI específicos.

309 

310Sem `ANTHROPIC_DEFAULT_OPUS_MODEL`, o alias `opus` no Vertex resolve para Opus 4.6. Defina-o para o ID do Opus 4.7 para usar o modelo mais recente:

311 

312```bash theme={null}

313export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

314export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

315export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

316```

317 

318Para IDs de modelo atuais e legados, veja [Visão geral de modelos](https://platform.claude.com/docs/en/about-claude/models/overview). Veja [Configuração de modelo](/pt/model-config#pin-models-for-third-party-deployments) para a lista completa de variáveis de ambiente.

319 

320Claude Code usa estes modelos padrão quando nenhuma variável de fixação está definida:

321 

322| Tipo de modelo | Valor padrão |

323| :-------------------- | :--------------------------- |

324| Modelo primário | `claude-sonnet-4-5@20250929` |

325| Modelo pequeno/rápido | `claude-haiku-4-5@20251001` |

326 

327Para personalizar modelos ainda mais:

328 

329```bash theme={null}

330export ANTHROPIC_MODEL='claude-opus-4-7'

331export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

332```

333 

334## Verificações de modelo na inicialização

335 

336Quando Claude Code inicia com Vertex AI configurado, ele verifica que os modelos que pretende usar estão acessíveis no seu projeto. Esta verificação requer Claude Code v2.1.98 ou posterior.

337 

338Se você fixou uma versão de modelo que é mais antiga que o padrão atual do Claude Code, e seu projeto pode invocar a versão mais recente, Claude Code o solicita a atualizar a fixação. Aceitar escreve o novo ID de modelo no seu [arquivo de configurações do usuário](/pt/settings) e reinicia Claude Code. Recusar é lembrado até a próxima mudança de versão padrão.

339 

340Se você não fixou um modelo e o padrão atual não está disponível no seu projeto, Claude Code volta para a versão anterior para a sessão atual e mostra um aviso. O fallback não é persistido. Ative o modelo mais recente no [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) ou [fixe uma versão](#5-pin-model-versions) para tornar a escolha permanente.

341 

342## Configuração de IAM

343 

344Atribua as permissões de IAM necessárias:

345 

346A função `roles/aiplatform.user` inclui as permissões necessárias:

347 

348* `aiplatform.endpoints.predict` - Necessário para invocação de modelo e contagem de tokens

349 

350Para permissões mais restritivas, crie uma função personalizada com apenas as permissões acima.

351 

352Para detalhes, veja a [documentação de IAM do Vertex](https://cloud.google.com/vertex-ai/docs/general/access-control).

353 

354<Note>

355 Crie um projeto GCP dedicado para Claude Code para simplificar o rastreamento de custos e controle de acesso.

356</Note>

357 

358## Janela de contexto de 1M de tokens

359 

360Claude Opus 4.7, Opus 4.6 e Sonnet 4.6 suportam a [janela de contexto de 1M de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) no Vertex AI. Claude Code ativa automaticamente a janela de contexto estendida quando você seleciona uma variante de modelo 1M.

361 

362O [assistente de configuração](#sign-in-with-vertex-ai) oferece uma opção de contexto 1M quando fixa modelos. Para ativá-lo para um modelo fixado manualmente em vez disso, acrescente `[1m]` ao ID do modelo. Veja [Fixar modelos para implantações de terceiros](/pt/model-config#pin-models-for-third-party-deployments) para detalhes.

363 

364## Resolução de problemas

365 

366Se você encontrar problemas de cota:

367 

368* Verifique cotas atuais ou solicite aumento de cota através do [Cloud Console](https://cloud.google.com/docs/quotas/view-manage)

369 

370Se você encontrar erros "modelo não encontrado" 404:

371 

372* Confirme que o modelo está Ativado no [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

373* Verifique se o modelo está disponível no local que você especificou. Alguns modelos são oferecidos apenas em locais `global` ou multi-região como `eu` e `us`, não em regiões específicas

374* Se estiver usando `CLOUD_ML_REGION=global`, verifique se seus modelos suportam endpoints globais no [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) em "Recursos suportados". Para modelos que não suportam endpoints globais, faça um dos seguintes:

375 * Especifique um modelo suportado via `ANTHROPIC_MODEL` ou `ANTHROPIC_DEFAULT_HAIKU_MODEL`, ou

376 * Defina uma região ou local multi-região usando variáveis de ambiente `VERTEX_REGION_<MODEL_NAME>`

377 

378Se você encontrar erros 429:

379 

380* Para endpoints regionais, certifique-se de que o modelo primário e o modelo pequeno/rápido são suportados em sua região selecionada

381* Considere mudar para `CLOUD_ML_REGION=global` para melhor disponibilidade

382 

383## Recursos adicionais

384 

385* [Documentação do Vertex AI](https://cloud.google.com/vertex-ai/docs)

386* [Preços do Vertex AI](https://cloud.google.com/vertex-ai/pricing)

387* [Cotas e limites do Vertex AI](https://cloud.google.com/vertex-ai/docs/quotas)

headless.md +225 −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# Executar Claude Code programaticamente

6 

7> Use o Agent SDK para executar Claude Code programaticamente a partir da CLI, Python ou TypeScript.

8 

9O [Agent SDK](/pt/agent-sdk/overview) oferece as mesmas ferramentas, loop de agente e gerenciamento de contexto que alimentam Claude Code. Está disponível como uma CLI para scripts e CI/CD, ou como pacotes [Python](/pt/agent-sdk/python) e [TypeScript](/pt/agent-sdk/typescript) para controle programático completo.

10 

11<Note>

12 A CLI era anteriormente chamada de "modo headless". O sinalizador `-p` e todas as opções de CLI funcionam da mesma forma.

13</Note>

14 

15Para executar Claude Code programaticamente a partir da CLI, passe `-p` com seu prompt e qualquer [opção de CLI](/pt/cli-reference):

16 

17```bash theme={null}

18claude -p "Find and fix the bug in auth.py" --allowedTools "Read,Edit,Bash"

19```

20 

21Esta página aborda o uso do Agent SDK via CLI (`claude -p`). Para os pacotes SDK Python e TypeScript com saídas estruturadas, callbacks de aprovação de ferramentas e objetos de mensagem nativos, consulte a [documentação completa do Agent SDK](/pt/agent-sdk/overview).

22 

23## Uso básico

24 

25Adicione o sinalizador `-p` (ou `--print`) a qualquer comando `claude` para executá-lo de forma não interativa. Todas as [opções de CLI](/pt/cli-reference) funcionam com `-p`, incluindo:

26 

27* `--continue` para [continuar conversas](#continue-conversations)

28* `--allowedTools` para [aprovar ferramentas automaticamente](#auto-approve-tools)

29* `--output-format` para [saída estruturada](#get-structured-output)

30 

31Este exemplo faz uma pergunta ao Claude sobre sua base de código e imprime a resposta:

32 

33```bash theme={null}

34claude -p "What does the auth module do?"

35```

36 

37### Comece mais rápido com modo bare

38 

39Adicione `--bare` para reduzir o tempo de inicialização pulando a descoberta automática de hooks, skills, plugins, servidores MCP, memória automática e CLAUDE.md. Sem ele, `claude -p` carrega o mesmo [contexto](/pt/how-claude-code-works#the-context-window) que uma sessão interativa carregaria, incluindo qualquer coisa configurada no diretório de trabalho ou `~/.claude`.

40 

41O modo bare é útil para CI e scripts onde você precisa do mesmo resultado em cada máquina. Um hook no `~/.claude` de um colega de trabalho ou um servidor MCP no `.mcp.json` do projeto não serão executados, porque o modo bare nunca os lê. Apenas os sinalizadores que você passa explicitamente têm efeito.

42 

43Este exemplo executa uma tarefa de resumo única em modo bare e pré-aprova a ferramenta Read para que a chamada seja concluída sem um prompt de permissão:

44 

45```bash theme={null}

46claude --bare -p "Summarize this file" --allowedTools "Read"

47```

48 

49No modo bare, Claude tem acesso às ferramentas Bash, leitura de arquivo e edição de arquivo. Passe qualquer contexto que você precise com um sinalizador:

50 

51| Para carregar | Use |

52| ---------------------------- | ------------------------------------------------------- |

53| Adições de prompt do sistema | `--append-system-prompt`, `--append-system-prompt-file` |

54| Configurações | `--settings <file-or-json>` |

55| Servidores MCP | `--mcp-config <file-or-json>` |

56| Agentes personalizados | `--agents <json>` |

57| Um diretório de plugin | `--plugin-dir <path>` |

58 

59O modo bare pula leituras de OAuth e keychain. A autenticação do Anthropic deve vir de `ANTHROPIC_API_KEY` ou um `apiKeyHelper` no JSON passado para `--settings`. Bedrock, Vertex e Foundry usam suas credenciais de provedor usuais.

60 

61<Note>

62 `--bare` é o modo recomendado para chamadas com script e SDK, e se tornará o padrão para `-p` em uma versão futura.

63</Note>

64 

65## Exemplos

66 

67Estes exemplos destacam padrões comuns de CLI. Para CI e outras chamadas com script, adicione [`--bare`](#start-faster-with-bare-mode) para que não captem o que quer que esteja configurado localmente.

68 

69### Obter saída estruturada

70 

71Use `--output-format` para controlar como as respostas são retornadas:

72 

73* `text` (padrão): saída de texto simples

74* `json`: JSON estruturado com resultado, ID de sessão e metadados

75* `stream-json`: JSON delimitado por quebra de linha para streaming em tempo real

76 

77Este exemplo retorna um resumo do projeto como JSON com metadados de sessão, com o resultado de texto no campo `result`:

78 

79```bash theme={null}

80claude -p "Summarize this project" --output-format json

81```

82 

83Para obter saída em conformidade com um esquema específico, use `--output-format json` com `--json-schema` e uma definição de [JSON Schema](https://json-schema.org/). A resposta inclui metadados sobre a solicitação (ID de sessão, uso, etc.) com a saída estruturada no campo `structured_output`.

84 

85Este exemplo extrai nomes de funções e os retorna como uma matriz de strings:

86 

87```bash theme={null}

88claude -p "Extract the main function names from auth.py" \

89 --output-format json \

90 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

91```

92 

93<Tip>

94 Use uma ferramenta como [jq](https://jqlang.github.io/jq/) para analisar a resposta e extrair campos específicos:

95 

96 ```bash theme={null}

97 # Extract the text result

98 claude -p "Summarize this project" --output-format json | jq -r '.result'

99 

100 # Extract structured output

101 claude -p "Extract function names from auth.py" \

102 --output-format json \

103 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \

104 | jq '.structured_output'

105 ```

106</Tip>

107 

108### Respostas de stream

109 

110Use `--output-format stream-json` com `--verbose` e `--include-partial-messages` para receber tokens conforme são gerados. Cada linha é um objeto JSON representando um evento:

111 

112```bash theme={null}

113claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages

114```

115 

116O exemplo a seguir usa [jq](https://jqlang.github.io/jq/) para filtrar deltas de texto e exibir apenas o texto de streaming. O sinalizador `-r` produz strings brutas (sem aspas) e `-j` une sem quebras de linha para que os tokens façam streaming continuamente:

117 

118```bash theme={null}

119claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \

120 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'

121```

122 

123Quando uma solicitação de API falha com um erro que pode ser repetido, Claude Code emite um evento `system/api_retry` antes de tentar novamente. Você pode usar isso para exibir o progresso de repetição ou implementar lógica de backoff personalizada.

124 

125| Campo | Tipo | Descrição |

126| ---------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

127| `type` | `"system"` | tipo de mensagem |

128| `subtype` | `"api_retry"` | identifica isso como um evento de repetição |

129| `attempt` | inteiro | número da tentativa atual, começando em 1 |

130| `max_retries` | inteiro | total de repetições permitidas |

131| `retry_delay_ms` | inteiro | milissegundos até a próxima tentativa |

132| `error_status` | inteiro ou nulo | código de status HTTP, ou `null` para erros de conexão sem resposta HTTP |

133| `error` | string | categoria de erro: `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `invalid_request`, `server_error`, `max_output_tokens`, ou `unknown` |

134| `uuid` | string | identificador único do evento |

135| `session_id` | string | sessão à qual o evento pertence |

136 

137O evento `system/init` relata metadados de sessão incluindo o modelo, ferramentas, servidores MCP e plugins carregados. É o primeiro evento no stream a menos que [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/pt/env-vars) esteja definido, caso em que eventos `plugin_install` o precedem. Use os campos de plugin para falhar CI quando um plugin não foi carregado:

138 

139| Campo | Tipo | Descrição |

140| --------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141| `plugins` | array | plugins que foram carregados com sucesso, cada um com `name` e `path` |

142| `plugin_errors` | array | erros de tempo de carregamento de plugin, como uma versão de dependência insatisfeita, cada um com `plugin`, `type` e `message`. Os plugins afetados são rebaixados e ausentes de `plugins`. A chave é omitida quando não há erros |

143 

144Quando [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/pt/env-vars) está definido, Claude Code emite eventos `system/plugin_install` enquanto plugins do marketplace instalam antes da primeira volta. Use estes para exibir o progresso de instalação em sua própria UI.

145 

146| Campo | Tipo | Descrição |

147| ------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |

148| `type` | `"system"` | tipo de mensagem |

149| `subtype` | `"plugin_install"` | identifica isso como um evento de instalação de plugin |

150| `status` | `"started"`, `"installed"`, `"failed"`, ou `"completed"` | `started` e `completed` envolvem a instalação geral; `installed` e `failed` relatam marketplaces individuais |

151| `name` | string, opcional | nome do marketplace, presente em `installed` e `failed` |

152| `error` | string, opcional | mensagem de falha, presente em `failed` |

153| `uuid` | string | identificador único do evento |

154| `session_id` | string | sessão à qual o evento pertence |

155 

156Para streaming programático com callbacks e objetos de mensagem, consulte [Stream responses in real-time](/pt/agent-sdk/streaming-output) na documentação do Agent SDK.

157 

158### Aprovar ferramentas automaticamente

159 

160Use `--allowedTools` para permitir que Claude use certas ferramentas sem solicitar. Este exemplo executa um conjunto de testes e corrige falhas, permitindo que Claude execute comandos Bash e leia/edite arquivos sem pedir permissão:

161 

162```bash theme={null}

163claude -p "Run the test suite and fix any failures" \

164 --allowedTools "Bash,Read,Edit"

165```

166 

167Para definir uma linha de base para toda a sessão em vez de listar ferramentas individuais, passe um [modo de permissão](/pt/permission-modes). `dontAsk` nega qualquer coisa não em suas regras `permissions.allow` ou no [conjunto de comandos somente leitura](/pt/permissions#read-only-commands), o que é útil para execuções de CI bloqueadas. `acceptEdits` permite que Claude escreva arquivos sem solicitar e também aprova automaticamente comandos comuns do sistema de arquivos, como `mkdir`, `touch`, `mv` e `cp`. Outros comandos de shell e solicitações de rede ainda precisam de uma entrada `--allowedTools` ou uma regra `permissions.allow`, caso contrário a execução é abortada quando uma é tentada:

168 

169```bash theme={null}

170claude -p "Apply the lint fixes" --permission-mode acceptEdits

171```

172 

173### Criar um commit

174 

175Este exemplo revisa as alterações preparadas e cria um commit com uma mensagem apropriada:

176 

177```bash theme={null}

178claude -p "Look at my staged changes and create an appropriate commit" \

179 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

180```

181 

182O sinalizador `--allowedTools` usa [sintaxe de regra de permissão](/pt/settings#permission-rule-syntax). O ` *` à direita habilita correspondência de prefixo, então `Bash(git diff *)` permite qualquer comando começando com `git diff`. O espaço antes de `*` é importante: sem ele, `Bash(git diff*)` também corresponderia a `git diff-index`.

183 

184<Note>

185 [skills](/pt/skills) invocadas pelo usuário como `/commit` e [comandos integrados](/pt/commands) estão disponíveis apenas no modo interativo. No modo `-p`, descreva a tarefa que você deseja realizar.

186</Note>

187 

188### Personalizar o prompt do sistema

189 

190Use `--append-system-prompt` para adicionar instruções mantendo o comportamento padrão do Claude Code. Este exemplo envia um diff de PR para Claude e o instrui a revisar vulnerabilidades de segurança:

191 

192```bash theme={null}

193gh pr diff "$1" | claude -p \

194 --append-system-prompt "You are a security engineer. Review for vulnerabilities." \

195 --output-format json

196```

197 

198Consulte [system prompt flags](/pt/cli-reference#system-prompt-flags) para mais opções, incluindo `--system-prompt` para substituir completamente o prompt padrão.

199 

200### Continuar conversas

201 

202Use `--continue` para continuar a conversa mais recente, ou `--resume` com um ID de sessão para continuar uma conversa específica. Este exemplo executa uma revisão e depois envia prompts de acompanhamento:

203 

204```bash theme={null}

205# First request

206claude -p "Review this codebase for performance issues"

207 

208# Continue the most recent conversation

209claude -p "Now focus on the database queries" --continue

210claude -p "Generate a summary of all issues found" --continue

211```

212 

213Se você estiver executando várias conversas, capture o ID da sessão para retomar uma específica:

214 

215```bash theme={null}

216session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')

217claude -p "Continue that review" --resume "$session_id"

218```

219 

220## Próximas etapas

221 

222* [Agent SDK quickstart](/pt/agent-sdk/quickstart): construa seu primeiro agente com Python ou TypeScript

223* [CLI reference](/pt/cli-reference): todos os sinalizadores e opções de CLI

224* [GitHub Actions](/pt/github-actions): use o Agent SDK em fluxos de trabalho do GitHub

225* [GitLab CI/CD](/pt/gitlab-ci-cd): use o Agent SDK em pipelines do GitLab

hooks.md +2653 −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# Referência de hooks

6 

7> Referência para eventos de hooks do Claude Code, esquema de configuração, formatos de entrada/saída JSON, códigos de saída, hooks assíncronos, hooks HTTP, hooks de prompt e hooks de ferramentas MCP.

8 

9<Tip>

10 Para um guia de início rápido com exemplos, consulte [Automatizar fluxos de trabalho com hooks](/pt/hooks-guide).

11</Tip>

12 

13Hooks são comandos shell definidos pelo usuário, endpoints HTTP ou prompts LLM que executam automaticamente em pontos específicos do ciclo de vida do Claude Code. Use esta referência para consultar esquemas de eventos, opções de configuração, formatos de entrada/saída JSON e recursos avançados como hooks assíncronos, hooks HTTP e hooks de ferramentas MCP. Se você está configurando hooks pela primeira vez, comece com o [guia](/pt/hooks-guide) em vez disso.

14 

15## Ciclo de vida do hook

16 

17Hooks disparam em pontos específicos durante uma sessão do Claude Code. Quando um evento dispara e um matcher corresponde, o Claude Code passa contexto JSON sobre o evento para seu manipulador de hook. Para hooks de comando, a entrada chega em stdin. Para hooks HTTP, chega como corpo da solicitação POST. Seu manipulador pode então inspecionar a entrada, tomar ação e opcionalmente retornar uma decisão. Os eventos caem em três cadências: uma vez por sessão (`SessionStart`, `SessionEnd`), uma vez por turno (`UserPromptSubmit`, `Stop`, `StopFailure`) e em cada chamada de ferramenta dentro do loop agentic (`PreToolUse`, `PostToolUse`):

18 

19<div style={{maxWidth: "500px", margin: "0 auto"}}>

20 <Frame>

21 <img src="https://mintcdn.com/claude-code/ZIW26Z9pnpsXLhbS/images/hooks-lifecycle.svg?fit=max&auto=format&n=ZIW26Z9pnpsXLhbS&q=85&s=ee23691324deb6501df09bfdae560b64" alt="Diagrama do ciclo de vida do hook mostrando Setup opcional alimentando SessionStart, depois um loop por turno contendo UserPromptSubmit, UserPromptExpansion para slash commands, o loop agentic aninhado (PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted) e Stop ou StopFailure, seguido por TeammateIdle, PreCompact, PostCompact e SessionEnd, com Elicitation e ElicitationResult aninhados dentro da execução de ferramenta MCP, PermissionDenied como um ramo lateral de PermissionRequest para negações em modo automático, e WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged e FileChanged como eventos assíncronos independentes" width="520" height="1228" data-path="images/hooks-lifecycle.svg" />

22 </Frame>

23</div>

24 

25A tabela abaixo resume quando cada evento dispara. A seção [Eventos de hook](#hook-events) documenta o esquema de entrada completo e as opções de controle de decisão para cada um.

26 

27| Event | When it fires |

28| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

29| `SessionStart` | When a session begins or resumes |

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

31| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

32| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

33| `PreToolUse` | Before a tool call executes. Can block it |

34| `PermissionRequest` | When a permission dialog appears |

35| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

36| `PostToolUse` | After a tool call succeeds |

37| `PostToolUseFailure` | After a tool call fails |

38| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

39| `Notification` | When Claude Code sends a notification |

40| `SubagentStart` | When a subagent is spawned |

41| `SubagentStop` | When a subagent finishes |

42| `TaskCreated` | When a task is being created via `TaskCreate` |

43| `TaskCompleted` | When a task is being marked as completed |

44| `Stop` | When Claude finishes responding |

45| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

46| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

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

48| `ConfigChange` | When a configuration file changes during a session |

49| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

50| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

51| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

52| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

53| `PreCompact` | Before context compaction |

54| `PostCompact` | After context compaction completes |

55| `Elicitation` | When an MCP server requests user input during a tool call |

56| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

57| `SessionEnd` | When a session terminates |

58 

59### Como um hook é resolvido

60 

61Para ver como essas peças se encaixam, considere este hook `PreToolUse` que bloqueia comandos shell destrutivos. O `matcher` se restringe a chamadas de ferramenta Bash e a condição `if` se restringe ainda mais a subcomandos Bash correspondendo a `rm *`, então `block-rm.sh` apenas é gerado quando ambos os filtros correspondem:

62 

63```json theme={null}

64{

65 "hooks": {

66 "PreToolUse": [

67 {

68 "matcher": "Bash",

69 "hooks": [

70 {

71 "type": "command",

72 "if": "Bash(rm *)",

73 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-rm.sh"

74 }

75 ]

76 }

77 ]

78 }

79}

80```

81 

82O script lê a entrada JSON de stdin, extrai o comando e retorna uma `permissionDecision` de `"deny"` se contiver `rm -rf`:

83 

84```bash theme={null}

85#!/bin/bash

86# .claude/hooks/block-rm.sh

87COMMAND=$(jq -r '.tool_input.command')

88 

89if echo "$COMMAND" | grep -q 'rm -rf'; then

90 jq -n '{

91 hookSpecificOutput: {

92 hookEventName: "PreToolUse",

93 permissionDecision: "deny",

94 permissionDecisionReason: "Destructive command blocked by hook"

95 }

96 }'

97else

98 exit 0 # allow the command

99fi

100```

101 

102Agora suponha que o Claude Code decida executar `Bash "rm -rf /tmp/build"`. Aqui está o que acontece:

103 

104<Frame>

105 <img src="https://mintcdn.com/claude-code/-tYw1BD_DEqfyyOZ/images/hook-resolution.svg?fit=max&auto=format&n=-tYw1BD_DEqfyyOZ&q=85&s=c73ebc1eeda2037570427d7af1e0a891" alt="Fluxo de resolução de hook: evento PreToolUse dispara, matcher verifica correspondência de Bash, condição if verifica correspondência de Bash(rm *), manipulador de hook executa, resultado retorna ao Claude Code" width="930" height="290" data-path="images/hook-resolution.svg" />

106</Frame>

107 

108<Steps>

109 <Step title="Evento dispara">

110 O evento `PreToolUse` dispara. O Claude Code envia a entrada da ferramenta como JSON em stdin para o hook:

111 

112 ```json theme={null}

113 { "tool_name": "Bash", "tool_input": { "command": "rm -rf /tmp/build" }, ... }

114 ```

115 </Step>

116 

117 <Step title="Matcher verifica">

118 O matcher `"Bash"` corresponde ao nome da ferramenta, então este grupo de hook é ativado. Se você omitir o matcher ou usar `"*"`, o grupo é ativado em cada ocorrência do evento.

119 </Step>

120 

121 <Step title="Condição if verifica">

122 A condição `if` `"Bash(rm *)"` corresponde porque `rm -rf /tmp/build` é um subcomando correspondendo a `rm *`, então este manipulador é gerado. Se o comando tivesse sido `npm test`, a verificação `if` falharia e `block-rm.sh` nunca seria executado, evitando a sobrecarga de geração de processo. O campo `if` é opcional; sem ele, cada manipulador no grupo correspondido é executado.

123 </Step>

124 

125 <Step title="Manipulador de hook executa">

126 O script inspeciona o comando completo e encontra `rm -rf`, então imprime uma decisão em stdout:

127 

128 ```json theme={null}

129 {

130 "hookSpecificOutput": {

131 "hookEventName": "PreToolUse",

132 "permissionDecision": "deny",

133 "permissionDecisionReason": "Destructive command blocked by hook"

134 }

135 }

136 ```

137 

138 Se o comando tivesse sido uma variante mais segura de `rm` como `rm file.txt`, o script teria atingido `exit 0` em vez disso, o que diz ao Claude Code para permitir a chamada da ferramenta sem ação adicional.

139 </Step>

140 

141 <Step title="Claude Code age sobre o resultado">

142 O Claude Code lê a decisão JSON, bloqueia a chamada da ferramenta e mostra a razão ao Claude.

143 </Step>

144</Steps>

145 

146A seção [Configuração](#configuration) abaixo documenta o esquema completo, e cada seção [evento de hook](#hook-events) documenta qual entrada seu comando recebe e qual saída pode retornar.

147 

148## Configuração

149 

150Hooks são definidos em arquivos de configurações JSON. A configuração tem três níveis de aninhamento:

151 

1521. Escolha um [evento de hook](#hook-events) para responder, como `PreToolUse` ou `Stop`

1532. Adicione um [grupo de matcher](#matcher-patterns) para filtrar quando dispara, como "apenas para a ferramenta Bash"

1543. Defina um ou mais [manipuladores de hook](#hook-handler-fields) para executar quando correspondido

155 

156Consulte [Como um hook é resolvido](#how-a-hook-resolves) acima para um passo a passo completo com um exemplo anotado.

157 

158<Note>

159 Esta página usa termos específicos para cada nível: **evento de hook** para o ponto do ciclo de vida, **grupo de matcher** para o filtro e **manipulador de hook** para o comando shell, endpoint HTTP, ferramenta MCP, prompt ou agente que executa. "Hook" por si só refere-se ao recurso geral.

160</Note>

161 

162### Locais de hooks

163 

164Onde você define um hook determina seu escopo:

165 

166| Local | Escopo | Compartilhável |

167| :------------------------------------------------------------- | :------------------------------- | :-------------------------------------- |

168| `~/.claude/settings.json` | Todos os seus projetos | Não, local para sua máquina |

169| `.claude/settings.json` | Projeto único | Sim, pode ser confirmado no repositório |

170| `.claude/settings.local.json` | Projeto único | Não, gitignored |

171| Configurações de política gerenciada | Organização inteira | Sim, controlado por administrador |

172| [Plugin](/pt/plugins) `hooks/hooks.json` | Quando o plugin está ativado | Sim, agrupado com o plugin |

173| Frontmatter de [Skill](/pt/skills) ou [agente](/pt/sub-agents) | Enquanto o componente está ativo | Sim, definido no arquivo do componente |

174 

175Para detalhes sobre resolução de arquivo de configurações, consulte [configurações](/pt/settings). Administradores corporativos podem usar `allowManagedHooksOnly` para bloquear hooks de usuário, projeto e plugin. Hooks de plugins forçadamente ativados em configurações gerenciadas `enabledPlugins` são isentos, para que administradores possam distribuir hooks verificados através de um marketplace de organização. Consulte [Configuração de hook](/pt/settings#hook-configuration).

176 

177### Padrões de matcher

178 

179O campo `matcher` filtra quando hooks disparam. Como um matcher é avaliado depende dos caracteres que contém:

180 

181| Valor do matcher | Avaliado como | Exemplo |

182| :--------------------------------- | :--------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

183| `"*"`, `""` ou omitido | Corresponder a todos | dispara em cada ocorrência do evento |

184| Apenas letras, dígitos, `_` e `\|` | String exata ou lista de strings exatas separadas por `\|` | `Bash` corresponde apenas à ferramenta Bash; `Edit\|Write` corresponde a qualquer ferramenta exatamente |

185| Contém qualquer outro caractere | Expressão regular JavaScript | `^Notebook` corresponde a qualquer ferramenta começando com Notebook; `mcp__memory__.*` corresponde a cada ferramenta do servidor `memory` |

186 

187O evento `FileChanged` não segue essas regras ao construir sua lista de monitoramento. Consulte [FileChanged](#filechanged).

188 

189Cada tipo de evento corresponde em um campo diferente:

190 

191| Evento | O que o matcher filtra | Valores de matcher de exemplo |

192| :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------- |

193| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nome da ferramenta | `Bash`, `Edit\|Write`, `mcp__.*` |

194| `SessionStart` | como a sessão começou | `startup`, `resume`, `clear`, `compact` |

195| `Setup` | qual sinalizador CLI acionou a configuração | `init`, `maintenance` |

196| `SessionEnd` | por que a sessão terminou | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

197| `Notification` | tipo de notificação | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

198| `SubagentStart` | tipo de agente | `general-purpose`, `Explore`, `Plan` ou nomes de agentes personalizados |

199| `PreCompact`, `PostCompact` | o que acionou a compactação | `manual`, `auto` |

200| `SubagentStop` | tipo de agente | mesmos valores que `SubagentStart` |

201| `ConfigChange` | fonte de configuração | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

202| `CwdChanged` | sem suporte a matcher | sempre dispara em cada mudança de diretório |

203| `FileChanged` | nomes de arquivo literais para monitorar (consulte [FileChanged](#filechanged)) | `.envrc\|.env` |

204| `StopFailure` | tipo de erro | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

205| `InstructionsLoaded` | razão de carregamento | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

206| `UserPromptExpansion` | nome do comando | seus nomes de skill ou comando |

207| `Elicitation` | nome do servidor MCP | seus nomes de servidor MCP configurados |

208| `ElicitationResult` | nome do servidor MCP | mesmos valores que `Elicitation` |

209| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` | sem suporte a matcher | sempre dispara em cada ocorrência |

210 

211O matcher executa contra um campo da [entrada JSON](#hook-input-and-output) que o Claude Code envia para seu hook em stdin. Para eventos de ferramenta, esse campo é `tool_name`. Cada seção [evento de hook](#hook-events) lista o conjunto completo de valores de matcher e o esquema de entrada para esse evento.

212 

213Este exemplo executa um script de linting apenas quando Claude escreve ou edita um arquivo:

214 

215```json theme={null}

216{

217 "hooks": {

218 "PostToolUse": [

219 {

220 "matcher": "Edit|Write",

221 "hooks": [

222 {

223 "type": "command",

224 "command": "/path/to/lint-check.sh"

225 }

226 ]

227 }

228 ]

229 }

230}

231```

232 

233`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` e `CwdChanged` não suportam matchers e sempre disparam em cada ocorrência. Se você adicionar um campo `matcher` a esses eventos, ele é silenciosamente ignorado.

234 

235Para eventos de ferramenta, você pode filtrar mais estreitamente definindo o campo [`if`](#common-fields) em manipuladores de hook individuais. `if` usa [sintaxe de regra de permissão](/pt/permissions) para corresponder contra o nome da ferramenta e argumentos juntos, então `"Bash(git *)"` executa quando qualquer subcomando da entrada Bash corresponde a `git *` e `"Edit(*.ts)"` executa apenas para arquivos TypeScript.

236 

237#### Corresponder ferramentas MCP

238 

239Ferramentas de servidor [MCP](/pt/mcp) aparecem como ferramentas regulares em eventos de ferramenta (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), então você pode corresponder a elas da mesma forma que corresponde a qualquer outro nome de ferramenta.

240 

241Ferramentas MCP seguem o padrão de nomenclatura `mcp__<server>__<tool>`, por exemplo:

242 

243* `mcp__memory__create_entities`: ferramenta create entities do servidor Memory

244* `mcp__filesystem__read_file`: ferramenta read file do servidor Filesystem

245* `mcp__github__search_repositories`: ferramenta search do servidor GitHub

246 

247Para corresponder a cada ferramenta de um servidor, anexe `.*` ao prefixo do servidor. O `.*` é obrigatório: um matcher como `mcp__memory` contém apenas letras e underscores, então é comparado como uma string exata e não corresponde a nenhuma ferramenta.

248 

249* `mcp__memory__.*` corresponde a todas as ferramentas do servidor `memory`

250* `mcp__.*__write.*` corresponde a qualquer ferramenta cujo nome começa com `write` de qualquer servidor

251 

252Este exemplo registra todas as operações do servidor memory e valida operações de escrita de qualquer servidor MCP:

253 

254```json theme={null}

255{

256 "hooks": {

257 "PreToolUse": [

258 {

259 "matcher": "mcp__memory__.*",

260 "hooks": [

261 {

262 "type": "command",

263 "command": "echo 'Memory operation initiated' >> ~/mcp-operations.log"

264 }

265 ]

266 },

267 {

268 "matcher": "mcp__.*__write.*",

269 "hooks": [

270 {

271 "type": "command",

272 "command": "/home/user/scripts/validate-mcp-write.py"

273 }

274 ]

275 }

276 ]

277 }

278}

279```

280 

281### Campos do manipulador de hook

282 

283Cada objeto no array `hooks` interno é um manipulador de hook: o comando shell, endpoint HTTP, ferramenta MCP, prompt LLM ou agente que executa quando o matcher corresponde. Existem cinco tipos:

284 

285* **[Hooks de comando](#command-hook-fields)** (`type: "command"`): executam um comando shell. Seu script recebe a [entrada JSON](#hook-input-and-output) do evento em stdin e comunica resultados através de códigos de saída e stdout.

286* **[Hooks HTTP](#http-hook-fields)** (`type: "http"`): enviam a entrada JSON do evento como uma solicitação HTTP POST para uma URL. O endpoint comunica resultados através do corpo da resposta usando o mesmo [formato de saída JSON](#json-output) que hooks de comando.

287* **[Hooks de ferramenta MCP](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): chamam uma ferramenta em um servidor [MCP](/pt/mcp) já conectado. A saída de texto da ferramenta é tratada como stdout de hook de comando.

288* **[Hooks de prompt](#prompt-and-agent-hook-fields)** (`type: "prompt"`): enviam um prompt para um modelo Claude para avaliação de turno único. O modelo retorna uma decisão sim/não como JSON. Consulte [Hooks baseados em prompt](#prompt-based-hooks).

289* **[Hooks de agente](#prompt-and-agent-hook-fields)** (`type: "agent"`): geram um subagente que pode usar ferramentas como Read, Grep e Glob para verificar condições antes de retornar uma decisão. Hooks de agente são experimentais e podem mudar. Consulte [Hooks baseados em agente](#agent-based-hooks).

290 

291#### Campos comuns

292 

293Esses campos se aplicam a todos os tipos de hook:

294 

295| Campo | Obrigatório | Descrição |

296| :-------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

297| `type` | sim | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` ou `"agent"` |

298| `if` | não | Sintaxe de regra de permissão para filtrar quando este hook executa, como `"Bash(git *)"` ou `"Edit(*.ts)"`. O hook apenas é gerado se a chamada de ferramenta corresponde ao padrão, ou se um comando Bash é muito complexo para analisar. Apenas avaliado em eventos de ferramenta: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied`. Em outros eventos, um hook com `if` definido nunca executa. Usa a mesma sintaxe que [regras de permissão](/pt/permissions) |

299| `timeout` | não | Segundos antes de cancelar. Padrões: 600 para comando, 30 para prompt, 60 para agente |

300| `statusMessage` | não | Mensagem de spinner personalizada exibida enquanto o hook executa |

301| `once` | não | Se `true`, executa apenas uma vez por sessão e depois é removido. Apenas honrado para hooks declarados em [frontmatter de skill](#hooks-in-skills-and-agents); ignorado em arquivos de configurações e frontmatter de agente |

302 

303O campo `if` contém exatamente uma regra de permissão. Não há sintaxe `&&`, `||` ou lista para combinar regras; para aplicar múltiplas condições, defina um manipulador de hook separado para cada. Para Bash, a regra é correspondida contra cada subcomando da entrada da ferramenta após atribuições `VAR=value` iniciais serem removidas, então `if: "Bash(git push *)"` corresponde tanto a `FOO=bar git push` quanto a `npm test && git push`. O hook executa se qualquer subcomando corresponde, e sempre executa quando o comando é muito complexo para analisar.

304 

305#### Campos de hook de comando

306 

307Além dos [campos comuns](#common-fields), hooks de comando aceitam esses campos:

308 

309| Campo | Obrigatório | Descrição |

310| :------------ | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

311| `command` | sim | Comando shell a executar |

312| `async` | não | Se `true`, executa em background sem bloquear. Consulte [Executar hooks em background](#run-hooks-in-the-background) |

313| `asyncRewake` | não | Se `true`, executa em background e acorda Claude na saída do código 2. Implica `async`. O stderr do hook, ou stdout se stderr estiver vazio, é mostrado ao Claude como um lembrete do sistema para que possa reagir a uma falha de background de longa duração |

314| `shell` | não | Shell a usar para este hook. Aceita `"bash"` (padrão) ou `"powershell"`. Definir `"powershell"` executa o comando via PowerShell no Windows. Não requer `CLAUDE_CODE_USE_POWERSHELL_TOOL` já que hooks geram PowerShell diretamente |

315 

316#### Campos de hook HTTP

317 

318Além dos [campos comuns](#common-fields), hooks HTTP aceitam esses campos:

319 

320| Campo | Obrigatório | Descrição |

321| :--------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

322| `url` | sim | URL para enviar a solicitação POST |

323| `headers` | não | Cabeçalhos HTTP adicionais como pares chave-valor. Valores suportam interpolação de variável de ambiente usando sintaxe `$VAR_NAME` ou `${VAR_NAME}`. Apenas variáveis listadas em `allowedEnvVars` são resolvidas |

324| `allowedEnvVars` | não | Lista de nomes de variáveis de ambiente que podem ser interpoladas em valores de cabeçalho. Referências a variáveis não listadas são substituídas por strings vazias. Obrigatório para qualquer interpolação de variável de ambiente funcionar |

325 

326O Claude Code envia a [entrada JSON](#hook-input-and-output) do hook como corpo da solicitação POST com `Content-Type: application/json`. O corpo da resposta usa o mesmo [formato de saída JSON](#json-output) que hooks de comando.

327 

328O tratamento de erros difere dos hooks de comando: respostas não-2xx, falhas de conexão e timeouts todos produzem erros não-bloqueadores que permitem que a execução continue. Para bloquear uma chamada de ferramenta ou negar uma permissão, retorne uma resposta 2xx com um corpo JSON contendo `decision: "block"` ou um `hookSpecificOutput` com `permissionDecision: "deny"`.

329 

330Este exemplo envia eventos `PreToolUse` para um serviço de validação local, autenticando com um token da variável de ambiente `MY_TOKEN`:

331 

332```json theme={null}

333{

334 "hooks": {

335 "PreToolUse": [

336 {

337 "matcher": "Bash",

338 "hooks": [

339 {

340 "type": "http",

341 "url": "http://localhost:8080/hooks/pre-tool-use",

342 "timeout": 30,

343 "headers": {

344 "Authorization": "Bearer $MY_TOKEN"

345 },

346 "allowedEnvVars": ["MY_TOKEN"]

347 }

348 ]

349 }

350 ]

351 }

352}

353```

354 

355#### Campos de hook de ferramenta MCP

356 

357Além dos [campos comuns](#common-fields), hooks de ferramenta MCP aceitam esses campos:

358 

359| Campo | Obrigatório | Descrição |

360| :------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

361| `server` | sim | Nome de um servidor MCP configurado. O servidor já deve estar conectado; o hook nunca dispara um fluxo OAuth ou de conexão |

362| `tool` | sim | Nome da ferramenta a chamar naquele servidor |

363| `input` | não | Argumentos passados para a ferramenta. Valores de string suportam substituição `${path}` da [entrada JSON](#hook-input-and-output) do hook, como `"${tool_input.file_path}"` |

364 

365A saída de texto da ferramenta é tratada como stdout de hook de comando: se analisar como [saída JSON](#json-output) válida, é processada como uma decisão, caso contrário, é mostrada como texto simples. Se o servidor nomeado não estiver conectado, ou a ferramenta retornar `isError: true`, o hook produz um erro não-bloqueador e a execução continua.

366 

367Hooks de ferramenta MCP estão disponíveis em cada evento de hook uma vez que o Claude Code tenha se conectado aos seus servidores MCP. `SessionStart` e `Setup` normalmente disparam antes dos servidores terminarem de conectar, então hooks nesses eventos devem esperar o erro "não conectado" na primeira execução.

368 

369Este exemplo chama a ferramenta `security_scan` no servidor MCP `my_server` após cada `Write` ou `Edit`, passando o caminho do arquivo editado:

370 

371```json theme={null}

372{

373 "hooks": {

374 "PostToolUse": [

375 {

376 "matcher": "Write|Edit",

377 "hooks": [

378 {

379 "type": "mcp_tool",

380 "server": "my_server",

381 "tool": "security_scan",

382 "input": { "file_path": "${tool_input.file_path}" }

383 }

384 ]

385 }

386 ]

387 }

388}

389```

390 

391#### Campos de hook de prompt e agente

392 

393Além dos [campos comuns](#common-fields), hooks de prompt e agente aceitam esses campos:

394 

395| Campo | Obrigatório | Descrição |

396| :------- | :---------- | :---------------------------------------------------------------------------------------------------- |

397| `prompt` | sim | Texto do prompt a enviar para o modelo. Use `$ARGUMENTS` como placeholder para a entrada JSON do hook |

398| `model` | não | Modelo a usar para avaliação. Padrão para um modelo rápido |

399 

400Todos os hooks correspondentes executam em paralelo, e manipuladores idênticos são automaticamente desduplicados. Hooks de comando são desduplicados por string de comando, e hooks HTTP são desduplicados por URL. Manipuladores executam no diretório atual com o ambiente do Claude Code. A variável de ambiente `$CLAUDE_CODE_REMOTE` é definida como `"true"` em ambientes web remotos e não é definida na CLI local.

401 

402### Referenciar scripts por caminho

403 

404Use variáveis de ambiente para referenciar scripts de hook relativos à raiz do projeto ou plugin, independentemente do diretório de trabalho quando o hook executa:

405 

406* `$CLAUDE_PROJECT_DIR`: a raiz do projeto. Envolva em aspas para lidar com caminhos com espaços.

407* `${CLAUDE_PLUGIN_ROOT}`: o diretório raiz do plugin, para scripts agrupados com um [plugin](/pt/plugins). Muda em cada atualização de plugin.

408* `${CLAUDE_PLUGIN_DATA}`: o [diretório de dados persistentes](/pt/plugins-reference#persistent-data-directory) do plugin, para dependências e estado que devem sobreviver a atualizações de plugin.

409 

410<Tabs>

411 <Tab title="Scripts de projeto">

412 Este exemplo usa `$CLAUDE_PROJECT_DIR` para executar um verificador de estilo do diretório `.claude/hooks/` do projeto após qualquer chamada de ferramenta `Write` ou `Edit`:

413 

414 ```json theme={null}

415 {

416 "hooks": {

417 "PostToolUse": [

418 {

419 "matcher": "Write|Edit",

420 "hooks": [

421 {

422 "type": "command",

423 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-style.sh"

424 }

425 ]

426 }

427 ]

428 }

429 }

430 ```

431 </Tab>

432 

433 <Tab title="Scripts de plugin">

434 Defina hooks de plugin em `hooks/hooks.json` com um campo `description` opcional de nível superior. Quando um plugin está ativado, seus hooks se mesclam com seus hooks de usuário e projeto.

435 

436 Este exemplo executa um script de formatação agrupado com o plugin:

437 

438 ```json theme={null}

439 {

440 "description": "Automatic code formatting",

441 "hooks": {

442 "PostToolUse": [

443 {

444 "matcher": "Write|Edit",

445 "hooks": [

446 {

447 "type": "command",

448 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",

449 "timeout": 30

450 }

451 ]

452 }

453 ]

454 }

455 }

456 ```

457 

458 Consulte a [referência de componentes de plugin](/pt/plugins-reference#hooks) para detalhes sobre como criar hooks de plugin.

459 </Tab>

460</Tabs>

461 

462### Hooks em skills e agentes

463 

464Além de arquivos de configurações e plugins, hooks podem ser definidos diretamente em [skills](/pt/skills) e [subagentes](/pt/sub-agents) usando frontmatter. Esses hooks são escopo do ciclo de vida do componente e apenas executam quando esse componente está ativo.

465 

466Todos os eventos de hook são suportados. Para subagentes, hooks `Stop` são automaticamente convertidos para `SubagentStop` já que esse é o evento que dispara quando um subagente completa.

467 

468Hooks usam o mesmo formato de configuração que hooks baseados em configurações, mas são escopo da vida útil do componente e limpos quando termina.

469 

470Esta skill define um hook `PreToolUse` que executa um script de validação de segurança antes de cada comando `Bash`:

471 

472```yaml theme={null}

473---

474name: secure-operations

475description: Perform operations with security checks

476hooks:

477 PreToolUse:

478 - matcher: "Bash"

479 hooks:

480 - type: command

481 command: "./scripts/security-check.sh"

482---

483```

484 

485Agentes usam o mesmo formato em seu frontmatter YAML.

486 

487### O menu `/hooks`

488 

489Digite `/hooks` no Claude Code para abrir um navegador somente leitura para seus hooks configurados. O menu mostra cada evento de hook com uma contagem de hooks configurados, permite que você detalhe em matchers e mostra os detalhes completos de cada manipulador de hook. Use-o para verificar configuração, verificar qual arquivo de configurações um hook veio, ou inspecionar comando, prompt ou URL de um hook.

490 

491O menu exibe todos os cinco tipos de hook: `command`, `prompt`, `agent`, `http` e `mcp_tool`. Cada hook é rotulado com um prefixo `[type]` e uma fonte indicando onde foi definido:

492 

493* `User`: de `~/.claude/settings.json`

494* `Project`: de `.claude/settings.json`

495* `Local`: de `.claude/settings.local.json`

496* `Plugin`: de `hooks/hooks.json` de um plugin

497* `Session`: registrado em memória para a sessão atual

498* `Built-in`: registrado internamente pelo Claude Code

499 

500Selecionar um hook abre uma visualização de detalhes mostrando seu evento, matcher, tipo, arquivo de origem e o comando, prompt ou URL completo. O menu é somente leitura: para adicionar, modificar ou remover hooks, edite o JSON de configurações diretamente ou peça ao Claude para fazer a mudança.

501 

502### Desabilitar ou remover hooks

503 

504Para remover um hook, delete sua entrada do arquivo de configurações JSON.

505 

506Para desabilitar temporariamente todos os hooks sem removê-los, defina `"disableAllHooks": true` em seu arquivo de configurações. Não há forma de desabilitar um hook individual mantendo-o na configuração.

507 

508A configuração `disableAllHooks` respeita a hierarquia de configurações gerenciadas. Se um administrador configurou hooks através de configurações de política gerenciada, `disableAllHooks` definido em configurações de usuário, projeto ou local não pode desabilitar esses hooks gerenciados. Apenas `disableAllHooks` definido no nível de configurações gerenciadas pode desabilitar hooks gerenciados.

509 

510Edições diretas a hooks em arquivos de configurações são normalmente capturadas automaticamente pelo observador de arquivo.

511 

512## Entrada e saída de hook

513 

514Hooks de comando recebem dados JSON via stdin e comunicam resultados através de códigos de saída, stdout e stderr. Hooks HTTP recebem o mesmo JSON como corpo da solicitação POST e comunicam resultados através do corpo da resposta HTTP. Esta seção cobre campos e comportamento comuns a todos os eventos. Cada seção de evento sob [Eventos de hook](#hook-events) inclui seu esquema de entrada específico e opções de controle de decisão.

515 

516### Campos de entrada comuns

517 

518Eventos de hook recebem esses campos como JSON, além de campos específicos do evento documentados em cada seção [evento de hook](#hook-events). Para hooks de comando, este JSON chega via stdin. Para hooks HTTP, chega como corpo da solicitação POST.

519 

520| Campo | Descrição |

521| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

522| `session_id` | Identificador de sessão atual |

523| `transcript_path` | Caminho para JSON de conversa |

524| `cwd` | Diretório de trabalho atual quando o hook é invocado |

525| `permission_mode` | [Modo de permissão](/pt/permissions#permission-modes) atual: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` ou `"bypassPermissions"`. Nem todos os eventos recebem este campo: consulte cada exemplo JSON de evento abaixo para verificar |

526| `hook_event_name` | Nome do evento que disparou |

527 

528Ao executar com `--agent` ou dentro de um subagente, dois campos adicionais são incluídos:

529 

530| Campo | Descrição |

531| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

532| `agent_id` | Identificador único para o subagente. Presente apenas quando o hook dispara dentro de uma chamada de subagente. Use isso para distinguir chamadas de hook de subagente de chamadas de thread principal. |

533| `agent_type` | Nome do agente (por exemplo, `"Explore"` ou `"security-reviewer"`). Presente quando a sessão usa `--agent` ou o hook dispara dentro de um subagente. Para subagentes, o tipo do subagente tem precedência sobre o valor `--agent` da sessão. |

534 

535Por exemplo, um hook `PreToolUse` para um comando Bash recebe isso em stdin:

536 

537```json theme={null}

538{

539 "session_id": "abc123",

540 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",

541 "cwd": "/home/user/my-project",

542 "permission_mode": "default",

543 "hook_event_name": "PreToolUse",

544 "tool_name": "Bash",

545 "tool_input": {

546 "command": "npm test"

547 }

548}

549```

550 

551Os campos `tool_name` e `tool_input` são específicos do evento. Cada seção [evento de hook](#hook-events) documenta os campos adicionais para esse evento.

552 

553### Saída de código de saída

554 

555O código de saída do seu comando de hook diz ao Claude Code se a ação deve prosseguir, ser bloqueada ou ser ignorada.

556 

557**Saída 0** significa sucesso. O Claude Code analisa stdout para [campos de saída JSON](#json-output). A saída JSON é apenas processada na saída 0. Para a maioria dos eventos, stdout é escrito no log de debug, mas não mostrado na transcrição. As exceções são `UserPromptSubmit`, `UserPromptExpansion` e `SessionStart`, onde stdout é adicionado como contexto que Claude pode ver e agir.

558 

559**Saída 2** significa um erro bloqueador. O Claude Code ignora stdout e qualquer JSON nele. Em vez disso, texto de stderr é alimentado de volta ao Claude como uma mensagem de erro. O efeito depende do evento: `PreToolUse` bloqueia a chamada da ferramenta, `UserPromptSubmit` rejeita o prompt e assim por diante. Consulte [comportamento de código de saída 2](#exit-code-2-behavior-per-event) para a lista completa.

560 

561**Qualquer outro código de saída** é um erro não-bloqueador para a maioria dos eventos de hook. A transcrição mostra um aviso `<hook name> hook error` seguido pela primeira linha de stderr, para que você possa identificar a causa sem `--debug`. A execução continua e o stderr completo é escrito no log de debug.

562 

563Por exemplo, um script de comando de hook que bloqueia comandos Bash perigosos:

564 

565```bash theme={null}

566#!/bin/bash

567# Lê entrada JSON de stdin, verifica o comando

568command=$(jq -r '.tool_input.command' < /dev/stdin)

569 

570if [[ "$command" == rm* ]]; then

571 echo "Blocked: rm commands are not allowed" >&2

572 exit 2 # Erro bloqueador: chamada de ferramenta é prevenida

573fi

574 

575exit 0 # Sucesso: chamada de ferramenta prossegue

576```

577 

578<Warning>

579 Para a maioria dos eventos de hook, apenas o código de saída 2 bloqueia a ação. O Claude Code trata o código de saída 1 como um erro não-bloqueador e prossegue com a ação, mesmo que 1 seja o código de falha Unix convencional. Se seu hook se destina a impor uma política, use `exit 2`. A exceção é `WorktreeCreate`, onde qualquer código de saída não-zero aborta a criação de worktree.

580</Warning>

581 

582#### Comportamento de código de saída 2 por evento

583 

584Código de saída 2 é a forma de um hook sinalizar "pare, não faça isso". O efeito depende do evento, porque alguns eventos representam ações que podem ser bloqueadas (como uma chamada de ferramenta que ainda não aconteceu) e outros representam coisas que já aconteceram ou não podem ser prevenidas.

585 

586| Evento de hook | Pode bloquear? | O que acontece na saída 2 |

587| :-------------------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |

588| `PreToolUse` | Sim | Bloqueia a chamada da ferramenta |

589| `PermissionRequest` | Sim | Nega a permissão |

590| `UserPromptSubmit` | Sim | Bloqueia o processamento de prompt e apaga o prompt |

591| `UserPromptExpansion` | Sim | Bloqueia a expansão |

592| `Stop` | Sim | Previne Claude de parar, continua a conversa |

593| `SubagentStop` | Sim | Previne o subagente de parar |

594| `TeammateIdle` | Sim | Previne o colega de ficar ocioso (colega continua trabalhando) |

595| `TaskCreated` | Sim | Reverte a criação de tarefa |

596| `TaskCompleted` | Sim | Previne a tarefa de ser marcada como concluída |

597| `ConfigChange` | Sim | Bloqueia a mudança de configuração de entrar em efeito (exceto `policy_settings`) |

598| `StopFailure` | Não | Saída e código de saída são ignorados |

599| `PostToolUse` | Não | Mostra stderr ao Claude (ferramenta já executou) |

600| `PostToolUseFailure` | Não | Mostra stderr ao Claude (ferramenta já falhou) |

601| `PostToolBatch` | Sim | Para o loop agentic antes da próxima chamada de modelo |

602| `PermissionDenied` | Não | Código de saída e stderr são ignorados (negação já ocorreu). Use JSON `hookSpecificOutput.retry: true` para dizer ao modelo que pode tentar novamente |

603| `Notification` | Não | Mostra stderr apenas ao usuário |

604| `SubagentStart` | Não | Mostra stderr apenas ao usuário |

605| `SessionStart` | Não | Mostra stderr apenas ao usuário |

606| `Setup` | Não | Mostra stderr apenas ao usuário |

607| `SessionEnd` | Não | Mostra stderr apenas ao usuário |

608| `CwdChanged` | Não | Mostra stderr apenas ao usuário |

609| `FileChanged` | Não | Mostra stderr apenas ao usuário |

610| `PreCompact` | Sim | Bloqueia compactação |

611| `PostCompact` | Não | Mostra stderr apenas ao usuário |

612| `Elicitation` | Sim | Nega a elicitação |

613| `ElicitationResult` | Sim | Bloqueia a resposta (ação se torna decline) |

614| `WorktreeCreate` | Sim | Qualquer código de saída não-zero causa falha na criação de worktree |

615| `WorktreeRemove` | Não | Falhas são registradas apenas em modo debug |

616| `InstructionsLoaded` | Não | Código de saída é ignorado |

617 

618### Tratamento de resposta HTTP

619 

620Hooks HTTP usam códigos de status HTTP e corpos de resposta em vez de códigos de saída e stdout:

621 

622* **2xx com corpo vazio**: sucesso, equivalente a código de saída 0 sem saída

623* **2xx com corpo de texto simples**: sucesso, o texto é adicionado como contexto

624* **2xx com corpo JSON**: sucesso, analisado usando o mesmo esquema [saída JSON](#json-output) que hooks de comando

625* **Status não-2xx**: erro não-bloqueador, execução continua

626* **Falha de conexão ou timeout**: erro não-bloqueador, execução continua

627 

628Diferentemente de hooks de comando, hooks HTTP não podem sinalizar um erro bloqueador apenas através de códigos de status. Para bloquear uma chamada de ferramenta ou negar uma permissão, retorne uma resposta 2xx com um corpo JSON contendo os campos de decisão apropriados.

629 

630### Saída JSON

631 

632Códigos de saída permitem você permitir ou bloquear, mas saída JSON oferece controle mais granular. Em vez de sair com código 2 para bloquear, saia 0 e imprima um objeto JSON em stdout. O Claude Code lê campos específicos desse JSON para controlar comportamento, incluindo [controle de decisão](#decision-control) para bloquear, permitir ou escalar para o usuário.

633 

634<Note>

635 Você deve escolher uma abordagem por hook, não ambas: ou use códigos de saída sozinhos para sinalizar, ou saia 0 e imprima JSON para controle estruturado. O Claude Code apenas processa JSON na saída 0. Se você sair 2, qualquer JSON é ignorado.

636</Note>

637 

638O stdout do seu hook deve conter apenas o objeto JSON. Se seu perfil shell imprime texto na inicialização, pode interferir com análise JSON. Consulte [Validação JSON falhou](/pt/hooks-guide#json-validation-failed) no guia de troubleshooting.

639 

640Saída de hook injetada em contexto (`additionalContext`, `systemMessage` ou stdout simples) é limitada a 10.000 caracteres. Saída que excede este limite é salva em um arquivo e substituída por uma visualização e caminho de arquivo, da mesma forma que resultados de ferramenta grandes são tratados.

641 

642O objeto JSON suporta três tipos de campos:

643 

644* **Campos universais** como `continue` funcionam em todos os eventos. Esses são listados na tabela abaixo.

645* **`decision` e `reason` de nível superior** são usados por alguns eventos para bloquear ou fornecer feedback.

646* **`hookSpecificOutput`** é um objeto aninhado para eventos que precisam de controle mais rico. Requer um campo `hookEventName` definido para o nome do evento.

647 

648| Campo | Padrão | Descrição |

649| :--------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------- |

650| `continue` | `true` | Se `false`, Claude para de processar inteiramente após o hook executar. Tem precedência sobre qualquer campo de decisão específico do evento |

651| `stopReason` | nenhum | Mensagem mostrada ao usuário quando `continue` é `false`. Não mostrada ao Claude |

652| `suppressOutput` | `false` | Se `true`, oculta stdout do log de debug |

653| `systemMessage` | nenhum | Mensagem de aviso mostrada ao usuário |

654 

655Para parar Claude inteiramente independentemente do tipo de evento:

656 

657```json theme={null}

658{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

659```

660 

661#### Adicionar contexto para Claude

662 

663O campo `additionalContext` passa uma string do seu hook para a janela de contexto do Claude. O Claude Code envolve a string em um lembrete do sistema e a insere na conversa no ponto onde o hook disparou. Claude lê o lembrete na próxima solicitação de modelo, mas não aparece como uma mensagem de chat na interface.

664 

665Retorne `additionalContext` dentro de `hookSpecificOutput` ao lado do nome do evento:

666 

667```json theme={null}

668{

669 "hookSpecificOutput": {

670 "hookEventName": "PostToolUse",

671 "additionalContext": "This file is generated. Edit src/schema.ts and run `bun generate` instead."

672 }

673}

674```

675 

676Onde o lembrete aparece depende do evento:

677 

678* [SessionStart](#sessionstart), [Setup](#setup) e [SubagentStart](#subagentstart): no início da conversa, antes do primeiro prompt

679* [UserPromptSubmit](#userpromptsubmit) e [UserPromptExpansion](#userpromptexpansion): ao lado do prompt enviado

680* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure) e [PostToolBatch](#posttoolbatch): ao lado do resultado da ferramenta

681 

682Quando vários hooks retornam `additionalContext` para o mesmo evento, Claude recebe todos os valores. Se um valor exceder 10.000 caracteres, o Claude Code escreve o texto completo em um arquivo no diretório de sessão e passa ao Claude o caminho do arquivo com uma visualização curta em vez disso.

683 

684Use `additionalContext` para informações que Claude deve saber sobre o estado atual do seu ambiente ou a operação que acabou de executar:

685 

686* **Estado do ambiente**: o branch atual, alvo de implantação ou sinalizadores de recurso ativos

687* **Regras de projeto condicional**: qual comando de teste se aplica ao arquivo que acabou de ser editado, quais diretórios são somente leitura nesta worktree

688* **Dados externos**: problemas abertos atribuídos a você, resultados recentes de CI, conteúdo obtido de um serviço interno

689 

690Para instruções que nunca mudam, prefira [CLAUDE.md](/pt/memory). Ele carrega sem executar um script e é o lugar padrão para convenções de projeto estáticas.

691 

692Escreva o texto como declarações factuais em vez de instruções de sistema imperativas. Frases como "O alvo de implantação é produção" ou "Este repositório usa `bun test`" lê como informação de projeto. Texto enquadrado como comandos de sistema fora de banda pode disparar as defesas de injeção de prompt do Claude, o que faz com que Claude superficialize o texto para você em vez de tratá-lo como contexto.

693 

694Uma vez injetado, o texto é salvo na transcrição de sessão. Para eventos de mid-sessão como `PostToolUse` ou `UserPromptSubmit`, retomar com `--continue` ou `--resume` reproduz o texto salvo em vez de re-executar o hook para turnos anteriores, então valores como timestamps ou SHAs de commit ficam obsoletos na retomada. Hooks `SessionStart` executam novamente na retomada com `source` definido como `"resume"`, para que possam atualizar seu contexto.

695 

696#### Controle de decisão

697 

698Nem todo evento suporta bloqueio ou controle de comportamento através de JSON. Os eventos que fazem cada um usam um conjunto diferente de campos para expressar essa decisão. Use esta tabela como referência rápida antes de escrever um hook:

699 

700| Eventos | Padrão de decisão | Campos-chave |

701| :---------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

702| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` de nível superior | `decision: "block"`, `reason` |

703| TeammateIdle, TaskCreated, TaskCompleted | Código de saída ou `continue: false` | Código de saída 2 bloqueia a ação com feedback de stderr. JSON `{"continue": false, "stopReason": "..."}` também para o colega inteiramente, correspondendo ao comportamento do hook `Stop` |

704| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

705| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |

706| PermissionDenied | `hookSpecificOutput` | `retry: true` diz ao modelo que pode tentar novamente a chamada de ferramenta negada |

707| WorktreeCreate | retorno de caminho | Hook de comando imprime caminho em stdout; hook HTTP retorna `hookSpecificOutput.worktreePath`. Falha de hook ou caminho ausente falha na criação |

708| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valores de campo de formulário para accept) |

709| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valores de campo de formulário override) |

710| WorktreeRemove, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, FileChanged | Nenhum | Sem controle de decisão. Usado para efeitos colaterais como logging ou limpeza |

711 

712Aqui estão exemplos de cada padrão em ação:

713 

714<Tabs>

715 <Tab title="Decisão de nível superior">

716 Usado por `UserPromptSubmit`, `UserPromptExpansion`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`, `Stop`, `SubagentStop`, `ConfigChange` e `PreCompact`. O único valor é `"block"`. Para permitir que a ação prossiga, omita `decision` do seu JSON ou saia 0 sem qualquer JSON:

717 

718 ```json theme={null}

719 {

720 "decision": "block",

721 "reason": "Test suite must pass before proceeding"

722 }

723 ```

724 </Tab>

725 

726 <Tab title="PreToolUse">

727 Usa `hookSpecificOutput` para controle mais rico: permitir, negar ou escalar para o usuário. Você também pode modificar a entrada da ferramenta antes de executar ou injetar contexto adicional para Claude. Consulte [Controle de decisão PreToolUse](#pretooluse-decision-control) para o conjunto completo de opções.

728 

729 ```json theme={null}

730 {

731 "hookSpecificOutput": {

732 "hookEventName": "PreToolUse",

733 "permissionDecision": "deny",

734 "permissionDecisionReason": "Database writes are not allowed"

735 }

736 }

737 ```

738 </Tab>

739 

740 <Tab title="PermissionRequest">

741 Usa `hookSpecificOutput` para permitir ou negar uma solicitação de permissão em nome do usuário. Ao permitir, você também pode modificar a entrada da ferramenta ou aplicar regras de permissão para que o usuário não seja solicitado novamente. Consulte [Controle de decisão PermissionRequest](#permissionrequest-decision-control) para o conjunto completo de opções.

742 

743 ```json theme={null}

744 {

745 "hookSpecificOutput": {

746 "hookEventName": "PermissionRequest",

747 "decision": {

748 "behavior": "allow",

749 "updatedInput": {

750 "command": "npm run lint"

751 }

752 }

753 }

754 }

755 ```

756 </Tab>

757</Tabs>

758 

759Para exemplos estendidos incluindo validação de comando Bash, filtragem de prompt e scripts de aprovação automática, consulte [O que você pode automatizar](/pt/hooks-guide#what-you-can-automate) no guia e a [implementação de referência do validador de comando Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

760 

761## Eventos de hook

762 

763Cada evento corresponde a um ponto no ciclo de vida do Claude Code onde hooks podem executar. As seções abaixo são ordenadas para corresponder ao ciclo de vida: da configuração de sessão através do loop agentic até o fim da sessão. Cada seção descreve quando o evento dispara, quais matchers suporta, a entrada JSON que recebe e como controlar comportamento através de saída.

764 

765### SessionStart

766 

767Executa quando Claude Code inicia uma nova sessão ou retoma uma sessão existente. Útil para carregar contexto de desenvolvimento como problemas existentes ou mudanças recentes em seu codebase, ou configurar variáveis de ambiente. Para contexto estático que não requer um script, use [CLAUDE.md](/pt/memory) em vez disso.

768 

769SessionStart executa em cada sessão, então mantenha esses hooks rápidos. Apenas hooks `type: "command"` e `type: "mcp_tool"` são suportados.

770 

771O valor do matcher corresponde a como a sessão foi iniciada:

772 

773| Matcher | Quando dispara |

774| :-------- | :------------------------------------ |

775| `startup` | Nova sessão |

776| `resume` | `--resume`, `--continue` ou `/resume` |

777| `clear` | `/clear` |

778| `compact` | Compactação automática ou manual |

779 

780#### Entrada de SessionStart

781 

782Além dos [campos de entrada comuns](#common-input-fields), hooks SessionStart recebem `source`, `model` e opcionalmente `agent_type`. O campo `source` indica como a sessão começou: `"startup"` para novas sessões, `"resume"` para sessões retomadas, `"clear"` após `/clear` ou `"compact"` após compactação. O campo `model` contém o identificador do modelo. Se você iniciar Claude Code com `claude --agent <name>`, um campo `agent_type` contém o nome do agente.

783 

784```json theme={null}

785{

786 "session_id": "abc123",

787 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

788 "cwd": "/Users/...",

789 "hook_event_name": "SessionStart",

790 "source": "startup",

791 "model": "claude-sonnet-4-6"

792}

793```

794 

795#### Controle de decisão de SessionStart

796 

797Qualquer texto que seu script de hook imprima em stdout é adicionado como contexto para Claude. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar esses campos específicos do evento:

798 

799| Campo | Descrição |

800| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

801| `additionalContext` | String adicionada ao contexto de Claude no início da conversa, antes do primeiro prompt. Consulte [Adicionar contexto para Claude](#add-context-for-claude) para saber como o texto é entregue e o que colocar nele |

802 

803```json theme={null}

804{

805 "hookSpecificOutput": {

806 "hookEventName": "SessionStart",

807 "additionalContext": "Branch atual: feat/auth-refactor\nMudanças não confirmadas: src/auth.ts, src/login.tsx\nProblema ativo: #4211 Migrar para OAuth2"

808 }

809}

810```

811 

812Como stdout simples já chega ao Claude para este evento, um hook que apenas carrega contexto pode imprimir em stdout diretamente sem construir JSON. Use o formulário JSON quando você precisar combinar contexto com outros campos como `suppressOutput`.

813 

814#### Persistir variáveis de ambiente

815 

816Hooks SessionStart têm acesso à variável de ambiente `CLAUDE_ENV_FILE`, que fornece um caminho de arquivo onde você pode persistir variáveis de ambiente para comandos Bash subsequentes.

817 

818Para definir variáveis de ambiente individuais, escreva declarações `export` para `CLAUDE_ENV_FILE`. Use append (`>>`) para preservar variáveis definidas por outros hooks:

819 

820```bash theme={null}

821#!/bin/bash

822 

823if [ -n "$CLAUDE_ENV_FILE" ]; then

824 echo 'export NODE_ENV=production' >> "$CLAUDE_ENV_FILE"

825 echo 'export DEBUG_LOG=true' >> "$CLAUDE_ENV_FILE"

826 echo 'export PATH="$PATH:./node_modules/.bin"' >> "$CLAUDE_ENV_FILE"

827fi

828 

829exit 0

830```

831 

832Para capturar todas as mudanças de ambiente de comandos de configuração, compare as variáveis exportadas antes e depois:

833 

834```bash theme={null}

835#!/bin/bash

836 

837ENV_BEFORE=$(export -p | sort)

838 

839# Execute seus comandos de configuração que modificam o ambiente

840source ~/.nvm/nvm.sh

841nvm use 20

842 

843if [ -n "$CLAUDE_ENV_FILE" ]; then

844 ENV_AFTER=$(export -p | sort)

845 comm -13 <(echo "$ENV_BEFORE") <(echo "$ENV_AFTER") >> "$CLAUDE_ENV_FILE"

846fi

847 

848exit 0

849```

850 

851Qualquer variável escrita para este arquivo estará disponível em todos os comandos Bash subsequentes que o Claude Code executa durante a sessão.

852 

853<Note>

854 `CLAUDE_ENV_FILE` está disponível para SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) e [FileChanged](#filechanged) hooks. Outros tipos de hook não têm acesso a esta variável.

855</Note>

856 

857### Setup

858 

859Dispara apenas quando você lança Claude Code com `--init-only`, ou com `--init` ou `--maintenance` em modo de impressão (`-p`). Não dispara na inicialização normal. Use-o para instalação de dependência única ou limpeza agendada que você aciona explicitamente de CI ou scripts, separado da inicialização de sessão normal. Para inicialização por sessão, use [SessionStart](#sessionstart) em vez disso.

860 

861O valor do matcher corresponde à flag CLI que acionou o hook:

862 

863| Matcher | Quando dispara |

864| :------------ | :----------------------------------------- |

865| `init` | `claude --init-only` ou `claude -p --init` |

866| `maintenance` | `claude -p --maintenance` |

867 

868`--init-only` executa hooks Setup e hooks SessionStart com o matcher `startup`, depois sai sem iniciar uma conversa. `--init` e `--maintenance` disparam hooks Setup apenas quando combinados com `-p` (modo de impressão); em uma sessão interativa essas duas flags atualmente não disparam hooks Setup.

869 

870Porque Setup não dispara em cada lançamento, um plugin que precisa de uma dependência instalada não pode confiar apenas em Setup. O padrão prático é verificar a dependência no primeiro uso e instalar se ausente, por exemplo um hook ou skill que testa `${CLAUDE_PLUGIN_DATA}/node_modules` e executa `npm install` se ausente. Consulte o [diretório de dados persistentes](/pt/plugins-reference#persistent-data-directory) para onde armazenar dependências instaladas.

871 

872#### Entrada de Setup

873 

874Além dos [campos de entrada comuns](#common-input-fields), hooks Setup recebem um campo `trigger` definido como `"init"` ou `"maintenance"`:

875 

876```json theme={null}

877{

878 "session_id": "abc123",

879 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

880 "cwd": "/Users/...",

881 "hook_event_name": "Setup",

882 "trigger": "init"

883}

884```

885 

886#### Controle de decisão de Setup

887 

888Hooks Setup não podem bloquear. Na saída de código 2, stderr é mostrado ao usuário; em qualquer outro código de saída não-zero, stderr aparece apenas quando você lança com `--verbose`. Em ambos os casos a execução continua. Para passar informação para o contexto de Claude, retorne `additionalContext` em saída JSON; stdout simples é escrito apenas no log de debug. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar esses campos específicos do evento:

889 

890| Campo | Descrição |

891| :------------------ | :-------------------------------------------------------------------------------------- |

892| `additionalContext` | String adicionada ao contexto de Claude. Os valores de múltiplos hooks são concatenados |

893 

894```json theme={null}

895{

896 "hookSpecificOutput": {

897 "hookEventName": "Setup",

898 "additionalContext": "Dependências instaladas: node_modules, .venv"

899 }

900}

901```

902 

903Hooks Setup têm acesso a `CLAUDE_ENV_FILE`. Variáveis escritas para esse arquivo persistem em comandos Bash subsequentes para a sessão, assim como em [hooks SessionStart](#persist-environment-variables). Apenas hooks `type: "command"` e `type: "mcp_tool"` são suportados.

904 

905### InstructionsLoaded

906 

907Dispara quando um arquivo `CLAUDE.md` ou `.claude/rules/*.md` é carregado em contexto. Este evento dispara na inicialização da sessão para arquivos carregados com entusiasmo e novamente mais tarde quando arquivos são carregados preguiçosamente, por exemplo quando Claude acessa um subdiretório que contém um `CLAUDE.md` aninhado ou quando regras condicionais com frontmatter `paths:` correspondem. O hook não suporta bloqueio ou controle de decisão. Executa assincronamente para fins de observabilidade.

908 

909O matcher executa contra `load_reason`. Por exemplo, use `"matcher": "session_start"` para disparar apenas para arquivos carregados na inicialização da sessão, ou `"matcher": "path_glob_match|nested_traversal"` para disparar apenas para carregamentos preguiçosos.

910 

911#### Entrada de InstructionsLoaded

912 

913Além dos [campos de entrada comuns](#common-input-fields), hooks InstructionsLoaded recebem esses campos:

914 

915| Campo | Descrição |

916| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

917| `file_path` | Caminho absoluto para o arquivo de instrução que foi carregado |

918| `memory_type` | Escopo do arquivo: `"User"`, `"Project"`, `"Local"` ou `"Managed"` |

919| `load_reason` | Por que o arquivo foi carregado: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` ou `"compact"`. O valor `"compact"` dispara quando arquivos de instrução são re-carregados após um evento de compactação |

920| `globs` | Padrões de glob de caminho do frontmatter `paths:` do arquivo, se houver. Presente apenas para carregamentos `path_glob_match` |

921| `trigger_file_path` | Caminho para o arquivo cujo acesso acionou este carregamento, para carregamentos preguiçosos |

922| `parent_file_path` | Caminho para o arquivo de instrução pai que incluiu este, para carregamentos `include` |

923 

924```json theme={null}

925{

926 "session_id": "abc123",

927 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

928 "cwd": "/Users/my-project",

929 "hook_event_name": "InstructionsLoaded",

930 "file_path": "/Users/my-project/CLAUDE.md",

931 "memory_type": "Project",

932 "load_reason": "session_start"

933}

934```

935 

936#### Controle de decisão de InstructionsLoaded

937 

938Hooks InstructionsLoaded não têm controle de decisão. Eles não podem bloquear ou modificar carregamento de instrução. Use este evento para logging de auditoria, rastreamento de conformidade ou observabilidade.

939 

940### UserPromptSubmit

941 

942Executa quando o usuário submete um prompt, antes do Claude processá-lo. Isso permite que você adicione contexto adicional baseado no prompt/conversa, valide prompts ou bloqueie certos tipos de prompts.

943 

944#### Entrada de UserPromptSubmit

945 

946Além dos [campos de entrada comuns](#common-input-fields), hooks UserPromptSubmit recebem o campo `prompt` contendo o texto que o usuário submeteu.

947 

948```json theme={null}

949{

950 "session_id": "abc123",

951 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

952 "cwd": "/Users/...",

953 "permission_mode": "default",

954 "hook_event_name": "UserPromptSubmit",

955 "prompt": "Write a function to calculate the factorial of a number"

956}

957```

958 

959#### Controle de decisão de UserPromptSubmit

960 

961Hooks `UserPromptSubmit` podem controlar se um prompt de usuário é processado e adicionar contexto. Todos os [campos de saída JSON](#json-output) estão disponíveis.

962 

963Existem duas formas de adicionar contexto à conversa na saída 0:

964 

965* **Stdout de texto simples**: qualquer texto não-JSON escrito em stdout é adicionado como contexto

966* **JSON com `additionalContext`**: use o formato JSON abaixo para mais controle. O campo `additionalContext` é adicionado como contexto

967 

968Stdout simples é mostrado como saída de hook na transcrição. O campo `additionalContext` é adicionado mais discretamente.

969 

970Para bloquear um prompt, retorne um objeto JSON com `decision` definido para `"block"`:

971 

972| Campo | Descrição |

973| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |

974| `decision` | `"block"` previne o prompt de ser processado e o apaga do contexto. Omita para permitir que o prompt prossiga |

975| `reason` | Mostrado ao usuário quando `decision` é `"block"`. Não adicionado ao contexto |

976| `additionalContext` | String adicionada ao contexto de Claude junto com o prompt submetido. Consulte [Adicionar contexto para Claude](#add-context-for-claude) |

977| `sessionTitle` | Define o título da sessão, mesmo efeito que `/rename`. Use para nomear sessões automaticamente baseado no conteúdo do prompt |

978 

979```json theme={null}

980{

981 "decision": "block",

982 "reason": "Explanation for decision",

983 "hookSpecificOutput": {

984 "hookEventName": "UserPromptSubmit",

985 "additionalContext": "My additional context here",

986 "sessionTitle": "My session title"

987 }

988}

989```

990 

991<Note>

992 O formato JSON não é obrigatório para casos simples. Para adicionar contexto, você pode imprimir texto simples em stdout com saída 0. Use JSON quando precisar bloquear prompts ou quiser controle mais estruturado.

993</Note>

994 

995### UserPromptExpansion

996 

997Executa quando um comando de barra invertida digitado pelo usuário se expande em um prompt antes de chegar ao Claude. Use isso para bloquear comandos específicos de invocação direta, injetar contexto para uma skill particular ou registrar quais comandos os usuários invocam. Por exemplo, um hook correspondendo a `deploy` pode bloquear `/deploy` a menos que um arquivo de aprovação esteja presente, ou um hook correspondendo a uma skill de revisão pode anexar a lista de verificação de revisão da equipe como `additionalContext`.

998 

999Este evento cobre o caminho que `PreToolUse` não cobre: um hook `PreToolUse` correspondendo à ferramenta `Skill` dispara apenas quando Claude chama a ferramenta, mas digitar `/skillname` diretamente ignora `PreToolUse`. `UserPromptExpansion` dispara nesse caminho direto.

1000 

1001Corresponde em `command_name`. Deixe o matcher vazio para disparar em cada comando de barra invertida do tipo prompt.

1002 

1003#### Entrada de UserPromptExpansion

1004 

1005Além dos [campos de entrada comuns](#common-input-fields), hooks UserPromptExpansion recebem `expansion_type`, `command_name`, `command_args`, `command_source` e a string `prompt` original. O campo `expansion_type` é `slash_command` para skills e comandos personalizados, ou `mcp_prompt` para prompts de servidor MCP.

1006 

1007```json theme={null}

1008{

1009 "session_id": "abc123",

1010 "transcript_path": "/Users/.../00893aaf.jsonl",

1011 "cwd": "/Users/...",

1012 "permission_mode": "default",

1013 "hook_event_name": "UserPromptExpansion",

1014 "expansion_type": "slash_command",

1015 "command_name": "example-skill",

1016 "command_args": "arg1 arg2",

1017 "command_source": "plugin",

1018 "prompt": "/example-skill arg1 arg2"

1019}

1020```

1021 

1022#### Controle de decisão de UserPromptExpansion

1023 

1024Hooks `UserPromptExpansion` podem bloquear a expansão ou adicionar contexto. Todos os [campos de saída JSON](#json-output) estão disponíveis.

1025 

1026| Campo | Descrição |

1027| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |

1028| `decision` | `"block"` previne o comando de barra invertida de se expandir. Omita para permitir que prossiga |

1029| `reason` | Mostrado ao usuário quando `decision` é `"block"` |

1030| `additionalContext` | String adicionada ao contexto de Claude junto com o prompt expandido. Consulte [Adicionar contexto para Claude](#add-context-for-claude) |

1031 

1032```json theme={null}

1033{

1034 "decision": "block",

1035 "reason": "This slash command is not available",

1036 "hookSpecificOutput": {

1037 "hookEventName": "UserPromptExpansion",

1038 "additionalContext": "Additional context for this expansion"

1039 }

1040}

1041```

1042 

1043### PreToolUse

1044 

1045Executa após Claude criar parâmetros de ferramenta e antes de processar a chamada da ferramenta. Corresponde no nome da ferramenta: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` e qualquer [nome de ferramenta MCP](#match-mcp-tools).

1046 

1047Use [Controle de decisão PreToolUse](#pretooluse-decision-control) para permitir, negar, pedir ou adiar a chamada da ferramenta.

1048 

1049#### Entrada de PreToolUse

1050 

1051Além dos [campos de entrada comuns](#common-input-fields), hooks PreToolUse recebem `tool_name`, `tool_input` e `tool_use_id`. Os campos `tool_input` dependem da ferramenta:

1052 

1053##### Bash

1054 

1055Executa comandos shell.

1056 

1057| Campo | Tipo | Exemplo | Descrição |

1058| :------------------ | :------ | :----------------- | :--------------------------------------- |

1059| `command` | string | `"npm test"` | O comando shell a executar |

1060| `description` | string | `"Run test suite"` | Descrição opcional do que o comando faz |

1061| `timeout` | number | `120000` | Timeout opcional em milissegundos |

1062| `run_in_background` | boolean | `false` | Se o comando deve executar em background |

1063 

1064##### Write

1065 

1066Cria ou sobrescreve um arquivo.

1067 

1068| Campo | Tipo | Exemplo | Descrição |

1069| :---------- | :----- | :-------------------- | :----------------------------------------- |

1070| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a escrever |

1071| `content` | string | `"file content"` | Conteúdo a escrever no arquivo |

1072 

1073##### Edit

1074 

1075Substitui uma string em um arquivo existente.

1076 

1077| Campo | Tipo | Exemplo | Descrição |

1078| :------------ | :------ | :-------------------- | :--------------------------------------- |

1079| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a editar |

1080| `old_string` | string | `"original text"` | Texto a encontrar e substituir |

1081| `new_string` | string | `"replacement text"` | Texto de substituição |

1082| `replace_all` | boolean | `false` | Se deve substituir todas as ocorrências |

1083 

1084##### Read

1085 

1086Lê conteúdo de arquivo.

1087 

1088| Campo | Tipo | Exemplo | Descrição |

1089| :---------- | :----- | :-------------------- | :------------------------------------------ |

1090| `file_path` | string | `"/path/to/file.txt"` | Caminho absoluto para o arquivo a ler |

1091| `offset` | number | `10` | Número de linha opcional para começar a ler |

1092| `limit` | number | `50` | Número opcional de linhas a ler |

1093 

1094##### Glob

1095 

1096Encontra arquivos correspondendo a um padrão glob.

1097 

1098| Campo | Tipo | Exemplo | Descrição |

1099| :-------- | :----- | :--------------- | :------------------------------------------------------------------------- |

1100| `pattern` | string | `"**/*.ts"` | Padrão glob para corresponder arquivos contra |

1101| `path` | string | `"/path/to/dir"` | Diretório opcional para pesquisar. Padrão para diretório de trabalho atual |

1102 

1103##### Grep

1104 

1105Pesquisa conteúdo de arquivo com expressões regulares.

1106 

1107| Campo | Tipo | Exemplo | Descrição |

1108| :------------ | :------ | :--------------- | :----------------------------------------------------------------------------------- |

1109| `pattern` | string | `"TODO.*fix"` | Padrão de expressão regular para pesquisar |

1110| `path` | string | `"/path/to/dir"` | Arquivo ou diretório opcional para pesquisar |

1111| `glob` | string | `"*.ts"` | Padrão glob opcional para filtrar arquivos |

1112| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"` ou `"count"`. Padrão para `"files_with_matches"` |

1113| `-i` | boolean | `true` | Pesquisa insensível a maiúsculas |

1114| `multiline` | boolean | `false` | Ativar correspondência multilinha |

1115 

1116##### WebFetch

1117 

1118Busca e processa conteúdo web.

1119 

1120| Campo | Tipo | Exemplo | Descrição |

1121| :------- | :----- | :---------------------------- | :------------------------------------ |

1122| `url` | string | `"https://example.com/api"` | URL para buscar conteúdo |

1123| `prompt` | string | `"Extract the API endpoints"` | Prompt a executar no conteúdo buscado |

1124 

1125##### WebSearch

1126 

1127Pesquisa a web.

1128 

1129| Campo | Tipo | Exemplo | Descrição |

1130| :---------------- | :----- | :----------------------------- | :-------------------------------------------------- |

1131| `query` | string | `"react hooks best practices"` | Consulta de pesquisa |

1132| `allowed_domains` | array | `["docs.example.com"]` | Opcional: incluir apenas resultados desses domínios |

1133| `blocked_domains` | array | `["spam.example.com"]` | Opcional: excluir resultados desses domínios |

1134 

1135##### Agent

1136 

1137Gera um [subagente](/pt/sub-agents).

1138 

1139| Campo | Tipo | Exemplo | Descrição |

1140| :-------------- | :----- | :------------------------- | :-------------------------------------------------- |

1141| `prompt` | string | `"Find all API endpoints"` | A tarefa para o agente executar |

1142| `description` | string | `"Find API endpoints"` | Descrição curta da tarefa |

1143| `subagent_type` | string | `"Explore"` | Tipo de agente especializado a usar |

1144| `model` | string | `"sonnet"` | Alias de modelo opcional para sobrescrever o padrão |

1145 

1146##### AskUserQuestion

1147 

1148Faz ao usuário uma a quatro perguntas de múltipla escolha.

1149 

1150| Campo | Tipo | Exemplo | Descrição |

1151| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1152| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Perguntas a apresentar, cada uma com uma string `question`, `header` curto, array `options` e flag `multiSelect` opcional |

1153| `answers` | object | `{"Which framework?": "React"}` | Opcional. Mapeia texto de pergunta para rótulo de opção selecionada. Respostas multi-select juntam rótulos com vírgulas. Claude não define este campo; forneça-o via `updatedInput` para responder programaticamente |

1154 

1155#### Controle de decisão de PreToolUse

1156 

1157Hooks `PreToolUse` podem controlar se uma chamada de ferramenta prossegue. Diferentemente de outros hooks que usam um campo `decision` de nível superior, PreToolUse retorna sua decisão dentro de um objeto `hookSpecificOutput`. Isso oferece controle mais rico: quatro resultados (permitir, negar, pedir ou adiar) além da capacidade de modificar entrada de ferramenta antes da execução.

1158 

1159| Campo | Descrição |

1160| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1161| `permissionDecision` | `"allow"` ignora o prompt de permissão. `"deny"` previne a chamada da ferramenta. `"ask"` solicita ao usuário confirmar. `"defer"` sai graciosamente para que a ferramenta possa ser retomada mais tarde. [Regras de negação e pergunta](/pt/permissions#manage-permissions) ainda se aplicam independentemente do que o hook retorna |

1162| `permissionDecisionReason` | Para `"allow"` e `"ask"`, mostrado ao usuário mas não ao Claude. Para `"deny"`, mostrado ao Claude. Para `"defer"`, ignorado |

1163| `updatedInput` | Modifica os parâmetros de entrada da ferramenta antes da execução. Substitui o objeto de entrada inteiro, então inclua campos inalterados junto com os modificados. Combine com `"allow"` para aprovação automática ou `"ask"` para mostrar a entrada modificada ao usuário. Para `"defer"`, ignorado |

1164| `additionalContext` | String adicionada ao contexto de Claude junto com o resultado da ferramenta. Para `"defer"`, ignorado. Consulte [Adicionar contexto para Claude](#add-context-for-claude) |

1165 

1166Quando múltiplos hooks PreToolUse retornam decisões diferentes, a precedência é `deny` > `defer` > `ask` > `allow`.

1167 

1168Quando um hook retorna `"ask"`, o diálogo de permissão exibido ao usuário inclui um rótulo identificando de onde o hook veio: por exemplo, `[User]`, `[Project]`, `[Plugin]` ou `[Local]`. Isso ajuda os usuários a entender qual fonte de configuração está solicitando confirmação.

1169 

1170```json theme={null}

1171{

1172 "hookSpecificOutput": {

1173 "hookEventName": "PreToolUse",

1174 "permissionDecision": "allow",

1175 "permissionDecisionReason": "My reason here",

1176 "updatedInput": {

1177 "field_to_modify": "new value"

1178 },

1179 "additionalContext": "Current environment: production. Proceed with caution."

1180 }

1181}

1182```

1183 

1184`AskUserQuestion` e `ExitPlanMode` requerem interação do usuário e normalmente bloqueiam em [modo não-interativo](/pt/headless) com a flag `-p`. Retornar `permissionDecision: "allow"` junto com `updatedInput` satisfaz esse requisito: o hook lê a entrada da ferramenta de stdin, coleta a resposta através de sua própria UI e a retorna em `updatedInput` para que a ferramenta execute sem solicitar. Retornar `"allow"` sozinho não é suficiente para essas ferramentas. Para `AskUserQuestion`, ecoar de volta o array `questions` original e adicionar um objeto [`answers`](#askuserquestion) mapeando o texto de cada pergunta para a resposta escolhida.

1185 

1186<Note>

1187 PreToolUse anteriormente usava campos `decision` e `reason` de nível superior, mas esses estão deprecados para este evento. Use `hookSpecificOutput.permissionDecision` e `hookSpecificOutput.permissionDecisionReason` em vez disso. Os valores deprecados `"approve"` e `"block"` mapeiam para `"allow"` e `"deny"` respectivamente. Outros eventos como PostToolUse e Stop continuam usando `decision` e `reason` de nível superior como seu formato atual.

1188</Note>

1189 

1190#### Adiar uma chamada de ferramenta para mais tarde

1191 

1192`"defer"` é para integrações que executam `claude -p` como um subprocesso e leem sua saída JSON, como um aplicativo Agent SDK ou uma UI personalizada construída em cima do Claude Code. Permite que esse processo chamador pause Claude em uma chamada de ferramenta, colete entrada através de sua própria interface e retome onde parou. Claude Code honra este valor apenas em [modo não-interativo](/pt/headless) com a flag `-p`. Em sessões interativas ele registra um aviso e ignora o resultado do hook.

1193 

1194<Note>

1195 O valor `defer` requer Claude Code v2.1.89 ou posterior. Versões anteriores não o reconhecem e a ferramenta prossegue através do fluxo de permissão normal.

1196</Note>

1197 

1198A ferramenta `AskUserQuestion` é o caso típico: Claude quer fazer uma pergunta ao usuário, mas não há terminal para responder. A viagem de ida e volta funciona assim:

1199 

12001. Claude chama `AskUserQuestion`. O hook `PreToolUse` dispara.

12012. O hook retorna `permissionDecision: "defer"`. A ferramenta não executa. O processo sai com `stop_reason: "tool_deferred"` e a chamada de ferramenta pendente preservada na transcrição.

12023. O processo chamador lê `deferred_tool_use` do resultado SDK, superficializa a pergunta em sua própria UI e espera por uma resposta.

12034. O processo chamador executa `claude -p --resume <session-id>`. A mesma chamada de ferramenta dispara `PreToolUse` novamente.

12045. O hook retorna `permissionDecision: "allow"` com a resposta em `updatedInput`. A ferramenta executa e Claude continua.

1205 

1206O campo `deferred_tool_use` carrega o `id`, `name` e `input` da ferramenta. O `input` são os parâmetros que Claude gerou para a chamada de ferramenta, capturados antes da execução:

1207 

1208```json theme={null}

1209{

1210 "type": "result",

1211 "subtype": "success",

1212 "stop_reason": "tool_deferred",

1213 "session_id": "abc123",

1214 "deferred_tool_use": {

1215 "id": "toolu_01abc",

1216 "name": "AskUserQuestion",

1217 "input": { "questions": [{ "question": "Which framework?", "header": "Framework", "options": [{"label": "React"}, {"label": "Vue"}], "multiSelect": false }] }

1218 }

1219}

1220```

1221 

1222Não há timeout ou limite de tentativas. A sessão permanece no disco até que você a retome, sujeita à varredura de retenção [`cleanupPeriodDays`](/pt/settings#available-settings) que deleta arquivos de sessão após 30 dias por padrão. Se a resposta não estiver pronta quando você retomar, o hook pode retornar `"defer"` novamente e o processo sai da mesma forma. O processo chamador controla quando quebrar o loop eventualmente retornando `"allow"` ou `"deny"` do hook.

1223 

1224`"defer"` apenas funciona quando Claude faz uma única chamada de ferramenta no turno. Se Claude faz várias chamadas de ferramenta de uma vez, `"defer"` é ignorado com um aviso e a ferramenta prossegue através do fluxo de permissão normal. A restrição existe porque resume pode apenas re-executar uma ferramenta: não há forma de adiar uma chamada de um lote sem deixar as outras não resolvidas.

1225 

1226Se a ferramenta adiada não estiver mais disponível quando você retomar, o processo sai com `stop_reason: "tool_deferred_unavailable"` e `is_error: true` antes do hook disparar. Isso acontece quando um servidor MCP que forneceu a ferramenta não está conectado para a sessão retomada. O payload `deferred_tool_use` ainda é incluído para que você possa identificar qual ferramenta desapareceu.

1227 

1228<Warning>

1229 `--resume` não restaura o modo de permissão da sessão anterior. Passe a mesma flag `--permission-mode` na retomada que estava ativa quando a ferramenta foi adiada. Claude Code registra um aviso se os modos diferem.

1230</Warning>

1231 

1232### PermissionRequest

1233 

1234Executa quando o usuário é mostrado um diálogo de permissão.

1235Use [Controle de decisão PermissionRequest](#permissionrequest-decision-control) para permitir ou negar em nome do usuário.

1236 

1237Corresponde no nome da ferramenta, mesmos valores que PreToolUse.

1238 

1239#### Entrada de PermissionRequest

1240 

1241Hooks PermissionRequest recebem campos `tool_name` e `tool_input` como hooks PreToolUse, mas sem `tool_use_id`. Um array `permission_suggestions` opcional contém as opções "sempre permitir" que o usuário normalmente veria no diálogo de permissão. A diferença é quando o hook dispara: hooks PermissionRequest executam quando um diálogo de permissão está prestes a ser mostrado ao usuário, enquanto hooks PreToolUse executam antes da execução da ferramenta independentemente do status de permissão.

1242 

1243```json theme={null}

1244{

1245 "session_id": "abc123",

1246 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1247 "cwd": "/Users/...",

1248 "permission_mode": "default",

1249 "hook_event_name": "PermissionRequest",

1250 "tool_name": "Bash",

1251 "tool_input": {

1252 "command": "rm -rf node_modules",

1253 "description": "Remove node_modules directory"

1254 },

1255 "permission_suggestions": [

1256 {

1257 "type": "addRules",

1258 "rules": [{ "toolName": "Bash", "ruleContent": "rm -rf node_modules" }],

1259 "behavior": "allow",

1260 "destination": "localSettings"

1261 }

1262 ]

1263}

1264```

1265 

1266#### Controle de decisão de PermissionRequest

1267 

1268Hooks `PermissionRequest` podem permitir ou negar solicitações de permissão. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar um objeto `decision` com esses campos específicos do evento:

1269 

1270| Campo | Descrição |

1271| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1272| `behavior` | `"allow"` concede a permissão, `"deny"` nega. [Regras de negação e pergunta](/pt/permissions#manage-permissions) ainda são avaliadas, então um hook retornando `"allow"` não sobrescreve uma regra de negação correspondente |

1273| `updatedInput` | Apenas para `"allow"`: modifica os parâmetros de entrada da ferramenta antes da execução. Substitui o objeto de entrada inteiro, então inclua campos inalterados junto com os modificados. A entrada modificada é re-avaliada contra regras de negação e pergunta |

1274| `updatedPermissions` | Apenas para `"allow"`: array de [entradas de atualização de permissão](#permission-update-entries) a aplicar, como adicionar uma regra de permissão ou mudar o modo de permissão da sessão |

1275| `message` | Apenas para `"deny"`: diz ao Claude por que a permissão foi negada |

1276| `interrupt` | Apenas para `"deny"`: se `true`, para Claude |

1277 

1278```json theme={null}

1279{

1280 "hookSpecificOutput": {

1281 "hookEventName": "PermissionRequest",

1282 "decision": {

1283 "behavior": "allow",

1284 "updatedInput": {

1285 "command": "npm run lint"

1286 }

1287 }

1288 }

1289}

1290```

1291 

1292#### Entradas de atualização de permissão

1293 

1294O campo de saída `updatedPermissions` e o campo de entrada [`permission_suggestions`](#permissionrequest-input) ambos usam o mesmo array de objetos de entrada. Cada entrada tem um `type` que determina seus outros campos e um `destination` que controla onde a mudança é escrita.

1295 

1296| `type` | Campos | Efeito |

1297| :------------------ | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1298| `addRules` | `rules`, `behavior`, `destination` | Adiciona regras de permissão. `rules` é um array de objetos `{toolName, ruleContent?}`. Omita `ruleContent` para corresponder a toda a ferramenta. `behavior` é `"allow"`, `"deny"` ou `"ask"` |

1299| `replaceRules` | `rules`, `behavior`, `destination` | Substitui todas as regras do `behavior` dado no `destination` pelas `rules` fornecidas |

1300| `removeRules` | `rules`, `behavior`, `destination` | Remove regras correspondentes do `behavior` dado |

1301| `setMode` | `mode`, `destination` | Muda o modo de permissão. Modos válidos são `default`, `acceptEdits`, `dontAsk`, `bypassPermissions` e `plan` |

1302| `addDirectories` | `directories`, `destination` | Adiciona diretórios de trabalho. `directories` é um array de strings de caminho |

1303| `removeDirectories` | `directories`, `destination` | Remove diretórios de trabalho |

1304 

1305<Note>

1306 `setMode` com `bypassPermissions` apenas toma efeito se a sessão foi lançada com modo bypass já disponível: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` ou `permissions.defaultMode: "bypassPermissions"` em configurações, e o modo não é desabilitado por [`permissions.disableBypassPermissionsMode`](/pt/permissions#managed-settings). Caso contrário, a atualização é um no-op. `bypassPermissions` nunca é persistido como `defaultMode` independentemente de `destination`.

1307</Note>

1308 

1309O campo `destination` em cada entrada determina se a mudança fica em memória ou persiste em um arquivo de configurações.

1310 

1311| `destination` | Escreve para |

1312| :---------------- | :---------------------------------------------------- |

1313| `session` | apenas em memória, descartado quando a sessão termina |

1314| `localSettings` | `.claude/settings.local.json` |

1315| `projectSettings` | `.claude/settings.json` |

1316| `userSettings` | `~/.claude/settings.json` |

1317 

1318Um hook pode ecoar uma das `permission_suggestions` que recebeu como sua própria saída `updatedPermissions`, que é equivalente ao usuário selecionar essa opção "sempre permitir" no diálogo.

1319 

1320### PostToolUse

1321 

1322Executa imediatamente após uma ferramenta completar com sucesso.

1323 

1324Corresponde no nome da ferramenta, mesmos valores que PreToolUse.

1325 

1326#### Entrada de PostToolUse

1327 

1328Hooks `PostToolUse` disparam após uma ferramenta já ter executado com sucesso. A entrada inclui tanto `tool_input`, os argumentos enviados para a ferramenta, quanto `tool_response`, o resultado que retornou. O esquema exato para ambos depende da ferramenta.

1329 

1330```json theme={null}

1331{

1332 "session_id": "abc123",

1333 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1334 "cwd": "/Users/...",

1335 "permission_mode": "default",

1336 "hook_event_name": "PostToolUse",

1337 "tool_name": "Write",

1338 "tool_input": {

1339 "file_path": "/path/to/file.txt",

1340 "content": "file content"

1341 },

1342 "tool_response": {

1343 "filePath": "/path/to/file.txt",

1344 "success": true

1345 },

1346 "tool_use_id": "toolu_01ABC123...",

1347 "duration_ms": 12

1348}

1349```

1350 

1351| Campo | Descrição |

1352| :------------ | :------------------------------------------------------------------------------------------------------------------------ |

1353| `duration_ms` | Opcional. Tempo de execução da ferramenta em milissegundos. Exclui tempo gasto em prompts de permissão e hooks PreToolUse |

1354 

1355#### Controle de decisão de PostToolUse

1356 

1357Hooks `PostToolUse` podem fornecer feedback ao Claude após execução de ferramenta. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:

1358 

1359| Campo | Descrição |

1360| :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |

1361| `decision` | `"block"` solicita ao Claude com a `reason`. Omita para permitir que a ação prossiga |

1362| `reason` | Explicação mostrada ao Claude quando `decision` é `"block"` |

1363| `additionalContext` | String adicionada ao contexto de Claude junto com o resultado da ferramenta. Consulte [Adicionar contexto para Claude](#add-context-for-claude) |

1364| `updatedToolOutput` | Substitui a saída da ferramenta pelo valor fornecido antes de ser enviado ao Claude. O valor deve corresponder à forma de saída da ferramenta |

1365| `updatedMCPToolOutput` | Substitui a saída apenas para [ferramentas MCP](#match-mcp-tools). Prefira `updatedToolOutput`, que funciona para todas as ferramentas |

1366 

1367O exemplo abaixo substitui a saída de uma chamada `Bash`. O valor de substituição corresponde à forma de saída da ferramenta `Bash`:

1368 

1369```json theme={null}

1370{

1371 "hookSpecificOutput": {

1372 "hookEventName": "PostToolUse",

1373 "additionalContext": "Additional information for Claude",

1374 "updatedToolOutput": {

1375 "stdout": "[redacted]",

1376 "stderr": "",

1377 "interrupted": false,

1378 "isImage": false

1379 }

1380 }

1381}

1382```

1383 

1384<Warning>

1385 `updatedToolOutput` apenas muda o que Claude vê. A ferramenta já executou no momento em que o hook dispara, então qualquer arquivo escrito, comandos executados ou requisições de rede enviadas já tiveram efeito. Telemetria como spans de ferramentas OpenTelemetry e eventos de análise também capturam a saída original antes do hook executar. Para prevenir ou modificar uma chamada de ferramenta antes de executar, use um hook [PreToolUse](#pretooluse) em vez disso.

1386 

1387 O valor de substituição deve corresponder à forma de saída da ferramenta. Ferramentas integradas retornam objetos estruturados em vez de strings simples. Por exemplo, `Bash` retorna um objeto com campos `stdout`, `stderr`, `interrupted` e `isImage`. Para ferramentas integradas, um valor que não corresponde ao esquema de saída da ferramenta é ignorado e a saída original é usada. A saída de ferramenta MCP é passada sem validação de esquema. Remover detalhes de erro que Claude precisa pode fazer com que ele prossiga em uma suposição falsa.

1388</Warning>

1389 

1390### PostToolUseFailure

1391 

1392Executa quando uma execução de ferramenta falha. Este evento dispara para chamadas de ferramenta que lançam erros ou retornam resultados de falha. Use isso para registrar falhas, enviar alertas ou fornecer feedback corretivo ao Claude.

1393 

1394Corresponde no nome da ferramenta, mesmos valores que PreToolUse.

1395 

1396#### Entrada de PostToolUseFailure

1397 

1398Hooks PostToolUseFailure recebem os mesmos campos `tool_name` e `tool_input` que PostToolUse, junto com informações de erro como campos de nível superior:

1399 

1400```json theme={null}

1401{

1402 "session_id": "abc123",

1403 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1404 "cwd": "/Users/...",

1405 "permission_mode": "default",

1406 "hook_event_name": "PostToolUseFailure",

1407 "tool_name": "Bash",

1408 "tool_input": {

1409 "command": "npm test",

1410 "description": "Run test suite"

1411 },

1412 "tool_use_id": "toolu_01ABC123...",

1413 "error": "Command exited with non-zero status code 1",

1414 "is_interrupt": false,

1415 "duration_ms": 4187

1416}

1417```

1418 

1419| Campo | Descrição |

1420| :------------- | :------------------------------------------------------------------------------------------------------------------------ |

1421| `error` | String descrevendo o que deu errado |

1422| `is_interrupt` | Boolean opcional indicando se a falha foi causada por interrupção do usuário |

1423| `duration_ms` | Opcional. Tempo de execução da ferramenta em milissegundos. Exclui tempo gasto em prompts de permissão e hooks PreToolUse |

1424 

1425#### Controle de decisão de PostToolUseFailure

1426 

1427Hooks `PostToolUseFailure` podem fornecer contexto ao Claude após falha de ferramenta. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:

1428 

1429| Campo | Descrição |

1430| :------------------ | :--------------------------------------------------------------------------------------------------------------------------- |

1431| `additionalContext` | String adicionada ao contexto de Claude junto com o erro. Consulte [Adicionar contexto para Claude](#add-context-for-claude) |

1432 

1433```json theme={null}

1434{

1435 "hookSpecificOutput": {

1436 "hookEventName": "PostToolUseFailure",

1437 "additionalContext": "Additional information about the failure for Claude"

1438 }

1439}

1440```

1441 

1442### PostToolBatch

1443 

1444Executa uma vez após cada chamada de ferramenta em um lote ter sido resolvida, antes do Claude Code enviar a próxima solicitação para o modelo. `PostToolUse` dispara uma vez por ferramenta, o que significa que dispara concorrentemente quando Claude faz chamadas de ferramenta paralelas. `PostToolBatch` dispara exatamente uma vez com o lote completo, então é o lugar certo para injetar contexto que depende do conjunto de ferramentas que executaram em vez de em qualquer ferramenta única. Não há matcher para este evento.

1445 

1446#### Entrada de PostToolBatch

1447 

1448Além dos [campos de entrada comuns](#common-input-fields), hooks PostToolBatch recebem `tool_calls`, um array descrevendo cada chamada de ferramenta no lote:

1449 

1450```json theme={null}

1451{

1452 "session_id": "abc123",

1453 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1454 "cwd": "/Users/...",

1455 "permission_mode": "default",

1456 "hook_event_name": "PostToolBatch",

1457 "tool_calls": [

1458 {

1459 "tool_name": "Read",

1460 "tool_input": {"file_path": "/.../ledger/accounts.py"},

1461 "tool_use_id": "toolu_01...",

1462 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1463 },

1464 {

1465 "tool_name": "Read",

1466 "tool_input": {"file_path": "/.../ledger/transactions.py"},

1467 "tool_use_id": "toolu_02...",

1468 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1469 }

1470 ]

1471}

1472```

1473 

1474`tool_response` contém o mesmo conteúdo que o modelo recebe no bloco `tool_result` correspondente. O valor é uma string serializada ou array de bloco de conteúdo, exatamente como a ferramenta o emitiu. Para `Read`, isso significa texto com prefixo de número de linha em vez de conteúdo de arquivo bruto. Respostas podem ser grandes, então analise apenas os campos que você precisa.

1475 

1476<Note>

1477 A forma `tool_response` difere da de `PostToolUse`. `PostToolUse` passa o objeto `Output` estruturado da ferramenta, como `{filePath: "...", success: true}` para `Write`; `PostToolBatch` passa o conteúdo `tool_result` serializado que o modelo vê.

1478</Note>

1479 

1480#### Controle de decisão de PostToolBatch

1481 

1482Hooks `PostToolBatch` podem injetar contexto para Claude. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:

1483 

1484| Campo | Descrição |

1485| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1486| `additionalContext` | String de contexto injetada uma vez antes da próxima chamada do modelo. Consulte [Adicionar contexto para Claude](#add-context-for-claude) para detalhes de entrega, o que colocar nele e como sessões retomadas lidam com valores passados |

1487 

1488```json theme={null}

1489{

1490 "hookSpecificOutput": {

1491 "hookEventName": "PostToolBatch",

1492 "additionalContext": "These files are part of the ledger module. Run pytest before marking the task complete."

1493 }

1494}

1495```

1496 

1497Retornar `decision: "block"` ou `continue: false` para o loop agentic antes da próxima chamada do modelo.

1498 

1499### PermissionDenied

1500 

1501Executa quando o classificador de [modo automático](/pt/permission-modes#eliminate-prompts-with-auto-mode) nega uma chamada de ferramenta. Este hook apenas dispara em modo automático: não executa quando você nega manualmente um diálogo de permissão, quando um hook `PreToolUse` bloqueia uma chamada ou quando uma regra `deny` corresponde. Use-o para registrar negações de classificador, ajustar configuração ou dizer ao modelo que pode tentar novamente a chamada de ferramenta.

1502 

1503Corresponde no nome da ferramenta, mesmos valores que PreToolUse.

1504 

1505#### Entrada de PermissionDenied

1506 

1507Além dos [campos de entrada comuns](#common-input-fields), hooks PermissionDenied recebem `tool_name`, `tool_input`, `tool_use_id` e `reason`.

1508 

1509```json theme={null}

1510{

1511 "session_id": "abc123",

1512 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1513 "cwd": "/Users/...",

1514 "permission_mode": "auto",

1515 "hook_event_name": "PermissionDenied",

1516 "tool_name": "Bash",

1517 "tool_input": {

1518 "command": "rm -rf /tmp/build",

1519 "description": "Clean build directory"

1520 },

1521 "tool_use_id": "toolu_01ABC123...",

1522 "reason": "Auto mode denied: command targets a path outside the project"

1523}

1524```

1525 

1526| Campo | Descrição |

1527| :------- | :---------------------------------------------------------------------------- |

1528| `reason` | A explicação do classificador para por que a chamada de ferramenta foi negada |

1529 

1530#### Controle de decisão de PermissionDenied

1531 

1532Hooks PermissionDenied podem dizer ao modelo que pode tentar novamente a chamada de ferramenta negada. Retorne um objeto JSON com `hookSpecificOutput.retry` definido para `true`:

1533 

1534```json theme={null}

1535{

1536 "hookSpecificOutput": {

1537 "hookEventName": "PermissionDenied",

1538 "retry": true

1539 }

1540}

1541```

1542 

1543Quando `retry` é `true`, Claude Code adiciona uma mensagem à conversa dizendo ao modelo que pode tentar novamente a chamada de ferramenta. A negação em si não é revertida. Se seu hook não retorna JSON ou retorna `retry: false`, a negação permanece e o modelo recebe a mensagem de rejeição original.

1544 

1545### Notification

1546 

1547Executa quando Claude Code envia notificações. Corresponde no tipo de notificação: `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`. Omita o matcher para executar hooks para todos os tipos de notificação.

1548 

1549Use matchers separados para executar diferentes manipuladores dependendo do tipo de notificação. Esta configuração aciona um script de alerta específico de permissão quando Claude precisa de aprovação de permissão e uma notificação diferente quando Claude está ocioso:

1550 

1551```json theme={null}

1552{

1553 "hooks": {

1554 "Notification": [

1555 {

1556 "matcher": "permission_prompt",

1557 "hooks": [

1558 {

1559 "type": "command",

1560 "command": "/path/to/permission-alert.sh"

1561 }

1562 ]

1563 },

1564 {

1565 "matcher": "idle_prompt",

1566 "hooks": [

1567 {

1568 "type": "command",

1569 "command": "/path/to/idle-notification.sh"

1570 }

1571 ]

1572 }

1573 ]

1574 }

1575}

1576```

1577 

1578#### Entrada de Notification

1579 

1580Além dos [campos de entrada comuns](#common-input-fields), hooks Notification recebem `message` com o texto de notificação, um `title` opcional e `notification_type` indicando qual tipo disparou.

1581 

1582```json theme={null}

1583{

1584 "session_id": "abc123",

1585 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1586 "cwd": "/Users/...",

1587 "hook_event_name": "Notification",

1588 "message": "Claude needs your permission to use Bash",

1589 "title": "Permission needed",

1590 "notification_type": "permission_prompt"

1591}

1592```

1593 

1594Hooks Notification não podem bloquear ou modificar notificações. Eles são destinados a efeitos colaterais como encaminhar a notificação para um serviço externo. Os [campos de saída JSON](#json-output) comuns como `systemMessage` se aplicam.

1595 

1596### SubagentStart

1597 

1598Executa quando um subagente do Claude Code é gerado via ferramenta Agent. Suporta matchers para filtrar por nome de tipo de agente (agentes integrados como `general-purpose`, `Explore`, `Plan` ou nomes de agentes personalizados de `.claude/agents/`).

1599 

1600#### Entrada de SubagentStart

1601 

1602Além dos [campos de entrada comuns](#common-input-fields), hooks SubagentStart recebem `agent_id` com o identificador único para o subagente e `agent_type` com o nome do agente (agentes integrados como `"general-purpose"`, `"Explore"`, `"Plan"` ou nomes de agentes personalizados).

1603 

1604```json theme={null}

1605{

1606 "session_id": "abc123",

1607 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1608 "cwd": "/Users/...",

1609 "hook_event_name": "SubagentStart",

1610 "agent_id": "agent-abc123",

1611 "agent_type": "Explore"

1612}

1613```

1614 

1615Hooks SubagentStart não podem bloquear criação de subagente, mas podem injetar contexto no subagente. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, você pode retornar:

1616 

1617| Campo | Descrição |

1618| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1619| `additionalContext` | String adicionada ao contexto do subagente no início de sua conversa, antes de seu primeiro prompt. Consulte [Adicionar contexto para Claude](#add-context-for-claude) |

1620 

1621```json theme={null}

1622{

1623 "hookSpecificOutput": {

1624 "hookEventName": "SubagentStart",

1625 "additionalContext": "Follow security guidelines for this task"

1626 }

1627}

1628```

1629 

1630### SubagentStop

1631 

1632Executa quando um subagente do Claude Code terminou de responder. Corresponde no tipo de agente, mesmos valores que SubagentStart.

1633 

1634#### Entrada de SubagentStop

1635 

1636Além dos [campos de entrada comuns](#common-input-fields), hooks SubagentStop recebem `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` e `last_assistant_message`. O campo `agent_type` é o valor usado para filtragem de matcher. O `transcript_path` é a transcrição da sessão principal, enquanto `agent_transcript_path` é a própria transcrição do subagente armazenada em uma pasta `subagents/` aninhada. O campo `last_assistant_message` contém o conteúdo de texto da resposta final do subagente, então hooks podem acessá-lo sem analisar o arquivo de transcrição.

1637 

1638```json theme={null}

1639{

1640 "session_id": "abc123",

1641 "transcript_path": "~/.claude/projects/.../abc123.jsonl",

1642 "cwd": "/Users/...",

1643 "permission_mode": "default",

1644 "hook_event_name": "SubagentStop",

1645 "stop_hook_active": false,

1646 "agent_id": "def456",

1647 "agent_type": "Explore",

1648 "agent_transcript_path": "~/.claude/projects/.../abc123/subagents/agent-def456.jsonl",

1649 "last_assistant_message": "Analysis complete. Found 3 potential issues..."

1650}

1651```

1652 

1653Hooks SubagentStop usam o mesmo formato de controle de decisão que [hooks Stop](#stop-decision-control).

1654 

1655### TaskCreated

1656 

1657Executa quando uma tarefa está sendo criada via ferramenta `TaskCreate`. Use isso para impor convenções de nomenclatura, exigir descrições de tarefa ou prevenir que certas tarefas sejam criadas.

1658 

1659Quando um hook `TaskCreated` sai com código 2, a tarefa não é criada e a mensagem de stderr é alimentada de volta ao modelo como feedback. Para parar o colega inteiramente em vez de re-executá-lo, retorne JSON com `{"continue": false, "stopReason": "..."}`. Hooks TaskCreated não suportam matchers e disparam em cada ocorrência.

1660 

1661#### Entrada de TaskCreated

1662 

1663Além dos [campos de entrada comuns](#common-input-fields), hooks TaskCreated recebem `task_id`, `task_subject` e opcionalmente `task_description`, `teammate_name` e `team_name`.

1664 

1665```json theme={null}

1666{

1667 "session_id": "abc123",

1668 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1669 "cwd": "/Users/...",

1670 "permission_mode": "default",

1671 "hook_event_name": "TaskCreated",

1672 "task_id": "task-001",

1673 "task_subject": "Implement user authentication",

1674 "task_description": "Add login and signup endpoints",

1675 "teammate_name": "implementer",

1676 "team_name": "my-project"

1677}

1678```

1679 

1680| Campo | Descrição |

1681| :----------------- | :-------------------------------------------------- |

1682| `task_id` | Identificador da tarefa sendo criada |

1683| `task_subject` | Título da tarefa |

1684| `task_description` | Descrição detalhada da tarefa. Pode estar ausente |

1685| `teammate_name` | Nome do colega criando a tarefa. Pode estar ausente |

1686| `team_name` | Nome da equipe. Pode estar ausente |

1687 

1688#### Controle de decisão de TaskCreated

1689 

1690Hooks TaskCreated suportam duas formas de controlar criação de tarefa:

1691 

1692* **Código de saída 2**: a tarefa não é criada e a mensagem de stderr é alimentada de volta ao modelo como feedback.

1693* **JSON `{"continue": false, "stopReason": "..."}`**: para o colega inteiramente, correspondendo ao comportamento do hook `Stop`. O `stopReason` é mostrado ao usuário.

1694 

1695Este exemplo bloqueia tarefas cujos assuntos não seguem o formato obrigatório:

1696 

1697```bash theme={null}

1698#!/bin/bash

1699INPUT=$(cat)

1700TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1701 

1702if [[ ! "$TASK_SUBJECT" =~ ^\[TICKET-[0-9]+\] ]]; then

1703 echo "Task subject must start with a ticket number, e.g. '[TICKET-123] Add feature'" >&2

1704 exit 2

1705fi

1706 

1707exit 0

1708```

1709 

1710### TaskCompleted

1711 

1712Executa quando uma tarefa está sendo marcada como concluída. Isso dispara em duas situações: quando qualquer agente marca explicitamente uma tarefa como concluída através da ferramenta TaskUpdate, ou quando um colega de [equipe de agente](/pt/agent-teams) termina seu turno com tarefas em progresso. Use isso para impor critérios de conclusão como testes aprovados ou verificações de lint antes de uma tarefa fechar.

1713 

1714Quando um hook `TaskCompleted` sai com código 2, a tarefa não é marcada como concluída e a mensagem de stderr é alimentada de volta ao modelo como feedback. Para parar o colega inteiramente em vez de re-executá-lo, retorne JSON com `{"continue": false, "stopReason": "..."}`. Hooks TaskCompleted não suportam matchers e disparam em cada ocorrência.

1715 

1716#### Entrada de TaskCompleted

1717 

1718Além dos [campos de entrada comuns](#common-input-fields), hooks TaskCompleted recebem `task_id`, `task_subject` e opcionalmente `task_description`, `teammate_name` e `team_name`.

1719 

1720```json theme={null}

1721{

1722 "session_id": "abc123",

1723 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1724 "cwd": "/Users/...",

1725 "permission_mode": "default",

1726 "hook_event_name": "TaskCompleted",

1727 "task_id": "task-001",

1728 "task_subject": "Implement user authentication",

1729 "task_description": "Add login and signup endpoints",

1730 "teammate_name": "implementer",

1731 "team_name": "my-project"

1732}

1733```

1734 

1735| Campo | Descrição |

1736| :----------------- | :------------------------------------------------------ |

1737| `task_id` | Identificador da tarefa sendo concluída |

1738| `task_subject` | Título da tarefa |

1739| `task_description` | Descrição detalhada da tarefa. Pode estar ausente |

1740| `teammate_name` | Nome do colega completando a tarefa. Pode estar ausente |

1741| `team_name` | Nome da equipe. Pode estar ausente |

1742 

1743#### Controle de decisão de TaskCompleted

1744 

1745Hooks TaskCompleted suportam duas formas de controlar conclusão de tarefa:

1746 

1747* **Código de saída 2**: a tarefa não é marcada como concluída e a mensagem de stderr é alimentada de volta ao modelo como feedback.

1748* **JSON `{"continue": false, "stopReason": "..."}`**: para o colega inteiramente, correspondendo ao comportamento do hook `Stop`. O `stopReason` é mostrado ao usuário.

1749 

1750Este exemplo executa testes e bloqueia conclusão de tarefa se falharem:

1751 

1752```bash theme={null}

1753#!/bin/bash

1754INPUT=$(cat)

1755TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1756 

1757# Execute a suite de testes

1758if ! npm test 2>&1; then

1759 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&2

1760 exit 2

1761fi

1762 

1763exit 0

1764```

1765 

1766### Stop

1767 

1768Executa quando o agente Claude Code principal terminou de responder. Não executa se a parada ocorreu devido a uma interrupção do usuário. Erros de API disparam [StopFailure](#stopfailure) em vez disso.

1769 

1770#### Entrada de Stop

1771 

1772Além dos [campos de entrada comuns](#common-input-fields), hooks Stop recebem `stop_hook_active` e `last_assistant_message`. O campo `stop_hook_active` é `true` quando Claude Code já está continuando como resultado de um hook stop. Verifique este valor ou processe a transcrição para prevenir que Claude Code execute indefinidamente. O campo `last_assistant_message` contém o conteúdo de texto da resposta final de Claude, então hooks podem acessá-lo sem analisar o arquivo de transcrição.

1773 

1774```json theme={null}

1775{

1776 "session_id": "abc123",

1777 "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1778 "cwd": "/Users/...",

1779 "permission_mode": "default",

1780 "hook_event_name": "Stop",

1781 "stop_hook_active": true,

1782 "last_assistant_message": "I've completed the refactoring. Here's a summary..."

1783}

1784```

1785 

1786#### Controle de decisão de Stop

1787 

1788Hooks `Stop` e `SubagentStop` podem controlar se Claude continua. Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, seu script de hook pode retornar esses campos específicos do evento:

1789 

1790| Campo | Descrição |

1791| :--------- | :------------------------------------------------------------------------------ |

1792| `decision` | `"block"` previne Claude de parar. Omita para permitir que Claude pare |

1793| `reason` | Obrigatório quando `decision` é `"block"`. Diz ao Claude por que deve continuar |

1794 

1795```json theme={null}

1796{

1797 "decision": "block",

1798 "reason": "Must be provided when Claude is blocked from stopping"

1799}

1800```

1801 

1802### StopFailure

1803 

1804Executa em vez de [Stop](#stop) quando o turno termina devido a um erro de API. Saída e código de saída são ignorados. Use isso para registrar falhas, enviar alertas ou tomar ações de recuperação quando Claude não consegue completar uma resposta devido a limites de taxa, problemas de autenticação ou outros erros de API.

1805 

1806#### Entrada de StopFailure

1807 

1808Além dos [campos de entrada comuns](#common-input-fields), hooks StopFailure recebem `error`, `error_details` opcional e `last_assistant_message` opcional. O campo `error` identifica o tipo de erro e é usado para filtragem de matcher.

1809 

1810| Campo | Descrição |

1811| :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1812| `error` | Tipo de erro: `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens` ou `unknown` |

1813| `error_details` | Detalhes adicionais sobre o erro, quando disponível |

1814| `last_assistant_message` | O texto de erro renderizado mostrado na conversa. Diferentemente de `Stop` e `SubagentStop`, onde este campo contém a saída conversacional de Claude, para `StopFailure` contém a string de erro da API em si, como `"API Error: Rate limit reached"` |

1815 

1816```json theme={null}

1817{

1818 "session_id": "abc123",

1819 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1820 "cwd": "/Users/...",

1821 "hook_event_name": "StopFailure",

1822 "error": "rate_limit",

1823 "error_details": "429 Too Many Requests",

1824 "last_assistant_message": "API Error: Rate limit reached"

1825}

1826```

1827 

1828Hooks StopFailure não têm controle de decisão. Eles executam apenas para fins de notificação e logging.

1829 

1830### TeammateIdle

1831 

1832Executa quando um colega de [equipe de agente](/pt/agent-teams) está prestes a ficar ocioso após terminar seu turno. Use isso para impor portões de qualidade antes de um colega parar de trabalhar, como exigir verificações de lint aprovadas ou verificar que arquivos de saída existem.

1833 

1834Quando um hook `TeammateIdle` sai com código 2, o colega recebe a mensagem de stderr como feedback e continua trabalhando em vez de ficar ocioso. Para parar o colega inteiramente em vez de re-executá-lo, retorne JSON com `{"continue": false, "stopReason": "..."}`. Hooks TeammateIdle não suportam matchers e disparam em cada ocorrência.

1835 

1836#### Entrada de TeammateIdle

1837 

1838Além dos [campos de entrada comuns](#common-input-fields), hooks TeammateIdle recebem `teammate_name` e `team_name`.

1839 

1840```json theme={null}

1841{

1842 "session_id": "abc123",

1843 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1844 "cwd": "/Users/...",

1845 "permission_mode": "default",

1846 "hook_event_name": "TeammateIdle",

1847 "teammate_name": "researcher",

1848 "team_name": "my-project"

1849}

1850```

1851 

1852| Campo | Descrição |

1853| :-------------- | :--------------------------------------------- |

1854| `teammate_name` | Nome do colega que está prestes a ficar ocioso |

1855| `team_name` | Nome da equipe |

1856 

1857#### Controle de decisão de TeammateIdle

1858 

1859Hooks TeammateIdle suportam duas formas de controlar comportamento de colega:

1860 

1861* **Código de saída 2**: o colega recebe a mensagem de stderr como feedback e continua trabalhando em vez de ficar ocioso.

1862* **JSON `{"continue": false, "stopReason": "..."}`**: para o colega inteiramente, correspondendo ao comportamento do hook `Stop`. O `stopReason` é mostrado ao usuário.

1863 

1864Este exemplo verifica que um artefato de build existe antes de permitir que um colega fique ocioso:

1865 

1866```bash theme={null}

1867#!/bin/bash

1868 

1869if [ ! -f "./dist/output.js" ]; then

1870 echo "Build artifact missing. Run the build before stopping." >&2

1871 exit 2

1872fi

1873 

1874exit 0

1875```

1876 

1877### ConfigChange

1878 

1879Executa quando um arquivo de configuração muda durante uma sessão. Use isso para auditar mudanças de configurações, impor políticas de segurança ou bloquear modificações não autorizadas a arquivos de configuração.

1880 

1881Hooks ConfigChange disparam para mudanças em arquivos de configurações, configurações de política gerenciada e arquivos de skill. O campo `source` na entrada diz qual tipo de configuração mudou, e o campo `file_path` opcional fornece o caminho para o arquivo mudado.

1882 

1883O matcher filtra na fonte de configuração:

1884 

1885| Matcher | Quando dispara |

1886| :----------------- | :-------------------------------------------- |

1887| `user_settings` | `~/.claude/settings.json` muda |

1888| `project_settings` | `.claude/settings.json` muda |

1889| `local_settings` | `.claude/settings.local.json` muda |

1890| `policy_settings` | Configurações de política gerenciada mudam |

1891| `skills` | Um arquivo de skill em `.claude/skills/` muda |

1892 

1893Este exemplo registra todas as mudanças de configuração para auditoria de segurança:

1894 

1895```json theme={null}

1896{

1897 "hooks": {

1898 "ConfigChange": [

1899 {

1900 "hooks": [

1901 {

1902 "type": "command",

1903 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/audit-config-change.sh"

1904 }

1905 ]

1906 }

1907 ]

1908 }

1909}

1910```

1911 

1912#### Entrada de ConfigChange

1913 

1914Além dos [campos de entrada comuns](#common-input-fields), hooks ConfigChange recebem `source` e opcionalmente `file_path`. O campo `source` indica qual tipo de configuração mudou, e `file_path` fornece o caminho para o arquivo específico que foi modificado.

1915 

1916```json theme={null}

1917{

1918 "session_id": "abc123",

1919 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1920 "cwd": "/Users/...",

1921 "hook_event_name": "ConfigChange",

1922 "source": "project_settings",

1923 "file_path": "/Users/.../my-project/.claude/settings.json"

1924}

1925```

1926 

1927#### Controle de decisão de ConfigChange

1928 

1929Hooks ConfigChange podem bloquear mudanças de configuração de entrar em efeito. Use código de saída 2 ou um JSON `decision` para prevenir a mudança. Quando bloqueado, as novas configurações não são aplicadas à sessão em execução.

1930 

1931| Campo | Descrição |

1932| :--------- | :----------------------------------------------------------------------------------------- |

1933| `decision` | `"block"` previne a mudança de configuração de ser aplicada. Omita para permitir a mudança |

1934| `reason` | Explicação mostrada ao usuário quando `decision` é `"block"` |

1935 

1936```json theme={null}

1937{

1938 "decision": "block",

1939 "reason": "Configuration changes to project settings require admin approval"

1940}

1941```

1942 

1943Mudanças `policy_settings` não podem ser bloqueadas. Hooks ainda disparam para fontes `policy_settings`, então você pode usá-los para logging de auditoria, mas qualquer decisão de bloqueio é ignorada. Isso garante que configurações gerenciadas por empresa sempre entrem em efeito.

1944 

1945### CwdChanged

1946 

1947Executa quando o diretório de trabalho muda durante uma sessão, por exemplo quando Claude executa um comando `cd`. Use isso para reagir a mudanças de diretório: recarregar variáveis de ambiente, ativar toolchains específicas do projeto ou executar scripts de configuração automaticamente. Emparelha com [FileChanged](#filechanged) para ferramentas como [direnv](https://direnv.net/) que gerenciam ambiente por diretório.

1948 

1949Hooks CwdChanged têm acesso a `CLAUDE_ENV_FILE`. Variáveis escritas para esse arquivo persistem em comandos Bash subsequentes para a sessão, assim como em [hooks SessionStart](#persist-environment-variables).

1950 

1951CwdChanged não suporta matchers e dispara em cada mudança de diretório.

1952 

1953#### Entrada de CwdChanged

1954 

1955Além dos [campos de entrada comuns](#common-input-fields), hooks CwdChanged recebem `old_cwd` e `new_cwd`.

1956 

1957```json theme={null}

1958{

1959 "session_id": "abc123",

1960 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

1961 "cwd": "/Users/my-project/src",

1962 "hook_event_name": "CwdChanged",

1963 "old_cwd": "/Users/my-project",

1964 "new_cwd": "/Users/my-project/src"

1965}

1966```

1967 

1968#### Saída de CwdChanged

1969 

1970Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, hooks CwdChanged podem retornar `watchPaths` para definir dinamicamente quais caminhos de arquivo [FileChanged](#filechanged) monitora:

1971 

1972| Campo | Descrição |

1973| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1974| `watchPaths` | Array de caminhos absolutos. Substitui a lista de monitoramento dinâmica atual (caminhos de sua configuração `matcher` são sempre monitorados). Retornar um array vazio limpa a lista dinâmica, que é típico ao entrar em um novo diretório |

1975 

1976Hooks CwdChanged não têm controle de decisão. Eles não podem bloquear a mudança de diretório.

1977 

1978### FileChanged

1979 

1980Executa quando um arquivo monitorado muda no disco. Útil para recarregar variáveis de ambiente quando arquivos de configuração do projeto são modificados.

1981 

1982O `matcher` para este evento serve dois papéis:

1983 

1984* **Construir a lista de monitoramento**: o valor é dividido em `|` e cada segmento é registrado como um nome de arquivo literal no diretório de trabalho, então `".envrc|.env"` monitora exatamente esses dois arquivos. Padrões regex não são úteis aqui: um valor como `^\.env` monitoraria um arquivo literalmente nomeado `^\.env`.

1985* **Filtrar quais hooks executam**: quando um arquivo monitorado muda, o mesmo valor filtra quais grupos de hook executam usando as [regras de matcher](#matcher-patterns) padrão contra o basename do arquivo alterado.

1986 

1987Hooks FileChanged têm acesso a `CLAUDE_ENV_FILE`. Variáveis escritas para esse arquivo persistem em comandos Bash subsequentes para a sessão, assim como em [hooks SessionStart](#persist-environment-variables).

1988 

1989#### Entrada de FileChanged

1990 

1991Além dos [campos de entrada comuns](#common-input-fields), hooks FileChanged recebem `file_path` e `event`.

1992 

1993| Campo | Descrição |

1994| :---------- | :---------------------------------------------------------------------------------------------------------- |

1995| `file_path` | Caminho absoluto para o arquivo que mudou |

1996| `event` | O que aconteceu: `"change"` (arquivo modificado), `"add"` (arquivo criado) ou `"unlink"` (arquivo deletado) |

1997 

1998```json theme={null}

1999{

2000 "session_id": "abc123",

2001 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

2002 "cwd": "/Users/my-project",

2003 "hook_event_name": "FileChanged",

2004 "file_path": "/Users/my-project/.envrc",

2005 "event": "change"

2006}

2007```

2008 

2009#### Saída de FileChanged

2010 

2011Além dos [campos de saída JSON](#json-output) disponíveis para todos os hooks, hooks FileChanged podem retornar `watchPaths` para atualizar dinamicamente quais caminhos de arquivo são monitorados:

2012 

2013| Campo | Descrição |

2014| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2015| `watchPaths` | Array de caminhos absolutos. Substitui a lista de monitoramento dinâmica atual (caminhos de sua configuração `matcher` são sempre monitorados). Use isso quando seu script de hook descobre arquivos adicionais para monitorar baseado no arquivo alterado |

2016 

2017Hooks FileChanged não têm controle de decisão. Eles não podem bloquear a mudança de arquivo de ocorrer.

2018 

2019### WorktreeCreate

2020 

2021Quando você executa `claude --worktree` ou um [subagente usa `isolation: "worktree"`](/pt/sub-agents#choose-the-subagent-scope), Claude Code cria uma cópia de trabalho isolada usando `git worktree`. Se você configurar um hook WorktreeCreate, ele substitui o comportamento git padrão, permitindo que você use um sistema de controle de versão diferente como SVN, Perforce ou Mercurial.

2022 

2023Porque o hook substitui o comportamento padrão inteiramente, [`.worktreeinclude`](/pt/worktrees#copy-gitignored-files-into-worktrees) não é processado. Se você precisar copiar arquivos de configuração local como `.env` para o novo worktree, faça isso dentro de seu script de hook.

2024 

2025O hook deve retornar o caminho absoluto para o diretório worktree criado. Claude Code usa este caminho como o diretório de trabalho para a sessão isolada. Hooks de comando imprimem em stdout; hooks HTTP retornam via `hookSpecificOutput.worktreePath`.

2026 

2027Este exemplo cria uma cópia de trabalho SVN e imprime o caminho para Claude Code usar. Substitua a URL do repositório pela sua:

2028 

2029```json theme={null}

2030{

2031 "hooks": {

2032 "WorktreeCreate": [

2033 {

2034 "hooks": [

2035 {

2036 "type": "command",

2037 "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"

2038 }

2039 ]

2040 }

2041 ]

2042 }

2043}

2044```

2045 

2046O hook lê o `name` do worktree da entrada JSON em stdin, verifica uma cópia fresca em um novo diretório e imprime o caminho do diretório. O `echo` na última linha é o que Claude Code lê como o caminho do worktree. Redirecione qualquer outra saída para stderr para que não interfira com o caminho.

2047 

2048#### Entrada de WorktreeCreate

2049 

2050Além dos [campos de entrada comuns](#common-input-fields), hooks WorktreeCreate recebem o campo `name`. Este é um identificador slug para o novo worktree, especificado pelo usuário ou auto-gerado (por exemplo, `bold-oak-a3f2`).

2051 

2052```json theme={null}

2053{

2054 "session_id": "abc123",

2055 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2056 "cwd": "/Users/...",

2057 "hook_event_name": "WorktreeCreate",

2058 "name": "feature-auth"

2059}

2060```

2061 

2062#### Saída de WorktreeCreate

2063 

2064Hooks WorktreeCreate não usam o modelo de decisão permitir/bloquear padrão. Em vez disso, o sucesso ou falha do hook determina o resultado. O hook deve retornar o caminho absoluto para o diretório worktree criado:

2065 

2066* **Hooks de comando** (`type: "command"`): imprimem o caminho em stdout.

2067* **Hooks HTTP** (`type: "http"`): retornam `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` no corpo da resposta.

2068 

2069Se o hook falhar ou não produzir caminho, a criação de worktree falha com um erro.

2070 

2071### WorktreeRemove

2072 

2073A contraparte de limpeza para [WorktreeCreate](#worktreecreate). Este hook dispara quando um worktree está sendo removido, seja quando você sai de uma sessão `--worktree` e escolhe removê-lo, ou quando um subagente com `isolation: "worktree"` termina. Para worktrees baseados em git, Claude lida com limpeza automaticamente com `git worktree remove`. Se você configurou um hook WorktreeCreate para um sistema de controle de versão não-git, emparelhe-o com um hook WorktreeRemove para lidar com limpeza. Sem um, o diretório worktree é deixado no disco.

2074 

2075Claude Code passa o caminho que WorktreeCreate retornou como `worktree_path` na entrada do hook. Este exemplo lê esse caminho e remove o diretório:

2076 

2077```json theme={null}

2078{

2079 "hooks": {

2080 "WorktreeRemove": [

2081 {

2082 "hooks": [

2083 {

2084 "type": "command",

2085 "command": "bash -c 'jq -r .worktree_path | xargs rm -rf'"

2086 }

2087 ]

2088 }

2089 ]

2090 }

2091}

2092```

2093 

2094#### Entrada de WorktreeRemove

2095 

2096Além dos [campos de entrada comuns](#common-input-fields), hooks WorktreeRemove recebem o campo `worktree_path`, que é o caminho absoluto para o worktree sendo removido.

2097 

2098```json theme={null}

2099{

2100 "session_id": "abc123",

2101 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2102 "cwd": "/Users/...",

2103 "hook_event_name": "WorktreeRemove",

2104 "worktree_path": "/Users/.../my-project/.claude/worktrees/feature-auth"

2105}

2106```

2107 

2108Hooks WorktreeRemove não têm controle de decisão. Eles não podem bloquear remoção de worktree mas podem executar tarefas de limpeza como remover estado de controle de versão ou arquivar mudanças. Falhas de hook são registradas apenas em modo debug.

2109 

2110### PreCompact

2111 

2112Executa antes do Claude Code estar prestes a executar uma operação de compactação.

2113 

2114O valor do matcher indica se a compactação foi acionada manualmente ou automaticamente:

2115 

2116| Matcher | Quando dispara |

2117| :------- | :------------------------------------------------------ |

2118| `manual` | `/compact` |

2119| `auto` | Auto-compactação quando a janela de contexto está cheia |

2120 

2121Saia com código 2 para bloquear compactação. Para um `/compact` manual, a mensagem de stderr é mostrada ao usuário. Você também pode bloquear retornando JSON com `"decision": "block"`.

2122 

2123Bloquear compactação automática tem efeitos diferentes dependendo de quando dispara. Se a compactação foi acionada proativamente antes do limite de contexto, Claude Code a ignora e a conversa continua não compactada. Se a compactação foi acionada para recuperar de um erro de limite de contexto já retornado pela API, o erro subjacente superficializa e a solicitação atual falha.

2124 

2125#### Entrada de PreCompact

2126 

2127Além dos [campos de entrada comuns](#common-input-fields), hooks PreCompact recebem `trigger` e `custom_instructions`. Para `manual`, `custom_instructions` contém o que o usuário passa para `/compact`. Para `auto`, `custom_instructions` está vazio.

2128 

2129```json theme={null}

2130{

2131 "session_id": "abc123",

2132 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2133 "cwd": "/Users/...",

2134 "hook_event_name": "PreCompact",

2135 "trigger": "manual",

2136 "custom_instructions": ""

2137}

2138```

2139 

2140### PostCompact

2141 

2142Executa após Claude Code completar uma operação de compactação. Use este evento para reagir ao novo estado compactado, por exemplo para registrar o resumo gerado ou atualizar estado externo.

2143 

2144Os mesmos valores de matcher se aplicam como para `PreCompact`:

2145 

2146| Matcher | Quando dispara |

2147| :------- | :----------------------------------------------------------- |

2148| `manual` | Após `/compact` |

2149| `auto` | Após auto-compactação quando a janela de contexto está cheia |

2150 

2151#### Entrada de PostCompact

2152 

2153Além dos [campos de entrada comuns](#common-input-fields), hooks PostCompact recebem `trigger` e `compact_summary`. O campo `compact_summary` contém o resumo de conversa gerado pela operação de compactação.

2154 

2155```json theme={null}

2156{

2157 "session_id": "abc123",

2158 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2159 "cwd": "/Users/...",

2160 "hook_event_name": "PostCompact",

2161 "trigger": "manual",

2162 "compact_summary": "Summary of the compacted conversation..."

2163}

2164```

2165 

2166Hooks PostCompact não têm controle de decisão. Eles não podem afetar o resultado de compactação mas podem executar tarefas de acompanhamento.

2167 

2168### SessionEnd

2169 

2170Executa quando uma sessão do Claude Code termina. Útil para tarefas de limpeza, logging de estatísticas de sessão ou salvamento de estado de sessão. Suporta matchers para filtrar por razão de saída.

2171 

2172O campo `reason` na entrada do hook indica por que a sessão terminou:

2173 

2174| Razão | Descrição |

2175| :---------------------------- | :----------------------------------------------------- |

2176| `clear` | Sessão limpa com comando `/clear` |

2177| `resume` | Sessão alternada via `/resume` interativo |

2178| `logout` | Usuário fez logout |

2179| `prompt_input_exit` | Usuário saiu enquanto entrada de prompt estava visível |

2180| `bypass_permissions_disabled` | Modo de permissões de bypass foi desabilitado |

2181| `other` | Outras razões de saída |

2182 

2183#### Entrada de SessionEnd

2184 

2185Além dos [campos de entrada comuns](#common-input-fields), hooks SessionEnd recebem um campo `reason` indicando por que a sessão terminou. Consulte a [tabela de razão](#sessionend) acima para todos os valores.

2186 

2187```json theme={null}

2188{

2189 "session_id": "abc123",

2190 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2191 "cwd": "/Users/...",

2192 "hook_event_name": "SessionEnd",

2193 "reason": "other"

2194}

2195```

2196 

2197Hooks SessionEnd não têm controle de decisão. Eles não podem bloquear terminação de sessão mas podem executar tarefas de limpeza.

2198 

2199Hooks SessionEnd têm um timeout padrão de 1,5 segundos. Isso se aplica tanto à saída de sessão quanto a `/clear` e alternância de sessões via `/resume` interativo. Se um hook precisa de mais tempo, defina um `timeout` por hook na configuração do hook. O orçamento geral é automaticamente aumentado para o timeout por hook mais alto configurado em arquivos de configurações, até 60 segundos. Timeouts definidos em hooks fornecidos por plugin não aumentam o orçamento. Para sobrescrever o orçamento explicitamente, defina a variável de ambiente `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` em milissegundos.

2200 

2201```bash theme={null}

2202CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

2203```

2204 

2205### Elicitation

2206 

2207Executa quando um servidor MCP solicita entrada do usuário no meio da tarefa. Por padrão, Claude Code mostra um diálogo interativo para o usuário responder. Hooks podem interceptar esta solicitação e responder programaticamente, pulando o diálogo inteiramente.

2208 

2209O campo matcher corresponde ao nome do servidor MCP.

2210 

2211#### Entrada de Elicitation

2212 

2213Além dos [campos de entrada comuns](#common-input-fields), hooks Elicitation recebem `mcp_server_name`, `message` e campos opcionais `mode`, `url`, `elicitation_id` e `requested_schema`.

2214 

2215Para elicitação em modo de formulário (o caso mais comum):

2216 

2217```json theme={null}

2218{

2219 "session_id": "abc123",

2220 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2221 "cwd": "/Users/...",

2222 "permission_mode": "default",

2223 "hook_event_name": "Elicitation",

2224 "mcp_server_name": "my-mcp-server",

2225 "message": "Please provide your credentials",

2226 "mode": "form",

2227 "requested_schema": {

2228 "type": "object",

2229 "properties": {

2230 "username": { "type": "string", "title": "Username" }

2231 }

2232 }

2233}

2234```

2235 

2236Para elicitação em modo URL (autenticação baseada em navegador):

2237 

2238```json theme={null}

2239{

2240 "session_id": "abc123",

2241 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2242 "cwd": "/Users/...",

2243 "permission_mode": "default",

2244 "hook_event_name": "Elicitation",

2245 "mcp_server_name": "my-mcp-server",

2246 "message": "Please authenticate",

2247 "mode": "url",

2248 "url": "https://auth.example.com/login"

2249}

2250```

2251 

2252#### Saída de Elicitation

2253 

2254Para responder programaticamente sem mostrar o diálogo, retorne um objeto JSON com `hookSpecificOutput`:

2255 

2256```json theme={null}

2257{

2258 "hookSpecificOutput": {

2259 "hookEventName": "Elicitation",

2260 "action": "accept",

2261 "content": {

2262 "username": "alice"

2263 }

2264 }

2265}

2266```

2267 

2268| Campo | Valores | Descrição |

2269| :-------- | :---------------------------- | :--------------------------------------------------------------------------------- |

2270| `action` | `accept`, `decline`, `cancel` | Se deve aceitar, recusar ou cancelar a solicitação |

2271| `content` | object | Valores de campo de formulário a submeter. Apenas usado quando `action` é `accept` |

2272 

2273Código de saída 2 nega a elicitação e mostra stderr ao usuário.

2274 

2275### ElicitationResult

2276 

2277Executa após um usuário responder a uma elicitação MCP. Hooks podem observar, modificar ou bloquear a resposta antes de ser enviada de volta ao servidor MCP.

2278 

2279O campo matcher corresponde ao nome do servidor MCP.

2280 

2281#### Entrada de ElicitationResult

2282 

2283Além dos [campos de entrada comuns](#common-input-fields), hooks ElicitationResult recebem `mcp_server_name`, `action` e campos opcionais `mode`, `elicitation_id` e `content`.

2284 

2285```json theme={null}

2286{

2287 "session_id": "abc123",

2288 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2289 "cwd": "/Users/...",

2290 "permission_mode": "default",

2291 "hook_event_name": "ElicitationResult",

2292 "mcp_server_name": "my-mcp-server",

2293 "action": "accept",

2294 "content": { "username": "alice" },

2295 "mode": "form",

2296 "elicitation_id": "elicit-123"

2297}

2298```

2299 

2300#### Saída de ElicitationResult

2301 

2302Para sobrescrever a resposta do usuário, retorne um objeto JSON com `hookSpecificOutput`:

2303 

2304```json theme={null}

2305{

2306 "hookSpecificOutput": {

2307 "hookEventName": "ElicitationResult",

2308 "action": "decline",

2309 "content": {}

2310 }

2311}

2312```

2313 

2314| Campo | Valores | Descrição |

2315| :-------- | :---------------------------- | :------------------------------------------------------------------------------------------ |

2316| `action` | `accept`, `decline`, `cancel` | Sobrescreve a ação do usuário |

2317| `content` | object | Sobrescreve valores de campo de formulário. Apenas significativo quando `action` é `accept` |

2318 

2319Código de saída 2 bloqueia a resposta, mudando a ação efetiva para `decline`.

2320 

2321## Hooks baseados em prompt

2322 

2323Além de hooks de comando, HTTP e MCP tool, Claude Code suporta hooks baseados em prompt (`type: "prompt"`) que usam um LLM para avaliar se deve permitir ou bloquear uma ação, e hooks de agente (`type: "agent"`) que geram um verificador agentic com acesso a ferramentas. Nem todos os eventos suportam cada tipo de hook.

2324 

2325Eventos que suportam todos os cinco tipos de hook (`command`, `http`, `mcp_tool`, `prompt` e `agent`):

2326 

2327* `PermissionRequest`

2328* `PostToolBatch`

2329* `PostToolUse`

2330* `PostToolUseFailure`

2331* `PreToolUse`

2332* `Stop`

2333* `SubagentStop`

2334* `TaskCompleted`

2335* `TaskCreated`

2336* `UserPromptExpansion`

2337* `UserPromptSubmit`

2338 

2339Eventos que suportam hooks `command`, `http` e `mcp_tool` mas não `prompt` ou `agent`:

2340 

2341* `ConfigChange`

2342* `CwdChanged`

2343* `Elicitation`

2344* `ElicitationResult`

2345* `FileChanged`

2346* `InstructionsLoaded`

2347* `Notification`

2348* `PermissionDenied`

2349* `PostCompact`

2350* `PreCompact`

2351* `SessionEnd`

2352* `StopFailure`

2353* `SubagentStart`

2354* `TeammateIdle`

2355* `WorktreeCreate`

2356* `WorktreeRemove`

2357 

2358`SessionStart` e `Setup` suportam hooks `command` e `mcp_tool`. Eles não suportam hooks `http`, `prompt` ou `agent`.

2359 

2360### Como hooks baseados em prompt funcionam

2361 

2362Em vez de executar um comando Bash, hooks baseados em prompt:

2363 

23641. Enviam a entrada do hook e seu prompt para um modelo Claude, Haiku por padrão

23652. O LLM responde com JSON estruturado contendo uma decisão

23663. Claude Code processa a decisão automaticamente

2367 

2368### Configuração de hook de prompt

2369 

2370Defina `type` para `"prompt"` e forneça uma string `prompt` em vez de um `command`. Use o placeholder `$ARGUMENTS` para injetar dados de entrada do hook em seu texto de prompt. Claude Code envia o prompt combinado e entrada para um modelo Claude rápido, que retorna uma decisão JSON.

2371 

2372Este hook `Stop` pede ao LLM para avaliar se todas as tarefas estão completas antes de permitir que Claude termine:

2373 

2374```json theme={null}

2375{

2376 "hooks": {

2377 "Stop": [

2378 {

2379 "hooks": [

2380 {

2381 "type": "prompt",

2382 "prompt": "Evaluate if Claude should stop: $ARGUMENTS. Check if all tasks are complete."

2383 }

2384 ]

2385 }

2386 ]

2387 }

2388}

2389```

2390 

2391| Campo | Obrigatório | Descrição |

2392| :-------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2393| `type` | sim | Deve ser `"prompt"` |

2394| `prompt` | sim | O texto do prompt a enviar para o LLM. Use `$ARGUMENTS` como placeholder para a entrada JSON do hook. Se `$ARGUMENTS` não estiver presente, entrada JSON é anexada ao prompt |

2395| `model` | não | Modelo a usar para avaliação. Padrão para um modelo rápido |

2396| `timeout` | não | Timeout em segundos. Padrão: 30 |

2397 

2398### Esquema de resposta

2399 

2400O LLM deve responder com JSON contendo:

2401 

2402```json theme={null}

2403{

2404 "ok": true | false,

2405 "reason": "Explanation for the decision"

2406}

2407```

2408 

2409| Campo | Descrição |

2410| :------- | :------------------------------------------------------------ |

2411| `ok` | `true` permite a ação, `false` a bloqueia |

2412| `reason` | Obrigatório quando `ok` é `false`. Explicação para o bloqueio |

2413 

2414O que acontece em `ok: false` depende do evento:

2415 

2416* `Stop` e `SubagentStop`: a razão é retornada a Claude como sua próxima instrução e o turno continua

2417* `PreToolUse`: a chamada de ferramenta é negada e a razão é retornada a Claude como o erro da ferramenta, equivalente a um hook de comando com `permissionDecision: "deny"`

2418* `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` e `UserPromptExpansion`: o turno termina e a razão aparece no chat como uma linha de aviso, equivalente a retornar `"continue": false` de um hook de comando

2419* `PostToolUseFailure`, `TaskCreated` e `TaskCompleted`: a razão é retornada a Claude como um erro de ferramenta, similar a `PreToolUse`

2420* `PermissionRequest`: `ok: false` não tem efeito. Para negar uma aprovação de um hook, use um [hook de comando](#command-hook-fields) retornando `hookSpecificOutput.decision.behavior: "deny"`

2421 

2422Se você precisar de controle mais fino em qualquer evento, use um [hook de comando](#command-hook-fields) com os campos por evento descritos em [Controle de decisão](#decision-control).

2423 

2424### Exemplo: Hook Stop com múltiplos critérios

2425 

2426Este hook `Stop` usa um prompt detalhado para verificar três condições antes de permitir que Claude pare. Se `"ok"` for `false`, Claude continua trabalhando com a razão fornecida como sua próxima instrução. Hooks `SubagentStop` usam o mesmo formato para avaliar se um [subagente](/pt/sub-agents) deve parar:

2427 

2428```json theme={null}

2429{

2430 "hooks": {

2431 "Stop": [

2432 {

2433 "hooks": [

2434 {

2435 "type": "prompt",

2436 "prompt": "You are evaluating whether Claude should stop working. Context: $ARGUMENTS\n\nAnalyze the conversation and determine if:\n1. All user-requested tasks are complete\n2. Any errors need to be addressed\n3. Follow-up work is needed\n\nRespond with JSON: {\"ok\": true} to allow stopping, or {\"ok\": false, \"reason\": \"your explanation\"} to continue working.",

2437 "timeout": 30

2438 }

2439 ]

2440 }

2441 ]

2442 }

2443}

2444```

2445 

2446## Hooks baseados em agente

2447 

2448<Warning>

2449 Hooks de agente são experimentais. O comportamento e a configuração podem mudar em versões futuras. Para fluxos de trabalho em produção, prefira [command hooks](#command-hook-fields).

2450</Warning>

2451 

2452Hooks baseados em agente (`type: "agent"`) são como hooks baseados em prompt mas com acesso a ferramentas de múltiplos turnos. Em vez de uma única chamada LLM, um hook de agente gera um subagente que pode ler arquivos, pesquisar código e inspecionar o codebase para verificar condições. Hooks de agente suportam os mesmos eventos que hooks baseados em prompt.

2453 

2454### Como hooks de agente funcionam

2455 

2456Quando um hook de agente dispara:

2457 

24581. Claude Code gera um subagente com seu prompt e a entrada JSON do hook

24592. O subagente pode usar ferramentas como Read, Grep e Glob para investigar

24603. Após até 50 turnos, o subagente retorna uma decisão estruturada `{ "ok": true/false }`

24614. Claude Code processa a decisão da mesma forma que um hook de prompt

2462 

2463Hooks de agente são úteis quando a verificação requer inspecionar arquivos reais ou saída de teste, não apenas avaliar dados de entrada do hook sozinhos.

2464 

2465### Configuração de hook de agente

2466 

2467Defina `type` para `"agent"` e forneça uma string `prompt`. Os campos de configuração são os mesmos que [hooks de prompt](#prompt-hook-configuration), com um timeout padrão mais longo:

2468 

2469| Campo | Obrigatório | Descrição |

2470| :-------- | :---------- | :------------------------------------------------------------------------------------------------ |

2471| `type` | sim | Deve ser `"agent"` |

2472| `prompt` | sim | Prompt descrevendo o que verificar. Use `$ARGUMENTS` como placeholder para a entrada JSON do hook |

2473| `model` | não | Modelo a usar. Padrão para um modelo rápido |

2474| `timeout` | não | Timeout em segundos. Padrão: 60 |

2475 

2476O esquema de resposta é o mesmo que hooks de prompt: `{ "ok": true }` para permitir ou `{ "ok": false, "reason": "..." }` para bloquear.

2477 

2478Este hook `Stop` verifica que todos os testes unitários passam antes de permitir que Claude termine:

2479 

2480```json theme={null}

2481{

2482 "hooks": {

2483 "Stop": [

2484 {

2485 "hooks": [

2486 {

2487 "type": "agent",

2488 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

2489 "timeout": 120

2490 }

2491 ]

2492 }

2493 ]

2494 }

2495}

2496```

2497 

2498## Executar hooks em background

2499 

2500Por padrão, hooks bloqueiam a execução de Claude até que completem. Para tarefas de longa duração como deployments, suites de teste ou chamadas de API externas, defina `"async": true` para executar o hook em background enquanto Claude continua trabalhando. Hooks assíncronos não podem bloquear ou controlar comportamento de Claude: campos de resposta como `decision`, `permissionDecision` e `continue` não têm efeito, porque a ação que controlariam já completou.

2501 

2502### Configurar um hook assíncrono

2503 

2504Adicione `"async": true` à configuração de um hook de comando para executá-lo em background sem bloquear Claude. Este campo está apenas disponível em hooks `type: "command"`.

2505 

2506Este hook executa um script de teste após cada chamada de ferramenta `Write`. Claude continua trabalhando imediatamente enquanto `run-tests.sh` executa por até 120 segundos. Quando o script termina, sua saída é entregue no próximo turno de conversa:

2507 

2508```json theme={null}

2509{

2510 "hooks": {

2511 "PostToolUse": [

2512 {

2513 "matcher": "Write",

2514 "hooks": [

2515 {

2516 "type": "command",

2517 "command": "/path/to/run-tests.sh",

2518 "async": true,

2519 "timeout": 120

2520 }

2521 ]

2522 }

2523 ]

2524 }

2525}

2526```

2527 

2528O campo `timeout` define o tempo máximo em segundos para o processo em background. Se não especificado, hooks assíncronos usam o mesmo padrão de 10 minutos que hooks síncronos.

2529 

2530### Como hooks assíncronos executam

2531 

2532Quando um hook assíncrono dispara, Claude Code inicia o processo do hook e imediatamente continua sem esperar que termine. O hook recebe a mesma entrada JSON via stdin que um hook síncrono.

2533 

2534Após o processo em background sair, se o hook produziu uma resposta JSON com um campo `systemMessage` ou `additionalContext`, esse conteúdo é entregue ao Claude como contexto no próximo turno de conversa.

2535 

2536Notificações de conclusão de hook assíncrono são suprimidas por padrão. Para vê-las, ative modo verbose com `Ctrl+O` ou inicie Claude Code com `--verbose`.

2537 

2538### Exemplo: executar testes após mudanças de arquivo

2539 

2540Este hook inicia uma suite de testes em background sempre que Claude escreve um arquivo, então relata os resultados de volta ao Claude quando os testes terminam. Salve este script em `.claude/hooks/run-tests-async.sh` em seu projeto e torne-o executável com `chmod +x`:

2541 

2542```bash theme={null}

2543#!/bin/bash

2544# run-tests-async.sh

2545 

2546# Leia entrada de hook de stdin

2547INPUT=$(cat)

2548FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

2549 

2550# Apenas execute testes para arquivos de origem

2551if [[ "$FILE_PATH" != *.ts && "$FILE_PATH" != *.js ]]; then

2552 exit 0

2553fi

2554 

2555# Execute testes e relate resultados via systemMessage

2556RESULT=$(npm test 2>&1)

2557EXIT_CODE=$?

2558 

2559if [ $EXIT_CODE -eq 0 ]; then

2560 echo "{\"systemMessage\": \"Tests passed after editing $FILE_PATH\"}"

2561else

2562 echo "{\"systemMessage\": \"Tests failed after editing $FILE_PATH: $RESULT\"}"

2563fi

2564```

2565 

2566Então adicione esta configuração a `.claude/settings.json` na raiz do seu projeto. A flag `async: true` permite que Claude continue trabalhando enquanto testes executam:

2567 

2568```json theme={null}

2569{

2570 "hooks": {

2571 "PostToolUse": [

2572 {

2573 "matcher": "Write|Edit",

2574 "hooks": [

2575 {

2576 "type": "command",

2577 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/run-tests-async.sh",

2578 "async": true,

2579 "timeout": 300

2580 }

2581 ]

2582 }

2583 ]

2584 }

2585}

2586```

2587 

2588### Limitações

2589 

2590Hooks assíncronos têm várias restrições comparados a hooks síncronos:

2591 

2592* Apenas hooks `type: "command"` suportam `async`. Hooks baseados em prompt não podem executar assincronamente.

2593* Hooks assíncronos não podem bloquear chamadas de ferramenta ou retornar decisões. Pelo tempo que o hook completa, a ação acionadora já prosseguiu.

2594* Saída de hook é entregue no próximo turno de conversa. Se a sessão está ociosa, a resposta espera até a próxima interação do usuário. Exceção: um hook `asyncRewake` que sai com código 2 acorda Claude imediatamente mesmo quando a sessão está ociosa.

2595* Cada execução cria um processo em background separado. Não há desduplicação através de múltiplos disparos do mesmo hook assíncrono.

2596 

2597## Considerações de segurança

2598 

2599### Aviso

2600 

2601Hooks de comando executam com as permissões completas do seu usuário do sistema.

2602 

2603<Warning>

2604 Hooks de comando executam comandos shell com suas permissões completas de usuário. Eles podem modificar, deletar ou acessar qualquer arquivo que sua conta de usuário pode acessar. Revise e teste todos os comandos de hook antes de adicioná-los à sua configuração.

2605</Warning>

2606 

2607### Melhores práticas de segurança

2608 

2609Mantenha essas práticas em mente ao escrever hooks:

2610 

2611* **Valide e sanitize entradas**: nunca confie em dados de entrada cegamente

2612* **Sempre cite variáveis shell**: use `"$VAR"` não `$VAR`

2613* **Bloqueie traversal de caminho**: verifique `..` em caminhos de arquivo

2614* **Use caminhos absolutos**: especifique caminhos completos para scripts, usando `"$CLAUDE_PROJECT_DIR"` para a raiz do projeto

2615* **Pule arquivos sensíveis**: evite `.env`, `.git/`, chaves, etc.

2616 

2617## Ferramenta Windows PowerShell

2618 

2619No Windows, você pode executar hooks individuais em PowerShell definindo `"shell": "powershell"` em um hook de comando. Hooks geram PowerShell diretamente, então isso funciona independentemente de `CLAUDE_CODE_USE_POWERSHELL_TOOL` estar definido. Claude Code auto-detecta `pwsh.exe` (PowerShell 7+) com fallback para `powershell.exe` (5.1).

2620 

2621```json theme={null}

2622{

2623 "hooks": {

2624 "PostToolUse": [

2625 {

2626 "matcher": "Write",

2627 "hooks": [

2628 {

2629 "type": "command",

2630 "shell": "powershell",

2631 "command": "Write-Host 'File written'"

2632 }

2633 ]

2634 }

2635 ]

2636 }

2637}

2638```

2639 

2640## Debug de hooks

2641 

2642Detalhes de execução de hook, incluindo quais hooks corresponderam, seus códigos de saída e saída completa de stdout e stderr, são escritos no arquivo de log de debug. Inicie Claude Code com `claude --debug-file <path>` para escrever o log em um local conhecido, ou execute `claude --debug` e leia o log em `~/.claude/debug/<session-id>.txt`. A flag `--debug` não imprime no terminal.

2643 

2644```text theme={null}

2645[DEBUG] Executing hooks for PostToolUse:Write

2646[DEBUG] Found 1 hook commands to execute

2647[DEBUG] Executing hook command: <Your command> with timeout 600000ms

2648[DEBUG] Hook command completed with status 0: <Your stdout>

2649```

2650 

2651Para detalhes de correspondência de hook mais granulares, defina `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` para ver linhas de log adicionais como contagens de matcher de hook e correspondência de consulta.

2652 

2653Para troubleshooting de problemas comuns como hooks não disparando, loops infinitos de hook Stop ou erros de configuração, consulte [Limitações e troubleshooting](/pt/hooks-guide#limitations-and-troubleshooting) no guia. Para um passo a passo de diagnóstico mais amplo cobrindo `/context`, `/doctor` e precedência de configurações, consulte [Debug your config](/pt/debug-your-config).

hooks-guide.md +927 −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# Automatizar fluxos de trabalho com hooks

6 

7> Execute comandos shell automaticamente quando Claude Code edita arquivos, conclui tarefas ou precisa de entrada. Formate código, envie notificações, valide comandos e aplique regras do projeto.

8 

9Hooks são comandos shell definidos pelo usuário que executam em pontos específicos do ciclo de vida do Claude Code. Eles fornecem controle determinístico sobre o comportamento do Claude Code, garantindo que certas ações sempre aconteçam em vez de depender do LLM para escolher executá-las. Use hooks para aplicar regras do projeto, automatizar tarefas repetitivas e integrar Claude Code com suas ferramentas existentes.

10 

11Para decisões que exigem julgamento em vez de regras determinísticas, você também pode usar [hooks baseados em prompt](#prompt-based-hooks) ou [hooks baseados em agente](#agent-based-hooks) que usam um modelo Claude para avaliar condições.

12 

13Para outras formas de estender Claude Code, consulte [skills](/pt/skills) para dar ao Claude instruções adicionais e comandos executáveis, [subagents](/pt/sub-agents) para executar tarefas em contextos isolados e [plugins](/pt/plugins) para empacotar extensões para compartilhar entre projetos.

14 

15<Tip>

16 Este guia cobre casos de uso comuns e como começar. Para esquemas de eventos completos, formatos de entrada/saída JSON e recursos avançados como hooks assíncronos e hooks de ferramentas MCP, consulte a [referência de Hooks](/pt/hooks).

17</Tip>

18 

19## Configure seu primeiro hook

20 

21Para criar um hook, adicione um bloco `hooks` a um [arquivo de configuração](#configure-hook-location). Este passo a passo cria um hook de notificação de desktop, para que você seja alertado sempre que Claude estiver aguardando sua entrada em vez de observar o terminal.

22 

23<Steps>

24 <Step title="Adicione o hook às suas configurações">

25 Abra `~/.claude/settings.json` e adicione um hook `Notification`. O exemplo abaixo usa `osascript` para macOS; consulte [Receba notificações quando Claude precisa de entrada](#get-notified-when-claude-needs-input) para comandos Linux e Windows.

26 

27 ```json theme={null}

28 {

29 "hooks": {

30 "Notification": [

31 {

32 "matcher": "",

33 "hooks": [

34 {

35 "type": "command",

36 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

37 }

38 ]

39 }

40 ]

41 }

42 }

43 ```

44 

45 Se seu arquivo de configuração já tem uma chave `hooks`, adicione `Notification` como um irmão das chaves de evento existentes em vez de substituir o objeto inteiro. Cada nome de evento é uma chave dentro do único objeto `hooks`:

46 

47 ```json theme={null}

48 {

49 "hooks": {

50 "PostToolUse": [

51 {

52 "matcher": "Edit|Write",

53 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }]

54 }

55 ],

56 "Notification": [

57 {

58 "matcher": "",

59 "hooks": [{ "type": "command", "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'" }]

60 }

61 ]

62 }

63 }

64 ```

65 

66 Você também pode pedir ao Claude para escrever o hook para você descrevendo o que deseja na CLI.

67 </Step>

68 

69 <Step title="Verifique a configuração">

70 Digite `/hooks` para abrir o navegador de hooks. Você verá uma lista de todos os eventos de hook disponíveis, com uma contagem ao lado de cada evento que tem hooks configurados. Selecione `Notification` para confirmar que seu novo hook aparece na lista. Selecionar o hook mostra seus detalhes: o evento, matcher, tipo, arquivo de origem e comando.

71 </Step>

72 

73 <Step title="Teste o hook">

74 Pressione `Esc` para retornar à CLI. Peça ao Claude para fazer algo que exija permissão, depois saia do terminal. Você deve receber uma notificação de desktop.

75 </Step>

76</Steps>

77 

78<Tip>

79 O menu `/hooks` é somente leitura. Para adicionar, modificar ou remover hooks, edite seu JSON de configuração diretamente ou peça ao Claude para fazer a alteração.

80</Tip>

81 

82## O que você pode automatizar

83 

84Hooks permitem executar código em pontos-chave do ciclo de vida do Claude Code: formatar arquivos após edições, bloquear comandos antes de executarem, enviar notificações quando Claude precisa de entrada, injetar contexto no início da sessão e muito mais. Para a lista completa de eventos de hook, consulte a [referência de Hooks](/pt/hooks#hook-lifecycle).

85 

86Cada exemplo inclui um bloco de configuração pronto para usar que você adiciona a um [arquivo de configuração](#configure-hook-location). Os padrões mais comuns:

87 

88* [Receba notificações quando Claude precisa de entrada](#get-notified-when-claude-needs-input)

89* [Formatar código automaticamente após edições](#auto-format-code-after-edits)

90* [Bloquear edições em arquivos protegidos](#block-edits-to-protected-files)

91* [Re-injetar contexto após compactação](#re-inject-context-after-compaction)

92* [Auditar mudanças de configuração](#audit-configuration-changes)

93* [Recarregar ambiente quando diretório ou arquivos mudam](#reload-environment-when-directory-or-files-change)

94* [Aprovar automaticamente prompts de permissão específicos](#auto-approve-specific-permission-prompts)

95 

96### Receba notificações quando Claude precisa de entrada

97 

98Receba uma notificação de desktop sempre que Claude terminar de trabalhar e precisar de sua entrada, para que você possa mudar para outras tarefas sem verificar o terminal.

99 

100Este hook usa o evento `Notification`, que dispara quando Claude está aguardando entrada ou permissão. Cada aba abaixo usa o comando de notificação nativo da plataforma. Adicione isto a `~/.claude/settings.json`:

101 

102<Tabs>

103 <Tab title="macOS">

104 ```json theme={null}

105 {

106 "hooks": {

107 "Notification": [

108 {

109 "matcher": "",

110 "hooks": [

111 {

112 "type": "command",

113 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

114 }

115 ]

116 }

117 ]

118 }

119 }

120 ```

121 

122 <Accordion title="Se nenhuma notificação aparecer">

123 `osascript` roteia notificações através do aplicativo Script Editor integrado. Se o Script Editor não tiver permissão de notificação, o comando falha silenciosamente e macOS não solicitará que você o conceda. Execute isto no Terminal uma vez para fazer o Script Editor aparecer em suas configurações de notificação:

124 

125 ```bash theme={null}

126 osascript -e 'display notification "test"'

127 ```

128 

129 Nada aparecerá ainda. Abra **System Settings > Notifications**, encontre **Script Editor** na lista e ative **Allow Notifications**. Execute o comando novamente para confirmar que a notificação de teste aparece.

130 </Accordion>

131 </Tab>

132 

133 <Tab title="Linux">

134 ```json theme={null}

135 {

136 "hooks": {

137 "Notification": [

138 {

139 "matcher": "",

140 "hooks": [

141 {

142 "type": "command",

143 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

144 }

145 ]

146 }

147 ]

148 }

149 }

150 ```

151 </Tab>

152 

153 <Tab title="Windows (PowerShell)">

154 ```json theme={null}

155 {

156 "hooks": {

157 "Notification": [

158 {

159 "matcher": "",

160 "hooks": [

161 {

162 "type": "command",

163 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

164 }

165 ]

166 }

167 ]

168 }

169 }

170 ```

171 </Tab>

172</Tabs>

173 

174O `matcher` vazio dispara em todos os tipos de notificação. Para disparar apenas em eventos específicos, defina-o como um destes valores:

175 

176| Matcher | Dispara quando |

177| :--------------------- | :------------------------------------------------------------ |

178| `permission_prompt` | Claude precisa que você aprove um uso de ferramenta |

179| `idle_prompt` | Claude terminou e está aguardando seu próximo prompt |

180| `auth_success` | A autenticação é concluída |

181| `elicitation_dialog` | Um servidor MCP abre um formulário de elicitação |

182| `elicitation_complete` | Um formulário de elicitação MCP é enviado ou descartado |

183| `elicitation_response` | Uma resposta de elicitação MCP é enviada de volta ao servidor |

184 

185Digite `/hooks` e selecione `Notification` para confirmar que o hook está registrado. Para o esquema de evento completo, consulte a [referência de Notification](/pt/hooks#notification).

186 

187### Formatar código automaticamente após edições

188 

189Execute automaticamente [Prettier](https://prettier.io/) em cada arquivo que Claude edita, para que a formatação permaneça consistente sem intervenção manual.

190 

191Este hook usa o evento `PostToolUse` com um matcher `Edit|Write`, para que execute apenas após ferramentas de edição de arquivo. O comando extrai o caminho do arquivo editado com [`jq`](https://jqlang.github.io/jq/) e o passa para Prettier. Adicione isto a `.claude/settings.json` na raiz do seu projeto:

192 

193```json theme={null}

194{

195 "hooks": {

196 "PostToolUse": [

197 {

198 "matcher": "Edit|Write",

199 "hooks": [

200 {

201 "type": "command",

202 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

203 }

204 ]

205 }

206 ]

207 }

208}

209```

210 

211<Note>

212 Os exemplos Bash nesta página usam `jq` para análise JSON. Instale-o com `brew install jq` (macOS), `apt-get install jq` (Debian/Ubuntu), ou consulte [downloads do `jq`](https://jqlang.github.io/jq/download/).

213</Note>

214 

215### Bloquear edições em arquivos protegidos

216 

217Impeça que Claude modifique arquivos sensíveis como `.env`, `package-lock.json` ou qualquer coisa em `.git/`. Claude recebe feedback explicando por que a edição foi bloqueada, para que possa ajustar sua abordagem.

218 

219Este exemplo usa um arquivo de script separado que o hook chama. O script verifica o caminho do arquivo de destino contra uma lista de padrões protegidos e sai com código 2 para bloquear a edição.

220 

221<Steps>

222 <Step title="Crie o script do hook">

223 Salve isto em `.claude/hooks/protect-files.sh`:

224 

225 ```bash theme={null}

226 #!/bin/bash

227 # protect-files.sh

228 

229 INPUT=$(cat)

230 FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

231 

232 PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")

233 

234 for pattern in "${PROTECTED_PATTERNS[@]}"; do

235 if [[ "$FILE_PATH" == *"$pattern"* ]]; then

236 echo "Blocked: $FILE_PATH matches protected pattern '$pattern'" >&2

237 exit 2

238 fi

239 done

240 

241 exit 0

242 ```

243 </Step>

244 

245 <Step title="Torne o script executável (macOS/Linux)">

246 Scripts de hook devem ser executáveis para que Claude Code os execute:

247 

248 ```bash theme={null}

249 chmod +x .claude/hooks/protect-files.sh

250 ```

251 </Step>

252 

253 <Step title="Registre o hook">

254 Adicione um hook `PreToolUse` a `.claude/settings.json` que execute o script antes de qualquer chamada de ferramenta `Edit` ou `Write`:

255 

256 ```json theme={null}

257 {

258 "hooks": {

259 "PreToolUse": [

260 {

261 "matcher": "Edit|Write",

262 "hooks": [

263 {

264 "type": "command",

265 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"

266 }

267 ]

268 }

269 ]

270 }

271 }

272 ```

273 </Step>

274</Steps>

275 

276### Re-injetar contexto após compactação

277 

278Quando a janela de contexto do Claude fica cheia, a compactação resume a conversa para liberar espaço. Isto pode perder detalhes importantes. Use um hook `SessionStart` com um matcher `compact` para re-injetar contexto crítico após cada compactação.

279 

280Qualquer texto que seu comando escreve para stdout é adicionado ao contexto do Claude. Este exemplo lembra ao Claude as convenções do projeto e trabalho recente. Adicione isto a `.claude/settings.json` na raiz do seu projeto:

281 

282```json theme={null}

283{

284 "hooks": {

285 "SessionStart": [

286 {

287 "matcher": "compact",

288 "hooks": [

289 {

290 "type": "command",

291 "command": "echo 'Reminder: use Bun, not npm. Run bun test before committing. Current sprint: auth refactor.'"

292 }

293 ]

294 }

295 ]

296 }

297}

298```

299 

300Você pode substituir o `echo` por qualquer comando que produza saída dinâmica, como `git log --oneline -5` para mostrar commits recentes. Para injetar contexto em cada início de sessão, considere usar [CLAUDE.md](/pt/memory) em vez disso. Para variáveis de ambiente, consulte [`CLAUDE_ENV_FILE`](/pt/hooks#persist-environment-variables) na referência.

301 

302### Auditar mudanças de configuração

303 

304Rastreie quando arquivos de configuração ou skills mudam durante uma sessão. O evento `ConfigChange` dispara quando um processo externo ou editor modifica um arquivo de configuração, para que você possa registrar mudanças para conformidade ou bloquear modificações não autorizadas.

305 

306Este exemplo anexa cada mudança a um log de auditoria. Adicione isto a `~/.claude/settings.json`:

307 

308```json theme={null}

309{

310 "hooks": {

311 "ConfigChange": [

312 {

313 "matcher": "",

314 "hooks": [

315 {

316 "type": "command",

317 "command": "jq -c '{timestamp: now | todate, source: .source, file: .file_path}' >> ~/claude-config-audit.log"

318 }

319 ]

320 }

321 ]

322 }

323}

324```

325 

326O matcher filtra por tipo de configuração: `user_settings`, `project_settings`, `local_settings`, `policy_settings` ou `skills`. Para bloquear uma mudança de entrar em vigor, saia com código 2 ou retorne `{"decision": "block"}`. Consulte a [referência de ConfigChange](/pt/hooks#configchange) para o esquema de entrada completo.

327 

328### Recarregar ambiente quando diretório ou arquivos mudam

329 

330Alguns projetos definem variáveis de ambiente diferentes dependendo de qual diretório você está. Ferramentas como [direnv](https://direnv.net/) fazem isto automaticamente no seu shell, mas a ferramenta Bash do Claude não pega essas mudanças por conta própria.

331 

332Emparelhar um hook `SessionStart` com um hook `CwdChanged` corrige isto. `SessionStart` carrega as variáveis para o diretório em que você inicia, e `CwdChanged` as recarrega cada vez que Claude muda de diretório. Ambos escrevem para `CLAUDE_ENV_FILE`, que Claude Code executa como um preâmbulo de script antes de cada comando Bash. Adicione isto a `~/.claude/settings.json`:

333 

334```json theme={null}

335{

336 "hooks": {

337 "SessionStart": [

338 {

339 "hooks": [

340 {

341 "type": "command",

342 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

343 }

344 ]

345 }

346 ],

347 "CwdChanged": [

348 {

349 "hooks": [

350 {

351 "type": "command",

352 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

353 }

354 ]

355 }

356 ]

357 }

358}

359```

360 

361Execute `direnv allow` uma vez em cada diretório que tenha um `.envrc` para que direnv tenha permissão para carregá-lo. Se você usar devbox ou nix em vez de direnv, o mesmo padrão funciona com `devbox shellenv` ou `devbox global shellenv` no lugar de `direnv export bash`.

362 

363Para reagir a arquivos específicos em vez de cada mudança de diretório, use `FileChanged` com um `matcher` listando os nomes de arquivo para observar, separados por `|`. Para construir a lista de observação, este valor é dividido em nomes de arquivo literais em vez de ser avaliado como uma regex. Consulte [FileChanged](/pt/hooks#filechanged) para como o mesmo valor também filtra quais grupos de hook executam quando um arquivo muda. Este exemplo observa `.envrc` e `.env` no diretório de trabalho:

364 

365```json theme={null}

366{

367 "hooks": {

368 "FileChanged": [

369 {

370 "matcher": ".envrc|.env",

371 "hooks": [

372 {

373 "type": "command",

374 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

375 }

376 ]

377 }

378 ]

379 }

380}

381```

382 

383Consulte as entradas de referência [CwdChanged](/pt/hooks#cwdchanged) e [FileChanged](/pt/hooks#filechanged) para esquemas de entrada, saída `watchPaths` e detalhes de `CLAUDE_ENV_FILE`.

384 

385### Aprovar automaticamente prompts de permissão específicos

386 

387Pule o diálogo de aprovação para chamadas de ferramenta que você sempre permite. Este exemplo aprova automaticamente `ExitPlanMode`, a ferramenta que Claude chama quando termina de apresentar um plano e pede para prosseguir, para que você não seja solicitado toda vez que um plano estiver pronto.

388 

389Diferentemente dos exemplos de código de saída acima, a aprovação automática exige que seu hook escreva uma decisão JSON para stdout. Um hook `PermissionRequest` dispara quando Claude Code está prestes a mostrar um diálogo de permissão, e retornar `"behavior": "allow"` responde em seu nome.

390 

391O matcher restringe o hook apenas a `ExitPlanMode`, para que nenhum outro prompt seja afetado. Adicione isto a `~/.claude/settings.json`:

392 

393```json theme={null}

394{

395 "hooks": {

396 "PermissionRequest": [

397 {

398 "matcher": "ExitPlanMode",

399 "hooks": [

400 {

401 "type": "command",

402 "command": "echo '{\"hookSpecificOutput\": {\"hookEventName\": \"PermissionRequest\", \"decision\": {\"behavior\": \"allow\"}}}'"

403 }

404 ]

405 }

406 ]

407 }

408}

409```

410 

411Quando o hook aprova, Claude Code sai do modo de plano e restaura qualquer modo de permissão que estava ativo antes de você entrar no modo de plano. A transcrição mostra "Allowed by PermissionRequest hook" onde o diálogo teria aparecido. O caminho do hook sempre mantém a conversa atual: ele não pode limpar contexto e iniciar uma sessão de implementação fresca da forma que o diálogo pode.

412 

413Para definir um modo de permissão específico em vez disso, a saída do seu hook pode incluir um array `updatedPermissions` com uma entrada `setMode`. O valor `mode` é qualquer modo de permissão como `default`, `acceptEdits` ou `bypassPermissions`, e `destination: "session"` o aplica apenas para a sessão atual.

414 

415<Note>

416 `bypassPermissions` só se aplica se a sessão foi iniciada com modo bypass já disponível: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, ou `permissions.defaultMode: "bypassPermissions"` em configurações, e não desabilitado por [`permissions.disableBypassPermissionsMode`](/pt/permissions#managed-settings). Nunca é persistido como `defaultMode`.

417</Note>

418 

419Para mudar a sessão para `acceptEdits`, seu hook escreve este JSON para stdout:

420 

421```json theme={null}

422{

423 "hookSpecificOutput": {

424 "hookEventName": "PermissionRequest",

425 "decision": {

426 "behavior": "allow",

427 "updatedPermissions": [

428 { "type": "setMode", "mode": "acceptEdits", "destination": "session" }

429 ]

430 }

431 }

432}

433```

434 

435Mantenha o matcher o mais restrito possível. Corresponder a `.*` ou deixar o matcher vazio aprovaria automaticamente cada prompt de permissão, incluindo escritas de arquivo e comandos shell. Consulte a [referência de PermissionRequest](/pt/hooks#permissionrequest-decision-control) para o conjunto completo de campos de decisão.

436 

437## Como hooks funcionam

438 

439Eventos de hook disparam em pontos específicos do ciclo de vida do Claude Code. Quando um evento dispara, todos os hooks correspondentes executam em paralelo, e comandos de hook idênticos são automaticamente desduplicados. A tabela abaixo mostra cada evento e quando dispara:

440 

441| Event | When it fires |

442| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

443| `SessionStart` | When a session begins or resumes |

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

445| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

446| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

447| `PreToolUse` | Before a tool call executes. Can block it |

448| `PermissionRequest` | When a permission dialog appears |

449| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

450| `PostToolUse` | After a tool call succeeds |

451| `PostToolUseFailure` | After a tool call fails |

452| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

453| `Notification` | When Claude Code sends a notification |

454| `SubagentStart` | When a subagent is spawned |

455| `SubagentStop` | When a subagent finishes |

456| `TaskCreated` | When a task is being created via `TaskCreate` |

457| `TaskCompleted` | When a task is being marked as completed |

458| `Stop` | When Claude finishes responding |

459| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

460| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

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

462| `ConfigChange` | When a configuration file changes during a session |

463| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

464| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

465| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

466| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

467| `PreCompact` | Before context compaction |

468| `PostCompact` | After context compaction completes |

469| `Elicitation` | When an MCP server requests user input during a tool call |

470| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

471| `SessionEnd` | When a session terminates |

472 

473Quando múltiplos hooks correspondem, cada um retorna seu próprio resultado. Para decisões, Claude Code escolhe a resposta mais restritiva. Um hook `PreToolUse` retornando `deny` cancela a chamada de ferramenta não importa o que os outros retornem. Um hook retornando `ask` força o prompt de permissão mesmo se o resto retornar `allow`. Texto de `additionalContext` é mantido de cada hook e passado ao Claude junto.

474 

475Cada 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:

476 

477* `"type": "http"`: POST dados de evento para uma URL. Consulte [HTTP hooks](#http-hooks).

478* `"type": "mcp_tool"`: chamar uma ferramenta em um servidor MCP já conectado. Consulte [MCP tool hooks](/pt/hooks#mcp-tool-hook-fields).

479* `"type": "prompt"`: avaliação LLM de turno único. Consulte [Prompt-based hooks](#prompt-based-hooks).

480* `"type": "agent"`: verificação multi-turno com acesso a ferramentas. Agent hooks são experimentais e podem mudar. Consulte [Agent-based hooks](#agent-based-hooks).

481 

482### Ler entrada e retornar saída

483 

484Hooks se comunicam com Claude Code através de stdin, stdout, stderr e códigos de saída. Quando um evento dispara, Claude Code passa dados específicos do evento como JSON para stdin do seu script. Seu script lê esses dados, faz seu trabalho e diz ao Claude Code o que fazer a seguir através do código de saída.

485 

486#### Entrada do hook

487 

488Cada evento inclui campos comuns como `session_id` e `cwd`, mas cada tipo de evento adiciona dados diferentes. Por exemplo, quando Claude executa um comando Bash, um hook `PreToolUse` recebe algo assim em stdin:

489 

490```json theme={null}

491{

492 "session_id": "abc123", // ID único para esta sessão

493 "cwd": "/Users/sarah/myproject", // diretório de trabalho quando o evento disparou

494 "hook_event_name": "PreToolUse", // qual evento acionou este hook

495 "tool_name": "Bash", // a ferramenta que Claude está prestes a usar

496 "tool_input": { // os argumentos que Claude passou para a ferramenta

497 "command": "npm test" // para Bash, este é o comando shell

498 }

499}

500```

501 

502Seu script pode analisar esse JSON e agir em qualquer um desses campos. Hooks `UserPromptSubmit` obtêm o texto `prompt` em vez disso, hooks `SessionStart` obtêm a `source` (startup, resume, clear, compact), e assim por diante. Consulte [Campos de entrada comuns](/pt/hooks#common-input-fields) na referência para campos compartilhados, e a seção de cada evento para esquemas específicos do evento.

503 

504#### Saída do hook

505 

506Seu script diz ao Claude Code o que fazer a seguir escrevendo para stdout ou stderr e saindo com um código específico. Por exemplo, um hook `PreToolUse` que quer bloquear um comando:

507 

508```bash theme={null}

509#!/bin/bash

510INPUT=$(cat)

511COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

512 

513if echo "$COMMAND" | grep -q "drop table"; then

514 echo "Blocked: dropping tables is not allowed" >&2 // stderr se torna feedback do Claude

515 exit 2 // exit 2 = bloquear a ação

516fi

517 

518exit 0 // exit 0 = deixar prosseguir

519```

520 

521O código de saída determina o que acontece a seguir:

522 

523* **Exit 0**: a ação prossegue. Para hooks `UserPromptSubmit`, `UserPromptExpansion` e `SessionStart`, qualquer coisa que você escrever para stdout é adicionada ao contexto do Claude.

524* **Exit 2**: a ação é bloqueada. Escreva um motivo para stderr, e Claude o recebe como feedback para que possa se ajustar. Alguns eventos não podem ser bloqueados: para `SessionStart`, `Setup`, `Notification` e outros, exit 2 mostra stderr ao usuário e a execução continua. Consulte [comportamento do código de saída 2 por evento](/pt/hooks#exit-code-2-behavior-per-event) para a lista completa.

525* **Qualquer outro código de saída**: a ação prossegue. A transcrição mostra um aviso `<hook name> hook error` seguido pela primeira linha de stderr; o stderr completo vai para o [log de debug](/pt/hooks#debug-hooks).

526 

527#### Saída JSON estruturada

528 

529Códigos de saída lhe dão duas opções: permitir ou bloquear. Para mais controle, saia com 0 e imprima um objeto JSON para stdout em vez disso.

530 

531<Note>

532 Use exit 2 para bloquear com uma mensagem stderr, ou exit 0 com JSON para controle estruturado. Não misture: Claude Code ignora JSON quando você sai com 2.

533</Note>

534 

535Por exemplo, um hook `PreToolUse` pode negar uma chamada de ferramenta e dizer ao Claude por quê, ou escalar para o usuário para aprovação:

536 

537```json theme={null}

538{

539 "hookSpecificOutput": {

540 "hookEventName": "PreToolUse",

541 "permissionDecision": "deny",

542 "permissionDecisionReason": "Use rg instead of grep for better performance"

543 }

544}

545```

546 

547Com `"deny"`, Claude Code cancela a chamada de ferramenta e alimenta `permissionDecisionReason` de volta ao Claude. Esses valores `permissionDecision` são específicos para `PreToolUse`:

548 

549* `"allow"`: pular o prompt de permissão interativo. Regras de negação e pedido, incluindo listas de negação gerenciadas por empresa, ainda se aplicam

550* `"deny"`: cancelar a chamada de ferramenta e enviar o motivo ao Claude

551* `"ask"`: mostrar o prompt de permissão ao usuário normalmente

552 

553Um quarto valor, `"defer"`, está disponível em [modo não-interativo](/pt/headless) com a flag `-p`. Ele sai do processo com a chamada de ferramenta preservada para que um wrapper do Agent SDK possa coletar entrada e retomar. Consulte [Adiar uma chamada de ferramenta para depois](/pt/hooks#defer-a-tool-call-for-later) na referência.

554 

555Retornar `"allow"` pula o prompt interativo mas não substitui [regras de permissão](/pt/permissions#manage-permissions). Se uma regra de negação corresponder à chamada de ferramenta, a chamada é bloqueada mesmo quando seu hook retorna `"allow"`. Se uma regra de pedido corresponder, o usuário ainda é solicitado. Isto significa que regras de negação de qualquer escopo de configuração, incluindo [configurações gerenciadas](/pt/settings#settings-files), sempre têm precedência sobre aprovações de hook.

556 

557Outros eventos usam padrões de decisão diferentes. Por exemplo, hooks `PostToolUse` e `Stop` usam um campo `decision: "block"` de nível superior, enquanto `PermissionRequest` usa `hookSpecificOutput.decision.behavior`. Consulte a [tabela de resumo](/pt/hooks#decision-control) na referência para uma análise completa por evento.

558 

559Para hooks `UserPromptSubmit`, use `additionalContext` em vez disso para injetar texto no contexto do Claude. Hooks baseados em prompt (`type: "prompt"`) lidam com saída de forma diferente: consulte [Prompt-based hooks](#prompt-based-hooks).

560 

561### Filtrar hooks com matchers

562 

563Sem um matcher, um hook dispara em cada ocorrência de seu evento. Matchers permitem restringir isso. Por exemplo, se você quer executar um formatador apenas após edições de arquivo (não após cada chamada de ferramenta), adicione um matcher ao seu hook `PostToolUse`:

564 

565```json theme={null}

566{

567 "hooks": {

568 "PostToolUse": [

569 {

570 "matcher": "Edit|Write",

571 "hooks": [

572 { "type": "command", "command": "prettier --write ..." }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580O matcher `"Edit|Write"` dispara apenas quando Claude usa a ferramenta `Edit` ou `Write`, não quando usa `Bash`, `Read` ou qualquer outra ferramenta. Consulte [Padrões de matcher](/pt/hooks#matcher-patterns) para como nomes simples e expressões regulares são avaliados.

581 

582<Note>

583 Claude também pode criar ou modificar arquivos executando comandos shell através da ferramenta `Bash`. Se seu hook deve ver cada mudança de arquivo, como para varredura de conformidade ou registro de auditoria, adicione um hook [`Stop`](/pt/hooks#stop) que varre a árvore de trabalho uma vez por turno. Para cobertura por chamada em vez disso, também corresponda `Bash` e tenha seu script listar arquivos modificados e não rastreados com `git status --porcelain`.

584</Note>

585 

586Cada tipo de evento corresponde a um campo específico:

587 

588| Evento | O que o matcher filtra | Valores de matcher de exemplo |

589| :-------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

590| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nome da ferramenta | `Bash`, `Edit\|Write`, `mcp__.*` |

591| `SessionStart` | como a sessão começou | `startup`, `resume`, `clear`, `compact` |

592| `Setup` | qual flag CLI acionou a configuração | `init`, `maintenance` |

593| `SessionEnd` | por que a sessão terminou | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

594| `Notification` | tipo de notificação | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

595| `SubagentStart` | tipo de agente | `general-purpose`, `Explore`, `Plan`, ou nomes de agentes personalizados |

596| `PreCompact`, `PostCompact` | o que acionou a compactação | `manual`, `auto` |

597| `SubagentStop` | tipo de agente | mesmos valores que `SubagentStart` |

598| `ConfigChange` | fonte de configuração | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

599| `StopFailure` | tipo de erro | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

600| `InstructionsLoaded` | motivo de carregamento | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

601| `Elicitation` | nome do servidor MCP | seus nomes de servidor MCP configurados |

602| `ElicitationResult` | nome do servidor MCP | mesmos valores que `Elicitation` |

603| `FileChanged` | nomes de arquivo literais para observar (consulte [FileChanged](/pt/hooks#filechanged)) | `.envrc\|.env` |

604| `UserPromptExpansion` | nome do comando | seus nomes de skill ou comando |

605| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged` | sem suporte a matcher | sempre dispara em cada ocorrência |

606 

607Alguns exemplos adicionais mostrando matchers em diferentes tipos de evento:

608 

609<Tabs>

610 <Tab title="Registrar cada comando Bash">

611 Corresponda apenas chamadas de ferramenta `Bash` e registre cada comando em um arquivo. O evento `PostToolUse` dispara após o comando ser concluído, então `tool_input.command` contém o que foi executado. O hook recebe os dados do evento como JSON em stdin, e `jq -r '.tool_input.command'` extrai apenas a string de comando, que `>>` anexa ao arquivo de log:

612 

613 ```json theme={null}

614 {

615 "hooks": {

616 "PostToolUse": [

617 {

618 "matcher": "Bash",

619 "hooks": [

620 {

621 "type": "command",

622 "command": "jq -r '.tool_input.command' >> ~/.claude/command-log.txt"

623 }

624 ]

625 }

626 ]

627 }

628 }

629 ```

630 </Tab>

631 

632 <Tab title="Corresponder ferramentas MCP">

633 Ferramentas MCP usam uma convenção de nomenclatura diferente das ferramentas integradas: `mcp__<server>__<tool>`, onde `<server>` é o nome do servidor MCP e `<tool>` é a ferramenta que fornece. Por exemplo, `mcp__github__search_repositories` ou `mcp__filesystem__read_file`. Use um matcher regex para direcionar todas as ferramentas de um servidor específico, ou corresponder entre servidores com um padrão como `mcp__.*__write.*`. Consulte [Corresponder ferramentas MCP](/pt/hooks#match-mcp-tools) na referência para a lista completa de exemplos.

634 

635 O comando abaixo extrai o nome da ferramenta da entrada JSON do hook com `jq` e o escreve para stderr. Escrever para stderr mantém stdout limpo para saída JSON e envia a mensagem para o [log de debug](/pt/hooks#debug-hooks):

636 

637 ```json theme={null}

638 {

639 "hooks": {

640 "PreToolUse": [

641 {

642 "matcher": "mcp__github__.*",

643 "hooks": [

644 {

645 "type": "command",

646 "command": "echo \"GitHub tool called: $(jq -r '.tool_name')\" >&2"

647 }

648 ]

649 }

650 ]

651 }

652 }

653 ```

654 </Tab>

655 

656 <Tab title="Limpar ao final da sessão">

657 O evento `SessionEnd` suporta matchers na razão pela qual a sessão terminou. Este hook dispara apenas em `clear` (quando você executa `/clear`), não em saídas normais:

658 

659 ```json theme={null}

660 {

661 "hooks": {

662 "SessionEnd": [

663 {

664 "matcher": "clear",

665 "hooks": [

666 {

667 "type": "command",

668 "command": "rm -f /tmp/claude-scratch-*.txt"

669 }

670 ]

671 }

672 ]

673 }

674 }

675 ```

676 </Tab>

677</Tabs>

678 

679Para sintaxe completa de matcher, consulte a [referência de Hooks](/pt/hooks#configuration).

680 

681#### Filtrar por nome de ferramenta e argumentos com o campo `if`

682 

683<Note>

684 O campo `if` requer Claude Code v2.1.85 ou posterior. Versões anteriores o ignoram e executam o hook em cada chamada correspondida.

685</Note>

686 

687O campo `if` usa [sintaxe de regra de permissão](/pt/permissions) para filtrar hooks por nome de ferramenta e argumentos juntos, para que o processo do hook apenas seja gerado quando a chamada de ferramenta corresponder, ou quando um comando Bash é muito complexo para analisar. Isto vai além de `matcher`, que filtra no nível do grupo apenas por nome de ferramenta.

688 

689Por exemplo, para executar um hook apenas quando Claude usa comandos `git` em vez de todos os comandos Bash:

690 

691```json theme={null}

692{

693 "hooks": {

694 "PreToolUse": [

695 {

696 "matcher": "Bash",

697 "hooks": [

698 {

699 "type": "command",

700 "if": "Bash(git *)",

701 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-git-policy.sh"

702 }

703 ]

704 }

705 ]

706 }

707}

708```

709 

710O processo do hook apenas é gerado quando um subcomando do comando Bash corresponde a `git *`, ou quando o comando é muito complexo para analisar em subcomandos. Para comandos compostos como `npm test && git push`, Claude Code avalia cada subcomando e dispara o hook porque `git push` corresponde. O campo `if` aceita os mesmos padrões que regras de permissão: `"Bash(git *)"`, `"Edit(*.ts)"` e assim por diante. Para corresponder múltiplos nomes de ferramenta, use manipuladores separados cada um com seu próprio valor `if`, ou corresponda no nível `matcher` onde alternação de pipe é suportada.

711 

712`if` funciona apenas em eventos de ferramenta: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied`. Adicioná-lo a qualquer outro evento impede o hook de executar.

713 

714### Configurar local do hook

715 

716Onde você adiciona um hook determina seu escopo:

717 

718| Local | Escopo | Compartilhável |

719| :---------------------------------------------------------- | :------------------------------------ | :------------------------------------- |

720| `~/.claude/settings.json` | Todos os seus projetos | Não, local para sua máquina |

721| `.claude/settings.json` | Projeto único | Sim, pode ser commitado no repo |

722| `.claude/settings.local.json` | Projeto único | Não, gitignored |

723| Configurações de política gerenciada | Organização inteira | Sim, controlado por admin |

724| [Plugin](/pt/plugins) `hooks/hooks.json` | Quando o plugin está habilitado | Sim, empacotado com o plugin |

725| [Skill](/pt/skills) ou [agente](/pt/sub-agents) frontmatter | Enquanto a skill ou agente está ativo | Sim, definido no arquivo do componente |

726 

727Execute [`/hooks`](/pt/hooks#the-hooks-menu) no Claude Code para navegar por todos os hooks configurados agrupados por evento. Para desabilitar todos os hooks de uma vez, defina `"disableAllHooks": true` no seu arquivo de configuração.

728 

729Se você editar arquivos de configuração diretamente enquanto Claude Code está em execução, o observador de arquivo normalmente pega mudanças de hook automaticamente.

730 

731## Hooks baseados em prompt

732 

733Para decisões que exigem julgamento em vez de regras determinísticas, use hooks `type: "prompt"`. Em vez de executar um comando shell, Claude Code envia seu prompt e os dados de entrada do hook para um modelo Claude (Haiku por padrão) para tomar a decisão. Você pode especificar um modelo diferente com o campo `model` se precisar de mais capacidade.

734 

735O único trabalho do modelo é retornar uma decisão sim/não como JSON:

736 

737* `"ok": true`: a ação prossegue

738* `"ok": false`: o que acontece depende do evento:

739 * `Stop` e `SubagentStop`: o `reason` é alimentado de volta ao Claude para que ele continue trabalhando

740 * `PreToolUse`: a chamada de ferramenta é negada e o `reason` é retornado ao Claude como o erro da ferramenta, para que ele possa se ajustar e continuar

741 * `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` e `UserPromptExpansion`: o turno termina e o `reason` aparece no chat como uma linha de aviso

742 

743Este exemplo usa um hook `Stop` para perguntar ao modelo se todas as tarefas solicitadas estão completas. Se o modelo retornar `"ok": false`, Claude continua trabalhando e usa o `reason` como sua próxima instrução:

744 

745```json theme={null}

746{

747 "hooks": {

748 "Stop": [

749 {

750 "hooks": [

751 {

752 "type": "prompt",

753 "prompt": "Check if all tasks are complete. If not, respond with {\"ok\": false, \"reason\": \"what remains to be done\"}."

754 }

755 ]

756 }

757 ]

758 }

759}

760```

761 

762Para opções de configuração completas, consulte [Hooks baseados em prompt](/pt/hooks#prompt-based-hooks) na referência.

763 

764## Hooks baseados em agente

765 

766<Warning>

767 Hooks de agente são experimentais. Comportamento e configuração podem mudar em futuras versões. Para fluxos de trabalho de produção, prefira [hooks de comando](/pt/hooks#command-hook-fields).

768</Warning>

769 

770Quando a verificação exige inspecionar arquivos ou executar comandos, use hooks `type: "agent"`. Diferentemente de hooks de prompt que fazem uma única chamada LLM, hooks de agente geram um subagente que pode ler arquivos, pesquisar código e usar outras ferramentas para verificar condições antes de retornar uma decisão.

771 

772Hooks de agente usam o mesmo formato de resposta `"ok"` / `"reason"` que hooks de prompt, mas com um timeout padrão mais longo de 60 segundos e até 50 turnos de uso de ferramenta.

773 

774Este exemplo verifica que os testes passam antes de permitir que Claude pare:

775 

776```json theme={null}

777{

778 "hooks": {

779 "Stop": [

780 {

781 "hooks": [

782 {

783 "type": "agent",

784 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

785 "timeout": 120

786 }

787 ]

788 }

789 ]

790 }

791}

792```

793 

794Use hooks de prompt quando os dados de entrada do hook sozinhos são suficientes para tomar uma decisão. Use hooks de agente quando você precisa verificar algo contra o estado real da base de código.

795 

796Para opções de configuração completas, consulte [Hooks baseados em agente](/pt/hooks#agent-based-hooks) na referência.

797 

798## HTTP hooks

799 

800Use hooks `type: "http"` para POST dados de evento para um endpoint HTTP em vez de executar um comando shell. O endpoint recebe o mesmo JSON que um hook de comando receberia em stdin, e retorna resultados através do corpo da resposta HTTP usando o mesmo formato JSON.

801 

802HTTP hooks são úteis quando você quer que um servidor web, função em nuvem ou serviço externo manipule a lógica do hook: por exemplo, um serviço de auditoria compartilhado que registra eventos de uso de ferramenta em toda uma equipe.

803 

804Este exemplo posta cada uso de ferramenta para um serviço de logging local:

805 

806```json theme={null}

807{

808 "hooks": {

809 "PostToolUse": [

810 {

811 "hooks": [

812 {

813 "type": "http",

814 "url": "http://localhost:8080/hooks/tool-use",

815 "headers": {

816 "Authorization": "Bearer $MY_TOKEN"

817 },

818 "allowedEnvVars": ["MY_TOKEN"]

819 }

820 ]

821 }

822 ]

823 }

824}

825```

826 

827O endpoint deve retornar um corpo de resposta JSON usando o mesmo [formato de saída](/pt/hooks#json-output) que hooks de comando. Para bloquear uma chamada de ferramenta, retorne uma resposta 2xx com os campos `hookSpecificOutput` apropriados. Códigos de status HTTP sozinhos não podem bloquear ações.

828 

829Valores de header suportam interpolação de variável de ambiente usando sintaxe `$VAR_NAME` ou `${VAR_NAME}`. Apenas variáveis listadas no array `allowedEnvVars` são resolvidas; todas as outras referências `$VAR` permanecem vazias.

830 

831Para opções de configuração completas e manipulação de resposta, consulte [HTTP hooks](/pt/hooks#http-hook-fields) na referência.

832 

833## Limitações e solução de problemas

834 

835### Limitações

836 

837* Hooks de comando se comunicam apenas através de stdout, stderr e códigos de saída. Eles não podem disparar comandos `/` ou chamadas de ferramenta. Texto retornado via `additionalContext` é injetado como um lembrete do sistema que Claude lê como texto simples. HTTP hooks se comunicam através do corpo da resposta em vez disso.

838* O timeout do hook é 10 minutos por padrão, configurável por hook com o campo `timeout` (em segundos).

839* Hooks `PostToolUse` não podem desfazer ações já que a ferramenta já foi executada.

840* Hooks `PermissionRequest` não disparam em [modo não-interativo](/pt/headless) (`-p`). Use hooks `PreToolUse` para decisões de permissão automatizadas.

841* Hooks `Stop` disparam sempre que Claude termina de responder, não apenas na conclusão de tarefas. Eles não disparam em interrupções do usuário. Erros de API disparam [StopFailure](/pt/hooks#stopfailure) em vez disso.

842* Quando múltiplos hooks PreToolUse retornam [`updatedInput`](/pt/hooks#pretooluse) para reescrever argumentos de uma ferramenta, o último a terminar vence. Como hooks executam em paralelo, a ordem é não-determinística. Evite ter mais de um hook modificando a entrada da mesma ferramenta.

843 

844### Hooks e modos de permissão

845 

846Hooks PreToolUse disparam antes de qualquer verificação de modo de permissão. Um hook que retorna `permissionDecision: "deny"` bloqueia a ferramenta mesmo em modo `bypassPermissions` ou com `--dangerously-skip-permissions`. Isto permite que você aplique política que usuários não podem contornar mudando seu modo de permissão.

847 

848O inverso não é verdadeiro: um hook retornando `"allow"` não contorna regras de negação de configurações. Hooks podem apertar restrições mas não afrouxá-las além do que regras de permissão permitem.

849 

850### Hook não dispara

851 

852O hook está configurado mas nunca executa.

853 

854* Execute `/hooks` e confirme que o hook aparece sob o evento correto

855* Verifique que o padrão do matcher corresponde ao nome da ferramenta exatamente (matchers são sensíveis a maiúsculas)

856* Verifique que você está acionando o tipo de evento correto (por exemplo, `PreToolUse` dispara antes da execução da ferramenta, `PostToolUse` dispara depois)

857* Se usar hooks `PermissionRequest` em modo não-interativo (`-p`), mude para `PreToolUse` em vez disso

858 

859### Erro de hook na saída

860 

861Você vê uma mensagem como "PreToolUse hook error: ..." na transcrição.

862 

863* Seu script saiu com um código não-zero inesperadamente. Teste-o manualmente canalizando JSON de amostra:

864 ```bash theme={null}

865 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

866 echo $? # Verifique o código de saída

867 ```

868* Se você vir "command not found", use caminhos absolutos ou `$CLAUDE_PROJECT_DIR` para referenciar scripts

869* Se você vir "jq: command not found", instale `jq` ou use Python/Node.js para análise JSON

870* Se o script não está executando em tudo, torne-o executável: `chmod +x ./my-hook.sh`

871 

872### `/hooks` mostra nenhum hook configurado

873 

874Você editou um arquivo de configuração mas os hooks não aparecem no menu.

875 

876* Edições de arquivo são normalmente capturadas automaticamente. Se não tiverem aparecido após alguns segundos, o observador de arquivo pode ter perdido a mudança: reinicie sua sessão para forçar um recarregamento.

877* Verifique que seu JSON é válido (vírgulas finais e comentários não são permitidos)

878* Confirme que o arquivo de configuração está no local correto: `.claude/settings.json` para hooks de projeto, `~/.claude/settings.json` para hooks globais

879 

880### Stop hook executa para sempre

881 

882Claude continua trabalhando em um loop infinito em vez de parar.

883 

884Seu script de Stop hook precisa verificar se já acionou uma continuação. Analise o campo `stop_hook_active` da entrada JSON e saia cedo se for `true`:

885 

886```bash theme={null}

887#!/bin/bash

888INPUT=$(cat)

889if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then

890 exit 0 # Permitir que Claude pare

891fi

892# ... resto da lógica do seu hook

893```

894 

895### Validação JSON falhou

896 

897Claude Code mostra um erro de análise JSON mesmo que seu script de hook produza JSON válido.

898 

899Quando Claude Code executa um hook, ele gera um shell que fornece seu perfil (`~/.zshrc` ou `~/.bashrc`). Se seu perfil contiver instruções `echo` incondicionais, essa saída é adicionada ao seu JSON do hook:

900 

901```text theme={null}

902Shell ready on arm64

903{"decision": "block", "reason": "Not allowed"}

904```

905 

906Claude Code tenta analisar isto como JSON e falha. Para corrigir isto, envolva instruções echo no seu perfil shell para que executem apenas em shells interativos:

907 

908```bash theme={null}

909# Em ~/.zshrc ou ~/.bashrc

910if [[ $- == *i* ]]; then

911 echo "Shell ready"

912fi

913```

914 

915A variável `$-` contém flags de shell, e `i` significa interativo. Hooks executam em shells não-interativos, então o echo é pulado.

916 

917### Técnicas de debug

918 

919A visualização de transcrição, alternada com `Ctrl+O`, mostra um resumo de uma linha para cada hook que disparou: sucesso é silencioso, erros de bloqueio mostram stderr, e erros de não-bloqueio mostram um aviso `<hook name> hook error` seguido pela primeira linha de stderr.

920 

921Para detalhes de execução completos incluindo quais hooks corresponderam, seus códigos de saída, stdout e stderr, leia o log de debug. Inicie Claude Code com `claude --debug-file /tmp/claude.log` para escrever em um caminho conhecido, depois `tail -f /tmp/claude.log` em outro terminal. Se você iniciou sem essa flag, execute `/debug` no meio da sessão para habilitar logging e encontrar o caminho do log.

922 

923## Saiba mais

924 

925* [Referência de Hooks](/pt/hooks): esquemas de eventos completos, formato de saída JSON, hooks assíncronos e hooks de ferramentas MCP

926* [Considerações de segurança](/pt/hooks#security-considerations): revise antes de implantar hooks em ambientes compartilhados ou de produção

927* [Exemplo de validador de comando Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py): implementação de referência completa

how-claude-code-works.md +263 −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# Como Claude Code funciona

6 

7> Entenda o loop agentic, as ferramentas integradas e como Claude Code interage com seu projeto.

8 

9Claude Code é um assistente agentic que funciona em seu terminal. Embora se destaque em codificação, pode ajudar com qualquer coisa que você possa fazer a partir da linha de comando: escrever documentação, executar compilações, pesquisar arquivos, pesquisar tópicos e muito mais.

10 

11Este guia cobre a arquitetura principal, capacidades integradas e [dicas para trabalhar efetivamente](#work-effectively-with-claude-code). Para instruções passo a passo, consulte [Fluxos de trabalho comuns](/pt/common-workflows). Para recursos de extensibilidade como skills, MCP e hooks, consulte [Estender Claude Code](/pt/features-overview).

12 

13## O loop agentic

14 

15Quando você dá uma tarefa a Claude, ele trabalha através de três fases: **reunir contexto**, **tomar ação** e **verificar resultados**. Essas fases se misturam. Claude usa ferramentas ao longo do processo, seja pesquisando arquivos para entender seu código, editando para fazer alterações ou executando testes para verificar seu trabalho.

16 

17<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/agentic-loop.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=5f1827dec8539f38adee90ead3a85a38" alt="O loop agentic: Seu prompt leva Claude a reunir contexto, tomar ação, verificar resultados e repetir até que a tarefa seja concluída. Você pode interromper em qualquer ponto." width="720" height="280" data-path="images/agentic-loop.svg" />

18 

19O loop se adapta ao que você pede. Uma pergunta sobre sua base de código pode precisar apenas de coleta de contexto. Uma correção de bug passa por todas as três fases repetidamente. Uma refatoração pode envolver verificação extensiva. Claude decide o que cada etapa requer com base no que aprendeu da etapa anterior, encadeando dezenas de ações e se autocorrigindo ao longo do caminho.

20 

21Você também faz parte deste loop. Você pode interromper em qualquer ponto para orientar Claude em uma direção diferente, fornecer contexto adicional ou pedir que tente uma abordagem diferente. Claude trabalha autonomamente, mas permanece responsivo à sua entrada.

22 

23O loop agentic é alimentado por dois componentes: [modelos](#models) que raciocinam e [ferramentas](#tools) que agem. Claude Code serve como o **agentic harness** ao redor de Claude: fornece as ferramentas, gerenciamento de contexto e ambiente de execução que transformam um modelo de linguagem em um agente de codificação capaz.

24 

25### Models

26 

27Claude Code usa modelos Claude para entender seu código e raciocinar sobre tarefas. Claude pode ler código em qualquer linguagem, entender como os componentes se conectam e descobrir o que precisa mudar para alcançar seu objetivo. Para tarefas complexas, ele divide o trabalho em etapas, as executa e se ajusta com base no que aprende.

28 

29[Múltiplos modelos](/pt/model-config) estão disponíveis com diferentes compensações. Sonnet lida bem com a maioria das tarefas de codificação. Opus fornece raciocínio mais forte para decisões arquitetônicas complexas. Mude com `/model` durante uma sessão ou comece com `claude --model <name>`.

30 

31Quando este guia diz "Claude escolhe" ou "Claude decide", é o modelo fazendo o raciocínio.

32 

33### Tools

34 

35Ferramentas são o que tornam Claude Code agentic. Sem ferramentas, Claude pode apenas responder com texto. Com ferramentas, Claude pode agir: ler seu código, editar arquivos, executar comandos, pesquisar a web e interagir com serviços externos. Cada uso de ferramenta retorna informações que alimentam o loop, informando a próxima decisão de Claude.

36 

37As ferramentas integradas geralmente se enquadram em cinco categorias, cada uma representando um tipo diferente de agência.

38 

39| Categoria | O que Claude pode fazer |

40| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

41| **Operações de arquivo** | Ler arquivos, editar código, criar novos arquivos, renomear e reorganizar |

42| **Pesquisa** | Encontrar arquivos por padrão, pesquisar conteúdo com regex, explorar bases de código |

43| **Execução** | Executar comandos shell, iniciar servidores, executar testes, usar git |

44| **Web** | Pesquisar a web, buscar documentação, procurar mensagens de erro |

45| **Inteligência de código** | Ver erros de tipo e avisos após edições, pular para definições, encontrar referências (requer [plugins de inteligência de código](/pt/discover-plugins#code-intelligence)) |

46 

47Essas são as capacidades principais. Claude também tem ferramentas para gerar subagents, fazer perguntas a você e outras tarefas de orquestração. Consulte [Ferramentas disponíveis para Claude](/pt/tools-reference) para a lista completa.

48 

49Claude escolhe quais ferramentas usar com base em seu prompt e no que aprende ao longo do caminho. Quando você diz "corrigir os testes falhando", Claude pode:

50 

511. Executar o conjunto de testes para ver o que está falhando

522. Ler a saída de erro

533. Pesquisar os arquivos de código-fonte relevantes

544. Ler esses arquivos para entender o código

555. Editar os arquivos para corrigir o problema

566. Executar os testes novamente para verificar

57 

58Cada uso de ferramenta dá a Claude novas informações que informam a próxima etapa. Este é o loop agentic em ação.

59 

60**Estendendo as capacidades base:** As ferramentas integradas são a base. Você pode estender o que Claude sabe com [skills](/pt/skills), conectar a serviços externos com [MCP](/pt/mcp), automatizar fluxos de trabalho com [hooks](/pt/hooks) e delegar tarefas a [subagents](/pt/sub-agents). Essas extensões formam uma camada sobre o loop agentic principal. Consulte [Estender Claude Code](/pt/features-overview) para orientação sobre como escolher a extensão certa para suas necessidades.

61 

62## O que Claude pode acessar

63 

64Este guia se concentra no terminal. Claude Code também funciona em [VS Code](/pt/vs-code), [IDEs JetBrains](/pt/jetbrains) e outros ambientes.

65 

66Quando você executa `claude` em um diretório, Claude Code ganha acesso a:

67 

68* **Seu projeto.** Arquivos em seu diretório e subdiretórios, além de arquivos em outro lugar com sua permissão.

69* **Seu terminal.** Qualquer comando que você possa executar: ferramentas de compilação, git, gerenciadores de pacotes, utilitários do sistema, scripts. Se você pode fazer a partir da linha de comando, Claude também pode.

70* **Seu estado git.** Branch atual, alterações não confirmadas e histórico de commits recentes.

71* **Seu [CLAUDE.md](/pt/memory).** Um arquivo markdown onde você armazena instruções específicas do projeto, convenções e contexto que Claude deve conhecer a cada sessão.

72* **[Auto memory](/pt/memory#auto-memory).** Aprendizados que Claude salva automaticamente conforme você trabalha, como padrões de projeto e suas preferências. As primeiras 200 linhas ou 25KB de MEMORY.md, o que vier primeiro, são carregadas no início de cada sessão.

73* **Extensões que você configura.** [Servidores MCP](/pt/mcp) para serviços externos, [skills](/pt/skills) para fluxos de trabalho, [subagents](/pt/sub-agents) para trabalho delegado e [Claude no Chrome](/pt/chrome) para interação com navegador.

74 

75Como Claude vê seu projeto inteiro, pode trabalhar em todo ele. Quando você pede a Claude para "corrigir o bug de autenticação", ele pesquisa arquivos relevantes, lê múltiplos arquivos para entender o contexto, faz edições coordenadas entre eles, executa testes para verificar a correção e confirma as alterações se você pedir. Isso é diferente de assistentes de código inline que apenas veem o arquivo atual.

76 

77## Ambientes e interfaces

78 

79O loop agentic, ferramentas e capacidades descritos acima são os mesmos em qualquer lugar que você use Claude Code. O que muda é onde o código é executado e como você interage com ele.

80 

81### Ambientes de execução

82 

83Claude Code funciona em três ambientes, cada um com diferentes compensações para onde seu código é executado.

84 

85| Ambiente | Onde o código é executado | Caso de uso |

86| ------------------ | ------------------------------------------------ | ---------------------------------------------------------------------- |

87| **Local** | Sua máquina | Padrão. Acesso completo aos seus arquivos, ferramentas e ambiente |

88| **Cloud** | VMs gerenciadas pela Anthropic | Delegar tarefas, trabalhar em repositórios que você não tem localmente |

89| **Remote Control** | Sua máquina, controlada a partir de um navegador | Use a interface web mantendo tudo local |

90 

91### Interfaces

92 

93Você pode acessar Claude Code através do terminal, do [aplicativo desktop](/pt/desktop), [extensões IDE](/pt/vs-code), [claude.ai/code](https://claude.ai/code), [Remote Control](/pt/remote-control), [Slack](/pt/slack) e [pipelines CI/CD](/pt/github-actions). A interface determina como você vê e interage com Claude, mas o loop agentic subjacente é idêntico. Consulte [Use Claude Code em qualquer lugar](/pt/overview#use-claude-code-everywhere) para a lista completa.

94 

95## Trabalhe com sessões

96 

97Claude Code salva sua conversa localmente conforme você trabalha. Cada mensagem, uso de ferramenta e resultado é armazenado, o que permite [retroceder](#undo-changes-with-checkpoints), [retomar e bifurcar](#resume-or-fork-sessions) sessões. Antes de Claude fazer alterações de código, ele também tira um snapshot dos arquivos afetados para que você possa reverter se necessário.

98 

99**As sessões são independentes.** Cada nova sessão começa com uma janela de contexto fresca, sem o histórico de conversa de sessões anteriores. Claude pode persistir aprendizados entre sessões usando [auto memory](/pt/memory#auto-memory), e você pode adicionar suas próprias instruções persistentes em [CLAUDE.md](/pt/memory).

100 

101### Trabalhe entre branches

102 

103Cada conversa de Claude Code é uma sessão vinculada ao seu diretório atual. Quando você retoma, você só vê sessões desse diretório.

104 

105Claude vê os arquivos do seu branch atual. Quando você muda de branch, Claude vê os arquivos do novo branch, mas seu histórico de conversa permanece o mesmo. Claude se lembra do que você discutiu mesmo após mudar de branch.

106 

107Como as sessões estão vinculadas a diretórios, você pode executar sessões paralelas de Claude Code usando [git worktrees](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), que criam diretórios separados para branches individuais.

108 

109### Retome ou bifurque sessões

110 

111Quando você retoma uma sessão com `claude --continue` ou `claude --resume`, você continua de onde parou usando o mesmo ID de sessão. Novas mensagens são anexadas à conversa existente. Seu histórico de conversa completo é restaurado, mas as permissões com escopo de sessão não são. Você precisará re-aprovar essas.

112 

113<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/session-continuity.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=fa41d12bfb57579cabfeece907151d30" alt="Continuidade de sessão: retomar continua a mesma sessão, bifurcar cria um novo branch com um novo ID." width="560" height="280" data-path="images/session-continuity.svg" />

114 

115Para ramificar e tentar uma abordagem diferente sem afetar a sessão original, use a flag `--fork-session`:

116 

117```bash theme={null}

118claude --continue --fork-session

119```

120 

121Isso cria um novo ID de sessão enquanto preserva o histórico de conversa até esse ponto. A sessão original permanece inalterada. Como retomar, sessões bifurcadas não herdam permissões com escopo de sessão.

122 

123**Mesma sessão em múltiplos terminais**: Se você retomar a mesma sessão em múltiplos terminais, ambos os terminais escrevem no mesmo arquivo de sessão. Mensagens de ambos ficam intercaladas, como duas pessoas escrevendo no mesmo caderno. Nada se corrompe, mas a conversa fica confusa. Cada terminal vê apenas suas próprias mensagens durante a sessão, mas se você retomar essa sessão mais tarde, verá tudo intercalado. Para trabalho paralelo a partir do mesmo ponto de partida, use `--fork-session` para dar a cada terminal sua própria sessão limpa.

124 

125### A janela de contexto

126 

127A janela de contexto de Claude contém seu histórico de conversa, conteúdo de arquivos, saídas de comando, [CLAUDE.md](/pt/memory), [auto memory](/pt/memory#auto-memory), skills carregadas e instruções do sistema. Conforme você trabalha, o contexto se enche. Claude compacta automaticamente, mas instruções do início da conversa podem ser perdidas. Coloque regras persistentes em CLAUDE.md e execute `/context` para ver o que está usando espaço.

128 

129Para um passo a passo interativo do que é carregado e quando, consulte [Explore a janela de contexto](/pt/context-window).

130 

131#### Quando o contexto se enche

132 

133Claude Code gerencia o contexto automaticamente conforme você se aproxima do limite. Ele limpa saídas de ferramentas mais antigas primeiro, depois resume a conversa se necessário. Suas solicitações e trechos de código-chave são preservados; instruções detalhadas do início da conversa podem ser perdidas. Coloque regras persistentes em CLAUDE.md em vez de confiar no histórico de conversa.

134 

135Para controlar o que é preservado durante a compactação, adicione uma seção "Compact Instructions" a CLAUDE.md ou execute `/compact` com um foco (como `/compact focus on the API changes`).

136 

137Execute `/context` para ver o que está usando espaço. Definições de ferramentas MCP são adiadas por padrão e carregadas sob demanda via [busca de ferramentas](/pt/mcp#scale-with-mcp-tool-search), então apenas nomes de ferramentas consomem contexto até Claude usar uma ferramenta específica. Execute `/mcp` para verificar custos por servidor.

138 

139#### Gerencie contexto com skills e subagents

140 

141Além da compactação, você pode usar outros recursos para controlar o que é carregado no contexto.

142 

143[Skills](/pt/skills) carregam sob demanda. Claude vê descrições de skills no início da sessão, mas o conteúdo completo só carrega quando uma skill é usada. Para skills que você invoca manualmente, defina `disable-model-invocation: true` para manter descrições fora do contexto até que você precise delas.

144 

145[Subagents](/pt/sub-agents) obtêm seu próprio contexto fresco, completamente separado de sua conversa principal. Seu trabalho não incha seu contexto. Quando terminado, eles retornam um resumo. Esse isolamento é por que subagents ajudam em sessões longas.

146 

147Consulte [custos de contexto](/pt/features-overview#understand-context-costs) para o que cada recurso custa e [reduzir uso de tokens](/pt/costs#reduce-token-usage) para dicas sobre como gerenciar contexto.

148 

149## Fique seguro com checkpoints e permissões

150 

151Claude tem dois mecanismos de segurança: checkpoints permitem que você desfaça alterações de arquivo e permissões controlam o que Claude pode fazer sem perguntar.

152 

153### Desfaça alterações com checkpoints

154 

155**Cada edição de arquivo é reversível.** Antes de Claude editar qualquer arquivo, ele tira um snapshot do conteúdo atual. Se algo der errado, pressione `Esc` duas vezes para retroceder a um estado anterior ou peça a Claude para desfazer.

156 

157Checkpoints são locais para sua sessão, separados do git. Eles cobrem apenas alterações de arquivo. Ações que afetam sistemas remotos (bancos de dados, APIs, implantações) não podem ser checkpointed, é por isso que Claude pergunta antes de executar comandos com efeitos colaterais externos.

158 

159### Controle o que Claude pode fazer

160 

161Pressione `Shift+Tab` para percorrer os modos de permissão:

162 

163* **Padrão**: Claude pergunta antes de edições de arquivo e comandos shell

164* **Auto-aceitar edições**: Claude edita arquivos sem perguntar, ainda pergunta por comandos

165* **Plan Mode**: Claude usa apenas ferramentas somente leitura, criando um plano que você pode aprovar antes da execução

166* **Auto mode**: Claude avalia todas as ações com verificações de segurança em segundo plano. Atualmente uma visualização de pesquisa

167 

168Você também pode permitir comandos específicos em `.claude/settings.json` para que Claude não pergunte cada vez. Isso é útil para comandos confiáveis como `npm test` ou `git status`. As configurações podem ser escopo de políticas em toda a organização até preferências pessoais. Consulte [Permissões](/pt/permissions) para detalhes.

169 

170***

171 

172## Trabalhe efetivamente com Claude Code

173 

174Essas dicas ajudam você a obter melhores resultados de Claude Code.

175 

176### Peça ajuda a Claude Code

177 

178Claude Code pode ensinar você como usá-lo. Faça perguntas como "como configuro hooks?" ou "qual é a melhor maneira de estruturar meu CLAUDE.md?" e Claude explicará.

179 

180Comandos integrados também o guiam através da configuração:

181 

182* `/init` o guia através da criação de um CLAUDE.md para seu projeto

183* `/agents` ajuda você a configurar subagents personalizados

184* `/doctor` diagnostica problemas comuns com sua instalação

185 

186### É uma conversa

187 

188Claude Code é conversacional. Você não precisa de prompts perfeitos. Comece com o que você quer, depois refine:

189 

190```text theme={null}

191Corrigir o bug de login

192```

193 

194\[Claude investiga, tenta algo]

195 

196```text theme={null}

197Isso não é bem certo. O problema está no tratamento de sessão.

198```

199 

200\[Claude ajusta a abordagem]

201 

202Quando a primeira tentativa não está certa, você não começa do zero. Você itera.

203 

204#### Interrompa e oriente

205 

206Você pode interromper Claude em qualquer ponto. Se ele está indo pelo caminho errado, apenas digite sua correção e pressione Enter. Claude parará o que está fazendo e ajustará sua abordagem com base em sua entrada. Você não precisa esperar que termine ou começar do zero.

207 

208### Seja específico desde o início

209 

210Quanto mais preciso seu prompt inicial, menos correções você precisará. Referencie arquivos específicos, mencione restrições e aponte para padrões de exemplo.

211 

212```text theme={null}

213O fluxo de checkout está quebrado para usuários com cartões expirados.

214Verifique src/payments/ para o problema, especialmente atualização de token.

215Escreva um teste falhando primeiro, depois corrija.

216```

217 

218Prompts vagos funcionam, mas você gastará mais tempo orientando. Prompts específicos como o acima geralmente têm sucesso na primeira tentativa.

219 

220### Dê a Claude algo para verificar

221 

222Claude funciona melhor quando pode verificar seu próprio trabalho. Inclua casos de teste, cole screenshots da UI esperada ou defina a saída que você quer.

223 

224```text theme={null}

225Implementar validateEmail. Casos de teste: 'user@example.com' → true,

226'invalid' → false, 'user@.com' → false. Execute os testes depois.

227```

228 

229Para trabalho visual, cole um screenshot do design e peça a Claude para comparar sua implementação com ele.

230 

231### Explore antes de implementar

232 

233Para problemas complexos, separe pesquisa de codificação. Use plan mode (`Shift+Tab` duas vezes) para analisar a base de código primeiro:

234 

235```text theme={null}

236Leia src/auth/ e entenda como lidamos com sessões.

237Depois crie um plano para adicionar suporte OAuth.

238```

239 

240Revise o plano, refine-o através de conversa, depois deixe Claude implementar. Essa abordagem de duas fases produz melhores resultados do que pular direto para código.

241 

242### Delegue, não dite

243 

244Pense em delegar a um colega capaz. Dê contexto e direção, depois confie em Claude para descobrir os detalhes:

245 

246```text theme={null}

247O fluxo de checkout está quebrado para usuários com cartões expirados.

248O código relevante está em src/payments/. Você pode investigar e corrigir?

249```

250 

251Você não precisa especificar quais arquivos ler ou quais comandos executar. Claude descobre isso.

252 

253## O que vem a seguir

254 

255<CardGroup cols={2}>

256 <Card title="Estender com recursos" icon="puzzle-piece" href="/pt/features-overview">

257 Adicione Skills, conexões MCP e comandos personalizados

258 </Card>

259 

260 <Card title="Fluxos de trabalho comuns" icon="graduation-cap" href="/pt/common-workflows">

261 Guias passo a passo para tarefas típicas

262 </Card>

263</CardGroup>

interactive-mode.md +362 −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# Modo interativo

6 

7> Referência completa para atalhos de teclado, modos de entrada e recursos interativos em sessões do Claude Code.

8 

9## Atalhos de teclado

10 

11<Note>

12 Os atalhos de teclado podem variar por plataforma e terminal. Pressione `?` para ver os atalhos disponíveis para seu ambiente.

13 

14 **Usuários de macOS**: Os atalhos da tecla Option/Alt (`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`, `Alt+T`) exigem configurar Option como Meta no seu terminal:

15 

16 * **iTerm2**: Configurações → Profiles → Keys → General → defina Left/Right Option key para "Esc+"

17 * **Apple Terminal**: Configurações → Profiles → Keyboard → marque "Use Option as Meta Key"

18 * **VS Code**: defina `"terminal.integrated.macOptionIsMeta": true` nas configurações do VS Code

19 

20 Veja [Configuração de terminal](/pt/terminal-config) para detalhes.

21</Note>

22 

23### Controles gerais

24 

25| Atalho | Descrição | Contexto |

26| :------------------------------------------------ | :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

27| `Ctrl+C` | Cancelar entrada ou geração atual | Interrupção padrão |

28| `Ctrl+X Ctrl+K` | Encerrar todos os agentes em segundo plano. Pressione duas vezes em 3 segundos para confirmar | Controle de agente em segundo plano |

29| `Ctrl+D` | Sair da sessão do Claude Code | Sinal EOF |

30| `Ctrl+G` ou `Ctrl+X Ctrl+E` | Abrir no editor de texto padrão | Edite seu prompt ou resposta personalizada no seu editor de texto padrão. `Ctrl+X Ctrl+E` é a ligação nativa do readline. Ative Mostrar última resposta em editor externo em `/config` para adicionar a resposta anterior do Claude como contexto comentado com `#` acima do seu prompt; o bloco de comentário é removido quando você salva |

31| `Ctrl+L` | Redesenhar tela | Força um redesenho completo do terminal. A entrada e o histórico de conversa são mantidos. Use isto para recuperar se a exibição ficar corrompida ou parcialmente em branco |

32| `Ctrl+O` | Alternar visualizador de transcrição | Mostra uso e execução de ferramentas detalhados. Também expande chamadas MCP, que se contraem para uma única linha como "Chamou slack 3 vezes" por padrão |

33| `Ctrl+R` | Pesquisa reversa no histórico de comandos | Pesquise através de comandos anteriores interativamente |

34| `Ctrl+V` ou `Cmd+V` (iTerm2) ou `Alt+V` (Windows) | Colar imagem da área de transferência | Insere um chip `[Image #N]` no cursor para que você possa referenciá-lo posicionalmente no seu prompt |

35| `Ctrl+B` | Tarefas em execução em segundo plano | Coloca comandos bash e agentes em segundo plano. Usuários de Tmux pressione duas vezes |

36| `Ctrl+T` | Alternar lista de tarefas | Mostrar ou ocultar a [lista de tarefas](#task-list) na área de status do terminal |

37| `Left/Right arrows` | Ciclar através de abas de diálogo | Navegue entre abas em diálogos de permissão e menus |

38| `Up/Down arrows` ou `Ctrl+P`/`Ctrl+N` | Mover cursor ou navegar histórico de comandos | Em entrada multilinha, primeiro move o cursor dentro do prompt. Uma vez que o cursor já está na borda superior ou inferior, pressionar novamente navega pelo histórico de comandos |

39| `Esc` + `Esc` | Retroceder ou resumir | Restaurar código e/ou conversa para um ponto anterior, ou resumir a partir de uma mensagem selecionada |

40| `Shift+Tab` ou `Alt+M` (algumas configurações) | Alternar modos de permissão | Alternar entre `default`, `acceptEdits`, `plan` e qualquer modo que você tenha ativado, como `auto` ou `bypassPermissions`. Veja [modos de permissão](/pt/permission-modes). |

41| `Option+P` (macOS) ou `Alt+P` (Windows/Linux) | Alternar modelo | Alternar modelos sem limpar seu prompt |

42| `Option+T` (macOS) ou `Alt+T` (Windows/Linux) | Alternar pensamento estendido | Ativar ou desativar modo de pensamento estendido. No macOS, configure seu terminal para enviar Option como Meta para que este atalho funcione |

43| `Option+O` (macOS) ou `Alt+O` (Windows/Linux) | Alternar modo rápido | Ativar ou desativar [modo rápido](/pt/fast-mode) |

44 

45### Edição de texto

46 

47| Atalho | Descrição | Contexto |

48| :---------------------- | :---------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| `Ctrl+A` | Mover cursor para o início da linha atual | Em entrada multilinha, move para o início da linha lógica atual |

50| `Ctrl+E` | Mover cursor para o final da linha atual | Em entrada multilinha, move para o final da linha lógica atual |

51| `Ctrl+K` | Deletar até o final da linha | Armazena texto deletado para colar |

52| `Ctrl+U` | Deletar do cursor até o início da linha | Armazena texto deletado para colar. Repita para limpar entre linhas em entrada multilinha. No macOS, emuladores de terminal incluindo iTerm2 e Terminal.app mapeiam `Cmd+Backspace` para este atalho |

53| `Ctrl+W` | Deletar palavra anterior | Armazena texto deletado para colar. No Windows, `Ctrl+Backspace` também deleta a palavra anterior |

54| `Ctrl+Y` | Colar texto deletado | Cole texto deletado com `Ctrl+K`, `Ctrl+U` ou `Ctrl+W` |

55| `Alt+Y` (após `Ctrl+Y`) | Ciclar histórico de cola | Após colar, cicle através de texto deletado anteriormente. Requer [Option como Meta](#keyboard-shortcuts) no macOS |

56| `Alt+B` | Mover cursor uma palavra para trás | Navegação de palavra. Requer [Option como Meta](#keyboard-shortcuts) no macOS |

57| `Alt+F` | Mover cursor uma palavra para frente | Navegação de palavra. Requer [Option como Meta](#keyboard-shortcuts) no macOS |

58 

59### Tema e exibição

60 

61| Atalho | Descrição | Contexto |

62| :------- | :------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |

63| `Ctrl+T` | Alternar destaque de sintaxe para blocos de código | Funciona apenas dentro do menu seletor `/theme`. Controla se o código nas respostas do Claude usa coloração de sintaxe |

64 

65### Entrada multilinha

66 

67| Método | Atalho | Contexto |

68| :-------------------- | :---------------- | :------------------------------------------------------------------------------------------------ |

69| Escape rápido | `\` + `Enter` | Funciona em todos os terminais |

70| Tecla Option | `Option+Enter` | Após ativar [Option como Meta](/pt/terminal-config#enable-option-key-shortcuts-on-macos) no macOS |

71| Shift+Enter | `Shift+Enter` | Nativo em iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal |

72| Sequência de controle | `Ctrl+J` | Funciona em qualquer terminal sem configuração |

73| Modo de cola | Colar diretamente | Para blocos de código, logs |

74 

75<Tip>

76 Shift+Enter funciona sem configuração em iTerm2, WezTerm, Ghostty, Kitty, Warp e Apple Terminal. Para VS Code, Cursor, Windsurf, Alacritty e Zed, execute `/terminal-setup` para instalar o atalho.

77</Tip>

78 

79### Comandos rápidos

80 

81| Atalho | Descrição | Notas |

82| :------------ | :--------------------------- | :----------------------------------------------------------------- |

83| `/` no início | Comando ou skill | Veja [comandos](#commands) e [skills](/pt/skills) |

84| `!` no início | Modo Bash | Execute comandos diretamente e adicione saída de execução à sessão |

85| `@` | Menção de caminho de arquivo | Ativar preenchimento automático de caminho de arquivo |

86 

87### Visualizador de transcrição

88 

89Quando o visualizador de transcrição está aberto (alternado com `Ctrl+O`), estes atalhos estão disponíveis. `Ctrl+E` pode ser reatribuído via [`transcript:toggleShowAll`](/pt/keybindings).

90 

91| Atalho | Descrição |

92| :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

93| `Ctrl+E` | Alternar mostrar todo o conteúdo |

94| `[` | Escrever a conversa completa no scrollback nativo do seu terminal para que `Cmd+F`, modo de cópia do tmux e outras ferramentas nativas possam pesquisá-lo. Requer [renderização em tela cheia](/pt/fullscreen#search-and-review-the-conversation) |

95| `v` | Escrever a conversa em um arquivo temporário e abri-lo em `$VISUAL` ou `$EDITOR`. Requer [renderização em tela cheia](/pt/fullscreen) |

96| `q`, `Ctrl+C`, `Esc` | Sair da visualização de transcrição. Todos os três podem ser reatribuídos via [`transcript:exit`](/pt/keybindings) |

97 

98### Entrada de voz

99 

100| Atalho | Descrição | Notas |

101| :---------------------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

102| Manter ou tocar `Space` | Ditação de voz | Requer que [ditação de voz](/pt/voice-dictation) esteja ativada. Mantenha pressionado para gravar, ou execute `/voice tap` para alternância por toque. [Reatribuível](/pt/voice-dictation#rebind-the-dictation-key) |

103 

104## Comandos

105 

106Digite `/` no Claude Code para ver todos os comandos disponíveis, ou digite `/` seguido de qualquer letra para filtrar. O menu `/` mostra tudo que você pode invocar: comandos integrados, [skills](/pt/skills) agrupados e criados por usuários, e comandos contribuídos por [plugins](/pt/plugins) e [servidores MCP](/pt/mcp#use-mcp-prompts-as-commands). Nem todos os comandos integrados são visíveis para todos os usuários, pois alguns dependem de sua plataforma ou plano.

107 

108Veja a [referência de comandos](/pt/commands) para a lista completa de comandos incluídos no Claude Code.

109 

110## Modo editor Vim

111 

112Ative edição no estilo vim via `/config` → Editor mode.

113 

114### Alternância de modo

115 

116| Comando | Ação | Do modo |

117| :------ | :----------------------------------- | :------------- |

118| `Esc` | Entrar no modo NORMAL | INSERT, VISUAL |

119| `i` | Inserir antes do cursor | NORMAL |

120| `I` | Inserir no início da linha | NORMAL |

121| `a` | Inserir após o cursor | NORMAL |

122| `A` | Inserir no final da linha | NORMAL |

123| `o` | Abrir linha abaixo | NORMAL |

124| `O` | Abrir linha acima | NORMAL |

125| `v` | Iniciar seleção visual por caractere | NORMAL |

126| `V` | Iniciar seleção visual por linha | NORMAL |

127 

128### Navegação (modo NORMAL)

129 

130| Comando | Ação |

131| :-------------- | :------------------------------------------------------- |

132| `h`/`j`/`k`/`l` | Mover esquerda/baixo/cima/direita |

133| `w` | Próxima palavra |

134| `e` | Final da palavra |

135| `b` | Palavra anterior |

136| `0` | Início da linha |

137| `$` | Final da linha |

138| `^` | Primeiro caractere não em branco |

139| `gg` | Início da entrada |

140| `G` | Final da entrada |

141| `f{char}` | Pular para próxima ocorrência do caractere |

142| `F{char}` | Pular para ocorrência anterior do caractere |

143| `t{char}` | Pular para logo antes da próxima ocorrência do caractere |

144| `T{char}` | Pular para logo após a ocorrência anterior do caractere |

145| `;` | Repetir último movimento f/F/t/T |

146| `,` | Repetir último movimento f/F/t/T em reverso |

147 

148<Note>

149 No modo normal vim, se o cursor estiver no início ou final da entrada e não puder se mover mais, `j`/`k` e as setas de navegação navegam pelo histórico de comandos.

150</Note>

151 

152### Edição (modo NORMAL)

153 

154| Comando | Ação |

155| :------------- | :---------------------------------- |

156| `x` | Deletar caractere |

157| `dd` | Deletar linha |

158| `D` | Deletar até o final da linha |

159| `dw`/`de`/`db` | Deletar palavra/até final/para trás |

160| `cc` | Mudar linha |

161| `C` | Mudar até o final da linha |

162| `cw`/`ce`/`cb` | Mudar palavra/até final/para trás |

163| `yy`/`Y` | Yancar (copiar) linha |

164| `yw`/`ye`/`yb` | Yancar palavra/até final/para trás |

165| `p` | Colar após o cursor |

166| `P` | Colar antes do cursor |

167| `>>` | Indentar linha |

168| `<<` | Desindentação de linha |

169| `J` | Juntar linhas |

170| `u` | Desfazer |

171| `.` | Repetir última mudança |

172 

173### Objetos de texto (modo NORMAL)

174 

175Objetos de texto funcionam com operadores como `d`, `c` e `y`:

176 

177| Comando | Ação |

178| :-------- | :--------------------------------------------------------- |

179| `iw`/`aw` | Palavra interna/ao redor |

180| `iW`/`aW` | PALAVRA interna/ao redor (delimitada por espaço em branco) |

181| `i"`/`a"` | Aspas duplas internas/ao redor |

182| `i'`/`a'` | Aspas simples internas/ao redor |

183| `i(`/`a(` | Parênteses internos/ao redor |

184| `i[`/`a[` | Colchetes internos/ao redor |

185| `i{`/`a{` | Chaves internas/ao redor |

186 

187### Modo visual

188 

189Pressione `v` para seleção por caractere ou `V` para seleção por linha. Os movimentos estendem a seleção e os operadores atuam diretamente sobre ela.

190 

191| Comando | Ação |

192| :--------------- | :-------------------------------------------------------- |

193| `d`/`x` | Deletar seleção |

194| `y` | Yancar seleção |

195| `c`/`s` | Mudar seleção |

196| `p` | Substituir seleção pelo conteúdo do registro |

197| `r{char}` | Substituir cada caractere selecionado por `{char}` |

198| `~`/`u`/`U` | Alternar, minúsculas ou maiúsculas na seleção |

199| `>`/`<` | Indentar ou desindentação de linhas selecionadas |

200| `J` | Juntar linhas selecionadas |

201| `o` | Trocar cursor e âncora |

202| `iw`/`aw`/`i"`/… | Selecionar um objeto de texto |

203| `v`/`V` | Alternar entre seleção por caractere e por linha, ou sair |

204 

205O modo visual por bloco com `Ctrl+V` não é suportado.

206 

207## Histórico de comandos

208 

209Claude Code mantém histórico de comandos para a sessão atual:

210 

211* O histórico de entrada é armazenado por diretório de trabalho

212* O histórico de entrada é redefinido quando você executa `/clear` para iniciar uma nova sessão. A conversa da sessão anterior é preservada e pode ser retomada.

213* Use as setas Para cima/Para baixo para navegar (veja atalhos de teclado acima)

214* **Nota**: expansão de histórico (`!`) está desabilitada por padrão

215 

216### Pesquisa reversa com Ctrl+R

217 

218Pressione `Ctrl+R` para pesquisar interativamente através do seu histórico de comandos:

219 

2201. **Iniciar pesquisa**: pressione `Ctrl+R` para ativar pesquisa de histórico reverso

2212. **Digitar consulta**: insira texto para pesquisar em comandos anteriores. O termo de pesquisa é destacado nos resultados correspondentes

2223. **Navegar correspondências**: pressione `Ctrl+R` novamente para ciclar através de correspondências mais antigas

2234. **Mudar escopo**: pressione `Ctrl+S` para alternar entre esta sessão, este projeto e todos os projetos

2245. **Aceitar correspondência**:

225 * Pressione `Tab` ou `Esc` para aceitar a correspondência atual e continuar editando

226 * Pressione `Enter` para aceitar e executar o comando imediatamente

2276. **Cancelar pesquisa**:

228 * Pressione `Ctrl+C` para cancelar e restaurar sua entrada original

229 * Pressione `Backspace` em pesquisa vazia para cancelar

230 

231A pesquisa exibe comandos correspondentes com o termo de pesquisa destacado, para que você possa encontrar e reutilizar entradas anteriores.

232 

233## Comandos bash em segundo plano

234 

235Claude Code suporta execução de comandos bash em segundo plano, permitindo que você continue trabalhando enquanto processos de longa duração são executados.

236 

237### Como o segundo plano funciona

238 

239Quando Claude Code executa um comando em segundo plano, ele executa o comando de forma assíncrona e retorna imediatamente um ID de tarefa em segundo plano. Claude Code pode responder a novos prompts enquanto o comando continua sendo executado em segundo plano.

240 

241Para executar comandos em segundo plano, você pode:

242 

243* Solicitar ao Claude Code para executar um comando em segundo plano

244* Pressionar Ctrl+B para mover uma invocação regular da ferramenta Bash para o segundo plano. (Usuários de Tmux devem pressionar Ctrl+B duas vezes devido à tecla de prefixo do tmux.)

245 

246**Recursos principais:**

247 

248* A saída é escrita em um arquivo e Claude pode recuperá-la usando a ferramenta Read

249* Tarefas em segundo plano têm IDs únicos para rastreamento e recuperação de saída

250* Tarefas em segundo plano são limpas automaticamente quando Claude Code sai

251* Tarefas em segundo plano são automaticamente encerradas se a saída exceder 5GB, com uma nota em stderr explicando o motivo

252 

253Para desabilitar toda a funcionalidade de tarefa em segundo plano, defina a variável de ambiente `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` para `1`. Veja [Variáveis de ambiente](/pt/env-vars) para detalhes.

254 

255**Comandos comuns em segundo plano:**

256 

257* Ferramentas de compilação (webpack, vite, make)

258* Gerenciadores de pacotes (npm, yarn, pnpm)

259* Executores de teste (jest, pytest)

260* Servidores de desenvolvimento

261* Processos de longa duração (docker, terraform)

262 

263### Modo Bash com prefixo `!`

264 

265Execute comandos bash diretamente sem passar por Claude prefixando sua entrada com `!`:

266 

267```bash theme={null}

268! npm test

269! git status

270! ls -la

271```

272 

273Modo Bash:

274 

275* Adiciona o comando e sua saída ao contexto de conversa

276* Mostra progresso e saída em tempo real

277* Suporta o mesmo segundo plano `Ctrl+B` para comandos de longa duração

278* Não requer que Claude interprete ou aprove o comando

279* Suporta preenchimento automático baseado em histórico: digite um comando parcial e pressione **Tab** para completar a partir de comandos `!` anteriores no projeto atual

280* Saia com `Escape`, `Backspace` ou `Ctrl+U` em um prompt vazio

281* Colar texto que começa com `!` em um prompt vazio entra no modo bash automaticamente, correspondendo ao comportamento digitado `!`

282 

283Isto é útil para operações rápidas de shell mantendo contexto de conversa.

284 

285## Sugestões de prompt

286 

287Quando você abre uma sessão pela primeira vez, um comando de exemplo acinzentado aparece na entrada de prompt para ajudá-lo a começar. Claude Code escolhe isto do histórico git do seu projeto, então reflete arquivos nos quais você trabalhou recentemente.

288 

289Após Claude responder, as sugestões continuam aparecendo com base no seu histórico de conversa, como uma etapa de acompanhamento de uma solicitação de várias partes ou uma continuação natural do seu fluxo de trabalho.

290 

291* Pressione **Tab** ou **Right arrow** para aceitar a sugestão, ou pressione **Enter** para aceitar e enviar

292* Comece a digitar para descartá-la

293 

294A sugestão é executada como uma solicitação em segundo plano que reutiliza o cache de prompt da conversa pai, então o custo adicional é mínimo. Claude Code pula a geração de sugestão quando o cache está frio para evitar custo desnecessário.

295 

296As sugestões são automaticamente puladas após a primeira volta de uma conversa, em modo não interativo e em plan mode.

297 

298Para desabilitar sugestões de prompt inteiramente, defina a variável de ambiente ou alterne a configuração em `/config`:

299 

300```bash theme={null}

301export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

302```

303 

304## Perguntas laterais com /btw

305 

306Use `/btw` para fazer uma pergunta rápida sobre seu trabalho atual sem adicionar ao histórico de conversa. Isto é útil quando você quer uma resposta rápida mas não quer bagunçar o contexto principal ou desviar Claude de uma tarefa de longa duração.

307 

308```

309/btw what was the name of that config file again?

310```

311 

312Perguntas laterais têm visibilidade completa da conversa atual, então você pode perguntar sobre código que Claude já leu, decisões que tomou anteriormente, ou qualquer outra coisa da sessão. A pergunta e resposta são efêmeras: aparecem em uma sobreposição descartável e nunca entram no histórico de conversa.

313 

314* **Disponível enquanto Claude está trabalhando**: você pode executar `/btw` mesmo enquanto Claude está processando uma resposta. A pergunta lateral é executada independentemente e não interrompe a volta principal.

315* **Sem acesso a ferramentas**: perguntas laterais respondem apenas a partir do que já está em contexto. Claude não pode ler arquivos, executar comandos ou pesquisar ao responder uma pergunta lateral.

316* **Resposta única**: não há voltas de acompanhamento. Se você precisar de uma conversa de ida e volta, use um prompt normal.

317* **Custo baixo**: a pergunta lateral reutiliza o cache de prompt da conversa pai, então o custo adicional é mínimo.

318 

319Pressione **Space**, **Enter** ou **Escape** para descartar a resposta e retornar ao prompt.

320 

321`/btw` é o inverso de um [subagent](/pt/sub-agents): vê sua conversa completa mas não tem ferramentas, enquanto um subagent tem ferramentas completas mas começa com contexto vazio. Use `/btw` para perguntar sobre o que Claude já sabe desta sessão; use um subagent para descobrir algo novo.

322 

323## Lista de tarefas

324 

325Ao trabalhar em trabalho complexo e multi-etapas, Claude cria uma lista de tarefas para rastrear progresso. As tarefas aparecem na área de status do seu terminal com indicadores mostrando o que está pendente, em progresso ou completo.

326 

327* Pressione `Ctrl+T` para alternar a visualização da lista de tarefas. A exibição mostra até 5 tarefas por vez

328* Para ver todas as tarefas ou limpá-las, peça ao Claude diretamente: "show me all tasks" ou "clear all tasks"

329* As tarefas persistem através de compactações de contexto, ajudando Claude a se manter organizado em projetos maiores

330* Para compartilhar uma lista de tarefas entre sessões, defina `CLAUDE_CODE_TASK_LIST_ID` para usar um diretório nomeado em `~/.claude/tasks/`: `CLAUDE_CODE_TASK_LIST_ID=my-project claude`

331 

332## Resumo de sessão

333 

334Quando você retorna ao terminal após se afastar, Claude Code mostra um resumo de uma linha do que aconteceu na sessão até agora. O resumo é gerado em segundo plano uma vez que pelo menos três minutos tenham passado desde a última volta concluída e o terminal esteja desfocado, então está pronto quando você volta. Os resumos aparecem apenas uma vez que a sessão tenha pelo menos três voltas, e nunca duas vezes seguidas.

335 

336Execute `/recap` para gerar um resumo sob demanda. Para desativar resumos automáticos, abra `/config` e desabilite **Session recap**.

337 

338O resumo de sessão está ativado por padrão para todos os planos e provedores. O resumo é sempre pulado em modo não interativo.

339 

340## Status de revisão de PR

341 

342Ao trabalhar em uma branch com um pull request aberto, Claude Code exibe um link de PR clicável no rodapé (por exemplo, "PR #446"). O link tem um sublinhado colorido indicando o estado de revisão:

343 

344* Verde: aprovado

345* Amarelo: revisão pendente

346* Vermelho: mudanças solicitadas

347* Cinza: rascunho

348* Roxo: mesclado

349 

350`Cmd+click` (Mac) ou `Ctrl+click` (Windows/Linux) no link para abrir o pull request no seu navegador. O status é atualizado automaticamente a cada 60 segundos.

351 

352<Note>

353 O status de PR requer que o CLI `gh` esteja instalado e autenticado (`gh auth login`).

354</Note>

355 

356## Veja também

357 

358* [Skills](/pt/skills) - Prompts e fluxos de trabalho personalizados

359* [Checkpointing](/pt/checkpointing) - Retroceder edições do Claude e restaurar estados anteriores

360* [Referência CLI](/pt/cli-reference) - Sinalizadores e opções de linha de comando

361* [Configurações](/pt/settings) - Opções de configuração

362* [Gerenciamento de memória](/pt/memory) - Gerenciando arquivos CLAUDE.md

jetbrains.md +192 −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# JetBrains IDEs

6 

7> Use Claude Code with JetBrains IDEs including IntelliJ, PyCharm, WebStorm, and more

8 

9Claude Code integra-se com JetBrains IDEs através de um plugin dedicado, fornecendo recursos como visualização de diff interativa, compartilhamento de contexto de seleção e muito mais.

10 

11## IDEs Suportadas

12 

13O plugin Claude Code funciona com a maioria dos JetBrains IDEs, incluindo:

14 

15* IntelliJ IDEA

16* PyCharm

17* Android Studio

18* WebStorm

19* PhpStorm

20* GoLand

21 

22## Recursos

23 

24* **Inicialização rápida**: Use `Cmd+Esc` (Mac) ou `Ctrl+Esc` (Windows/Linux) para abrir Claude Code diretamente do seu editor, ou clique no botão Claude Code na interface

25* **Visualização de diff**: As alterações de código podem ser exibidas diretamente no visualizador de diff do IDE em vez do terminal

26* **Contexto de seleção**: A seleção ou aba atual no IDE é compartilhada automaticamente com Claude Code

27* **Atalhos de referência de arquivo**: Use `Cmd+Option+K` (Mac) ou `Alt+Ctrl+K` (Linux/Windows) para inserir referências de arquivo como `@src/auth.ts#L1-99`

28* **Compartilhamento de diagnóstico**: Erros de diagnóstico do IDE, como erros de lint e sintaxe, são compartilhados automaticamente com Claude conforme você trabalha

29 

30## Instalação

31 

32### Instalação do Marketplace

33 

34Encontre e instale o [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) do marketplace JetBrains e reinicie seu IDE.

35 

36Se você ainda não instalou Claude Code, consulte o [guia de início rápido](/pt/quickstart) para instruções de instalação.

37 

38<Note>

39 Após instalar o plugin, você pode precisar reiniciar completamente seu IDE para que ele entre em vigor.

40</Note>

41 

42## Uso

43 

44### Do Seu IDE

45 

46Execute `claude` do terminal integrado do seu IDE, e todos os recursos de integração estarão ativos.

47 

48### De Terminais Externos

49 

50Use o comando `/ide` em qualquer terminal externo para conectar Claude Code ao seu JetBrains IDE e ativar todos os recursos:

51 

52```bash theme={null}

53claude

54```

55 

56```text theme={null}

57/ide

58```

59 

60Se você deseja que Claude tenha acesso aos mesmos arquivos do seu IDE, inicie Claude Code no mesmo diretório que a raiz do projeto do seu IDE.

61 

62## Configuração

63 

64### Configurações do Claude Code

65 

66Configure a integração do IDE através das configurações do Claude Code:

67 

681. Execute `claude`

692. Digite o comando `/config`

703. Defina a ferramenta de diff como `auto` para mostrar diffs no IDE, ou `terminal` para mantê-los no terminal

71 

72### Configurações do Plugin

73 

74Configure o plugin Claude Code acessando **Settings → Tools → Claude Code \[Beta]**:

75 

76#### Configurações Gerais

77 

78* **Claude command**: Especifique um comando personalizado para executar Claude, por exemplo `claude`, `/usr/local/bin/claude`, ou `npx @anthropic-ai/claude-code`

79* **Suppress notification for Claude command not found**: Pule notificações sobre não encontrar o comando Claude

80* **Enable using Option+Enter for multi-line prompts**: apenas no macOS. Quando ativado, Option+Enter insere novas linhas em prompts do Claude Code. Desative se a tecla Option estiver sendo capturada inesperadamente. Requer reinicialização do terminal.

81* **Enable automatic updates**: Verifique e instale automaticamente atualizações do plugin, aplicadas na reinicialização

82 

83<Tip>

84 Para usuários WSL: Defina `wsl -d Ubuntu -- bash -lic "claude"` como seu comando Claude (substitua `Ubuntu` pelo nome da sua distribuição WSL)

85</Tip>

86 

87#### Configuração da Tecla ESC

88 

89Se a tecla ESC não interromper as operações do Claude Code nos terminais JetBrains:

90 

911. Vá para **Settings → Tools → Terminal**

922. Faça um dos seguintes:

93 * Desmarque "Move focus to the editor with Escape", ou

94 * Clique em "Configure terminal keybindings" e delete o atalho "Switch focus to Editor"

953. Aplique as alterações

96 

97Isso permite que a tecla ESC interrompa adequadamente as operações do Claude Code.

98 

99## Configurações Especiais

100 

101### Desenvolvimento Remoto

102 

103<Warning>

104 Ao usar JetBrains Remote Development, você deve instalar o plugin no host remoto via **Settings → Plugin (Host)**.

105</Warning>

106 

107O plugin deve ser instalado no host remoto, não na sua máquina cliente local.

108 

109### Configuração WSL

110 

111Se você estiver usando Claude Code no WSL2 com um JetBrains IDE e vir "No available IDEs detected", a causa geralmente é a rede NAT do WSL2 ou o Windows Firewall bloqueando a conexão entre WSL2 e o IDE em execução no host Windows. WSL1 usa a rede do host diretamente e não é afetado.

112 

113#### Permitir tráfego WSL2 através do Windows Firewall

114 

115Esta é a correção recomendada porque mantém seu modo de rede WSL2 existente.

116 

117<Steps>

118 <Step title="Encontre seu endereço IP do WSL2">

119 De dentro do seu shell WSL, execute:

120 

121 ```bash theme={null}

122 hostname -I

123 ```

124 

125 Anote a sub-rede, por exemplo `172.21.123.45` está em `172.21.0.0/16`.

126 </Step>

127 

128 <Step title="Crie uma regra de firewall">

129 Abra PowerShell como Administrador e execute o seguinte, ajustando o intervalo de IP para corresponder à sua sub-rede:

130 

131 ```powershell theme={null}

132 New-NetFirewallRule -DisplayName "Allow WSL2 Internal Traffic" -Direction Inbound -Protocol TCP -Action Allow -RemoteAddress 172.21.0.0/16 -LocalAddress 172.21.0.0/16

133 ```

134 </Step>

135 

136 <Step title="Reinicie seu IDE e Claude Code">

137 Feche e reabra ambos para que a nova regra entre em vigor.

138 </Step>

139</Steps>

140 

141#### Mude WSL2 para rede espelhada

142 

143A rede espelhada requer Windows 11 22H2 ou posterior. Se você estiver no Windows 10, use a regra de firewall acima.

144 

145Adicione isto ao `.wslconfig` no seu diretório de usuário Windows:

146 

147```ini theme={null}

148[wsl2]

149networkingMode=mirrored

150```

151 

152Em seguida, reinicie WSL com `wsl --shutdown` do PowerShell.

153 

154## Solução de Problemas

155 

156### Plugin não funcionando

157 

158Se o plugin estiver instalado mas os recursos do Claude Code não aparecerem no seu IDE:

159 

160* Certifique-se de que você está executando Claude Code no diretório raiz do projeto

161* Verifique se o plugin JetBrains está ativado nas configurações do IDE

162* Reinicie completamente o IDE (você pode precisar fazer isso várias vezes)

163* Para Remote Development, certifique-se de que o plugin está instalado no host remoto

164 

165### IDE não detectado

166 

167Se executar `claude` mostrar "No available IDEs detected":

168 

169* Verifique se o plugin está instalado e ativado

170* Reinicie o IDE completamente

171* Verifique se você está executando Claude Code no terminal integrado

172* Para usuários WSL, consulte [Configuração WSL](#wsl-configuration) acima

173 

174### Comando não encontrado

175 

176Se clicar no ícone Claude mostrar "command not found":

177 

1781. Verifique se Claude Code está instalado executando `claude --version` em um terminal

1792. Configure o caminho do comando Claude nas configurações do plugin

1803. Para usuários WSL, use o formato de comando WSL mencionado na seção de configuração

181 

182## Considerações de Segurança

183 

184Quando Claude Code é executado em um JetBrains IDE com permissões de auto-edição ativadas, ele pode ser capaz de modificar arquivos de configuração do IDE que podem ser executados automaticamente pelo seu IDE. Isso pode aumentar o risco de executar Claude Code no modo auto-edição e permitir contornar os prompts de permissão do Claude Code para execução de bash.

185 

186Ao executar em JetBrains IDEs, considere:

187 

188* Usar modo de aprovação manual para edições

189* Tomar cuidado extra para garantir que Claude seja usado apenas com prompts confiáveis

190* Estar ciente de quais arquivos Claude Code tem acesso para modificar

191 

192Para problemas de instalação ou login do Claude Code fora do IDE, consulte [Solucionar problemas de instalação e login](/pt/troubleshoot-install).

keybindings.md +463 −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# Personalizar atalhos de teclado

6 

7> Personalize atalhos de teclado no Claude Code com um arquivo de configuração de keybindings.

8 

9<Note>

10 Os atalhos de teclado personalizáveis requerem Claude Code v2.1.18 ou posterior. Verifique sua versão com `claude --version`.

11</Note>

12 

13Claude Code suporta atalhos de teclado personalizáveis. Execute `/keybindings` para criar ou abrir seu arquivo de configuração em `~/.claude/keybindings.json`.

14 

15## Arquivo de configuração

16 

17O arquivo de configuração de keybindings é um objeto com um array `bindings`. Cada bloco especifica um contexto e um mapa de sequências de teclas para ações.

18 

19<Note>As alterações no arquivo de keybindings são detectadas automaticamente e aplicadas sem reiniciar Claude Code.</Note>

20 

21| Campo | Descrição |

22| :--------- | :------------------------------------------------------- |

23| `$schema` | URL opcional do JSON Schema para autocompletar do editor |

24| `$docs` | URL opcional de documentação |

25| `bindings` | Array de blocos de vinculação por contexto |

26 

27Este exemplo vincula `Ctrl+E` para abrir um editor externo no contexto de chat e desvincula `Ctrl+U`:

28 

29```json theme={null}

30{

31 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

32 "$docs": "https://code.claude.com/docs/pt/keybindings",

33 "bindings": [

34 {

35 "context": "Chat",

36 "bindings": {

37 "ctrl+e": "chat:externalEditor",

38 "ctrl+u": null

39 }

40 }

41 ]

42}

43```

44 

45## Contextos

46 

47Cada bloco de vinculação especifica um **contexto** onde as vinculações se aplicam:

48 

49| Contexto | Descrição |

50| :---------------- | :-------------------------------------------------------- |

51| `Global` | Aplica-se em qualquer lugar do aplicativo |

52| `Chat` | Área principal de entrada de chat |

53| `Autocomplete` | Menu de autocompletar está aberto |

54| `Settings` | Menu de configurações |

55| `Confirmation` | Diálogos de permissão e confirmação |

56| `Tabs` | Componentes de navegação de abas |

57| `Help` | Menu de ajuda está visível |

58| `Transcript` | Visualizador de transcrição |

59| `HistorySearch` | Modo de busca de histórico (Ctrl+R) |

60| `Task` | Tarefa em segundo plano está em execução |

61| `ThemePicker` | Diálogo do seletor de tema |

62| `Attachments` | Navegação de anexo de imagem em diálogos de seleção |

63| `Footer` | Navegação do indicador de rodapé (tarefas, equipes, diff) |

64| `MessageSelector` | Seleção de mensagem do diálogo de retrocesso e resumo |

65| `DiffDialog` | Navegação do visualizador de diff |

66| `ModelPicker` | Nível de esforço do seletor de modelo |

67| `Select` | Componentes genéricos de seleção/lista |

68| `Plugin` | Diálogo de plugin (procurar, descobrir, gerenciar) |

69| `Scroll` | Rolagem de conversa e seleção de texto em modo tela cheia |

70| `Doctor` | Tela de diagnósticos `/doctor` |

71 

72## Ações disponíveis

73 

74As ações seguem um formato `namespace:action`, como `chat:submit` para enviar uma mensagem ou `app:toggleTodos` para mostrar a lista de tarefas. Cada contexto tem ações específicas disponíveis.

75 

76### Ações do aplicativo

77 

78Ações disponíveis no contexto `Global`:

79 

80| Ação | Padrão | Descrição |

81| :--------------------- | :------------- | :---------------------------------------- |

82| `app:interrupt` | Ctrl+C | Cancelar operação atual |

83| `app:exit` | Ctrl+D | Sair do Claude Code |

84| `app:redraw` | (desvinculado) | Forçar redesenho do terminal |

85| `app:toggleTodos` | Ctrl+T | Alternar visibilidade da lista de tarefas |

86| `app:toggleTranscript` | Ctrl+O | Alternar transcrição detalhada |

87 

88### Ações de histórico

89 

90Ações para navegar no histórico de comandos:

91 

92| Ação | Padrão | Descrição |

93| :----------------- | :----- | :------------------------- |

94| `history:search` | Ctrl+R | Abrir busca de histórico |

95| `history:previous` | Up | Item de histórico anterior |

96| `history:next` | Down | Próximo item de histórico |

97 

98### Ações de chat

99 

100Ações disponíveis no contexto `Chat`:

101 

102| Ação | Padrão | Descrição |

103| :-------------------- | :------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

104| `chat:cancel` | Escape | Cancelar entrada atual |

105| `chat:clearInput` | Ctrl+L | Forçar um redesenho de tela cheia, preservando a entrada. Na [renderização em tela cheia](/pt/fullscreen#clear-the-conversation), pressione duas vezes em dois segundos para executar `/clear` |

106| `chat:clearScreen` | Cmd+K | Na [renderização em tela cheia](/pt/fullscreen#clear-the-conversation), pressione duas vezes em dois segundos para executar `/clear` |

107| `chat:killAgents` | Ctrl+X Ctrl+K | Encerrar todos os agentes em segundo plano |

108| `chat:cycleMode` | Shift+Tab\* | Ciclar modos de permissão |

109| `chat:modelPicker` | Meta+P | Abrir seletor de modelo |

110| `chat:fastMode` | Meta+O | Alternar modo rápido |

111| `chat:thinkingToggle` | Meta+T | Alternar pensamento estendido |

112| `chat:submit` | Enter | Enviar mensagem |

113| `chat:newline` | Ctrl+J | Inserir uma nova linha sem enviar |

114| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Desfazer última ação |

115| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Abrir em editor externo |

116| `chat:stash` | Ctrl+S | Guardar prompt atual |

117| `chat:imagePaste` | Ctrl+V (Alt+V no Windows) | Colar imagem |

118 

119\*No Windows sem modo VT (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), o padrão é Meta+M.

120 

121### Ações de autocompletar

122 

123Ações disponíveis no contexto `Autocomplete`:

124 

125| Ação | Padrão | Descrição |

126| :---------------------- | :----- | :---------------- |

127| `autocomplete:accept` | Tab | Aceitar sugestão |

128| `autocomplete:dismiss` | Escape | Descartar menu |

129| `autocomplete:previous` | Up | Sugestão anterior |

130| `autocomplete:next` | Down | Próxima sugestão |

131 

132### Ações de confirmação

133 

134Ações disponíveis no contexto `Confirmation`:

135 

136| Ação | Padrão | Descrição |

137| :-------------------------- | :------------- | :------------------------------- |

138| `confirm:yes` | Y, Enter | Confirmar ação |

139| `confirm:no` | N, Escape | Recusar ação |

140| `confirm:previous` | Up | Opção anterior |

141| `confirm:next` | Down | Próxima opção |

142| `confirm:nextField` | Tab | Próximo campo |

143| `confirm:previousField` | (desvinculado) | Campo anterior |

144| `confirm:toggle` | Space | Alternar seleção |

145| `confirm:cycleMode` | Shift+Tab | Ciclar modos de permissão |

146| `confirm:toggleExplanation` | Ctrl+E | Alternar explicação de permissão |

147 

148### Ações de permissão

149 

150Ações disponíveis no contexto `Confirmation` para diálogos de permissão:

151 

152| Ação | Padrão | Descrição |

153| :----------------------- | :----- | :--------------------------------------------- |

154| `permission:toggleDebug` | Ctrl+D | Alternar informações de depuração de permissão |

155 

156### Ações de transcrição

157 

158Ações disponíveis no contexto `Transcript`:

159 

160| Ação | Padrão | Descrição |

161| :------------------------- | :---------------- | :---------------------------------- |

162| `transcript:toggleShowAll` | Ctrl+E | Alternar mostrar todo o conteúdo |

163| `transcript:exit` | q, Ctrl+C, Escape | Sair da visualização de transcrição |

164 

165### Ações de busca de histórico

166 

167Ações disponíveis no contexto `HistorySearch`:

168 

169| Ação | Padrão | Descrição |

170| :------------------------- | :---------- | :------------------------------------------------ |

171| `historySearch:next` | Ctrl+R | Próxima correspondência |

172| `historySearch:accept` | Escape, Tab | Aceitar seleção |

173| `historySearch:cancel` | Ctrl+C | Cancelar busca |

174| `historySearch:execute` | Enter | Executar comando selecionado |

175| `historySearch:cycleScope` | Ctrl+S | Ciclar escopo: sessão, projeto, em qualquer lugar |

176 

177### Ações de tarefa

178 

179Ações disponíveis no contexto `Task`:

180 

181| Ação | Padrão | Descrição |

182| :---------------- | :----- | :------------------------------------ |

183| `task:background` | Ctrl+B | Colocar tarefa atual em segundo plano |

184 

185### Ações de tema

186 

187Ações disponíveis no contexto `ThemePicker`:

188 

189| Ação | Padrão | Descrição |

190| :------------------------------- | :----- | :--------------------------- |

191| `theme:toggleSyntaxHighlighting` | Ctrl+T | Alternar destaque de sintaxe |

192 

193### Ações de ajuda

194 

195Ações disponíveis no contexto `Help`:

196 

197| Ação | Padrão | Descrição |

198| :------------- | :----- | :------------------- |

199| `help:dismiss` | Escape | Fechar menu de ajuda |

200 

201### Ações de abas

202 

203Ações disponíveis no contexto `Tabs`:

204 

205| Ação | Padrão | Descrição |

206| :-------------- | :-------------- | :----------- |

207| `tabs:next` | Tab, Right | Próxima aba |

208| `tabs:previous` | Shift+Tab, Left | Aba anterior |

209 

210### Ações de anexos

211 

212Ações disponíveis no contexto `Attachments`:

213 

214| Ação | Padrão | Descrição |

215| :--------------------- | :---------------- | :-------------------------- |

216| `attachments:next` | Right | Próximo anexo |

217| `attachments:previous` | Left | Anexo anterior |

218| `attachments:remove` | Backspace, Delete | Remover anexo selecionado |

219| `attachments:exit` | Down, Escape | Sair da navegação de anexos |

220 

221### Ações de rodapé

222 

223Ações disponíveis no contexto `Footer`:

224 

225| Ação | Padrão | Descrição |

226| :---------------------- | :----- | :------------------------------------------------- |

227| `footer:next` | Right | Próximo item do rodapé |

228| `footer:previous` | Left | Item anterior do rodapé |

229| `footer:up` | Up | Navegar para cima no rodapé (desseleciona no topo) |

230| `footer:down` | Down | Navegar para baixo no rodapé |

231| `footer:openSelected` | Enter | Abrir item do rodapé selecionado |

232| `footer:clearSelection` | Escape | Limpar seleção do rodapé |

233 

234### Ações do seletor de mensagem

235 

236Ações disponíveis no contexto `MessageSelector`:

237 

238| Ação | Padrão | Descrição |

239| :----------------------- | :---------------------------------------- | :------------------------ |

240| `messageSelector:up` | Up, K, Ctrl+P | Mover para cima na lista |

241| `messageSelector:down` | Down, J, Ctrl+N | Mover para baixo na lista |

242| `messageSelector:top` | Ctrl+Up, Shift+Up, Meta+Up, Shift+K | Pular para o topo |

243| `messageSelector:bottom` | Ctrl+Down, Shift+Down, Meta+Down, Shift+J | Pular para o final |

244| `messageSelector:select` | Enter | Selecionar mensagem |

245 

246### Ações de diff

247 

248Ações disponíveis no contexto `DiffDialog`:

249 

250| Ação | Padrão | Descrição |

251| :-------------------- | :----------------------- | :----------------------------- |

252| `diff:dismiss` | Escape | Fechar visualizador de diff |

253| `diff:previousSource` | Left | Fonte de diff anterior |

254| `diff:nextSource` | Right | Próxima fonte de diff |

255| `diff:previousFile` | Up | Arquivo anterior no diff |

256| `diff:nextFile` | Down | Próximo arquivo no diff |

257| `diff:viewDetails` | Enter | Visualizar detalhes do diff |

258| `diff:back` | (específico do contexto) | Voltar no visualizador de diff |

259 

260### Ações do seletor de modelo

261 

262Ações disponíveis no contexto `ModelPicker`:

263 

264| Ação | Padrão | Descrição |

265| :--------------------------- | :----- | :------------------------ |

266| `modelPicker:decreaseEffort` | Left | Diminuir nível de esforço |

267| `modelPicker:increaseEffort` | Right | Aumentar nível de esforço |

268 

269### Ações de seleção

270 

271Ações disponíveis no contexto `Select`:

272 

273| Ação | Padrão | Descrição |

274| :---------------- | :-------------- | :--------------- |

275| `select:next` | Down, J, Ctrl+N | Próxima opção |

276| `select:previous` | Up, K, Ctrl+P | Opção anterior |

277| `select:accept` | Enter | Aceitar seleção |

278| `select:cancel` | Escape | Cancelar seleção |

279 

280### Ações de plugin

281 

282Ações disponíveis no contexto `Plugin`:

283 

284| Ação | Padrão | Descrição |

285| :---------------- | :----- | :-------------------------------------------------------------------------------------------------- |

286| `plugin:toggle` | Space | Alternar seleção de plugin |

287| `plugin:install` | I | Instalar plugins selecionados |

288| `plugin:favorite` | F | Marcar o plugin selecionado como favorito para que seja classificado perto do topo da aba Instalado |

289 

290### Ações de configurações

291 

292Ações disponíveis no contexto `Settings`:

293 

294| Ação | Padrão | Descrição |

295| :---------------- | :----- | :-------------------------------------------------------------------------------------- |

296| `settings:search` | / | Entrar no modo de busca |

297| `settings:retry` | R | Tentar novamente carregar dados de uso (em caso de erro) |

298| `settings:close` | Enter | Salvar alterações e fechar o painel de configuração. Escape descarta alterações e fecha |

299 

300### Ações de doctor

301 

302Ações disponíveis no contexto `Doctor`:

303 

304| Ação | Padrão | Descrição |

305| :----------- | :----- | :---------------------------------------------------------------------------------------------------------------------------- |

306| `doctor:fix` | F | Enviar o relatório de diagnósticos para Claude corrigir os problemas relatados. Ativo apenas quando problemas são encontrados |

307 

308### Ações de voz

309 

310Ações disponíveis no contexto `Chat` quando a [ditação por voz](/pt/voice-dictation) está ativada:

311 

312| Ação | Padrão | Descrição |

313| :----------------- | :----- | :------------------------------------------------------------------------- |

314| `voice:pushToTalk` | Space | Ditar um prompt. Mantenha pressionado ou toque dependendo do modo `/voice` |

315 

316### Ações de rolagem

317 

318Ações disponíveis no contexto `Scroll` quando a [renderização em tela cheia](/pt/fullscreen) está ativada:

319 

320| Ação | Padrão | Descrição |

321| :-------------------------- | :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |

322| `scroll:lineUp` | (desvinculado) | Rolar para cima uma linha. A rolagem da roda do mouse dispara esta ação |

323| `scroll:lineDown` | (desvinculado) | Rolar para baixo uma linha. A rolagem da roda do mouse dispara esta ação |

324| `scroll:pageUp` | PageUp | Rolar para cima metade da altura da janela de visualização |

325| `scroll:pageDown` | PageDown | Rolar para baixo metade da altura da janela de visualização |

326| `scroll:top` | Ctrl+Home | Pular para o início da conversa |

327| `scroll:bottom` | Ctrl+End | Pular para a mensagem mais recente e reativar o auto-follow |

328| `scroll:halfPageUp` | (desvinculado) | Rolar para cima metade da altura da janela de visualização. Mesmo comportamento que `scroll:pageUp`, fornecido para rebinds no estilo vi |

329| `scroll:halfPageDown` | (desvinculado) | Rolar para baixo metade da altura da janela de visualização. Mesmo comportamento que `scroll:pageDown`, fornecido para rebinds no estilo vi |

330| `scroll:fullPageUp` | (desvinculado) | Rolar para cima a altura completa da janela de visualização |

331| `scroll:fullPageDown` | (desvinculado) | Rolar para baixo a altura completa da janela de visualização |

332| `selection:copy` | Ctrl+Shift+C / Cmd+C | Copiar o texto selecionado para a área de transferência |

333| `selection:clear` | (desvinculado) | Limpar a seleção de texto ativa |

334| `selection:extendLeft` | Shift+Left | Estender a seleção ativa uma coluna para a esquerda |

335| `selection:extendRight` | Shift+Right | Estender a seleção ativa uma coluna para a direita |

336| `selection:extendUp` | Shift+Up | Estender a seleção ativa uma linha para cima. Rola a janela de visualização quando a seleção atinge a borda superior |

337| `selection:extendDown` | Shift+Down | Estender a seleção ativa uma linha para baixo. Rola a janela de visualização quando a seleção atinge a borda inferior |

338| `selection:extendLineStart` | Shift+Home | Estender a seleção ativa para o início da linha |

339| `selection:extendLineEnd` | Shift+End | Estender a seleção ativa para o final da linha |

340 

341## Sintaxe de sequência de teclas

342 

343### Modificadores

344 

345Use teclas modificadoras com o separador `+`:

346 

347* `ctrl` ou `control` - Tecla Control

348* `shift` - Tecla Shift

349* `alt`, `opt`, `option`, ou `meta` - Tecla Alt no Windows e Linux, tecla Option no macOS

350* `cmd`, `command`, `super`, ou `win` - Tecla Command no macOS, tecla Windows no Windows, tecla Super no Linux

351 

352O grupo `cmd` é detectado apenas em terminais que relatam o modificador Super, como aqueles que suportam o protocolo de teclado Kitty ou o modo `modifyOtherKeys` do xterm. A maioria dos terminais não o envia, portanto use `ctrl` ou `meta` para atalhos de teclado que você deseja que funcionem em qualquer lugar.

353 

354Por exemplo:

355 

356```text theme={null}

357ctrl+k Ctrl + K

358shift+tab Shift + Tab

359meta+p Option + P no macOS, Alt + P em outros lugares

360ctrl+shift+c Múltiplos modificadores

361```

362 

363### Letras maiúsculas

364 

365Uma letra maiúscula isolada implica Shift. Por exemplo, `K` é equivalente a `shift+k`. Isso é útil para atalhos de teclado no estilo vim, onde as teclas maiúsculas e minúsculas têm significados diferentes.

366 

367Letras maiúsculas com modificadores (por exemplo, `ctrl+K`) são tratadas como estilísticas e **não** implicam Shift: `ctrl+K` é o mesmo que `ctrl+k`.

368 

369### Acordes

370 

371Acordes são sequências de sequências de teclas separadas por espaços:

372 

373```text theme={null}

374ctrl+k ctrl+s Pressione Ctrl+K, solte, depois Ctrl+S

375```

376 

377### Teclas especiais

378 

379* `escape` ou `esc` - Tecla Escape

380* `enter` ou `return` - Tecla Enter

381* `tab` - Tecla Tab

382* `space` - Barra de espaço

383* `up`, `down`, `left`, `right` - Teclas de seta

384* `backspace`, `delete` - Teclas de exclusão

385 

386## Desvinculação de atalhos padrão

387 

388Defina uma ação como `null` para desvinculá-la de um atalho padrão:

389 

390```json theme={null}

391{

392 "bindings": [

393 {

394 "context": "Chat",

395 "bindings": {

396 "ctrl+s": null

397 }

398 }

399 ]

400}

401```

402 

403Isso 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:

404 

405```json theme={null}

406{

407 "bindings": [

408 {

409 "context": "Chat",

410 "bindings": {

411 "ctrl+x ctrl+k": null,

412 "ctrl+x ctrl+e": null,

413 "ctrl+x": "chat:newline"

414 }

415 }

416 ]

417}

418```

419 

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

421 

422## Atalhos reservados

423 

424Estes atalhos não podem ser revinculados:

425 

426| Atalho | Motivo |

427| :-------- | :---------------------------------------------- |

428| Ctrl+C | Interrupção/cancelamento codificado |

429| Ctrl+D | Saída codificada |

430| Ctrl+M | Idêntico a Enter em terminais (ambos enviam CR) |

431| Caps Lock | Não entregue a aplicações de terminal |

432 

433## Conflitos de terminal

434 

435Alguns atalhos podem entrar em conflito com multiplexadores de terminal:

436 

437| Atalho | Conflito |

438| :----- | :---------------------------------------------- |

439| Ctrl+B | Prefixo tmux (pressione duas vezes para enviar) |

440| Ctrl+A | Prefixo GNU screen |

441| Ctrl+Z | Suspensão de processo Unix (SIGTSTP) |

442 

443## Interação com modo vim

444 

445Quando o modo vim está ativado via `/config` → Editor mode, keybindings e modo vim operam independentemente:

446 

447* **Modo vim** manipula entrada no nível de entrada de texto (movimento do cursor, modos, motions)

448* **Keybindings** manipulam ações no nível de componente (alternar tarefas, enviar, etc.)

449* A tecla Escape no modo vim muda INSERT para NORMAL; ela não dispara `chat:cancel`

450* A maioria dos atalhos Ctrl+key passam pelo modo vim para o sistema de keybindings

451* No modo NORMAL do vim, `?` mostra o menu de ajuda (comportamento vim)

452 

453## Validação

454 

455Claude Code valida seus keybindings e mostra avisos para:

456 

457* Erros de análise (JSON inválido ou estrutura)

458* Nomes de contexto inválidos

459* Conflitos de atalho reservado

460* Conflitos de multiplexador de terminal

461* Vinculações duplicadas no mesmo contexto

462 

463Execute `/doctor` para ver quaisquer avisos de keybindings.

llm-gateway.md +196 −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# Configuração do gateway LLM

6 

7> Saiba como configurar Claude Code para trabalhar com soluções de gateway LLM. Abrange requisitos de gateway, configuração de autenticação, seleção de modelo e configuração de endpoint específica do provedor.

8 

9Gateways LLM fornecem uma camada proxy centralizada entre Claude Code e provedores de modelos, frequentemente fornecendo:

10 

11* **Autenticação centralizada** - Ponto único para gerenciamento de chaves de API

12* **Rastreamento de uso** - Monitore o uso em equipes e projetos

13* **Controles de custo** - Implemente orçamentos e limites de taxa

14* **Registro de auditoria** - Rastreie todas as interações de modelo para conformidade

15* **Roteamento de modelo** - Alterne entre provedores sem alterações de código

16 

17## Requisitos do gateway

18 

19Para que um gateway LLM funcione com Claude Code, ele deve atender aos seguintes requisitos:

20 

21**Formato de API**

22 

23O gateway deve expor aos clientes pelo menos um dos seguintes formatos de API:

24 

251. **Anthropic Messages**: `/v1/messages`, `/v1/messages/count_tokens`

26 * Deve encaminhar cabeçalhos de solicitação: `anthropic-beta`, `anthropic-version`

27 

282. **Bedrock InvokeModel**: `/invoke`, `/invoke-with-response-stream`

29 * Deve preservar campos do corpo da solicitação: `anthropic_beta`, `anthropic_version`

30 

313. **Vertex rawPredict**: `:rawPredict`, `:streamRawPredict`, `/count-tokens:rawPredict`

32 * Deve encaminhar cabeçalhos de solicitação: `anthropic-beta`, `anthropic-version`

33 

34A falha ao encaminhar cabeçalhos ou preservar campos do corpo pode resultar em funcionalidade reduzida ou incapacidade de usar recursos do Claude Code.

35 

36<Note>

37 Claude Code determina quais recursos ativar com base no formato da API. Ao usar o formato Anthropic Messages com Bedrock ou Vertex, você pode precisar definir a variável de ambiente `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`.

38</Note>

39 

40**Cabeçalhos de solicitação**

41 

42Claude Code inclui os seguintes cabeçalhos em cada solicitação de API:

43 

44| Cabeçalho | Descrição |

45| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

46| `X-Claude-Code-Session-Id` | Um identificador único para a sessão atual do Claude Code. Proxies podem usar isso para agregar todas as solicitações de API de uma única sessão sem analisar o corpo da solicitação. |

47 

48Claude Code também adiciona um bloco de atribuição curto ao prompt do sistema contendo a versão do cliente e uma impressão digital derivada da conversa. A API Anthropic remove este bloco antes do processamento, portanto não afeta o cache de prompt de primeira parte. Se seu gateway implementa seu próprio cache de prompt com chave no corpo completo da solicitação, defina [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/pt/env-vars) para omiti-lo.

49 

50## Configuração

51 

52### Seleção de modelo

53 

54Por padrão, Claude Code usa nomes de modelo padrão para o formato de API selecionado.

55 

56Quando `ANTHROPIC_BASE_URL` aponta para um gateway que expõe o formato Anthropic Messages, Claude Code consulta o endpoint `/v1/models` do gateway na inicialização e adiciona os modelos retornados ao seletor `/model`. Cada entrada descoberta é rotulada como "From gateway" e usa o campo `display_name` da resposta quando um é fornecido. Isso requer Claude Code v2.1.126 ou posterior.

57 

58A descoberta se aplica apenas ao formato Anthropic Messages. Ela não é executada para endpoints de passagem Bedrock ou Vertex, e não é executada quando `ANTHROPIC_BASE_URL` não está definido ou aponta para `api.anthropic.com`.

59 

60A solicitação de descoberta autentica da mesma forma que as solicitações de inferência: ela envia `ANTHROPIC_AUTH_TOKEN` como um token de portador, ou `ANTHROPIC_API_KEY` como o cabeçalho `x-api-key` quando nenhum token de autenticação está definido, junto com quaisquer cabeçalhos de `ANTHROPIC_CUSTOM_HEADERS`. Apenas modelos cujo ID começa com `claude` ou `anthropic` são adicionados ao seletor. Os resultados são armazenados em cache em `~/.claude/cache/gateway-models.json` e atualizados a cada inicialização. Se a solicitação falhar ou o gateway não implementar `/v1/models`, o seletor volta para a lista em cache da inicialização anterior ou para a lista de modelos integrada.

61 

62Se seu gateway usa nomes de modelo que não correspondem ao filtro de descoberta, use as variáveis de ambiente documentadas em [Configuração de modelo](/pt/model-config) para adicioná-los manualmente.

63 

64## Configuração do LiteLLM

65 

66<Warning>

67 As versões PyPI do LiteLLM 1.82.7 e 1.82.8 foram comprometidas com malware que rouba credenciais. Não instale essas versões. Se você já as instalou:

68 

69 * Remova o pacote

70 * Rotacione todas as credenciais nos sistemas afetados

71 * Siga as etapas de remediação em [BerriAI/litellm#24518](https://github.com/BerriAI/litellm/issues/24518)

72 

73 LiteLLM é um serviço proxy de terceiros. Anthropic não endossa, mantém ou audita a segurança ou funcionalidade do LiteLLM. Este guia é fornecido para fins informativos e pode ficar desatualizado. Use por sua conta e risco.

74</Warning>

75 

76### Pré-requisitos

77 

78* Claude Code atualizado para a versão mais recente

79* LiteLLM Proxy Server implantado e acessível

80* Acesso aos modelos Claude através do seu provedor escolhido

81 

82### Configuração básica do LiteLLM

83 

84**Configure Claude Code**:

85 

86#### Métodos de autenticação

87 

88##### Chave de API estática

89 

90Método mais simples usando uma chave de API fixa:

91 

92```bash theme={null}

93# Defina no ambiente

94export ANTHROPIC_AUTH_TOKEN=sk-litellm-static-key

95 

96# Ou nas configurações do Claude Code

97{

98 "env": {

99 "ANTHROPIC_AUTH_TOKEN": "sk-litellm-static-key"

100 }

101}

102```

103 

104Este valor será enviado como o cabeçalho `Authorization`.

105 

106##### Chave de API dinâmica com auxiliar

107 

108Para chaves rotativas ou autenticação por usuário:

109 

1101. Crie um script auxiliar de chave de API:

111 

112```bash theme={null}

113#!/bin/bash

114# ~/bin/get-litellm-key.sh

115 

116# Exemplo: Buscar chave do cofre

117vault kv get -field=api_key secret/litellm/claude-code

118 

119# Exemplo: Gerar token JWT

120jwt encode \

121 --secret="${JWT_SECRET}" \

122 --exp="+1h" \

123 '{"user":"'${USER}'","team":"engineering"}'

124```

125 

1262. Configure as configurações do Claude Code para usar o auxiliar:

127 

128```json theme={null}

129{

130 "apiKeyHelper": "~/bin/get-litellm-key.sh"

131}

132```

133 

1343. Defina o intervalo de atualização de token:

135 

136```bash theme={null}

137# Atualizar a cada hora (3600000 ms)

138export CLAUDE_CODE_API_KEY_HELPER_TTL_MS=3600000

139```

140 

141Este valor será enviado como cabeçalhos `Authorization` e `X-Api-Key`. O `apiKeyHelper` tem precedência menor que `ANTHROPIC_AUTH_TOKEN` ou `ANTHROPIC_API_KEY`.

142 

143#### Endpoint unificado (recomendado)

144 

145Usando o [endpoint de formato Anthropic](https://docs.litellm.ai/docs/anthropic_unified) do LiteLLM:

146 

147```bash theme={null}

148export ANTHROPIC_BASE_URL=https://litellm-server:4000

149```

150 

151**Benefícios do endpoint unificado sobre endpoints pass-through:**

152 

153* Balanceamento de carga

154* Fallbacks

155* Suporte consistente para rastreamento de custo e rastreamento de usuário final

156 

157#### Endpoints pass-through específicos do provedor (alternativa)

158 

159##### Claude API através do LiteLLM

160 

161Usando [endpoint pass-through](https://docs.litellm.ai/docs/pass_through/anthropic_completion):

162 

163```bash theme={null}

164export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic

165```

166 

167##### Amazon Bedrock através do LiteLLM

168 

169Usando [endpoint pass-through](https://docs.litellm.ai/docs/pass_through/bedrock):

170 

171```bash theme={null}

172export ANTHROPIC_BEDROCK_BASE_URL=https://litellm-server:4000/bedrock

173export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1

174export CLAUDE_CODE_USE_BEDROCK=1

175```

176 

177##### Google Vertex AI através do LiteLLM

178 

179Usando [endpoint pass-through](https://docs.litellm.ai/docs/pass_through/vertex_ai):

180 

181```bash theme={null}

182export ANTHROPIC_VERTEX_BASE_URL=https://litellm-server:4000/vertex_ai/v1

183export ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project-id

184export CLAUDE_CODE_SKIP_VERTEX_AUTH=1

185export CLAUDE_CODE_USE_VERTEX=1

186export CLOUD_ML_REGION=us-east5

187```

188 

189Para informações mais detalhadas, consulte a [documentação do LiteLLM](https://docs.litellm.ai/).

190 

191## Recursos adicionais

192 

193* [Documentação do LiteLLM](https://docs.litellm.ai/)

194* [Configurações do Claude Code](/pt/settings)

195* [Configuração de rede corporativa](/pt/network-config)

196* [Visão geral de integrações de terceiros](/pt/third-party-integrations)

mcp.md +1451 −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# Conectar Claude Code a ferramentas via MCP

6 

7> Aprenda como conectar Claude Code às suas ferramentas com o Model Context Protocol.

8 

9export const MCPServersTable = ({platform = "all"}) => {

10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';

11 const [servers, setServers] = useState([]);

12 const [loading, setLoading] = useState(true);

13 const [error, setError] = useState(null);

14 useEffect(() => {

15 const fetchServers = async () => {

16 try {

17 setLoading(true);

18 const allServers = [];

19 let cursor = null;

20 do {

21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');

22 url.searchParams.set('version', 'latest');

23 url.searchParams.set('visibility', 'commercial');

24 url.searchParams.set('limit', '100');

25 if (cursor) {

26 url.searchParams.set('cursor', cursor);

27 }

28 const response = await fetch(url);

29 if (!response.ok) {

30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);

31 }

32 const data = await response.json();

33 allServers.push(...data.servers);

34 cursor = data.metadata?.nextCursor || null;

35 } while (cursor);

36 const transformedServers = allServers.map(item => {

37 const server = item.server;

38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});

39 const worksWith = meta.worksWith || [];

40 const availability = {

41 claudeCode: worksWith.includes('claude-code'),

42 mcpConnector: worksWith.includes('claude-api'),

43 claudeDesktop: worksWith.includes('claude-desktop')

44 };

45 const remotes = server.remotes || [];

46 const httpRemote = remotes.find(r => r.type === 'streamable-http');

47 const sseRemote = remotes.find(r => r.type === 'sse');

48 const preferredRemote = httpRemote || sseRemote;

49 const remoteUrl = preferredRemote?.url || meta.url;

50 const remoteType = preferredRemote?.type;

51 const isTemplatedUrl = remoteUrl?.includes('{');

52 let setupUrl;

53 if (isTemplatedUrl && meta.requiredFields) {

54 const urlField = meta.requiredFields.find(f => f.field === 'url');

55 setupUrl = urlField?.sourceUrl || meta.documentation;

56 }

57 const urls = {};

58 if (!isTemplatedUrl) {

59 if (remoteType === 'streamable-http') {

60 urls.http = remoteUrl;

61 } else if (remoteType === 'sse') {

62 urls.sse = remoteUrl;

63 }

64 }

65 let envVars = [];

66 if (server.packages && server.packages.length > 0) {

67 const npmPackage = server.packages.find(p => p.registryType === 'npm');

68 if (npmPackage) {

69 urls.stdio = `npx -y ${npmPackage.identifier}`;

70 if (npmPackage.environmentVariables) {

71 envVars = npmPackage.environmentVariables;

72 }

73 }

74 }

75 return {

76 name: meta.displayName || server.title || server.name,

77 description: meta.oneLiner || server.description,

78 documentation: meta.documentation,

79 urls: urls,

80 envVars: envVars,

81 availability: availability,

82 customCommands: meta.claudeCodeCopyText ? {

83 claudeCode: meta.claudeCodeCopyText

84 } : undefined,

85 setupUrl: setupUrl

86 };

87 });

88 setServers(transformedServers);

89 setError(null);

90 } catch (err) {

91 setError(err.message);

92 console.error('Error fetching MCP registry:', err);

93 } finally {

94 setLoading(false);

95 }

96 };

97 fetchServers();

98 }, []);

99 const generateClaudeCodeCommand = server => {

100 if (server.customCommands && server.customCommands.claudeCode) {

101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');

102 }

103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');

104 if (server.urls.http) {

105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;

106 }

107 if (server.urls.sse) {

108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;

109 }

110 if (server.urls.stdio) {

111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';

112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;

113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;

114 }

115 return null;

116 };

117 if (loading) {

118 return <div>Loading MCP servers...</div>;

119 }

120 if (error) {

121 return <div>Error loading MCP servers: {error}</div>;

122 }

123 const filteredServers = servers.filter(server => {

124 if (platform === "claudeCode") {

125 return server.availability.claudeCode;

126 } else if (platform === "mcpConnector") {

127 return server.availability.mcpConnector;

128 } else if (platform === "claudeDesktop") {

129 return server.availability.claudeDesktop;

130 } else if (platform === "all") {

131 return true;

132 } else {

133 throw new Error(`Unknown platform: ${platform}`);

134 }

135 });

136 return <>

137 <style jsx>{`

138 .cards-container {

139 display: grid;

140 gap: 1rem;

141 margin-bottom: 2rem;

142 }

143 .server-card {

144 border: 1px solid var(--border-color, #e5e7eb);

145 border-radius: 6px;

146 padding: 1rem;

147 }

148 .command-row {

149 display: flex;

150 align-items: center;

151 gap: 0.25rem;

152 }

153 .command-row code {

154 font-size: 0.75rem;

155 overflow-x: auto;

156 }

157 `}</style>

158 

159 <div className="cards-container">

160 {filteredServers.map(server => {

161 const claudeCodeCommand = generateClaudeCodeCommand(server);

162 const mcpUrl = server.urls.http || server.urls.sse;

163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;

164 return <div key={server.name} className="server-card">

165 <div>

166 {server.documentation ? <a href={server.documentation}>

167 <strong>{server.name}</strong>

168 </a> : <strong>{server.name}</strong>}

169 </div>

170 

171 <p style={{

172 margin: '0.5rem 0',

173 fontSize: '0.9rem'

174 }}>

175 {server.description}

176 </p>

177 

178 {server.setupUrl && <p style={{

179 margin: '0.25rem 0',

180 fontSize: '0.8rem',

181 fontStyle: 'italic',

182 opacity: 0.7

183 }}>

184 Requires user-specific URL.{' '}

185 <a href={server.setupUrl} style={{

186 textDecoration: 'underline'

187 }}>

188 Get your URL here

189 </a>.

190 </p>}

191 

192 {commandToShow && !server.setupUrl && <>

193 <p style={{

194 display: 'block',

195 fontSize: '0.75rem',

196 fontWeight: 500,

197 minWidth: 'fit-content',

198 marginTop: '0.5rem',

199 marginBottom: 0

200 }}>

201 {platform === "claudeCode" ? "Command" : "URL"}

202 </p>

203 <div className="command-row">

204 <code>

205 {commandToShow}

206 </code>

207 </div>

208 </>}

209 </div>;

210 })}

211 </div>

212 </>;

213};

214 

215Claude Code pode se conectar a centenas de ferramentas e fontes de dados externas através do [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), um padrão de código aberto para integrações de IA com ferramentas. Os servidores MCP dão ao Claude Code acesso às suas ferramentas, bancos de dados e APIs.

216 

217Conecte um servidor quando você se encontrar copiando dados para o chat de outra ferramenta, como um rastreador de problemas ou um painel de monitoramento. Uma vez conectado, Claude pode ler e agir nesse sistema diretamente em vez de trabalhar com o que você cola.

218 

219## O que você pode fazer com MCP

220 

221Com servidores MCP conectados, você pode pedir ao Claude Code para:

222 

223* **Implementar recursos de rastreadores de problemas**: "Adicione o recurso descrito no problema JIRA ENG-4521 e crie um PR no GitHub."

224* **Analisar dados de monitoramento**: "Verifique Sentry e Statsig para verificar o uso do recurso descrito em ENG-4521."

225* **Consultar bancos de dados**: "Encontre emails de 10 usuários aleatórios que usaram o recurso ENG-4521, com base no nosso banco de dados PostgreSQL."

226* **Integrar designs**: "Atualize nosso modelo de email padrão com base nos novos designs do Figma que foram postados no Slack"

227* **Automatizar fluxos de trabalho**: "Crie rascunhos do Gmail convidando esses 10 usuários para uma sessão de feedback sobre o novo recurso."

228* **Reagir a eventos externos**: Um servidor MCP também pode atuar como um [canal](/pt/channels) que envia mensagens para sua sessão, para que Claude reaja a mensagens do Telegram, chats do Discord ou eventos de webhook enquanto você está ausente.

229 

230## Servidores MCP populares

231 

232Aqui estão alguns servidores MCP comumente usados que você pode conectar ao Claude Code:

233 

234<Warning>

235 Use servidores MCP de terceiros por sua conta e risco - Anthropic não verificou

236 a correção ou segurança de todos esses servidores.

237 Certifique-se de confiar nos servidores MCP que está instalando.

238 Tenha especial cuidado ao usar servidores MCP que possam buscar conteúdo não confiável,

239 pois estes podem expô-lo ao risco de injeção de prompt.

240</Warning>

241 

242<MCPServersTable platform="claudeCode" />

243 

244<Note>

245 **Precisa de uma integração específica?** [Encontre centenas de servidores MCP no GitHub](https://github.com/modelcontextprotocol/servers), ou crie o seu próprio usando o [MCP SDK](https://modelcontextprotocol.io/quickstart/server).

246</Note>

247 

248## Instalando servidores MCP

249 

250Os servidores MCP podem ser configurados de três maneiras diferentes dependendo de suas necessidades:

251 

252### Opção 1: Adicionar um servidor HTTP remoto

253 

254Servidores HTTP são a opção recomendada para conectar a servidores MCP remotos. Este é o transporte mais amplamente suportado para serviços baseados em nuvem.

255 

256```bash theme={null}

257# Sintaxe básica

258claude mcp add --transport http <name> <url>

259 

260# Exemplo real: Conectar ao Notion

261claude mcp add --transport http notion https://mcp.notion.com/mcp

262 

263# Exemplo com token Bearer

264claude mcp add --transport http secure-api https://api.example.com/mcp \

265 --header "Authorization: Bearer your-token"

266```

267 

268### Opção 2: Adicionar um servidor SSE remoto

269 

270<Warning>

271 O transporte SSE (Server-Sent Events) está descontinuado. Use servidores HTTP em vez disso, quando disponível.

272</Warning>

273 

274```bash theme={null}

275# Sintaxe básica

276claude mcp add --transport sse <name> <url>

277 

278# Exemplo real: Conectar ao Asana

279claude mcp add --transport sse asana https://mcp.asana.com/sse

280 

281# Exemplo com cabeçalho de autenticação

282claude mcp add --transport sse private-api https://api.company.com/sse \

283 --header "X-API-Key: your-key-here"

284```

285 

286### Opção 3: Adicionar um servidor stdio local

287 

288Servidores Stdio são executados como processos locais em sua máquina. Eles são ideais para ferramentas que precisam de acesso direto ao sistema ou scripts personalizados.

289 

290```bash theme={null}

291# Sintaxe básica

292claude mcp add [options] <name> -- <command> [args...]

293 

294# Exemplo real: Adicionar servidor Airtable

295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \

296 -- npx -y airtable-mcp-server

297```

298 

299<Note>

300 **Importante: Ordenação de opções**

301 

302 Todas as opções (`--transport`, `--env`, `--scope`, `--header`) devem vir **antes** do nome do servidor. O `--` (travessão duplo) então separa o nome do servidor do comando e argumentos que são passados para o servidor MCP.

303 

304 Por exemplo:

305 

306 * `claude mcp add --transport stdio myserver -- npx server` → executa `npx server`

307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → executa `python server.py --port 8080` com `KEY=value` no ambiente

308 

309 Isso evita conflitos entre as flags do Claude e as flags do servidor.

310</Note>

311 

312### Gerenciando seus servidores

313 

314Uma vez configurados, você pode gerenciar seus servidores MCP com estes comandos:

315 

316```bash theme={null}

317# Listar todos os servidores configurados

318claude mcp list

319 

320# Obter detalhes para um servidor específico

321claude mcp get github

322 

323# Remover um servidor

324claude mcp remove github

325 

326# (dentro do Claude Code) Verificar status do servidor

327/mcp

328```

329 

330### Atualizações dinâmicas de ferramentas

331 

332Claude Code suporta notificações MCP `list_changed`, permitindo que servidores MCP atualizem dinamicamente suas ferramentas, prompts e recursos disponíveis sem exigir que você se desconecte e reconecte. Quando um servidor MCP envia uma notificação `list_changed`, Claude Code atualiza automaticamente as capacidades disponíveis desse servidor.

333 

334### Reconexão automática

335 

336Se um servidor HTTP ou SSE se desconectar durante a sessão, Claude Code se reconecta automaticamente com backoff exponencial: até cinco tentativas, começando com um atraso de um segundo e dobrando a cada vez. O servidor aparece como pendente em `/mcp` enquanto a reconexão está em andamento. Após cinco tentativas falhadas, o servidor é marcado como falho e você pode tentar novamente manualmente de `/mcp`. Servidores Stdio são processos locais e não são reconectados automaticamente.

337 

338O mesmo backoff se aplica quando um servidor HTTP ou SSE falha sua conexão inicial na inicialização. A partir da v2.1.121, Claude Code tenta novamente a conexão inicial até três vezes em erros transitórios, como uma resposta 5xx, uma conexão recusada ou um tempo limite, e então marca o servidor como falho se ainda não conseguir se conectar. Erros de autenticação e não encontrado não são retentados porque exigem uma mudança de configuração para serem resolvidos.

339 

340### Enviar mensagens com canais

341 

342Um servidor MCP também pode enviar mensagens diretamente para sua sessão para que Claude possa reagir a eventos externos como resultados de CI, alertas de monitoramento ou mensagens de chat. Para habilitar isso, seu servidor declara a capacidade `claude/channel` e você a ativa com a flag `--channels` na inicialização. Veja [Canais](/pt/channels) para usar um canal oficialmente suportado, ou [Referência de canais](/pt/channels-reference) para construir o seu próprio.

343 

344<Tip>

345 Dicas:

346 

347 * Use a flag `--scope` para especificar onde a configuração é armazenada:

348 * `local` (padrão): Disponível apenas para você no projeto atual (era chamado de `project` em versões mais antigas)

349 * `project`: Compartilhado com todos no projeto via arquivo `.mcp.json`

350 * `user`: Disponível para você em todos os projetos (era chamado de `global` em versões mais antigas)

351 * Defina variáveis de ambiente com flags `--env` (por exemplo, `--env KEY=value`)

352 * Configure o tempo limite de inicialização do servidor MCP usando a variável de ambiente MCP\_TIMEOUT (por exemplo, `MCP_TIMEOUT=10000 claude` define um tempo limite de 10 segundos)

353 * Claude Code exibirá um aviso quando a saída da ferramenta MCP exceder 10.000 tokens. Para aumentar este limite, defina a variável de ambiente `MAX_MCP_OUTPUT_TOKENS` (por exemplo, `MAX_MCP_OUTPUT_TOKENS=50000`)

354 * Use `/mcp` para autenticar com servidores remotos que exigem autenticação OAuth 2.0

355</Tip>

356 

357### Servidores MCP fornecidos por plugins

358 

359[Plugins](/pt/plugins) podem agrupar servidores MCP, fornecendo automaticamente ferramentas e integrações quando o plugin está habilitado. Os servidores MCP de plugins funcionam de forma idêntica aos servidores configurados pelo usuário.

360 

361**Como funcionam os servidores MCP de plugins**:

362 

363* Plugins definem servidores MCP em `.mcp.json` na raiz do plugin ou inline em `plugin.json`

364* Quando um plugin está habilitado, seus servidores MCP iniciam automaticamente

365* As ferramentas MCP do plugin aparecem junto com as ferramentas MCP configuradas manualmente

366* Os servidores de plugins são gerenciados através da instalação de plugins (não comandos `/mcp`)

367 

368**Exemplo de configuração MCP de plugin**:

369 

370Em `.mcp.json` na raiz do plugin:

371 

372```json theme={null}

373{

374 "mcpServers": {

375 "database-tools": {

376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

378 "env": {

379 "DB_URL": "${DB_URL}"

380 }

381 }

382 }

383}

384```

385 

386Ou inline em `plugin.json`:

387 

388```json theme={null}

389{

390 "name": "my-plugin",

391 "mcpServers": {

392 "plugin-api": {

393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",

394 "args": ["--port", "8080"]

395 }

396 }

397}

398```

399 

400**Recursos de MCP de plugin**:

401 

402* **Ciclo de vida automático**: Na inicialização da sessão, os servidores para plugins habilitados se conectam automaticamente. Se você habilitar ou desabilitar um plugin durante uma sessão, execute `/reload-plugins` para conectar ou desconectar seus servidores MCP

403* **Variáveis de ambiente**: Use `${CLAUDE_PLUGIN_ROOT}` para arquivos agrupados do plugin e `${CLAUDE_PLUGIN_DATA}` para [estado persistente](/pt/plugins-reference#persistent-data-directory) que sobrevive a atualizações de plugins

404* **Acesso a variáveis de ambiente do usuário**: Acesso às mesmas variáveis de ambiente que servidores configurados manualmente

405* **Múltiplos tipos de transporte**: Suporte para transportes stdio, SSE e HTTP (o suporte de transporte pode variar por servidor)

406 

407**Visualizando servidores MCP de plugins**:

408 

409```bash theme={null}

410# Dentro do Claude Code, veja todos os servidores MCP incluindo os de plugins

411/mcp

412```

413 

414Os servidores de plugins aparecem na lista com indicadores mostrando que vêm de plugins.

415 

416**Benefícios dos servidores MCP de plugins**:

417 

418* **Distribuição agrupada**: Ferramentas e servidores empacotados juntos

419* **Configuração automática**: Nenhuma configuração MCP manual necessária

420* **Consistência da equipe**: Todos obtêm as mesmas ferramentas quando o plugin está instalado

421 

422Veja a [referência de componentes de plugins](/pt/plugins-reference#mcp-servers) para detalhes sobre como agrupar servidores MCP com plugins.

423 

424## Escopos de instalação de MCP

425 

426Os servidores MCP podem ser configurados em três escopos diferentes dependendo de suas necessidades:

427 

428| Escopo | Carrega em | Compartilhado com equipe | Armazenado em |

429| ------------------------- | ---------------------- | --------------------------- | ------------------------------ |

430| [Local](#local-scope) | Apenas projeto atual | Não | `~/.claude.json` |

431| [Projeto](#project-scope) | Apenas projeto atual | Sim, via controle de versão | `.mcp.json` na raiz do projeto |

432| [Usuário](#user-scope) | Todos os seus projetos | Não | `~/.claude.json` |

433 

434### Escopo local

435 

436O escopo local é o padrão. Um servidor com escopo local carrega apenas no projeto onde você o adicionou e permanece privado para você. Claude Code o armazena em `~/.claude.json` sob o caminho desse projeto, então o mesmo servidor não aparecerá em seus outros projetos. Use o escopo local para servidores de desenvolvimento pessoal, configurações experimentais ou servidores com credenciais que você não deseja no controle de versão.

437 

438<Note>

439 O termo "escopo local" para servidores MCP difere das configurações locais gerais. Os servidores MCP com escopo local são armazenados em `~/.claude.json` (seu diretório inicial), enquanto as configurações locais gerais usam `.claude/settings.local.json` (no diretório do projeto). Veja [Configurações](/pt/settings#settings-files) para detalhes sobre localizações de arquivos de configuração.

440</Note>

441 

442```bash theme={null}

443# Adicionar um servidor com escopo local (padrão)

444claude mcp add --transport http stripe https://mcp.stripe.com

445 

446# Especificar explicitamente escopo local

447claude mcp add --transport http stripe --scope local https://mcp.stripe.com

448```

449 

450O comando escreve o servidor na entrada do seu projeto atual dentro de `~/.claude.json`. O exemplo abaixo mostra o resultado quando você o executa de `/path/to/your/project`:

451 

452```json theme={null}

453{

454 "projects": {

455 "/path/to/your/project": {

456 "mcpServers": {

457 "stripe": {

458 "type": "http",

459 "url": "https://mcp.stripe.com"

460 }

461 }

462 }

463 }

464}

465```

466 

467### Escopo de projeto

468 

469Servidores com escopo de projeto permitem colaboração em equipe armazenando configurações em um arquivo `.mcp.json` no diretório raiz do seu projeto. Este arquivo é projetado para ser verificado no controle de versão, garantindo que todos os membros da equipe tenham acesso às mesmas ferramentas e serviços MCP. Quando você adiciona um servidor com escopo de projeto, Claude Code cria ou atualiza automaticamente este arquivo com a estrutura de configuração apropriada.

470 

471```bash theme={null}

472# Adicionar um servidor com escopo de projeto

473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

474```

475 

476O arquivo `.mcp.json` resultante segue um formato padronizado:

477 

478```json theme={null}

479{

480 "mcpServers": {

481 "shared-server": {

482 "command": "/path/to/server",

483 "args": [],

484 "env": {}

485 }

486 }

487}

488```

489 

490Por razões de segurança, Claude Code solicita aprovação antes de usar servidores com escopo de projeto de arquivos `.mcp.json`. Se você precisar redefinir essas escolhas de aprovação, use o comando `claude mcp reset-project-choices`.

491 

492### Escopo de usuário

493 

494Servidores com escopo de usuário são armazenados em `~/.claude.json` e fornecem acessibilidade entre projetos, tornando-os disponíveis em todos os projetos em sua máquina enquanto permanecem privados para sua conta de usuário. Este escopo funciona bem para servidores de utilitários pessoais, ferramentas de desenvolvimento ou serviços que você usa frequentemente em diferentes projetos.

495 

496```bash theme={null}

497# Adicionar um servidor de usuário

498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

499```

500 

501### Hierarquia de escopo e precedência

502 

503Quando o mesmo servidor é definido em mais de um lugar, Claude Code se conecta a ele uma vez, usando a definição da fonte com maior precedência:

504 

5051. Escopo local

5062. Escopo de projeto

5073. Escopo de usuário

5084. [Servidores fornecidos por plugins](/pt/plugins)

5095. [Conectores claude.ai](#use-mcp-servers-from-claude-ai)

510 

511Os três escopos correspondem duplicatas por nome. Plugins e conectores correspondem por endpoint, então um que aponta para a mesma URL ou comando que um servidor acima é tratado como uma duplicata.

512 

513### Expansão de variáveis de ambiente em `.mcp.json`

514 

515Claude Code suporta expansão de variáveis de ambiente em arquivos `.mcp.json`, permitindo que equipes compartilhem configurações mantendo flexibilidade para caminhos específicos da máquina e valores sensíveis como chaves de API.

516 

517**Sintaxe suportada:**

518 

519* `${VAR}` - Expande para o valor da variável de ambiente `VAR`

520* `${VAR:-default}` - Expande para `VAR` se definida, caso contrário usa `default`

521 

522**Locais de expansão:**

523As variáveis de ambiente podem ser expandidas em:

524 

525* `command` - O caminho do executável do servidor

526* `args` - Argumentos de linha de comando

527* `env` - Variáveis de ambiente passadas para o servidor

528* `url` - Para tipos de servidor HTTP

529* `headers` - Para autenticação de servidor HTTP

530 

531**Exemplo com expansão de variável:**

532 

533```json theme={null}

534{

535 "mcpServers": {

536 "api-server": {

537 "type": "http",

538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",

539 "headers": {

540 "Authorization": "Bearer ${API_KEY}"

541 }

542 }

543 }

544}

545```

546 

547Se uma variável de ambiente necessária não estiver definida e não tiver um valor padrão, Claude Code falhará ao analisar a configuração.

548 

549## Exemplos práticos

550 

551{/* ### Exemplo: Automatizar testes de navegador com Playwright

552 

553```bash

554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

555```

556 

557Então escreva e execute testes de navegador:

558 

559```text

560Teste se o fluxo de login funciona com test@example.com

561```

562```text

563Tire uma captura de tela da página de checkout em mobile

564```

565```text

566Verifique se o recurso de pesquisa retorna resultados

567``` */}

568 

569### Exemplo: Monitorar erros com Sentry

570 

571```bash theme={null}

572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

573```

574 

575Autentique com sua conta Sentry:

576 

577```text theme={null}

578/mcp

579```

580 

581Então depure problemas de produção:

582 

583```text theme={null}

584Quais são os erros mais comuns nas últimas 24 horas?

585```

586 

587```text theme={null}

588Mostre-me o rastreamento de pilha para o erro ID abc123

589```

590 

591```text theme={null}

592Qual implantação introduziu esses novos erros?

593```

594 

595### Exemplo: Conectar ao GitHub para revisões de código

596 

597O servidor MCP remoto do GitHub autentica com um token de acesso pessoal do GitHub passado como cabeçalho. Para obter um, abra suas [configurações de token do GitHub](https://github.com/settings/personal-access-tokens), gere um novo token refinado com acesso aos repositórios com os quais você deseja que Claude trabalhe, então adicione o servidor:

598 

599```bash theme={null}

600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

601 --header "Authorization: Bearer YOUR_GITHUB_PAT"

602```

603 

604Então trabalhe com GitHub:

605 

606```text theme={null}

607Revise o PR #456 e sugira melhorias

608```

609 

610```text theme={null}

611Crie um novo problema para o bug que acabamos de encontrar

612```

613 

614```text theme={null}

615Mostre-me todos os PRs abertos atribuídos a mim

616```

617 

618### Exemplo: Consultar seu banco de dados PostgreSQL

619 

620```bash theme={null}

621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \

622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

623```

624 

625Então consulte seu banco de dados naturalmente:

626 

627```text theme={null}

628Qual é nossa receita total este mês?

629```

630 

631```text theme={null}

632Mostre-me o esquema para a tabela de pedidos

633```

634 

635```text theme={null}

636Encontre clientes que não fizeram uma compra em 90 dias

637```

638 

639## Autenticar com servidores MCP remotos

640 

641Muitos servidores MCP baseados em nuvem exigem autenticação. Claude Code suporta OAuth 2.0 para conexões seguras.

642 

643<Steps>

644 <Step title="Adicione o servidor que requer autenticação">

645 Por exemplo:

646 

647 ```bash theme={null}

648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

649 ```

650 </Step>

651 

652 <Step title="Use o comando /mcp dentro do Claude Code">

653 No Claude Code, use o comando:

654 

655 ```text theme={null}

656 /mcp

657 ```

658 

659 Então siga os passos no seu navegador para fazer login.

660 </Step>

661</Steps>

662 

663<Tip>

664 Dicas:

665 

666 * Os tokens de autenticação são armazenados com segurança e atualizados automaticamente

667 * Use "Clear authentication" no menu `/mcp` para revogar acesso

668 * Se seu navegador não abrir automaticamente, copie a URL fornecida e abra-a manualmente

669 * Se o redirecionamento do navegador falhar com um erro de conexão após autenticar, cole a URL de callback completa da barra de endereços do seu navegador no prompt de URL que aparece no Claude Code

670 * A autenticação OAuth funciona com servidores HTTP

671</Tip>

672 

673### Usar uma porta de callback OAuth fixa

674 

675Alguns servidores MCP exigem um URI de redirecionamento específico registrado antecipadamente. Por padrão, Claude Code escolhe uma porta aleatória disponível para o callback OAuth. Use `--callback-port` para fixar a porta para que corresponda a um URI de redirecionamento pré-registrado do formulário `http://localhost:PORT/callback`.

676 

677Você pode usar `--callback-port` sozinho (com registro dinâmico de cliente) ou junto com `--client-id` (com credenciais pré-configuradas).

678 

679```bash theme={null}

680# Porta de callback fixa com registro dinâmico de cliente

681claude mcp add --transport http \

682 --callback-port 8080 \

683 my-server https://mcp.example.com/mcp

684```

685 

686### Usar credenciais OAuth pré-configuradas

687 

688Alguns servidores MCP não suportam configuração automática de OAuth via Registro Dinâmico de Cliente. Se você vir um erro como "Incompatible auth server: does not support dynamic client registration," o servidor requer credenciais pré-configuradas. Claude Code também suporta servidores que usam um Documento de Metadados de ID do Cliente (CIMD) em vez de Registro Dinâmico de Cliente, e descobre esses automaticamente. Se a descoberta automática falhar, registre um aplicativo OAuth através do portal do desenvolvedor do servidor primeiro, depois forneça as credenciais ao adicionar o servidor.

689 

690<Steps>

691 <Step title="Registre um aplicativo OAuth com o servidor">

692 Crie um aplicativo através do portal do desenvolvedor do servidor e anote seu ID do cliente e segredo do cliente.

693 

694 Muitos servidores também exigem um URI de redirecionamento. Se assim for, escolha uma porta e registre um URI de redirecionamento no formato `http://localhost:PORT/callback`. Use essa mesma porta com `--callback-port` na próxima etapa.

695 </Step>

696 

697 <Step title="Adicione o servidor com suas credenciais">

698 Escolha um dos seguintes métodos. A porta usada para `--callback-port` pode ser qualquer porta disponível. Ela apenas precisa corresponder ao URI de redirecionamento que você registrou na etapa anterior.

699 

700 <Tabs>

701 <Tab title="claude mcp add">

702 Use `--client-id` para passar o ID do cliente do seu aplicativo. A flag `--client-secret` solicita o segredo com entrada mascarada:

703 

704 ```bash theme={null}

705 claude mcp add --transport http \

706 --client-id your-client-id --client-secret --callback-port 8080 \

707 my-server https://mcp.example.com/mcp

708 ```

709 </Tab>

710 

711 <Tab title="claude mcp add-json">

712 Inclua o objeto `oauth` na configuração JSON e passe `--client-secret` como uma flag separada:

713 

714 ```bash theme={null}

715 claude mcp add-json my-server \

716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \

717 --client-secret

718 ```

719 </Tab>

720 

721 <Tab title="claude mcp add-json (apenas porta de callback)">

722 Use `--callback-port` sem um ID de cliente para fixar a porta enquanto usa registro dinâmico de cliente:

723 

724 ```bash theme={null}

725 claude mcp add-json my-server \

726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'

727 ```

728 </Tab>

729 

730 <Tab title="CI / variável de ambiente">

731 Defina o segredo via variável de ambiente para pular o prompt interativo:

732 

733 ```bash theme={null}

734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \

735 --client-id your-client-id --client-secret --callback-port 8080 \

736 my-server https://mcp.example.com/mcp

737 ```

738 </Tab>

739 </Tabs>

740 </Step>

741 

742 <Step title="Autentique no Claude Code">

743 Execute `/mcp` no Claude Code e siga o fluxo de login do navegador.

744 </Step>

745</Steps>

746 

747<Tip>

748 Dicas:

749 

750 * 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

751 * Se o servidor usar um cliente OAuth público sem segredo, use apenas `--client-id` sem `--client-secret`

752 * `--callback-port` pode ser usado com ou sem `--client-id`

753 * Essas flags se aplicam apenas aos transportes HTTP e SSE. Elas não têm efeito em servidores stdio

754 * Use `claude mcp get <name>` para verificar se as credenciais OAuth estão configuradas para um servidor

755</Tip>

756 

757### Substituir descoberta de metadados OAuth

758 

759Aponte Claude Code para uma URL de metadados específica de servidor de autorização OAuth para contornar a cadeia de descoberta padrão. Defina `authServerMetadataUrl` quando os endpoints padrão do servidor MCP falharem, ou quando você deseja rotear a descoberta através de um proxy interno. Por padrão, Claude Code primeiro verifica os Metadados de Recurso Protegido RFC 9728 em `/.well-known/oauth-protected-resource`, depois volta para os metadados do servidor de autorização RFC 8414 em `/.well-known/oauth-authorization-server`.

760 

761Defina `authServerMetadataUrl` no objeto `oauth` da configuração do seu servidor em `.mcp.json`:

762 

763```json theme={null}

764{

765 "mcpServers": {

766 "my-server": {

767 "type": "http",

768 "url": "https://mcp.example.com/mcp",

769 "oauth": {

770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"

771 }

772 }

773 }

774}

775```

776 

777A URL deve usar `https://`. `authServerMetadataUrl` requer Claude Code v2.1.64 ou posterior. Os `scopes_supported` da URL de metadados substituem os escopos que o servidor upstream anuncia.

778 

779### Restringir escopos OAuth

780 

781Defina `oauth.scopes` para fixar os escopos que Claude Code solicita durante o fluxo de autorização. Esta é a forma suportada de restringir um servidor MCP a um subconjunto aprovado pela equipe de segurança quando o servidor de autorização upstream anuncia mais escopos do que você deseja conceder. O valor é uma única string separada por espaço, correspondendo ao formato do parâmetro `scope` em RFC 6749 §3.3.

782 

783```json theme={null}

784{

785 "mcpServers": {

786 "slack": {

787 "type": "http",

788 "url": "https://mcp.slack.com/mcp",

789 "oauth": {

790 "scopes": "channels:read chat:write search:read"

791 }

792 }

793 }

794}

795```

796 

797`oauth.scopes` tem precedência sobre `authServerMetadataUrl` e os escopos que o servidor descobre em `/.well-known`. Deixe-o indefinido para permitir que o servidor MCP determine o conjunto de escopos solicitado.

798 

799Se o servidor de autorização anuncia `offline_access` em `scopes_supported`, Claude Code o acrescenta aos escopos fixados para que o token de acesso possa ser atualizado sem um novo login no navegador.

800 

801Se o servidor depois retorna um 403 `insufficient_scope` para uma chamada de ferramenta, Claude Code se autentica novamente com os mesmos escopos fixados. Amplie `oauth.scopes` quando uma ferramenta que você precisa requer um escopo fora do pino.

802 

803### Usar cabeçalhos dinâmicos para autenticação personalizada

804 

805Se seu servidor MCP usar um esquema de autenticação diferente de OAuth (como Kerberos, tokens de curta duração ou um SSO interno), use `headersHelper` para gerar cabeçalhos de solicitação no momento da conexão. Claude Code executa o comando e mescla sua saída nos cabeçalhos de conexão.

806 

807```json theme={null}

808{

809 "mcpServers": {

810 "internal-api": {

811 "type": "http",

812 "url": "https://mcp.internal.example.com",

813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"

814 }

815 }

816}

817```

818 

819O comando também pode ser inline:

820 

821```json theme={null}

822{

823 "mcpServers": {

824 "internal-api": {

825 "type": "http",

826 "url": "https://mcp.internal.example.com",

827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"

828 }

829 }

830}

831```

832 

833**Requisitos:**

834 

835* O comando deve escrever um objeto JSON de pares chave-valor de string para stdout

836* O comando é executado em um shell com um tempo limite de 10 segundos

837* Cabeçalhos dinâmicos substituem qualquer `headers` estático com o mesmo nome

838 

839O auxiliar é executado novamente em cada conexão (no início da sessão e ao reconectar). Não há cache, então seu script é responsável por qualquer reutilização de token.

840 

841Claude Code define essas variáveis de ambiente ao executar o auxiliar:

842 

843| Variável | Valor |

844| :---------------------------- | :--------------------- |

845| `CLAUDE_CODE_MCP_SERVER_NAME` | o nome do servidor MCP |

846| `CLAUDE_CODE_MCP_SERVER_URL` | a URL do servidor MCP |

847 

848Use essas para escrever um único script auxiliar que serve múltiplos servidores MCP.

849 

850<Note>

851 `headersHelper` executa comandos shell arbitrários. Quando definido no escopo de projeto ou local, ele só é executado após você aceitar o diálogo de confiança do espaço de trabalho.

852</Note>

853 

854## Adicionar servidores MCP de configuração JSON

855 

856Se você tiver uma configuração JSON para um servidor MCP, você pode adicioná-la diretamente:

857 

858<Steps>

859 <Step title="Adicione um servidor MCP de JSON">

860 ```bash theme={null}

861 # Sintaxe básica

862 claude mcp add-json <name> '<json>'

863 

864 # Exemplo: Adicionar um servidor HTTP com configuração JSON

865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

866 

867 # Exemplo: Adicionar um servidor stdio com configuração JSON

868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'

869 

870 # Exemplo: Adicionar um servidor HTTP com credenciais OAuth pré-configuradas

871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret

872 ```

873 </Step>

874 

875 <Step title="Verifique se o servidor foi adicionado">

876 ```bash theme={null}

877 claude mcp get weather-api

878 ```

879 </Step>

880</Steps>

881 

882<Tip>

883 Dicas:

884 

885 * Certifique-se de que o JSON está adequadamente escapado no seu shell

886 * O JSON deve estar em conformidade com o esquema de configuração do servidor MCP

887 * Você pode usar `--scope user` para adicionar o servidor à sua configuração de usuário em vez da específica do projeto

888</Tip>

889 

890## Importar servidores MCP do Claude Desktop

891 

892Se você já configurou servidores MCP no Claude Desktop, você pode importá-los:

893 

894<Steps>

895 <Step title="Importe servidores do Claude Desktop">

896 ```bash theme={null}

897 # Sintaxe básica

898 claude mcp add-from-claude-desktop

899 ```

900 </Step>

901 

902 <Step title="Selecione quais servidores importar">

903 Após executar o comando, você verá um diálogo interativo que permite selecionar quais servidores você deseja importar.

904 </Step>

905 

906 <Step title="Verifique se os servidores foram importados">

907 ```bash theme={null}

908 claude mcp list

909 ```

910 </Step>

911</Steps>

912 

913<Tip>

914 Dicas:

915 

916 * Este recurso funciona apenas em macOS e Windows Subsystem for Linux (WSL)

917 * Ele lê o arquivo de configuração do Claude Desktop de sua localização padrão nessas plataformas

918 * Use a flag `--scope user` para adicionar servidores à sua configuração de usuário

919 * Os servidores importados terão os mesmos nomes que no Claude Desktop

920 * Se servidores com os mesmos nomes já existirem, eles receberão um sufixo numérico (por exemplo, `server_1`)

921</Tip>

922 

923## Usar servidores MCP do Claude.ai

924 

925Se você fez login no Claude Code com uma conta [Claude.ai](https://claude.ai), os servidores MCP que você adicionou no Claude.ai estão automaticamente disponíveis no Claude Code:

926 

927<Steps>

928 <Step title="Configure servidores MCP no Claude.ai">

929 Adicione servidores em [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Em planos Team e Enterprise, apenas administradores podem adicionar servidores.

930 </Step>

931 

932 <Step title="Autentique o servidor MCP">

933 Complete quaisquer etapas de autenticação necessárias no Claude.ai.

934 </Step>

935 

936 <Step title="Visualize e gerencie servidores no Claude Code">

937 No Claude Code, use o comando:

938 

939 ```text theme={null}

940 /mcp

941 ```

942 

943 Os servidores do Claude.ai aparecem na lista com indicadores mostrando que vêm do Claude.ai.

944 </Step>

945</Steps>

946 

947Para desabilitar servidores MCP do claude.ai no Claude Code, defina a variável de ambiente `ENABLE_CLAUDEAI_MCP_SERVERS` como `false`:

948 

949```bash theme={null}

950ENABLE_CLAUDEAI_MCP_SERVERS=false claude

951```

952 

953## Usar Claude Code como um servidor MCP

954 

955Você pode usar Claude Code em si como um servidor MCP que outros aplicativos podem se conectar:

956 

957```bash theme={null}

958# Inicie Claude como um servidor MCP stdio

959claude mcp serve

960```

961 

962Você pode usar isso no Claude Desktop adicionando esta configuração ao claude\_desktop\_config.json:

963 

964```json theme={null}

965{

966 "mcpServers": {

967 "claude-code": {

968 "type": "stdio",

969 "command": "claude",

970 "args": ["mcp", "serve"],

971 "env": {}

972 }

973 }

974}

975```

976 

977<Warning>

978 **Configurando o caminho do executável**: O campo `command` deve referenciar o executável do Claude Code. Se o comando `claude` não estiver no PATH do seu sistema, você precisará especificar o caminho completo para o executável.

979 

980 Para encontrar o caminho completo:

981 

982 ```bash theme={null}

983 which claude

984 ```

985 

986 Então use o caminho completo na sua configuração:

987 

988 ```json theme={null}

989 {

990 "mcpServers": {

991 "claude-code": {

992 "type": "stdio",

993 "command": "/full/path/to/claude",

994 "args": ["mcp", "serve"],

995 "env": {}

996 }

997 }

998 }

999 ```

1000 

1001 Sem o caminho correto do executável, você encontrará erros como `spawn claude ENOENT`.

1002</Warning>

1003 

1004<Tip>

1005 Dicas:

1006 

1007 * O servidor fornece acesso às ferramentas do Claude como View, Edit, LS, etc.

1008 * No Claude Desktop, tente pedir ao Claude para ler arquivos em um diretório, fazer edições e muito mais.

1009 * Observe que este servidor MCP está apenas expondo as ferramentas do Claude Code ao seu cliente MCP, então seu próprio cliente é responsável por implementar confirmação do usuário para chamadas de ferramentas individuais.

1010</Tip>

1011 

1012## Limites de saída MCP e avisos

1013 

1014Quando as ferramentas MCP produzem grandes saídas, Claude Code ajuda a gerenciar o uso de tokens para evitar sobrecarregar seu contexto de conversa:

1015 

1016* **Limite de aviso de saída**: Claude Code exibe um aviso quando qualquer saída de ferramenta MCP excede 10.000 tokens

1017* **Limite configurável**: você pode ajustar o máximo de tokens de saída MCP permitidos usando a variável de ambiente `MAX_MCP_OUTPUT_TOKENS`

1018* **Limite padrão**: o máximo padrão é 25.000 tokens

1019* **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`

1020 

1021Para aumentar o limite para ferramentas que produzem grandes saídas:

1022 

1023```bash theme={null}

1024export MAX_MCP_OUTPUT_TOKENS=50000

1025claude

1026```

1027 

1028Isso é particularmente útil ao trabalhar com servidores MCP que:

1029 

1030* Consultam grandes conjuntos de dados ou bancos de dados

1031* Geram relatórios ou documentação detalhados

1032* Processam arquivos de log extensos ou informações de depuração

1033 

1034### Aumentar o limite para uma ferramenta específica

1035 

1036Se você está construindo um servidor MCP, você pode permitir que ferramentas individuais retornem resultados maiores do que o limite padrão de persistência em disco definindo `_meta["anthropic/maxResultSizeChars"]` na entrada da ferramenta em resposta `tools/list`. Claude Code aumenta o limite dessa ferramenta para o valor anotado, até um teto rígido de 500.000 caracteres.

1037 

1038Isso é útil para ferramentas que retornam saídas inerentemente grandes mas necessárias, como esquemas de banco de dados ou árvores de arquivos completas. Sem a anotação, resultados que excedem o limite padrão são persistidos em disco e substituídos por uma referência de arquivo na conversa.

1039 

1040```json theme={null}

1041{

1042 "name": "get_schema",

1043 "description": "Returns the full database schema",

1044 "_meta": {

1045 "anthropic/maxResultSizeChars": 200000

1046 }

1047}

1048```

1049 

1050A anotação se aplica independentemente de `MAX_MCP_OUTPUT_TOKENS` para conteúdo de texto, então os usuários não precisam aumentar a variável de ambiente para ferramentas que a declaram. Ferramentas que retornam dados de imagem ainda estão sujeitas ao limite de token.

1051 

1052<Warning>

1053 Se você encontrar frequentemente avisos de saída com servidores MCP específicos que você não controla, considere aumentar o limite `MAX_MCP_OUTPUT_TOKENS`. Você também pode pedir ao autor do servidor para adicionar a anotação `anthropic/maxResultSizeChars` ou para paginar suas respostas. A anotação não tem efeito em ferramentas que retornam conteúdo de imagem; para essas, aumentar `MAX_MCP_OUTPUT_TOKENS` é a única opção.

1054</Warning>

1055 

1056## Responder a solicitações de elicitação MCP

1057 

1058Os servidores MCP podem solicitar entrada estruturada de você durante uma tarefa usando elicitação. Quando um servidor precisa de informações que não consegue obter por conta própria, Claude Code exibe um diálogo interativo e passa sua resposta de volta para o servidor. Nenhuma configuração é necessária do seu lado: diálogos de elicitação aparecem automaticamente quando um servidor os solicita.

1059 

1060Os servidores podem solicitar entrada de duas maneiras:

1061 

1062* **Modo de formulário**: Claude Code mostra um diálogo com campos de formulário definidos pelo servidor (por exemplo, um prompt de nome de usuário e senha). Preencha os campos e envie.

1063* **Modo de URL**: Claude Code abre uma URL do navegador para autenticação ou aprovação. Complete o fluxo no navegador, depois confirme no CLI.

1064 

1065Para responder automaticamente a solicitações de elicitação sem mostrar um diálogo, use o [hook `Elicitation`](/pt/hooks#Elicitation).

1066 

1067Se você está construindo um servidor MCP que usa elicitação, veja a [especificação de elicitação MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) para detalhes de protocolo e exemplos de esquema.

1068 

1069## Usar recursos MCP

1070 

1071Os servidores MCP podem expor recursos que você pode referenciar usando menções @, semelhante a como você referencia arquivos.

1072 

1073### Referenciar recursos MCP

1074 

1075<Steps>

1076 <Step title="Liste recursos disponíveis">

1077 Digite `@` no seu prompt para ver recursos disponíveis de todos os servidores MCP conectados. Os recursos aparecem junto com arquivos no menu de preenchimento automático.

1078 </Step>

1079 

1080 <Step title="Referencie um recurso específico">

1081 Use o formato `@server:protocol://resource/path` para referenciar um recurso:

1082 

1083 ```text theme={null}

1084 Você pode analisar @github:issue://123 e sugerir uma correção?

1085 ```

1086 

1087 ```text theme={null}

1088 Por favor, revise a documentação da API em @docs:file://api/authentication

1089 ```

1090 </Step>

1091 

1092 <Step title="Múltiplas referências de recursos">

1093 Você pode referenciar múltiplos recursos em um único prompt:

1094 

1095 ```text theme={null}

1096 Compare @postgres:schema://users com @docs:file://database/user-model

1097 ```

1098 </Step>

1099</Steps>

1100 

1101<Tip>

1102 Dicas:

1103 

1104 * Os recursos são automaticamente buscados e incluídos como anexos quando referenciados

1105 * Os caminhos dos recursos são pesquisáveis por correspondência aproximada no preenchimento automático de menção @

1106 * Claude Code fornece automaticamente ferramentas para listar e ler recursos MCP quando os servidores os suportam

1107 * Os recursos podem conter qualquer tipo de conteúdo que o servidor MCP fornece (texto, JSON, dados estruturados, etc.)

1108</Tip>

1109 

1110## Escalar com MCP Tool Search

1111 

1112Tool Search mantém o uso de contexto MCP baixo adiando definições de ferramentas até que Claude precise delas. Apenas nomes de ferramentas são carregados no início da sessão, então adicionar mais servidores MCP tem impacto mínimo na sua janela de contexto.

1113 

1114### Como funciona

1115 

1116Tool Search é ativado por padrão. As ferramentas MCP são adiadas em vez de carregadas no contexto antecipadamente, e Claude usa uma ferramenta de pesquisa para descobrir as relevantes quando uma tarefa precisa delas. Apenas as ferramentas que Claude realmente usa entram no contexto. Da sua perspectiva, as ferramentas MCP funcionam exatamente como antes.

1117 

1118Se você preferir carregamento baseado em limite, defina `ENABLE_TOOL_SEARCH=auto` para carregar esquemas antecipadamente quando se encaixarem em 10% da janela de contexto e adiar apenas o excesso. Veja [Configurar pesquisa de ferramentas](#configure-tool-search) para todas as opções.

1119 

1120### Para autores de servidores MCP

1121 

1122Se você está construindo um servidor MCP, o campo de instruções do servidor se torna mais útil com Tool Search habilitado. As instruções do servidor ajudam Claude a entender quando pesquisar suas ferramentas, semelhante a como [skills](/pt/skills) funcionam.

1123 

1124Adicione instruções de servidor claras e descritivas que expliquem:

1125 

1126* Que categoria de tarefas suas ferramentas lidam

1127* Quando Claude deve pesquisar suas ferramentas

1128* Capacidades principais do seu servidor

1129 

1130Claude Code trunca descrições de ferramentas e instruções de servidor em 2KB cada. Mantenha-as concisas para evitar truncamento, e coloque detalhes críticos perto do início.

1131 

1132### Configurar pesquisa de ferramentas

1133 

1134Tool Search é ativado por padrão: as ferramentas MCP são adiadas e descobertas sob demanda. Está desabilitado por padrão no Vertex AI, que não aceita o cabeçalho beta de pesquisa de ferramentas, e quando `ANTHROPIC_BASE_URL` aponta para um host que não é de primeira parte, já que a maioria dos proxies não encaminha blocos `tool_reference`. Defina `ENABLE_TOOL_SEARCH` explicitamente para ativar. Este recurso requer modelos que suportam blocos `tool_reference`: Sonnet 4 e posterior, ou Opus 4 e posterior. Os modelos Haiku não suportam pesquisa de ferramentas.

1135 

1136Controle o comportamento da pesquisa de ferramentas com a variável de ambiente `ENABLE_TOOL_SEARCH`:

1137 

1138| Valor | Comportamento |

1139| :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1140| (não definido) | Todas as ferramentas MCP adiadas e carregadas sob demanda. Volta a carregar antecipadamente no Vertex AI ou quando `ANTHROPIC_BASE_URL` é um host que não é de primeira parte |

1141| `true` | Todas as ferramentas MCP adiadas, incluindo no Vertex AI e para `ANTHROPIC_BASE_URL` que não é de primeira parte |

1142| `auto` | Modo de limite: ferramentas carregam antecipadamente se se encaixarem em 10% da janela de contexto, adiadas caso contrário |

1143| `auto:<N>` | Modo de limite com uma porcentagem personalizada, onde `<N>` é 0-100 (por exemplo, `auto:5` para 5%) |

1144| `false` | Todas as ferramentas MCP carregadas antecipadamente, sem adiamento |

1145 

1146```bash theme={null}

1147# Use um limite personalizado de 5%

1148ENABLE_TOOL_SEARCH=auto:5 claude

1149 

1150# Desabilite a pesquisa de ferramentas completamente

1151ENABLE_TOOL_SEARCH=false claude

1152```

1153 

1154Ou defina o valor no seu [campo `env` de settings.json](/pt/settings#available-settings).

1155 

1156Você também pode desabilitar a ferramenta `ToolSearch` especificamente:

1157 

1158```json theme={null}

1159{

1160 "permissions": {

1161 "deny": ["ToolSearch"]

1162 }

1163}

1164```

1165 

1166### Isentar um servidor de adiamento

1167 

1168Se as ferramentas de um servidor devem estar sempre visíveis para Claude sem uma etapa de pesquisa, defina `alwaysLoad` como `true` na configuração desse servidor. Cada ferramenta desse servidor então carrega no contexto no início da sessão independentemente da configuração `ENABLE_TOOL_SEARCH`. Use isso para um pequeno número de ferramentas que Claude precisa a cada turno, já que cada ferramenta antecipada consome contexto que estaria disponível para sua conversa.

1169 

1170A seguinte entrada `.mcp.json` isenta um servidor HTTP enquanto deixa outros servidores adiados:

1171 

1172```json theme={null}

1173{

1174 "mcpServers": {

1175 "core-tools": {

1176 "type": "http",

1177 "url": "https://mcp.example.com/mcp",

1178 "alwaysLoad": true

1179 }

1180 }

1181}

1182```

1183 

1184O campo `alwaysLoad` está disponível em todos os tipos de servidor e requer Claude Code v2.1.121 ou posterior. Um servidor MCP também pode marcar ferramentas individuais como sempre carregadas incluindo `"anthropic/alwaysLoad": true` no objeto `_meta` da ferramenta, que tem o mesmo efeito apenas para essa ferramenta.

1185 

1186## Usar prompts MCP como comandos

1187 

1188Os servidores MCP podem expor prompts que se tornam disponíveis como comandos no Claude Code.

1189 

1190### Executar prompts MCP

1191 

1192<Steps>

1193 <Step title="Descubra prompts disponíveis">

1194 Digite `/` para ver todos os comandos disponíveis, incluindo aqueles de servidores MCP. Os prompts MCP aparecem com o formato `/mcp__servername__promptname`.

1195 </Step>

1196 

1197 <Step title="Execute um prompt sem argumentos">

1198 ```text theme={null}

1199 /mcp__github__list_prs

1200 ```

1201 </Step>

1202 

1203 <Step title="Execute um prompt com argumentos">

1204 Muitos prompts aceitam argumentos. Passe-os separados por espaço após o comando:

1205 

1206 ```text theme={null}

1207 /mcp__github__pr_review 456

1208 ```

1209 

1210 ```text theme={null}

1211 /mcp__jira__create_issue "Bug no fluxo de login" high

1212 ```

1213 </Step>

1214</Steps>

1215 

1216<Tip>

1217 Dicas:

1218 

1219 * Os prompts MCP são descobertos dinamicamente de servidores conectados

1220 * Os argumentos são analisados com base nos parâmetros definidos do prompt

1221 * Os resultados do prompt são injetados diretamente na conversa

1222 * Os nomes do servidor e do prompt são normalizados (espaços se tornam sublinhados)

1223</Tip>

1224 

1225## Configuração MCP gerenciada

1226 

1227Para organizações que precisam de controle centralizado sobre servidores MCP, Claude Code suporta duas opções de configuração:

1228 

12291. **Controle exclusivo com `managed-mcp.json`**: Implante um conjunto fixo de servidores MCP que os usuários não podem modificar ou estender

12302. **Controle baseado em política com listas de permissão/bloqueio**: Permita que os usuários adicionem seus próprios servidores, mas restrinja quais são permitidos

1231 

1232Essas opções permitem que administradores de TI:

1233 

1234* **Controle quais servidores MCP os funcionários podem acessar**: Implante um conjunto padronizado de servidores MCP aprovados em toda a organização

1235* **Evite servidores MCP não autorizados**: Restrinja os usuários de adicionar servidores MCP não aprovados

1236* **Desabilite MCP completamente**: Remova a funcionalidade MCP completamente se necessário

1237 

1238### Opção 1: Controle exclusivo com managed-mcp.json

1239 

1240Quando você implanta um arquivo `managed-mcp.json`, ele assume **controle exclusivo** sobre todos os servidores MCP. Os usuários não podem adicionar, modificar ou usar nenhum servidor MCP além daqueles definidos neste arquivo. Esta é a abordagem mais simples para organizações que desejam controle completo.

1241 

1242Os administradores do sistema implantam o arquivo de configuração em um diretório em todo o sistema:

1243 

1244* macOS: `/Library/Application Support/ClaudeCode/managed-mcp.json`

1245* Linux e WSL: `/etc/claude-code/managed-mcp.json`

1246* Windows: `C:\Program Files\ClaudeCode\managed-mcp.json`

1247 

1248<Note>

1249 Estes são caminhos em todo o sistema (não diretórios de home do usuário como `~/Library/...`) que exigem privilégios de administrador. Eles são projetados para serem implantados por administradores de TI.

1250</Note>

1251 

1252O arquivo `managed-mcp.json` usa o mesmo formato que um arquivo `.mcp.json` padrão:

1253 

1254```json theme={null}

1255{

1256 "mcpServers": {

1257 "github": {

1258 "type": "http",

1259 "url": "https://api.githubcopilot.com/mcp/"

1260 },

1261 "sentry": {

1262 "type": "http",

1263 "url": "https://mcp.sentry.dev/mcp"

1264 },

1265 "company-internal": {

1266 "type": "stdio",

1267 "command": "/usr/local/bin/company-mcp-server",

1268 "args": ["--config", "/etc/company/mcp-config.json"],

1269 "env": {

1270 "COMPANY_API_URL": "https://internal.company.com"

1271 }

1272 }

1273 }

1274}

1275```

1276 

1277### Opção 2: Controle baseado em política com listas de permissão e bloqueio

1278 

1279Em vez de assumir controle exclusivo, os administradores podem permitir que os usuários configurem seus próprios servidores MCP enquanto aplicam restrições sobre quais servidores são permitidos. Esta abordagem usa `allowedMcpServers` e `deniedMcpServers` no [arquivo de configurações gerenciadas](/pt/settings#settings-files).

1280 

1281<Note>

1282 **Escolhendo entre opções**: Use a Opção 1 (`managed-mcp.json`) quando você deseja implantar um conjunto fixo de servidores sem personalização do usuário. Use a Opção 2 (listas de permissão/bloqueio) quando você deseja permitir que os usuários adicionem seus próprios servidores dentro de restrições de política.

1283</Note>

1284 

1285#### Opções de restrição

1286 

1287Cada entrada na lista de permissão ou bloqueio pode restringir servidores de três maneiras:

1288 

12891. **Por nome do servidor** (`serverName`): Corresponde ao nome configurado do servidor

12902. **Por comando** (`serverCommand`): Corresponde ao comando exato e argumentos usados para iniciar servidores stdio

12913. **Por padrão de URL** (`serverUrl`): Corresponde a URLs de servidor remoto com suporte a caracteres curinga

1292 

1293**Importante**: Cada entrada deve ter exatamente um de `serverName`, `serverCommand` ou `serverUrl`.

1294 

1295#### Exemplo de configuração

1296 

1297```json theme={null}

1298{

1299 "allowedMcpServers": [

1300 // Permitir por nome do servidor

1301 { "serverName": "github" },

1302 { "serverName": "sentry" },

1303 

1304 // Permitir por comando exato (para servidores stdio)

1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },

1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

1307 

1308 // Permitir por padrão de URL (para servidores remotos)

1309 { "serverUrl": "https://mcp.company.com/*" },

1310 { "serverUrl": "https://*.internal.corp/*" }

1311 ],

1312 "deniedMcpServers": [

1313 // Bloquear por nome do servidor

1314 { "serverName": "dangerous-server" },

1315 

1316 // Bloquear por comando exato (para servidores stdio)

1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },

1318 

1319 // Bloquear por padrão de URL (para servidores remotos)

1320 { "serverUrl": "https://*.untrusted.com/*" }

1321 ]

1322}

1323```

1324 

1325#### Como funcionam as restrições baseadas em comando

1326 

1327**Correspondência exata**:

1328 

1329* Os arrays de comando devem corresponder **exatamente** - tanto o comando quanto todos os argumentos na ordem correta

1330* Exemplo: `["npx", "-y", "server"]` NÃO corresponderá a `["npx", "server"]` ou `["npx", "-y", "server", "--flag"]`

1331 

1332**Comportamento do servidor stdio**:

1333 

1334* Quando a lista de permissão contém **qualquer** entrada `serverCommand`, servidores stdio **devem** corresponder a um desses comandos

1335* Os servidores stdio não podem passar apenas pelo nome quando restrições de comando estão presentes

1336* Isso garante que os administradores possam aplicar quais comandos são permitidos executar

1337 

1338**Comportamento do servidor não-stdio**:

1339 

1340* Servidores remotos (HTTP, SSE, WebSocket) usam correspondência baseada em URL quando entradas `serverUrl` existem na lista de permissão

1341* Se nenhuma entrada de URL existir, servidores remotos voltam para correspondência baseada em nome

1342* As restrições de comando não se aplicam a servidores remotos

1343 

1344#### Como funcionam as restrições baseadas em URL

1345 

1346Os padrões de URL suportam caracteres curinga usando `*` para corresponder a qualquer sequência de caracteres. Isso é útil para permitir domínios inteiros ou subdomínios.

1347 

1348**Exemplos de caracteres curinga**:

1349 

1350* `https://mcp.company.com/*` - Permitir todos os caminhos em um domínio específico

1351* `https://*.example.com/*` - Permitir qualquer subdomínio de example.com

1352* `http://localhost:*/*` - Permitir qualquer porta em localhost

1353 

1354**Comportamento do servidor remoto**:

1355 

1356* Quando a lista de permissão contém **qualquer** entrada `serverUrl`, servidores remotos **devem** corresponder a um desses padrões de URL

1357* Os servidores remotos não podem passar apenas pelo nome quando restrições de URL estão presentes

1358* Isso garante que os administradores possam aplicar quais endpoints remotos são permitidos

1359 

1360<Accordion title="Exemplo: Lista de permissão apenas de URL">

1361 ```json theme={null}

1362 {

1363 "allowedMcpServers": [

1364 { "serverUrl": "https://mcp.company.com/*" },

1365 { "serverUrl": "https://*.internal.corp/*" }

1366 ]

1367 }

1368 ```

1369 

1370 **Resultado**:

1371 

1372 * Servidor HTTP em `https://mcp.company.com/api`: ✅ Permitido (corresponde ao padrão de URL)

1373 * Servidor HTTP em `https://api.internal.corp/mcp`: ✅ Permitido (corresponde ao subdomínio curinga)

1374 * Servidor HTTP em `https://external.com/mcp`: ❌ Bloqueado (não corresponde a nenhum padrão de URL)

1375 * Servidor stdio com qualquer comando: ❌ Bloqueado (nenhuma entrada de nome ou comando para corresponder)

1376</Accordion>

1377 

1378<Accordion title="Exemplo: Lista de permissão apenas de comando">

1379 ```json theme={null}

1380 {

1381 "allowedMcpServers": [

1382 { "serverCommand": ["npx", "-y", "approved-package"] }

1383 ]

1384 }

1385 ```

1386 

1387 **Resultado**:

1388 

1389 * Servidor stdio com `["npx", "-y", "approved-package"]`: ✅ Permitido (corresponde ao comando)

1390 * Servidor stdio com `["node", "server.js"]`: ❌ Bloqueado (não corresponde ao comando)

1391 * Servidor HTTP nomeado "my-api": ❌ Bloqueado (nenhuma entrada de nome para corresponder)

1392</Accordion>

1393 

1394<Accordion title="Exemplo: Lista de permissão mista de nome e comando">

1395 ```json theme={null}

1396 {

1397 "allowedMcpServers": [

1398 { "serverName": "github" },

1399 { "serverCommand": ["npx", "-y", "approved-package"] }

1400 ]

1401 }

1402 ```

1403 

1404 **Resultado**:

1405 

1406 * Servidor stdio nomeado "local-tool" com `["npx", "-y", "approved-package"]`: ✅ Permitido (corresponde ao comando)

1407 * Servidor stdio nomeado "local-tool" com `["node", "server.js"]`: ❌ Bloqueado (entradas de comando existem mas não correspondem)

1408 * Servidor stdio nomeado "github" com `["node", "server.js"]`: ❌ Bloqueado (servidores stdio devem corresponder aos comandos quando entradas de comando existem)

1409 * Servidor HTTP nomeado "github": ✅ Permitido (corresponde ao nome)

1410 * Servidor HTTP nomeado "other-api": ❌ Bloqueado (nome não corresponde)

1411</Accordion>

1412 

1413<Accordion title="Exemplo: Lista de permissão apenas de nome">

1414 ```json theme={null}

1415 {

1416 "allowedMcpServers": [

1417 { "serverName": "github" },

1418 { "serverName": "internal-tool" }

1419 ]

1420 }

1421 ```

1422 

1423 **Resultado**:

1424 

1425 * Servidor stdio nomeado "github" com qualquer comando: ✅ Permitido (nenhuma restrição de comando)

1426 * Servidor stdio nomeado "internal-tool" com qualquer comando: ✅ Permitido (nenhuma restrição de comando)

1427 * Servidor HTTP nomeado "github": ✅ Permitido (corresponde ao nome)

1428 * Qualquer servidor nomeado "other": ❌ Bloqueado (nome não corresponde)

1429</Accordion>

1430 

1431#### Comportamento da lista de permissão (`allowedMcpServers`)

1432 

1433* `undefined` (padrão): Sem restrições - os usuários podem configurar qualquer servidor MCP

1434* Array vazio `[]`: Bloqueio completo - os usuários não podem configurar nenhum servidor MCP

1435* Lista de entradas: Os usuários podem configurar apenas servidores que correspondem por nome, comando ou padrão de URL

1436 

1437#### Comportamento da lista de bloqueio (`deniedMcpServers`)

1438 

1439* `undefined` (padrão): Nenhum servidor é bloqueado

1440* Array vazio `[]`: Nenhum servidor é bloqueado

1441* Lista de entradas: Servidores especificados são explicitamente bloqueados em todos os escopos

1442 

1443#### Notas importantes

1444 

1445* **Opção 1 e Opção 2 podem ser combinadas**: Se `managed-mcp.json` existir, ele tem controle exclusivo e os usuários não podem adicionar servidores. As listas de permissão/bloqueio ainda se aplicam aos servidores gerenciados em si.

1446* **A lista de bloqueio tem precedência absoluta**: Se um servidor corresponder a uma entrada de lista de bloqueio (por nome, comando ou URL), será bloqueado mesmo que esteja na lista de permissão

1447* As restrições baseadas em nome, comando e URL funcionam juntas: um servidor passa se corresponder **a qualquer** entrada de nome, entrada de comando ou padrão de URL (a menos que bloqueado pela lista de bloqueio)

1448 

1449<Note>

1450 **Ao usar `managed-mcp.json`**: Os usuários não podem adicionar servidores MCP através de `claude mcp add` ou arquivos de configuração. As configurações `allowedMcpServers` e `deniedMcpServers` ainda se aplicam para filtrar quais servidores gerenciados são realmente carregados.

1451</Note>

memory.md +408 −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# Como Claude se lembra do seu projeto

6 

7> Dê a Claude instruções persistentes com arquivos CLAUDE.md e deixe Claude acumular aprendizados automaticamente com memória automática.

8 

9Cada sessão do Claude Code começa com uma janela de contexto limpa. Dois mecanismos carregam conhecimento entre sessões:

10 

11* **Arquivos CLAUDE.md**: instruções que você escreve para dar a Claude contexto persistente

12* **Memória automática**: notas que Claude escreve para si mesma com base em suas correções e preferências

13 

14Esta página cobre como:

15 

16* [Escrever e organizar arquivos CLAUDE.md](#claude-md-files)

17* [Escopear regras para tipos de arquivo específicos](#organize-rules-with-claude/rules/) com `.claude/rules/`

18* [Configurar memória automática](#auto-memory) para que Claude tome notas automaticamente

19* [Solucionar problemas](#troubleshoot-memory-issues) quando as instruções não estão sendo seguidas

20 

21## CLAUDE.md vs memória automática

22 

23Claude Code tem dois sistemas de memória complementares. Ambos são carregados no início de cada conversa. Claude os trata como contexto, não como configuração imposta. Quanto mais específicas e concisas forem suas instruções, mais consistentemente Claude as seguirá.

24 

25| | Arquivos CLAUDE.md | Memória automática |

26| :--------------- | :----------------------------------------------------------------- | :------------------------------------------------------------------------------ |

27| **Quem escreve** | Você | Claude |

28| **O que contém** | Instruções e regras | Aprendizados e padrões |

29| **Escopo** | Projeto, usuário ou organização | Por worktree |

30| **Carregado em** | Cada sessão | Cada sessão (primeiras 200 linhas ou 25KB) |

31| **Usar para** | Padrões de codificação, fluxos de trabalho, arquitetura do projeto | Comandos de compilação, insights de depuração, preferências que Claude descobre |

32 

33Use arquivos CLAUDE.md quando quiser guiar o comportamento de Claude. A memória automática permite que Claude aprenda com suas correções sem esforço manual.

34 

35Subagents também podem manter sua própria memória automática. Veja [configuração de subagent](/pt/sub-agents#enable-persistent-memory) para detalhes.

36 

37## Arquivos CLAUDE.md

38 

39Arquivos CLAUDE.md são arquivos markdown que dão a Claude instruções persistentes para um projeto, seu fluxo de trabalho pessoal ou toda a sua organização. Você escreve esses arquivos em texto simples; Claude os lê no início de cada sessão.

40 

41### Quando adicionar a CLAUDE.md

42 

43Trate CLAUDE.md como o lugar onde você escreve o que teria que re-explicar. Adicione a ele quando:

44 

45* Claude comete o mesmo erro uma segunda vez

46* Uma revisão de código encontra algo que Claude deveria saber sobre esta base de código

47* Você digita a mesma correção ou esclarecimento no chat que digitou na sessão anterior

48* Um novo colega de equipe precisaria do mesmo contexto para ser produtivo

49 

50Mantenha-o com fatos que Claude deve manter em cada sessão: comandos de compilação, convenções, layout do projeto, regras "sempre faça X". Se uma entrada é um procedimento de múltiplas etapas ou só importa para uma parte da base de código, mova-a para uma [skill](/pt/skills) ou uma [regra com escopo de caminho](#organize-rules-with-claude/rules/) em vez disso. A [visão geral da extensão](/pt/features-overview#build-your-setup-over-time) cobre quando usar cada mecanismo.

51 

52### Escolha onde colocar arquivos CLAUDE.md

53 

54Arquivos CLAUDE.md podem estar em vários locais, cada um com um escopo diferente. Locais mais específicos têm precedência sobre os mais amplos.

55 

56| Escopo | Localização | Propósito | Exemplos de caso de uso | Compartilhado com |

57| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------- |

58| **Política gerenciada** | • macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux e WSL: `/etc/claude-code/CLAUDE.md`<br />• Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Instruções em toda a organização gerenciadas por TI/DevOps | Padrões de codificação da empresa, políticas de segurança, requisitos de conformidade | Todos os usuários da organização |

59| **Instruções do projeto** | `./CLAUDE.md` ou `./.claude/CLAUDE.md` | Instruções compartilhadas pela equipe para o projeto | Arquitetura do projeto, padrões de codificação, fluxos de trabalho comuns | Membros da equipe via controle de versão |

60| **Instruções do usuário** | `~/.claude/CLAUDE.md` | Preferências pessoais para todos os projetos | Preferências de estilo de código, atalhos de ferramentas pessoais | Apenas você (todos os projetos) |

61| **Instruções locais** | `./CLAUDE.local.md` | Preferências pessoais específicas do projeto; adicione a `.gitignore` | Suas URLs de sandbox, dados de teste preferidos | Apenas você (projeto atual) |

62 

63Arquivos CLAUDE.md e CLAUDE.local.md no diretório acima do diretório de trabalho são carregados completamente no lançamento. Arquivos em subdiretórios são carregados sob demanda quando Claude lê arquivos nesses diretórios. Veja [Como arquivos CLAUDE.md são carregados](#how-claude-md-files-load) para a ordem de resolução completa.

64 

65Para projetos grandes, você pode dividir instruções em arquivos específicos de tópicos usando [regras de projeto](#organize-rules-with-claude/rules/). As regras permitem que você escope instruções para tipos de arquivo específicos ou subdiretórios.

66 

67### Configure um CLAUDE.md de projeto

68 

69Um CLAUDE.md de projeto pode ser armazenado em `./CLAUDE.md` ou `./.claude/CLAUDE.md`. Crie este arquivo e adicione instruções que se apliquem a qualquer pessoa trabalhando no projeto: comandos de compilação e teste, padrões de codificação, decisões arquitetônicas, convenções de nomenclatura e fluxos de trabalho comuns. Essas instruções são compartilhadas com sua equipe através do controle de versão, então foque em padrões de nível de projeto em vez de preferências pessoais.

70 

71<Tip>

72 Execute `/init` para gerar um CLAUDE.md inicial automaticamente. Claude analisa sua base de código e cria um arquivo com comandos de compilação, instruções de teste e convenções de projeto que descobre. Se um CLAUDE.md já existe, `/init` sugere melhorias em vez de sobrescrever. Refine a partir daí com instruções que Claude não descobriria por conta própria.

73 

74 Defina `CLAUDE_CODE_NEW_INIT=1` para ativar um fluxo interativo de múltiplas fases. `/init` pergunta quais artefatos configurar: arquivos CLAUDE.md, skills e hooks. Em seguida, explora sua base de código com um subagent, preenche lacunas por meio de perguntas de acompanhamento e apresenta uma proposta revisável antes de escrever qualquer arquivo.

75</Tip>

76 

77### Escreva instruções eficazes

78 

79Arquivos CLAUDE.md são carregados na janela de contexto no início de cada sessão, consumindo tokens junto com sua conversa. A [visualização da janela de contexto](/pt/context-window) mostra onde CLAUDE.md é carregado em relação ao resto do contexto de inicialização. Como são contexto em vez de configuração imposta, como você escreve as instruções afeta o quão confiável Claude as segue. Instruções específicas, concisas e bem estruturadas funcionam melhor.

80 

81**Tamanho**: alvo de menos de 200 linhas por arquivo CLAUDE.md. Arquivos mais longos consomem mais contexto e reduzem a aderência. Se suas instruções estão crescendo muito, use [regras com escopo de caminho](#path-specific-rules) para que as instruções sejam carregadas apenas quando Claude trabalha com arquivos correspondentes. Você também pode dividir conteúdo em [importações](#import-additional-files) para organização, embora arquivos importados ainda sejam carregados e entrem na janela de contexto no lançamento.

82 

83**Estrutura**: use cabeçalhos markdown e bullets para agrupar instruções relacionadas. Claude escaneia a estrutura da mesma forma que os leitores fazem: seções organizadas são mais fáceis de seguir do que parágrafos densos.

84 

85**Especificidade**: escreva instruções que sejam concretas o suficiente para verificar. Por exemplo:

86 

87* "Use indentação de 2 espaços" em vez de "Formate o código adequadamente"

88* "Execute `npm test` antes de fazer commit" em vez de "Teste suas alterações"

89* "Manipuladores de API vivem em `src/api/handlers/`" em vez de "Mantenha os arquivos organizados"

90 

91**Consistência**: se duas regras se contradizem, Claude pode escolher uma arbitrariamente. Revise seus arquivos CLAUDE.md, arquivos CLAUDE.md aninhados em subdiretórios e [`.claude/rules/`](#organize-rules-with-claude/rules/) periodicamente para remover instruções desatualizadas ou conflitantes. Em monorepos, use [`claudeMdExcludes`](#exclude-specific-claude-md-files) para pular arquivos CLAUDE.md de outras equipes que não são relevantes para seu trabalho.

92 

93### Importe arquivos adicionais

94 

95Arquivos CLAUDE.md podem importar arquivos adicionais usando a sintaxe `@path/to/import`. Arquivos importados são expandidos e carregados em contexto no lançamento junto com o CLAUDE.md que os referencia.

96 

97Caminhos relativos e absolutos são permitidos. Caminhos relativos são resolvidos em relação ao arquivo contendo a importação, não ao diretório de trabalho. Arquivos importados podem importar recursivamente outros arquivos, com uma profundidade máxima de cinco saltos.

98 

99Para trazer um README, package.json e um guia de fluxo de trabalho, referencie-os com a sintaxe `@` em qualquer lugar do seu CLAUDE.md:

100 

101```text theme={null}

102Veja @README para visão geral do projeto e @package.json para comandos npm disponíveis para este projeto.

103 

104# Instruções Adicionais

105- fluxo de trabalho git @docs/git-instructions.md

106```

107 

108Para preferências pessoais por projeto que não devem ser verificadas no controle de versão, crie um `CLAUDE.local.md` na raiz do projeto. Ele é carregado junto com `CLAUDE.md` e é tratado da mesma forma. Adicione `CLAUDE.local.md` ao seu `.gitignore` para que não seja confirmado; executar `/init` e escolher a opção pessoal faz isso para você.

109 

110Se você trabalha em múltiplos git worktrees do mesmo repositório, um `CLAUDE.local.md` ignorado pelo git só existe no worktree onde você o criou. Para compartilhar instruções pessoais entre worktrees, importe um arquivo do seu diretório home em vez disso:

111 

112```text theme={null}

113# Preferências Individuais

114- @~/.claude/my-project-instructions.md

115```

116 

117<Warning>

118 A primeira vez que Claude Code encontra importações externas em um projeto, mostra um diálogo de aprovação listando os arquivos. Se você recusar, as importações permanecem desabilitadas e o diálogo não aparece novamente.

119</Warning>

120 

121Para uma abordagem mais estruturada para organizar instruções, veja [`.claude/rules/`](#organize-rules-with-claude/rules/).

122 

123### AGENTS.md

124 

125Claude Code lê `CLAUDE.md`, não `AGENTS.md`. Se seu repositório já usa `AGENTS.md` para outros agentes de codificação, crie um `CLAUDE.md` que o importe para que ambas as ferramentas leiam as mesmas instruções sem duplicá-las. Você também pode adicionar instruções específicas do Claude Code abaixo da importação. Claude carrega o arquivo importado no início da sessão, depois anexa o resto:

126 

127```markdown CLAUDE.md theme={null}

128@AGENTS.md

129 

130## Claude Code

131 

132Use plan mode para alterações em `src/billing/`.

133```

134 

135### Como arquivos CLAUDE.md são carregados

136 

137Claude Code lê arquivos CLAUDE.md caminhando para cima na árvore de diretórios a partir do seu diretório de trabalho atual, verificando cada diretório ao longo do caminho para arquivos `CLAUDE.md` e `CLAUDE.local.md`. Isso significa que se você executar Claude Code em `foo/bar/`, ele carrega instruções de `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` e qualquer arquivo `CLAUDE.local.md` ao lado deles.

138 

139Todos os arquivos descobertos são concatenados em contexto em vez de se sobreporem. Dentro de cada diretório, `CLAUDE.local.md` é anexado após `CLAUDE.md`, então quando as instruções entram em conflito, suas notas pessoais são a última coisa que Claude lê naquele nível.

140 

141Claude também descobre arquivos `CLAUDE.md` e `CLAUDE.local.md` em subdiretórios sob seu diretório de trabalho atual. Em vez de carregá-los no lançamento, eles são incluídos quando Claude lê arquivos nesses subdiretórios.

142 

143Se você trabalha em um grande monorepo onde arquivos CLAUDE.md de outras equipes são capturados, use [`claudeMdExcludes`](#exclude-specific-claude-md-files) para pular.

144 

145Comentários HTML em nível de bloco (`<!-- notas do mantenedor -->`) em arquivos CLAUDE.md são removidos antes do conteúdo ser injetado no contexto de Claude. Use-os para deixar notas para mantenedores humanos sem gastar tokens de contexto neles. Comentários dentro de blocos de código são preservados. Quando você abre um arquivo CLAUDE.md diretamente com a ferramenta Read, os comentários permanecem visíveis.

146 

147#### Carregue de diretórios adicionais

148 

149A flag `--add-dir` dá a Claude acesso a diretórios adicionais fora do seu diretório de trabalho principal. Por padrão, arquivos CLAUDE.md desses diretórios não são carregados.

150 

151Para também carregar arquivos de memória de diretórios adicionais, defina a variável de ambiente `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:

152 

153```bash theme={null}

154CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

155```

156 

157Isso carrega `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` e `CLAUDE.local.md` do diretório adicional. `CLAUDE.local.md` é ignorado se você excluir `local` de [`--setting-sources`](/pt/cli-reference).

158 

159### Organize regras com `.claude/rules/`

160 

161Para projetos maiores, você pode organizar instruções em múltiplos arquivos usando o diretório `.claude/rules/`. Isso mantém as instruções modulares e mais fáceis para as equipes manterem. As regras também podem ser [escopadas para caminhos de arquivo específicos](#path-specific-rules), então elas só são carregadas em contexto quando Claude trabalha com arquivos correspondentes, reduzindo ruído e economizando espaço de contexto.

162 

163<Note>

164 As regras são carregadas em contexto a cada sessão ou quando arquivos correspondentes são abertos. Para instruções específicas de tarefa que não precisam estar em contexto o tempo todo, use [skills](/pt/skills) em vez disso, que só são carregadas quando você as invoca ou quando Claude determina que são relevantes para seu prompt.

165</Note>

166 

167#### Configure regras

168 

169Coloque arquivos markdown no diretório `.claude/rules/` do seu projeto. Cada arquivo deve cobrir um tópico, com um nome de arquivo descritivo como `testing.md` ou `api-design.md`. Todos os arquivos `.md` são descobertos recursivamente, então você pode organizar regras em subdiretórios como `frontend/` ou `backend/`:

170 

171```text theme={null}

172seu-projeto/

173├── .claude/

174│ ├── CLAUDE.md # Instruções principais do projeto

175│ └── rules/

176│ ├── code-style.md # Diretrizes de estilo de código

177│ ├── testing.md # Convenções de teste

178│ └── security.md # Requisitos de segurança

179```

180 

181Regras sem [frontmatter `paths`](#path-specific-rules) são carregadas no lançamento com a mesma prioridade que `.claude/CLAUDE.md`.

182 

183#### Regras específicas de caminho

184 

185As regras podem ser escopadas para arquivos específicos usando frontmatter YAML com o campo `paths`. Essas regras condicionais só se aplicam quando Claude está trabalhando com arquivos correspondentes aos padrões especificados.

186 

187```markdown theme={null}

188---

189paths:

190 - "src/api/**/*.ts"

191---

192 

193# Regras de Desenvolvimento de API

194 

195- Todos os endpoints de API devem incluir validação de entrada

196- Use o formato de resposta de erro padrão

197- Inclua comentários de documentação OpenAPI

198```

199 

200Regras sem um campo `paths` são carregadas incondicionalmente e se aplicam a todos os arquivos. Regras com escopo de caminho são acionadas quando Claude lê arquivos correspondentes ao padrão, não em cada uso de ferramenta.

201 

202Use padrões glob no campo `paths` para corresponder arquivos por extensão, diretório ou qualquer combinação:

203 

204| Padrão | Corresponde |

205| ---------------------- | -------------------------------------------------- |

206| `**/*.ts` | Todos os arquivos TypeScript em qualquer diretório |

207| `src/**/*` | Todos os arquivos sob o diretório `src/` |

208| `*.md` | Arquivos Markdown na raiz do projeto |

209| `src/components/*.tsx` | Componentes React em um diretório específico |

210 

211Você pode especificar múltiplos padrões e usar expansão de chaves para corresponder múltiplas extensões em um padrão:

212 

213```markdown theme={null}

214---

215paths:

216 - "src/**/*.{ts,tsx}"

217 - "lib/**/*.ts"

218 - "tests/**/*.test.ts"

219---

220```

221 

222#### Compartilhe regras entre projetos com symlinks

223 

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

225 

226Este exemplo vincula tanto um diretório compartilhado quanto um arquivo individual:

227 

228```bash theme={null}

229ln -s ~/shared-claude-rules .claude/rules/shared

230ln -s ~/company-standards/security.md .claude/rules/security.md

231```

232 

233#### Regras de nível de usuário

234 

235Regras pessoais em `~/.claude/rules/` se aplicam a cada projeto na sua máquina. Use-as para preferências que não são específicas do projeto:

236 

237```text theme={null}

238~/.claude/rules/

239├── preferences.md # Suas preferências pessoais de codificação

240└── workflows.md # Seus fluxos de trabalho preferidos

241```

242 

243Regras de nível de usuário são carregadas antes das regras de projeto, dando às regras de projeto prioridade mais alta.

244 

245### Gerencie CLAUDE.md para grandes equipes

246 

247Para organizações implantando Claude Code em equipes, você pode centralizar instruções e controlar quais arquivos CLAUDE.md são carregados.

248 

249#### Implante CLAUDE.md em toda a organização

250 

251As organizações podem implantar um CLAUDE.md gerenciado centralmente que se aplica a todos os usuários em uma máquina. Este arquivo não pode ser excluído por configurações individuais.

252 

253<Steps>

254 <Step title="Crie o arquivo no local da política gerenciada">

255 * macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`

256 * Linux e WSL: `/etc/claude-code/CLAUDE.md`

257 * Windows: `C:\Program Files\ClaudeCode\CLAUDE.md`

258 </Step>

259 

260 <Step title="Implante com seu sistema de gerenciamento de configuração">

261 Use MDM, Group Policy, Ansible ou ferramentas similares para distribuir o arquivo entre máquinas de desenvolvedores. Veja [configurações gerenciadas](/pt/permissions#managed-settings) para outras opções de configuração em toda a organização.

262 </Step>

263</Steps>

264 

265Um CLAUDE.md gerenciado e [configurações gerenciadas](/pt/settings#settings-files) servem a propósitos diferentes. Use configurações para imposição técnica e CLAUDE.md para orientação comportamental:

266 

267| Preocupação | Configure em |

268| :---------------------------------------------------------------- | :----------------------------------------------------------------- |

269| Bloqueie ferramentas, comandos ou caminhos de arquivo específicos | Configurações gerenciadas: `permissions.deny` |

270| Imponha isolamento de sandbox | Configurações gerenciadas: `sandbox.enabled` |

271| Variáveis de ambiente e roteamento de provedor de API | Configurações gerenciadas: `env` |

272| Método de autenticação e bloqueio de organização | Configurações gerenciadas: `forceLoginMethod`, `forceLoginOrgUUID` |

273| Diretrizes de estilo de código e qualidade | CLAUDE.md gerenciado |

274| Lembretes de manipulação de dados e conformidade | CLAUDE.md gerenciado |

275| Instruções comportamentais para Claude | CLAUDE.md gerenciado |

276 

277Regras de configurações são impostas pelo cliente independentemente do que Claude decide fazer. Instruções de CLAUDE.md moldam o comportamento de Claude, mas não são uma camada de imposição rígida.

278 

279#### Exclua arquivos CLAUDE.md específicos

280 

281Em grandes monorepos, arquivos CLAUDE.md ancestrais podem conter instruções que não são relevantes para seu trabalho. A configuração `claudeMdExcludes` permite que você pule arquivos específicos por caminho ou padrão glob.

282 

283Este exemplo exclui um CLAUDE.md de nível superior e um diretório de regras de uma pasta pai. Adicione-o a `.claude/settings.local.json` para que a exclusão permaneça local à sua máquina:

284 

285```json theme={null}

286{

287 "claudeMdExcludes": [

288 "**/monorepo/CLAUDE.md",

289 "/home/user/monorepo/other-team/.claude/rules/**"

290 ]

291}

292```

293 

294Padrões são correspondidos contra caminhos de arquivo absolutos usando sintaxe glob. Você pode configurar `claudeMdExcludes` em qualquer [camada de configurações](/pt/settings#settings-files): usuário, projeto, local ou política gerenciada. Arrays são mesclados entre camadas.

295 

296Arquivos CLAUDE.md de política gerenciada não podem ser excluídos. Isso garante que as instruções em toda a organização sempre se apliquem independentemente das configurações individuais.

297 

298## Memória automática

299 

300A memória automática permite que Claude acumule conhecimento entre sessões sem você escrever nada. Claude salva notas para si mesma enquanto trabalha: comandos de compilação, insights de depuração, notas de arquitetura, preferências de estilo de código e hábitos de fluxo de trabalho. Claude não salva algo a cada sessão. Ela decide o que vale a pena lembrar com base em se a informação seria útil em uma conversa futura.

301 

302<Note>

303 A memória automática requer Claude Code v2.1.59 ou posterior. Verifique sua versão com `claude --version`.

304</Note>

305 

306### Ative ou desative a memória automática

307 

308A memória automática está ativada por padrão. Para alterná-la, abra `/memory` em uma sessão e use o toggle de memória automática, ou defina `autoMemoryEnabled` nas configurações do seu projeto:

309 

310```json theme={null}

311{

312 "autoMemoryEnabled": false

313}

314```

315 

316Para desabilitar a memória automática via variável de ambiente, defina `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`.

317 

318### Local de armazenamento

319 

320Cada projeto obtém seu próprio diretório de memória em `~/.claude/projects/<project>/memory/`. O caminho `<project>` é derivado do repositório git, então todos os worktrees e subdiretórios dentro do mesmo repositório compartilham um diretório de memória automática. Fora de um repositório git, a raiz do projeto é usada em vez disso.

321 

322Para armazenar memória automática em um local diferente, defina `autoMemoryDirectory` nas suas configurações de usuário em `~/.claude/settings.json`:

323 

324```json theme={null}

325{

326 "autoMemoryDirectory": "~/my-custom-memory-dir"

327}

328```

329 

330O valor deve ser um caminho absoluto ou começar com `~/`. Esta configuração é aceita de configurações de política e usuário, e da flag `--settings`. Não é aceita de configurações de projeto ou local, já que ambos os arquivos vivem dentro do diretório do projeto e um repositório clonado poderia fornecer qualquer um para redirecionar escritas de memória automática para locais sensíveis.

331 

332O diretório contém um ponto de entrada `MEMORY.md` e arquivos de tópico opcionais:

333 

334```text theme={null}

335~/.claude/projects/<project>/memory/

336├── MEMORY.md # Índice conciso, carregado em cada sessão

337├── debugging.md # Notas detalhadas sobre padrões de depuração

338├── api-conventions.md # Decisões de design de API

339└── ... # Qualquer outro arquivo de tópico que Claude cria

340```

341 

342`MEMORY.md` atua como um índice do diretório de memória. Claude lê e escreve arquivos neste diretório ao longo de sua sessão, usando `MEMORY.md` para acompanhar o que está armazenado onde.

343 

344A memória automática é local da máquina. Todos os worktrees e subdiretórios dentro do mesmo repositório git compartilham um diretório de memória automática. Os arquivos não são compartilhados entre máquinas ou ambientes em nuvem.

345 

346### Como funciona

347 

348As primeiras 200 linhas de `MEMORY.md`, ou os primeiros 25KB, o que vier primeiro, são carregados no início de cada conversa. Conteúdo além desse limite não é carregado no início da sessão. Claude mantém `MEMORY.md` conciso movendo notas detalhadas para arquivos de tópico separados.

349 

350Este limite se aplica apenas a `MEMORY.md`. Arquivos CLAUDE.md são carregados completamente independentemente do comprimento, embora arquivos mais curtos produzam melhor aderência.

351 

352Arquivos de tópico como `debugging.md` ou `patterns.md` não são carregados na inicialização. Claude os lê sob demanda usando suas ferramentas de arquivo padrão quando precisa da informação.

353 

354Claude lê e escreve arquivos de memória durante sua sessão. Quando você vê "Writing memory" ou "Recalled memory" na interface do Claude Code, Claude está ativamente atualizando ou lendo de `~/.claude/projects/<project>/memory/`.

355 

356### Audite e edite sua memória

357 

358Arquivos de memória automática são markdown simples que você pode editar ou deletar a qualquer momento. Execute [`/memory`](#view-and-edit-with-memory) para navegar e abrir arquivos de memória de dentro de uma sessão.

359 

360## Visualize e edite com `/memory`

361 

362O comando `/memory` lista todos os arquivos CLAUDE.md, CLAUDE.local.md e rules carregados em sua sessão atual, permite que você alterne a memória automática ativada ou desativada, e fornece um link para abrir a pasta de memória automática. Selecione qualquer arquivo para abri-lo no seu editor.

363 

364Quando você pede a Claude para lembrar algo, como "sempre use pnpm, não npm" ou "lembre-se de que os testes de API requerem uma instância local de Redis," Claude salva em memória automática. Para adicionar instruções a CLAUDE.md em vez disso, peça a Claude diretamente, como "adicione isto a CLAUDE.md," ou edite o arquivo você mesmo via `/memory`.

365 

366## Solucione problemas de memória

367 

368Estes são os problemas mais comuns com CLAUDE.md e memória automática, junto com passos para depurá-los.

369 

370### Claude não está seguindo meu CLAUDE.md

371 

372O conteúdo de CLAUDE.md é entregue como uma mensagem de usuário após o prompt do sistema, não como parte do próprio prompt do sistema. Claude o lê e tenta segui-lo, mas não há garantia de conformidade estrita, especialmente para instruções vagas ou conflitantes.

373 

374Para depurar:

375 

376* Execute `/memory` para verificar se seus arquivos CLAUDE.md e CLAUDE.local.md estão sendo carregados. Se um arquivo não estiver listado, Claude não pode vê-lo.

377* Verifique se o CLAUDE.md relevante está em um local que é carregado para sua sessão (veja [Escolha onde colocar arquivos CLAUDE.md](#choose-where-to-put-claude-md-files)).

378* Torne as instruções mais específicas. "Use indentação de 2 espaços" funciona melhor do que "formate o código adequadamente."

379* Procure por instruções conflitantes entre arquivos CLAUDE.md. Se dois arquivos dão orientação diferente para o mesmo comportamento, Claude pode escolher um arbitrariamente.

380 

381Para instruções que você quer no nível do prompt do sistema, use [`--append-system-prompt`](/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.

382 

383<Tip>

384 Use o hook [`InstructionsLoaded`](/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.

385</Tip>

386 

387### Não sei o que a memória automática salvou

388 

389Execute `/memory` e selecione a pasta de memória automática para navegar o que Claude salvou. Tudo é markdown simples que você pode ler, editar ou deletar.

390 

391### Meu CLAUDE.md é muito grande

392 

393Arquivos com mais de 200 linhas consomem mais contexto e podem reduzir a aderência. Use [regras com escopo de caminho](#path-specific-rules) para carregar instruções apenas quando Claude trabalha com arquivos correspondentes, ou reduza conteúdo que não é necessário em cada sessão. Dividir em [importações `@path`](#import-additional-files) ajuda na organização, mas não reduz contexto, já que arquivos importados são carregados no lançamento.

394 

395### Instruções parecem perdidas após `/compact`

396 

397CLAUDE.md de raiz de projeto sobrevive à compactação: após `/compact`, Claude relê do disco e reinjecta no contexto. Arquivos CLAUDE.md aninhados em subdiretórios não são reinjetados automaticamente; eles recarregam na próxima vez que Claude lê um arquivo naquele subdiretório.

398 

399Se uma instrução desapareceu após compactação, ela foi dada apenas em conversa ou vive em um CLAUDE.md aninhado que ainda não recarregou. Adicione instruções apenas de conversa a CLAUDE.md para torná-las persistir. Veja [O que sobrevive à compactação](/pt/context-window#what-survives-compaction) para o detalhamento completo.

400 

401Veja [Escreva instruções eficazes](#write-effective-instructions) para orientação sobre tamanho, estrutura e especificidade.

402 

403## Recursos relacionados

404 

405* [Debug sua configuração](/pt/debug-your-config): diagnostique por que CLAUDE.md ou configurações não estão tendo efeito

406* [Skills](/pt/skills): empacote fluxos de trabalho repetíveis que carregam sob demanda

407* [Settings](/pt/settings): configure o comportamento do Claude Code com arquivos de configurações

408* [Memória de subagent](/pt/sub-agents#enable-persistent-memory): deixe subagents manter sua própria memória automática

microsoft-foundry.md +314 −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 Microsoft Foundry

6 

7> Saiba como configurar Claude Code através do Microsoft Foundry, incluindo configuração, instalação e resolução de problemas.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="foundry" />} />

190 

191## Pré-requisitos

192 

193Antes de configurar Claude Code com Microsoft Foundry, certifique-se de que você tem:

194 

195* Uma assinatura do Azure com acesso ao Microsoft Foundry

196* Permissões RBAC para criar recursos e implantações do Microsoft Foundry

197* Azure CLI instalado e configurado (opcional - necessário apenas se você não tiver outro mecanismo para obter credenciais)

198 

199<Note>

200 Se você está implantando Claude Code para vários usuários, [fixe suas versões de modelo](#4-pin-model-versions) para evitar problemas quando Anthropic lançar novos modelos.

201</Note>

202 

203## Configuração

204 

205### 1. Provisionar recurso do Microsoft Foundry

206 

207Primeiro, crie um recurso Claude no Azure:

208 

2091. Navegue até o [portal do Microsoft Foundry](https://ai.azure.com/)

2102. Crie um novo recurso, anotando o nome do seu recurso

2113. Crie implantações para os modelos Claude:

212 * Claude Opus

213 * Claude Sonnet

214 * Claude Haiku

215 

216### 2. Configurar credenciais do Azure

217 

218Claude Code suporta dois métodos de autenticação para Microsoft Foundry. Escolha o método que melhor se adequa aos seus requisitos de segurança.

219 

220**Opção A: Autenticação por chave de API**

221 

2221. Navegue até seu recurso no portal do Microsoft Foundry

2232. Vá para a seção **Endpoints e chaves**

2243. Copie a **Chave de API**

2254. Defina a variável de ambiente:

226 

227```bash theme={null}

228export ANTHROPIC_FOUNDRY_API_KEY=your-azure-api-key

229```

230 

231**Opção B: Autenticação do Microsoft Entra ID**

232 

233Quando `ANTHROPIC_FOUNDRY_API_KEY` não está definido, Claude Code usa automaticamente a [cadeia de credenciais padrão](https://learn.microsoft.com/en-us/azure/developer/javascript/sdk/authentication/credential-chains#defaultazurecredential-overview) do Azure SDK.

234Isso suporta uma variedade de métodos para autenticar cargas de trabalho locais e remotas.

235 

236Em ambientes locais, você pode usar comumente a Azure CLI:

237 

238```bash theme={null}

239az login

240```

241 

242<Note>

243 Ao usar Microsoft Foundry, os comandos `/login` e `/logout` são desabilitados, pois a autenticação é tratada através de credenciais do Azure.

244</Note>

245 

246### 3. Configurar Claude Code

247 

248Defina as seguintes variáveis de ambiente para ativar Microsoft Foundry:

249 

250```bash theme={null}

251# Ativar integração do Microsoft Foundry

252export CLAUDE_CODE_USE_FOUNDRY=1

253 

254# Nome do recurso do Azure (substitua {resource} pelo nome do seu recurso)

255export ANTHROPIC_FOUNDRY_RESOURCE={resource}

256# Ou forneça a URL base completa:

257# export ANTHROPIC_FOUNDRY_BASE_URL=https://{resource}.services.ai.azure.com/anthropic

258```

259 

260### 4. Pin model versions

261 

262<Warning>

263 Fixe versões de modelo específicas para cada implantação. Se você usar aliases de modelo (`sonnet`, `opus`, `haiku`) sem fixar, Claude Code pode tentar usar uma versão de modelo mais recente que não está disponível em sua conta Foundry, quebrando usuários existentes quando Anthropic lançar atualizações. Quando você criar implantações do Azure, selecione uma versão de modelo específica em vez de "atualizar automaticamente para a mais recente".

264</Warning>

265 

266Defina as variáveis de modelo para corresponder aos nomes de implantação que você criou na etapa 1.

267 

268Sem `ANTHROPIC_DEFAULT_OPUS_MODEL`, o alias `opus` no Foundry resolve para Opus 4.6. Defina-o para o ID Opus 4.7 para usar o modelo mais recente:

269 

270```bash theme={null}

271export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

272export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

273export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'

274```

275 

276Para IDs de modelo atuais e legados, consulte [Visão geral de modelos](https://platform.claude.com/docs/en/about-claude/models/overview). Consulte [Configuração de modelo](/pt/model-config#pin-models-for-third-party-deployments) para a lista completa de variáveis de ambiente.

277 

278[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) está ativado automaticamente. Para solicitar um TTL de cache de 1 hora em vez do padrão de 5 minutos, defina a seguinte variável; gravações de cache com TTL de 1 hora são cobradas a uma taxa mais alta:

279 

280```bash theme={null}

281export ENABLE_PROMPT_CACHING_1H=1

282```

283 

284## Configuração do Azure RBAC

285 

286As funções padrão `Azure AI User` e `Cognitive Services User` incluem todas as permissões necessárias para invocar modelos Claude.

287 

288Para permissões mais restritivas, crie uma função personalizada com o seguinte:

289 

290```json theme={null}

291{

292 "permissions": [

293 {

294 "dataActions": [

295 "Microsoft.CognitiveServices/accounts/providers/*"

296 ]

297 }

298 ]

299}

300```

301 

302Para detalhes, consulte [documentação RBAC do Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry).

303 

304## Resolução de problemas

305 

306Se você receber um erro "Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed":

307 

308* Configure Entra ID no ambiente, ou defina `ANTHROPIC_FOUNDRY_API_KEY`.

309 

310## Recursos adicionais

311 

312* [Documentação do Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry)

313* [Modelos do Microsoft Foundry](https://ai.azure.com/explore/models)

314* [Preços do Microsoft Foundry](https://azure.microsoft.com/en-us/pricing/details/ai-foundry/)

model-config.md +382 −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# Configuração de modelo

6 

7> Saiba mais sobre a configuração do modelo Claude Code, incluindo aliases de modelo como `opusplan`

8 

9## Modelos disponíveis

10 

11Para a configuração `model` no Claude Code, você pode configurar:

12 

13* Um **alias de modelo**

14* Um **nome de modelo**

15 * API Anthropic: Um **[nome de modelo](https://platform.claude.com/docs/pt/about-claude/models/overview)** completo

16 * Bedrock: um ARN de perfil de inferência

17 * Foundry: um nome de implantação

18 * Vertex: um nome de versão

19 

20### Aliases de modelo

21 

22Os aliases de modelo fornecem uma maneira conveniente de selecionar configurações de modelo sem precisar lembrar dos números exatos da versão:

23 

24| Alias de modelo | Comportamento |

25| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

26| **`default`** | Valor especial que limpa qualquer substituição de modelo e reverte para o modelo recomendado para seu tipo de conta. Não é em si um alias de modelo |

27| **`best`** | Usa o modelo mais capaz disponível, atualmente equivalente a `opus` |

28| **`sonnet`** | Usa o modelo Sonnet mais recente para tarefas de codificação diária |

29| **`opus`** | Usa o modelo Opus mais recente para tarefas de raciocínio complexo |

30| **`haiku`** | Usa o modelo Haiku rápido e eficiente para tarefas simples |

31| **`sonnet[1m]`** | Usa Sonnet com uma [janela de contexto de 1 milhão de tokens](https://platform.claude.com/docs/pt/build-with-claude/context-windows#1m-token-context-window) para sessões longas |

32| **`opus[1m]`** | Usa Opus com uma [janela de contexto de 1 milhão de tokens](https://platform.claude.com/docs/pt/build-with-claude/context-windows#1m-token-context-window) para sessões longas |

33| **`opusplan`** | Modo especial que usa `opus` durante o modo de plano, depois muda para `sonnet` para execução |

34 

35Na API Anthropic, `opus` se resolve para Opus 4.7 e `sonnet` se resolve para Sonnet 4.6. No Bedrock, Vertex e Foundry, `opus` se resolve para Opus 4.6 e `sonnet` se resolve para Sonnet 4.5; modelos mais recentes estão disponíveis nesses provedores selecionando o nome completo do modelo explicitamente ou definindo `ANTHROPIC_DEFAULT_OPUS_MODEL` ou `ANTHROPIC_DEFAULT_SONNET_MODEL`.

36 

37Os aliases apontam para a versão recomendada para seu provedor e são atualizados ao longo do tempo. Para fixar uma versão específica, use o nome completo do modelo (por exemplo, `claude-opus-4-7`) ou defina a variável de ambiente correspondente como `ANTHROPIC_DEFAULT_OPUS_MODEL`.

38 

39<Note>

40 Opus 4.7 requer Claude Code v2.1.111 ou posterior. Execute `claude update` para atualizar.

41</Note>

42 

43### Configurando seu modelo

44 

45Você pode configurar seu modelo de várias maneiras, listadas em ordem de prioridade:

46 

471. **Durante a sessão** - Use `/model <alias|name>` para alternar imediatamente, ou execute `/model` sem argumentos para abrir o seletor. O seletor pede confirmação quando a conversa tem saída anterior, pois a próxima resposta relê o histórico completo sem contexto em cache

482. **Na inicialização** - Inicie com `claude --model <alias|name>`

493. **Variável de ambiente** - Defina `ANTHROPIC_MODEL=<alias|name>`

504. **Configurações** - Configure permanentemente em seu arquivo de configurações usando o campo `model`.

51 

52Sua seleção de `/model` é salva nas configurações do usuário e persiste entre reinicializações. A partir da v2.1.117, se o `.claude/settings.json` do projeto fixar um modelo diferente, Claude Code também escreve sua escolha em `.claude/settings.local.json` para que continue a se aplicar nesse projeto após uma reinicialização. As configurações gerenciadas têm precedência e são reaplicadas no próximo lançamento.

53 

54Quando o modelo ativo na inicialização vem das configurações do projeto ou gerenciadas em vez de sua própria seleção, o cabeçalho de inicialização mostra qual arquivo de configurações o definiu. Execute `/model` para substituir pela sessão atual.

55 

56Exemplo de uso:

57 

58```bash theme={null}

59# Iniciar com Opus

60claude --model opus

61 

62# Alternar para Sonnet durante a sessão

63/model sonnet

64```

65 

66Exemplo de arquivo de configurações:

67 

68```json theme={null}

69{

70 "permissions": {

71 ...

72 },

73 "model": "opus"

74}

75```

76 

77## Restringir seleção de modelo

78 

79Os administradores corporativos podem usar `availableModels` em [configurações gerenciadas ou de política](/pt/settings#settings-files) para restringir quais modelos os usuários podem selecionar.

80 

81Quando `availableModels` é definido, os usuários não podem alternar para modelos que não estão na lista via `/model`, sinalizador `--model` ou variável de ambiente `ANTHROPIC_MODEL`.

82 

83```json theme={null}

84{

85 "availableModels": ["sonnet", "haiku"]

86}

87```

88 

89### Comportamento do modelo padrão

90 

91A opção Padrão no seletor de modelo não é afetada por `availableModels`. Ela sempre permanece disponível e representa o padrão de tempo de execução do sistema [baseado no nível de assinatura do usuário](#default-model-setting).

92 

93Mesmo com `availableModels: []`, os usuários ainda podem usar Claude Code com o modelo Padrão para seu nível.

94 

95### Controlar o modelo em que os usuários executam

96 

97A configuração `model` é uma seleção inicial, não uma imposição. Ela define qual modelo está ativo quando uma sessão é iniciada, mas os usuários ainda podem abrir `/model` e escolher Padrão, que se resolve para o padrão do sistema para seu nível, independentemente do que `model` está definido.

98 

99Para controlar totalmente a experiência do modelo, combine três configurações:

100 

101* **`availableModels`**: restringe para quais modelos nomeados os usuários podem alternar

102* **`model`**: define a seleção de modelo inicial quando uma sessão é iniciada

103* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`**: controlam para o que a opção Padrão e os aliases `sonnet`, `opus` e `haiku` se resolvem

104 

105Este exemplo inicia os usuários em Sonnet 4.5, limita o seletor a Sonnet e Haiku, e fixa Padrão para se resolver em Sonnet 4.5 em vez da versão mais recente:

106 

107```json theme={null}

108{

109 "model": "claude-sonnet-4-5",

110 "availableModels": ["claude-sonnet-4-5", "haiku"],

111 "env": {

112 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"

113 }

114}

115```

116 

117Sem o bloco `env`, um usuário que seleciona Padrão no seletor obteria a versão mais recente do Sonnet, contornando a fixação de versão em `model` e `availableModels`.

118 

119### Comportamento de mesclagem

120 

121Quando `availableModels` é definido em vários níveis, como configurações de usuário e configurações de projeto, os arrays são mesclados e desduplicados. Para impor uma lista de permissões rigorosa, defina `availableModels` em configurações gerenciadas ou de política que têm a prioridade mais alta.

122 

123### IDs de modelo Mantle

124 

125Quando o [endpoint Bedrock Mantle](/pt/amazon-bedrock#use-the-mantle-endpoint) está habilitado, entradas em `availableModels` que começam com `anthropic.` são adicionadas ao seletor `/model` como opções personalizadas e roteadas para o endpoint Mantle. Esta é uma exceção à correspondência somente de alias descrita em [Fixar modelos para implantações de terceiros](#pin-models-for-third-party-deployments). A configuração ainda restringe o seletor às entradas listadas, portanto inclua os aliases padrão junto com qualquer ID Mantle.

126 

127## Comportamento especial do modelo

128 

129### Configuração do modelo `default`

130 

131O comportamento de `default` depende do tipo de sua conta:

132 

133* **Max e Team Premium**: padrão para Opus 4.7

134* **Pro, Team Standard, Enterprise e API Anthropic**: padrão para Sonnet 4.6

135* **Bedrock, Vertex e Foundry**: padrão para Sonnet 4.5

136 

137Claude Code pode fazer fallback automaticamente para Sonnet se você atingir um limite de uso com Opus.

138 

139<Note>

140 Em 23 de abril de 2026, o modelo padrão para usuários Enterprise pagos conforme o uso e API Anthropic mudará para Opus 4.7. Para manter um padrão diferente, defina `ANTHROPIC_MODEL` ou o campo `model` em [configurações gerenciadas pelo servidor](/pt/server-managed-settings).

141</Note>

142 

143### Configuração do modelo `opusplan`

144 

145O alias de modelo `opusplan` fornece uma abordagem híbrida automatizada:

146 

147* **No Plan Mode** - Usa `opus` para raciocínio complexo e decisões de arquitetura

148* **No modo de execução** - Muda automaticamente para `sonnet` para geração de código e implementação

149 

150Isso oferece o melhor dos dois mundos: o raciocínio superior do Opus para planejamento e a eficiência do Sonnet para execução.

151 

152A fase Opus do Plan Mode é executada com a janela de contexto padrão de 200K. A atualização automática de 1M descrita em [Contexto estendido](#extended-context) se aplica à configuração do modelo `opus` e não se estende a `opusplan`.

153 

154### Ajustar nível de esforço

155 

156[Níveis de esforço](https://platform.claude.com/docs/pt/build-with-claude/effort) controlam raciocínio adaptativo, que permite que o modelo decida se e quanto pensar em cada etapa com base na complexidade da tarefa. Esforço menor é mais rápido e mais barato para tarefas diretas, enquanto esforço maior fornece raciocínio mais profundo para problemas complexos.

157 

158O esforço é suportado em Opus 4.7, Opus 4.6 e Sonnet 4.6. Os níveis disponíveis dependem do modelo:

159 

160| Modelo | Níveis |

161| :-------------------- | :-------------------------------------- |

162| Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

163| Opus 4.6 e Sonnet 4.6 | `low`, `medium`, `high`, `max` |

164 

165Se você definir um nível que o modelo ativo não suporta, Claude Code volta para o nível mais alto suportado no ou abaixo do que você definiu. Por exemplo, `xhigh` é executado como `high` em Opus 4.6.

166 

167A partir da v2.1.117, o esforço padrão é `xhigh` em Opus 4.7 e `high` em Opus 4.6 e Sonnet 4.6.

168 

169Quando você executa Opus 4.7 pela primeira vez, Claude Code aplica `xhigh` mesmo que você tenha definido anteriormente um nível de esforço diferente para Opus 4.6 ou Sonnet 4.6. Execute `/effort` novamente para escolher um nível diferente após alternar.

170 

171`low`, `medium`, `high` e `xhigh` persistem entre sessões. `max` fornece o raciocínio mais profundo sem restrição no gasto de tokens e se aplica apenas à sessão atual, exceto quando definido através da variável de ambiente `CLAUDE_CODE_EFFORT_LEVEL`.

172 

173#### Escolher um nível de esforço

174 

175Cada nível negocia gasto de tokens contra capacidade. O padrão é adequado para a maioria das tarefas de codificação; ajuste quando você quiser um equilíbrio diferente.

176 

177| Nível | Quando usá-lo |

178| :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |

179| `low` | Reserve para tarefas curtas, delimitadas, sensíveis à latência que não são sensíveis à inteligência |

180| `medium` | Reduz o uso de tokens para trabalho sensível a custos que pode fazer concessões em inteligência |

181| `high` | Equilibra o uso de tokens e inteligência. Use como mínimo para trabalho sensível à inteligência, ou para reduzir o gasto de tokens em relação a `xhigh` |

182| `xhigh` | Melhores resultados para a maioria das tarefas de codificação e agentes. Padrão recomendado em Opus 4.7 |

183| `max` | Pode melhorar o desempenho em tarefas exigentes, mas pode mostrar retornos decrescentes e é propenso a pensar demais. Teste antes de adotar amplamente |

184 

185A escala de esforço é calibrada por modelo, portanto o mesmo nome de nível não representa o mesmo valor subjacente entre modelos.

186 

187Para raciocínio profundo único sem alterar sua configuração de sessão, inclua "ultrathink" em seu prompt. Isso adiciona uma instrução no contexto dizendo ao modelo para raciocinar mais nessa vez; não altera o nível de esforço enviado para a API.

188 

189#### Definir o nível de esforço

190 

191Você pode alterar o esforço através de qualquer um dos seguintes:

192 

193* **`/effort`**: execute `/effort` sem argumentos para abrir um controle deslizante interativo, `/effort` seguido por um nome de nível para defini-lo diretamente, ou `/effort auto` para redefinir para o padrão do modelo

194* **Em `/model`**: use as teclas de seta esquerda/direita para ajustar o controle deslizante de esforço ao selecionar um modelo

195* **Sinalizador `--effort`**: passe um nome de nível para defini-lo para uma única sessão ao iniciar Claude Code

196* **Variável de ambiente**: defina `CLAUDE_CODE_EFFORT_LEVEL` para um nome de nível ou `auto`

197* **Configurações**: defina `effortLevel` em seu arquivo de configurações

198* **Frontmatter de skill e subagent**: defina `effort` em um arquivo markdown de [skill](/pt/skills#frontmatter-reference) ou [subagent](/pt/sub-agents#supported-frontmatter-fields) para substituir o nível de esforço quando esse skill ou subagent é executado

199 

200A variável de ambiente tem precedência sobre todos os outros métodos, depois seu nível configurado, depois o padrão do modelo. O esforço de frontmatter se aplica quando esse skill ou subagent está ativo, substituindo o nível de sessão, mas não a variável de ambiente.

201 

202O controle deslizante de esforço aparece em `/model` quando um modelo suportado é selecionado. O nível de esforço atual também é exibido ao lado do logo e spinner, por exemplo "with low effort", para que você possa confirmar qual configuração está ativa sem abrir `/model`.

203 

204#### Raciocínio adaptativo e orçamentos de pensamento fixos

205 

206O raciocínio adaptativo torna o pensamento opcional em cada etapa, portanto Claude pode responder mais rápido a prompts rotineiros e reservar pensamento mais profundo para etapas que se beneficiam dele. Se você quiser que Claude pense mais ou menos frequentemente do que o nível atual produz, você pode dizer isso diretamente em seu prompt ou em `CLAUDE.md`; o modelo responde a essa orientação dentro de sua configuração de esforço.

207 

208Opus 4.7 sempre usa raciocínio adaptativo. O modo de orçamento de pensamento fixo e `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` não se aplicam a ele.

209 

210Em Opus 4.6 e Sonnet 4.6, você pode definir `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` para reverter para o orçamento de pensamento fixo anterior controlado por `MAX_THINKING_TOKENS`. Veja [variáveis de ambiente](/pt/env-vars).

211 

212### Contexto estendido

213 

214Opus 4.7, Opus 4.6 e Sonnet 4.6 suportam uma [janela de contexto de 1 milhão de tokens](https://platform.claude.com/docs/pt/build-with-claude/context-windows#1m-token-context-window) para sessões longas com grandes bases de código.

215 

216A disponibilidade varia por modelo e plano. Nos planos Max, Team e Enterprise, Opus é automaticamente atualizado para contexto 1M sem configuração adicional. Isso se aplica aos assentos Team Standard e Team Premium.

217 

218| Plano | Opus com contexto 1M | Sonnet com contexto 1M |

219| ------------------------------ | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |

220| Max, Team e Enterprise | Incluído na assinatura | Requer [uso extra](https://support.claude.com/pt/articles/12429409-extra-usage-for-paid-claude-plans) |

221| Pro | Requer [uso extra](https://support.claude.com/pt/articles/12429409-extra-usage-for-paid-claude-plans) | Requer [uso extra](https://support.claude.com/pt/articles/12429409-extra-usage-for-paid-claude-plans) |

222| API e pagamento conforme o uso | Acesso completo | Acesso completo |

223 

224Para desabilitar completamente o contexto 1M, defina `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Isso remove variantes de modelo 1M do seletor de modelo. Veja [variáveis de ambiente](/pt/env-vars).

225 

226A janela de contexto 1M usa preços de modelo padrão sem prêmio para tokens além de 200K. Para planos onde o contexto estendido está incluído em sua assinatura, o uso permanece coberto por sua assinatura. Para planos que acessam contexto estendido através de uso extra, os tokens são cobrados para uso extra.

227 

228Se sua conta suporta contexto 1M, a opção aparece no seletor de modelo (`/model`) nas versões mais recentes do Claude Code. Se você não a vir, tente reiniciar sua sessão.

229 

230Você também pode usar o sufixo `[1m]` com aliases de modelo ou nomes de modelo completos:

231 

232```bash theme={null}

233# Use o alias opus[1m] ou sonnet[1m]

234/model opus[1m]

235/model sonnet[1m]

236 

237# Ou anexe [1m] a um nome de modelo completo

238/model claude-opus-4-7[1m]

239```

240 

241## Verificando seu modelo atual

242 

243Você pode ver qual modelo está usando atualmente de várias maneiras:

244 

2451. Na [linha de status](/pt/statusline) (se configurada)

2462. Em `/status`, que também exibe as informações de sua conta.

247 

248## Adicionar uma opção de modelo personalizado

249 

250Use `ANTHROPIC_CUSTOM_MODEL_OPTION` para adicionar uma única entrada personalizada ao seletor `/model` sem substituir os aliases integrados. Isso é útil para testar IDs de modelo que Claude Code não lista por padrão. Para implantações de gateway LLM, Claude Code popula o seletor automaticamente a partir do endpoint `/v1/models` do gateway, portanto essa variável é necessária apenas quando a descoberta não retorna o modelo que você deseja. Consulte [Seleção de modelo de gateway LLM](/pt/llm-gateway#model-selection).

251 

252Este exemplo define todas as três variáveis para tornar uma implantação Opus roteada por gateway selecionável:

253 

254```bash theme={null}

255export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-7"

256export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"

257export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"

258```

259 

260A entrada personalizada aparece na parte inferior do seletor `/model`. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` e `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` são opcionais. Se omitidos, o ID do modelo é usado como o nome e a descrição padrão é `Custom model (<model-id>)`.

261 

262Claude Code ignora a validação para o ID do modelo definido em `ANTHROPIC_CUSTOM_MODEL_OPTION`, portanto você pode usar qualquer string que seu endpoint de API aceite.

263 

264## Variáveis de ambiente

265 

266Você pode usar as seguintes variáveis de ambiente, que devem ser **nomes de modelo** completos (ou equivalente para seu provedor de API), para controlar os nomes de modelo para os quais os aliases mapeiam.

267 

268| Variável de ambiente | Descrição |

269| -------------------------------- | -------------------------------------------------------------------------------------------- |

270| `ANTHROPIC_DEFAULT_OPUS_MODEL` | O modelo a usar para `opus`, ou para `opusplan` quando Plan Mode está ativo. |

271| `ANTHROPIC_DEFAULT_SONNET_MODEL` | O modelo a usar para `sonnet`, ou para `opusplan` quando Plan Mode não está ativo. |

272| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | O modelo a usar para `haiku`, ou [funcionalidade de fundo](/pt/costs#background-token-usage) |

273| `CLAUDE_CODE_SUBAGENT_MODEL` | O modelo a usar para [subagents](/pt/sub-agents) |

274 

275Nota: `ANTHROPIC_SMALL_FAST_MODEL` está descontinuado em favor de `ANTHROPIC_DEFAULT_HAIKU_MODEL`.

276 

277### Fixar modelos para implantações de terceiros

278 

279Ao implantar Claude Code através de [Bedrock](/pt/amazon-bedrock), [Vertex AI](/pt/google-vertex-ai) ou [Foundry](/pt/microsoft-foundry), fixe versões de modelo antes de lançar para usuários.

280 

281Sem fixação, Claude Code usa aliases de modelo (`sonnet`, `opus`, `haiku`) que resolvem para a versão mais recente. Quando Anthropic lança um novo modelo que ainda não está habilitado na conta de um usuário, os usuários de Bedrock e Vertex AI veem um aviso e voltam para a versão anterior para essa sessão, enquanto os usuários de Foundry veem erros porque Foundry não tem verificação de inicialização equivalente.

282 

283<Warning>

284 Defina todas as três variáveis de ambiente de modelo para IDs de versão específicos como parte de sua configuração inicial. Fixar permite que você controle quando seus usuários se movem para um novo modelo.

285</Warning>

286 

287Use as seguintes variáveis de ambiente com IDs de modelo específicos de versão para seu provedor:

288 

289| Provedor | Exemplo |

290| :-------- | :------------------------------------------------------------------- |

291| Bedrock | `export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'` |

292| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

293| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

294 

295Aplique o mesmo padrão para `ANTHROPIC_DEFAULT_SONNET_MODEL` e `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Para IDs de modelo atuais e legados em todos os provedores, veja [Visão geral de modelos](https://platform.claude.com/docs/pt/about-claude/models/overview). Para atualizar usuários para uma nova versão de modelo, atualize essas variáveis de ambiente e reimplante.

296 

297Para habilitar [contexto estendido](#extended-context) para um modelo fixado, anexe `[1m]` ao ID do modelo em `ANTHROPIC_DEFAULT_OPUS_MODEL` ou `ANTHROPIC_DEFAULT_SONNET_MODEL`:

298 

299```bash theme={null}

300export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7[1m]'

301```

302 

303O sufixo `[1m]` aplica a janela de contexto 1M a todo o uso desse alias, incluindo `opusplan`. Claude Code remove o sufixo antes de enviar o ID do modelo para seu provedor. Apenas anexe `[1m]` quando o modelo subjacente suportar contexto 1M, como Opus 4.7 ou Sonnet 4.6.

304 

305<Note>

306 A lista de permissões `settings.availableModels` ainda se aplica ao usar provedores de terceiros. A filtragem corresponde ao alias de modelo (`opus`, `sonnet`, `haiku`), não ao ID de modelo específico do provedor.

307</Note>

308 

309### Personalizar exibição e capacidades do modelo fixado

310 

311Quando você fixa um modelo em um provedor de terceiros, o ID específico do provedor aparece como está no seletor `/model` e Claude Code pode não reconhecer quais recursos o modelo suporta. Você pode substituir o nome de exibição e declarar capacidades com variáveis de ambiente complementares para cada modelo fixado.

312 

313Essas variáveis têm efeito em provedores de terceiros, como Bedrock, Vertex AI e Foundry. As variáveis `_NAME` e `_DESCRIPTION` também têm efeito quando `ANTHROPIC_BASE_URL` aponta para um [gateway LLM](/pt/llm-gateway). Elas não têm efeito ao conectar diretamente a `api.anthropic.com`.

314 

315| Variável de ambiente | Descrição |

316| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |

317| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Nome de exibição para o modelo Opus fixado no seletor `/model`. Padrão para o ID do modelo quando não definido |

318| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Descrição de exibição para o modelo Opus fixado no seletor `/model`. Padrão para `Custom Opus model` quando não definido |

319| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por vírgulas de capacidades que o modelo Opus fixado suporta |

320 

321Os mesmos sufixos `_NAME`, `_DESCRIPTION` e `_SUPPORTED_CAPABILITIES` estão disponíveis para `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL` e `ANTHROPIC_CUSTOM_MODEL_OPTION`.

322 

323Claude Code habilita recursos como [níveis de esforço](#adjust-effort-level) e [pensamento estendido](/pt/common-workflows#use-extended-thinking-thinking-mode) correspondendo o ID do modelo contra padrões conhecidos. IDs específicos do provedor, como ARNs Bedrock ou nomes de implantação personalizados, geralmente não correspondem a esses padrões, deixando recursos suportados desabilitados. Defina `_SUPPORTED_CAPABILITIES` para informar ao Claude Code quais recursos o modelo realmente suporta:

324 

325| Valor de capacidade | Habilita |

326| ---------------------- | --------------------------------------------------------------------------------------------- |

327| `effort` | [Níveis de esforço](#adjust-effort-level) e o comando `/effort` |

328| `xhigh_effort` | {/* min-version: 2.1.111 */}O nível de esforço `xhigh` |

329| `max_effort` | O nível de esforço `max` |

330| `thinking` | [Pensamento estendido](/pt/common-workflows#use-extended-thinking-thinking-mode) |

331| `adaptive_thinking` | Raciocínio adaptativo que aloca dinamicamente o pensamento com base na complexidade da tarefa |

332| `interleaved_thinking` | Pensamento entre chamadas de ferramenta |

333 

334Quando `_SUPPORTED_CAPABILITIES` é definido, as capacidades listadas são habilitadas e as capacidades não listadas são desabilitadas para o modelo fixado correspondente. Quando a variável não está definida, Claude Code volta para detecção integrada baseada no ID do modelo.

335 

336Este exemplo fixa Opus para um ARN de modelo personalizado Bedrock, define um nome amigável e declara suas capacidades:

337 

338```bash theme={null}

339export ANTHROPIC_DEFAULT_OPUS_MODEL='arn:aws:bedrock:us-east-1:123456789012:custom-model/abc'

340export ANTHROPIC_DEFAULT_OPUS_MODEL_NAME='Opus via Bedrock'

341export ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION='Opus 4.7 routed through a Bedrock custom endpoint'

342export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES='effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking'

343```

344 

345### Substituir IDs de modelo por versão

346 

347As variáveis de ambiente no nível de família acima configuram um ID de modelo por alias de família. Se você precisar mapear várias versões dentro da mesma família para IDs de provedor distintos, use a configuração `modelOverrides` em vez disso.

348 

349`modelOverrides` mapeia IDs de modelo Anthropic individuais para as strings específicas do provedor que Claude Code envia para a API do seu provedor. Quando um usuário seleciona um modelo mapeado no seletor `/model`, Claude Code usa seu valor configurado em vez do padrão integrado.

350 

351Isso permite que administradores corporativos roteiem cada versão de modelo para um ARN de perfil de inferência Bedrock específico, nome de versão Vertex AI ou nome de implantação Foundry para governança, alocação de custos ou roteamento regional.

352 

353Defina `modelOverrides` em seu [arquivo de configurações](/pt/settings#settings-files):

354 

355```json theme={null}

356{

357 "modelOverrides": {

358 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-prod",

359 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

360 "claude-sonnet-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/sonnet-prod"

361 }

362}

363```

364 

365As chaves devem ser IDs de modelo Anthropic conforme listado na [Visão geral de modelos](https://platform.claude.com/docs/pt/about-claude/models/overview). Para IDs de modelo datados, inclua o sufixo de data exatamente como aparece lá. Chaves desconhecidas são ignoradas.

366 

367As substituições substituem os IDs de modelo integrados que suportam cada entrada no seletor `/model`. No Bedrock, as substituições têm precedência sobre qualquer perfil de inferência que Claude Code descobre automaticamente na inicialização. Os valores que você fornece diretamente através de `ANTHROPIC_MODEL`, `--model` ou as variáveis de ambiente `ANTHROPIC_DEFAULT_*_MODEL` são passados para o provedor como estão e não são transformados por `modelOverrides`.

368 

369`modelOverrides` funciona junto com `availableModels`. A lista de permissões é avaliada contra o ID de modelo Anthropic, não o valor de substituição, então uma entrada como `"opus"` em `availableModels` continua a corresponder mesmo quando versões do Opus são mapeadas para ARNs.

370 

371### Configuração de prompt caching

372 

373Claude Code usa automaticamente [prompt caching](https://platform.claude.com/docs/pt/build-with-claude/prompt-caching) para otimizar o desempenho e reduzir custos. Você pode desabilitar prompt caching globalmente ou para níveis de modelo específicos:

374 

375| Variável de ambiente | Descrição |

376| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |

377| `DISABLE_PROMPT_CACHING` | Defina como `1` para desabilitar prompt caching para todos os modelos (tem precedência sobre configurações por modelo) |

378| `DISABLE_PROMPT_CACHING_HAIKU` | Defina como `1` para desabilitar prompt caching apenas para modelos Haiku |

379| `DISABLE_PROMPT_CACHING_SONNET` | Defina como `1` para desabilitar prompt caching apenas para modelos Sonnet |

380| `DISABLE_PROMPT_CACHING_OPUS` | Defina como `1` para desabilitar prompt caching apenas para modelos Opus |

381 

382Essas variáveis de ambiente oferecem controle refinado sobre o comportamento de prompt caching. A configuração global `DISABLE_PROMPT_CACHING` tem precedência sobre as configurações específicas do modelo, permitindo que você desabilite rapidamente todo o caching quando necessário. As configurações por modelo são úteis para controle seletivo, como ao depurar modelos específicos ou trabalhar com provedores de nuvem que podem ter implementações de caching diferentes.

monitoring-usage.md +955 −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# Monitoramento

6 

7> Saiba como ativar e configurar OpenTelemetry para Claude Code.

8 

9Rastreie o uso, custos e atividade de ferramentas do Claude Code em toda a sua organização exportando dados de telemetria através do OpenTelemetry (OTel). Claude Code exporta métricas como dados de série temporal via protocolo de métricas padrão, eventos via protocolo de logs/eventos e, opcionalmente, rastreamentos distribuídos via [protocolo de rastreamentos](#traces-beta). Configure seus backends de métricas, logs e rastreamentos para corresponder aos seus requisitos de monitoramento.

10 

11## Início rápido

12 

13Configure OpenTelemetry usando variáveis de ambiente:

14 

15```bash theme={null}

16# 1. Ativar telemetria

17export CLAUDE_CODE_ENABLE_TELEMETRY=1

18 

19# 2. Escolher exportadores (ambos são opcionais - configure apenas o que você precisa)

20export OTEL_METRICS_EXPORTER=otlp # Opções: otlp, prometheus, console, none

21export OTEL_LOGS_EXPORTER=otlp # Opções: otlp, console, none

22 

23# 3. Configurar endpoint OTLP (para exportador OTLP)

24export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

25export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

26 

27# 4. Definir autenticação (se necessário)

28export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

29 

30# 5. Para depuração: reduzir intervalos de exportação

31export OTEL_METRIC_EXPORT_INTERVAL=10000 # 10 segundos (padrão: 60000ms)

32export OTEL_LOGS_EXPORT_INTERVAL=5000 # 5 segundos (padrão: 5000ms)

33 

34# 6. Executar Claude Code

35claude

36```

37 

38<Note>

39 Os intervalos de exportação padrão são 60 segundos para métricas e 5 segundos para logs. Durante a configuração, você pode querer usar intervalos mais curtos para fins de depuração. Lembre-se de redefinir esses valores para uso em produção.

40</Note>

41 

42Para opções de configuração completas, consulte a [especificação OpenTelemetry](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options).

43 

44## Configuração do administrador

45 

46Os administradores podem configurar as definições de OpenTelemetry para todos os usuários através do [arquivo de configurações gerenciadas](/pt/settings#settings-files). Isso permite controle centralizado das configurações de telemetria em toda a organização. Consulte a [precedência de configurações](/pt/settings#settings-precedence) para obter mais informações sobre como as configurações são aplicadas.

47 

48Exemplo de configuração de configurações gerenciadas:

49 

50```json theme={null}

51{

52 "env": {

53 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

54 "OTEL_METRICS_EXPORTER": "otlp",

55 "OTEL_LOGS_EXPORTER": "otlp",

56 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

57 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

58 "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer example-token"

59 }

60}

61```

62 

63<Note>

64 As configurações gerenciadas podem ser distribuídas via MDM (Mobile Device Management) ou outras soluções de gerenciamento de dispositivos. As variáveis de ambiente definidas no arquivo de configurações gerenciadas têm alta precedência e não podem ser substituídas pelos usuários.

65</Note>

66 

67## Detalhes de configuração

68 

69### Variáveis de configuração comuns

70 

71| Variável de Ambiente | Descrição | Valores de Exemplo |

72| --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |

73| `CLAUDE_CODE_ENABLE_TELEMETRY` | Ativa coleta de telemetria (obrigatório) | `1` |

74| `OTEL_METRICS_EXPORTER` | Tipos de exportador de métricas, separados por vírgula. Use `none` para desativar | `console`, `otlp`, `prometheus`, `none` |

75| `OTEL_LOGS_EXPORTER` | Tipos de exportador de logs/eventos, separados por vírgula. Use `none` para desativar | `console`, `otlp`, `none` |

76| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protocolo para exportador OTLP, aplica-se a todos os sinais | `grpc`, `http/json`, `http/protobuf` |

77| `OTEL_EXPORTER_OTLP_ENDPOINT` | Endpoint do coletor OTLP para todos os sinais | `http://localhost:4317` |

78| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protocolo para métricas, substitui configuração geral | `grpc`, `http/json`, `http/protobuf` |

79| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Endpoint de métricas OTLP, substitui configuração geral | `http://localhost:4318/v1/metrics` |

80| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protocolo para logs, substitui configuração geral | `grpc`, `http/json`, `http/protobuf` |

81| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Endpoint de logs OTLP, substitui configuração geral | `http://localhost:4318/v1/logs` |

82| `OTEL_EXPORTER_OTLP_HEADERS` | Cabeçalhos de autenticação para OTLP | `Authorization=Bearer token` |

83| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` | Chave do cliente para autenticação mTLS | Caminho para arquivo de chave do cliente |

84| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE` | Certificado do cliente para autenticação mTLS | Caminho para arquivo de certificado do cliente |

85| `OTEL_METRIC_EXPORT_INTERVAL` | Intervalo de exportação em milissegundos (padrão: 60000) | `5000`, `60000` |

86| `OTEL_LOGS_EXPORT_INTERVAL` | Intervalo de exportação de logs em milissegundos (padrão: 5000) | `1000`, `10000` |

87| `OTEL_LOG_USER_PROMPTS` | Ativar registro de conteúdo de prompt do usuário (padrão: desativado) | `1` para ativar |

88| `OTEL_LOG_TOOL_DETAILS` | Ativar registro de parâmetros de ferramenta e argumentos de entrada em eventos de ferramenta e atributos de span de rastreamento: comandos Bash, nomes de servidor MCP e ferramenta, nomes de skill e entrada de ferramenta. Também ativa nomes de comando customizado, plugin e MCP em eventos `user_prompt` (padrão: desativado) | `1` para ativar |

89| `OTEL_LOG_TOOL_CONTENT` | Ativar registro de conteúdo de entrada e saída de ferramenta em eventos de span (padrão: desativado). Requer [rastreamento](#traces-beta). O conteúdo é truncado em 60 KB | `1` para ativar |

90| `OTEL_LOG_RAW_API_BODIES` | Emitir o corpo JSON completo da solicitação e resposta da API Anthropic Messages como eventos de log `api_request_body` / `api_response_body` (padrão: desativado). Os corpos incluem todo o histórico de conversa. Ativar isso implica consentimento para tudo que `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS` e `OTEL_LOG_TOOL_CONTENT` revelariam | `1` para corpos inline truncados em 60 KB, ou `file:<dir>` para corpos não truncados em disco com um ponteiro `body_ref` no evento |

91| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Preferência de temporalidade de métricas (padrão: `delta`). Defina como `cumulative` se seu backend espera temporalidade cumulativa | `delta`, `cumulative` |

92| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalo para atualizar cabeçalhos dinâmicos (padrão: 1740000ms / 29 minutos) | `900000` |

93 

94### Controle de cardinalidade de métricas

95 

96As seguintes variáveis de ambiente controlam quais atributos são incluídos nas métricas para gerenciar a cardinalidade:

97 

98| Variável de Ambiente | Descrição | Valor Padrão | Exemplo para Desativar |

99| ----------------------------------- | ------------------------------------------------------------------- | ------------ | ---------------------- |

100| `OTEL_METRICS_INCLUDE_SESSION_ID` | Incluir atributo session.id em métricas | `true` | `false` |

101| `OTEL_METRICS_INCLUDE_VERSION` | Incluir atributo app.version em métricas | `false` | `true` |

102| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Incluir atributos user.account\_uuid e user.account\_id em métricas | `true` | `false` |

103 

104Essas variáveis ajudam a controlar a cardinalidade das métricas, o que afeta os requisitos de armazenamento e o desempenho de consultas no seu backend de métricas. Cardinalidade mais baixa geralmente significa melhor desempenho e custos de armazenamento mais baixos, mas dados menos granulares para análise.

105 

106### Rastreamentos (beta)

107 

108O rastreamento distribuído exporta spans que vinculam cada prompt do usuário às solicitações de API e execuções de ferramentas que ele dispara, para que você possa visualizar uma solicitação completa como um único rastreamento no seu backend de rastreamento.

109 

110O rastreamento está desativado por padrão. Para ativá-lo, defina tanto `CLAUDE_CODE_ENABLE_TELEMETRY=1` quanto `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, depois defina `OTEL_TRACES_EXPORTER` para escolher para onde os spans são enviados. Os rastreamentos reutilizam a [configuração OTLP comum](#variáveis-de-configuração-comuns) para endpoint, protocolo e cabeçalhos.

111 

112| Variável de Ambiente | Descrição | Valores de Exemplo |

113| ------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------ |

114| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Ativar rastreamento de span (obrigatório). `ENABLE_ENHANCED_TELEMETRY_BETA` também é aceito | `1` |

115| `OTEL_TRACES_EXPORTER` | Tipos de exportador de rastreamentos, separados por vírgula. Use `none` para desativar | `console`, `otlp`, `none` |

116| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Protocolo para rastreamentos, substitui `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |

117| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Endpoint de rastreamentos OTLP, substitui `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |

118| `OTEL_TRACES_EXPORT_INTERVAL` | Intervalo de exportação de lote de span em milissegundos (padrão: 5000) | `1000`, `10000` |

119 

120Os spans reduzem o texto do prompt do usuário, detalhes de entrada de ferramenta e conteúdo de ferramenta por padrão. Defina `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1` e `OTEL_LOG_TOOL_CONTENT=1` para incluí-los.

121 

122Quando o rastreamento está ativo, subprocessos Bash e PowerShell herdam automaticamente uma variável de ambiente `TRACEPARENT` contendo o contexto de rastreamento W3C do span de execução de ferramenta ativo. Isso permite que qualquer subprocesso que leia `TRACEPARENT` coloque seus próprios spans sob o mesmo rastreamento, permitindo rastreamento distribuído de ponta a ponta através de scripts e comandos que Claude executa.

123 

124No Agent SDK e sessões não-interativas iniciadas com `-p`, Claude Code também lê `TRACEPARENT` e `TRACESTATE` de seu próprio ambiente ao iniciar cada span de interação. Isso permite que um processo de incorporação passe seu contexto de rastreamento W3C ativo para o subprocesso para que os spans do Claude Code apareçam como filhos do rastreamento distribuído do chamador. Sessões interativas ignoram `TRACEPARENT` de entrada para evitar herdar acidentalmente valores ambientes de CI ou ambientes de contêiner.

125 

126#### Hierarquia de span

127 

128Cada prompt do usuário inicia um span raiz `claude_code.interaction`. Chamadas de API, chamadas de ferramenta e execuções de hook são registradas como seus filhos. Os spans de ferramenta têm dois spans filhos próprios: um para o tempo gasto esperando uma decisão de permissão e outro para a execução em si. Quando a ferramenta Task gera um subagente, os spans de API e ferramenta do subagente se aninham sob o span `claude_code.tool` do pai.

129 

130```text theme={null}

131claude_code.interaction

132├── claude_code.llm_request

133├── claude_code.hook (requer rastreamento beta detalhado)

134└── claude_code.tool

135 ├── claude_code.tool.blocked_on_user

136 ├── claude_code.tool.execution

137 └── (ferramenta Task) spans claude_code.llm_request / claude_code.tool do subagente

138```

139 

140No Agent SDK e sessões `claude -p`, `claude_code.interaction` em si se torna um filho do span do chamador quando `TRACEPARENT` está definido no ambiente.

141 

142#### Atributos de span

143 

144Cada span carrega os [atributos padrão](#atributos-padrão) mais um atributo `span.type` correspondendo ao seu nome. As tabelas abaixo listam os atributos adicionais definidos em cada span. Os spans `llm_request`, `tool.execution` e `hook` definem status OpenTelemetry `ERROR` quando registram uma falha; os outros spans sempre terminam com status `UNSET`.

145 

146**`claude_code.interaction`**

147 

148| Atributo | Descrição | Controlado Por |

149| ------------------------- | -------------------------------------------------------------------------- | ----------------------- |

150| `user_prompt` | Texto do prompt. O valor é `<REDACTED>` a menos que o gate esteja definido | `OTEL_LOG_USER_PROMPTS` |

151| `user_prompt_length` | Comprimento do prompt em caracteres | |

152| `interaction.sequence` | Contador baseado em 1 de interações nesta sessão | |

153| `interaction.duration_ms` | Duração de parede do turno | |

154 

155**`claude_code.llm_request`**

156 

157| Atributo | Descrição | Controlado Por |

158| -------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -------------- |

159| `model` | Identificador do modelo | |

160| `gen_ai.system` | Sempre `anthropic`. Convenção semântica GenAI OpenTelemetry | |

161| `gen_ai.request.model` | Mesmo valor que `model`. Convenção semântica GenAI OpenTelemetry | |

162| `query_source` | Subsistema que emitiu a solicitação, como `repl_main_thread` ou um nome de subagente | |

163| `speed` | `fast` ou `normal` | |

164| `llm_request.context` | `interaction`, `tool` ou `standalone` dependendo do span pai | |

165| `duration_ms` | Duração de parede incluindo tentativas | |

166| `ttft_ms` | Tempo até o primeiro token em milissegundos | |

167| `input_tokens` | Contagem de tokens de entrada do bloco de uso da API | |

168| `output_tokens` | Contagem de tokens de saída | |

169| `cache_read_tokens` | Tokens lidos do cache de prompt | |

170| `cache_creation_tokens` | Tokens escritos no cache de prompt | |

171| `request_id` | ID de solicitação da API Anthropic do cabeçalho de resposta `request-id` | |

172| `gen_ai.response.id` | Mesmo valor que `request_id`. Convenção semântica GenAI OpenTelemetry | |

173| `client_request_id` | `x-client-request-id` gerado pelo cliente da tentativa final | |

174| `attempt` | Total de tentativas feitas para esta solicitação | |

175| `success` | `true` ou `false` | |

176| `status_code` | Código de status HTTP quando a solicitação falhou | |

177| `error` | Mensagem de erro quando a solicitação falhou | |

178| `response.has_tool_call` | `true` quando a resposta continha blocos de uso de ferramenta | |

179| `stop_reason` | API response `stop_reason`, como `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` ou `refusal` | |

180| `gen_ai.response.finish_reasons` | Mesmo valor que `stop_reason`, envolvido em um array de string. Convenção semântica GenAI OpenTelemetry | |

181 

182Cada tentativa de repetição também é registrada como um evento de span `gen_ai.request.attempt` com atributos `attempt` e `client_request_id`.

183 

184**`claude_code.tool`**

185 

186| Atributo | Descrição | Controlado Por |

187| --------------- | ----------------------------------------------------------- | ----------------------- |

188| `tool_name` | Nome da ferramenta | |

189| `duration_ms` | Duração de parede incluindo espera de permissão e execução | |

190| `result_tokens` | Tamanho aproximado em tokens do resultado da ferramenta | |

191| `file_path` | Caminho de arquivo alvo para ferramentas Read, Edit e Write | `OTEL_LOG_TOOL_DETAILS` |

192| `full_command` | String de comando para a ferramenta Bash | `OTEL_LOG_TOOL_DETAILS` |

193| `skill_name` | Nome da skill para a ferramenta Skill | `OTEL_LOG_TOOL_DETAILS` |

194| `subagent_type` | Tipo de subagente para a ferramenta Task | `OTEL_LOG_TOOL_DETAILS` |

195 

196Quando `OTEL_LOG_TOOL_CONTENT=1`, este span também registra um evento de span `tool.output` cujos atributos contêm os corpos de entrada e saída da ferramenta, truncados em 60 KB por atributo.

197 

198**`claude_code.tool.blocked_on_user`**

199 

200| Atributo | Descrição | Controlado Por |

201| ------------- | -------------------------------------------------------------------------------------- | -------------- |

202| `duration_ms` | Tempo gasto esperando a decisão de permissão | |

203| `decision` | `accept` ou `reject` | |

204| `source` | Fonte de decisão, correspondendo ao evento [Tool decision event](#tool-decision-event) | |

205 

206**`claude_code.tool.execution`**

207 

208| Atributo | Descrição | Controlado Por |

209| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

210| `duration_ms` | Tempo gasto executando o corpo da ferramenta | |

211| `success` | `true` ou `false` | |

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

213 

214**`claude_code.hook`**

215 

216Este span é emitido apenas quando rastreamento beta detalhado está ativo, o que requer `ENABLE_BETA_TRACING_DETAILED=1` e `BETA_TRACING_ENDPOINT` além da configuração do exportador de rastreamento acima. Em sessões CLI interativas, isso também requer que sua organização esteja na lista de permissões para o recurso. Sessões Agent SDK e não-interativas `-p` não são controladas. Não é emitido quando apenas `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` está definido.

217 

218| Atributo | Descrição | Controlado Por |

219| ------------------------ | -------------------------------------------------------- | ----------------------- |

220| `hook_event` | Tipo de evento de hook, como `PreToolUse` | |

221| `hook_name` | Nome completo do hook, como `PreToolUse:Write` | |

222| `num_hooks` | Número de comandos de hook correspondentes executados | |

223| `hook_definitions` | Configuração de hook serializada em JSON | `OTEL_LOG_TOOL_DETAILS` |

224| `duration_ms` | Duração de parede de todos os hooks correspondentes | |

225| `num_success` | Contagem de hooks que completaram com sucesso | |

226| `num_blocking` | Contagem de hooks que retornaram uma decisão de bloqueio | |

227| `num_non_blocking_error` | Contagem de hooks que falharam sem bloquear | |

228| `num_cancelled` | Contagem de hooks cancelados antes da conclusão | |

229 

230<Note>

231 Atributos adicionais que contêm conteúdo, como `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input` e `response.model_output`, são emitidos apenas quando rastreamento beta detalhado está ativo. Eles não fazem parte do esquema de span estável. `user_system_prompt` também requer `OTEL_LOG_USER_PROMPTS=1`. Ele carrega apenas o texto do prompt do sistema que você fornece através da opção SDK `systemPrompt` ou dos sinalizadores `--system-prompt` e `--append-system-prompt`, truncado em 60 KB, e é emitido uma vez por sessão em vez de por solicitação.

232</Note>

233 

234### Cabeçalhos dinâmicos

235 

236Para ambientes corporativos que exigem autenticação dinâmica, você pode configurar um script para gerar cabeçalhos dinamicamente:

237 

238#### Configuração de configurações

239 

240Adicione ao seu `.claude/settings.json`:

241 

242```json theme={null}

243{

244 "otelHeadersHelper": "/bin/generate_opentelemetry_headers.sh"

245}

246```

247 

248#### Requisitos do script

249 

250O script deve gerar JSON válido com pares de chave-valor de string representando cabeçalhos HTTP:

251 

252```bash theme={null}

253#!/bin/bash

254# Exemplo: Múltiplos cabeçalhos

255echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

256```

257 

258#### Comportamento de atualização

259 

260O script auxiliar de cabeçalhos é executado na inicialização e periodicamente depois para suportar atualização de token. Por padrão, o script é executado a cada 29 minutos. Personalize o intervalo com a variável de ambiente `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`.

261 

262### Suporte a organizações multi-equipe

263 

264Organizações com múltiplas equipes ou departamentos podem adicionar atributos personalizados para distinguir entre diferentes grupos usando a variável de ambiente `OTEL_RESOURCE_ATTRIBUTES`:

265 

266```bash theme={null}

267# Adicionar atributos personalizados para identificação de equipe

268export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

269```

270 

271Esses atributos personalizados serão incluídos em todas as métricas e eventos, permitindo que você:

272 

273* Filtre métricas por equipe ou departamento

274* Rastreie custos por centro de custo

275* Crie dashboards específicos de equipe

276* Configure alertas para equipes específicas

277 

278<Warning>

279 **Requisitos importantes de formatação para OTEL\_RESOURCE\_ATTRIBUTES:**

280 

281 A variável de ambiente `OTEL_RESOURCE_ATTRIBUTES` usa pares chave=valor separados por vírgula com requisitos rigorosos de formatação:

282 

283 * **Sem espaços permitidos**: Os valores não podem conter espaços. Por exemplo, `user.organizationName=My Company` é inválido

284 * **Formato**: Deve ser pares chave=valor separados por vírgula: `key1=value1,key2=value2`

285 * **Caracteres permitidos**: Apenas caracteres US-ASCII excluindo caracteres de controle, espaços em branco, aspas duplas, vírgulas, ponto-e-vírgula e barras invertidas

286 * **Caracteres especiais**: Caracteres fora do intervalo permitido devem ser codificados em percentual

287 

288 **Exemplos:**

289 

290 ```bash theme={null}

291 # ❌ Inválido - contém espaços

292 export OTEL_RESOURCE_ATTRIBUTES="org.name=John's Organization"

293 

294 # ✅ Válido - use sublinhados ou camelCase em vez disso

295 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"

296 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"

297 

298 # ✅ Válido - codifique em percentual caracteres especiais se necessário

299 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"

300 ```

301 

302 Nota: envolver valores em aspas não escapa espaços. Por exemplo, `org.name="My Company"` resulta no valor literal `"My Company"` (com aspas incluídas), não `My Company`.

303</Warning>

304 

305### Configurações de exemplo

306 

307Defina essas variáveis de ambiente antes de executar `claude`. Cada bloco mostra uma configuração completa para um exportador diferente ou cenário de implantação:

308 

309```bash theme={null}

310# Depuração de console (intervalos de 1 segundo)

311export CLAUDE_CODE_ENABLE_TELEMETRY=1

312export OTEL_METRICS_EXPORTER=console

313export OTEL_METRIC_EXPORT_INTERVAL=1000

314 

315# OTLP/gRPC

316export CLAUDE_CODE_ENABLE_TELEMETRY=1

317export OTEL_METRICS_EXPORTER=otlp

318export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

319export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

320 

321# Prometheus

322export CLAUDE_CODE_ENABLE_TELEMETRY=1

323export OTEL_METRICS_EXPORTER=prometheus

324 

325# Múltiplos exportadores

326export CLAUDE_CODE_ENABLE_TELEMETRY=1

327export OTEL_METRICS_EXPORTER=console,otlp

328export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

329 

330# Diferentes endpoints/backends para métricas e logs

331export CLAUDE_CODE_ENABLE_TELEMETRY=1

332export OTEL_METRICS_EXPORTER=otlp

333export OTEL_LOGS_EXPORTER=otlp

334export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf

335export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.example.com:4318

336export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc

337export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317

338 

339# Apenas métricas (sem eventos/logs)

340export CLAUDE_CODE_ENABLE_TELEMETRY=1

341export OTEL_METRICS_EXPORTER=otlp

342export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

343export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

344 

345# Apenas eventos/logs (sem métricas)

346export CLAUDE_CODE_ENABLE_TELEMETRY=1

347export OTEL_LOGS_EXPORTER=otlp

348export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

349export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

350```

351 

352## Métricas e eventos disponíveis

353 

354### Atributos padrão

355 

356Todas as métricas e eventos compartilham esses atributos padrão:

357 

358| Atributo | Descrição | Controlado Por |

359| ------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |

360| `session.id` | Identificador de sessão único | `OTEL_METRICS_INCLUDE_SESSION_ID` (padrão: true) |

361| `app.version` | Versão atual do Claude Code | `OTEL_METRICS_INCLUDE_VERSION` (padrão: false) |

362| `organization.id` | UUID da organização (quando autenticado) | Sempre incluído quando disponível |

363| `user.account_uuid` | UUID da conta (quando autenticado) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (padrão: true) |

364| `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) |

365| `user.id` | Identificador anônimo de dispositivo/instalação, gerado por instalação do Claude Code | Sempre incluído |

366| `user.email` | Endereço de email do usuário (quando autenticado via OAuth) | Sempre incluído quando disponível |

367| `terminal.type` | Tipo de terminal, como `iTerm.app`, `vscode`, `cursor` ou `tmux` | Sempre incluído quando detectado |

368 

369Os eventos incluem adicionalmente os seguintes atributos. Estes nunca são anexados a métricas porque causariam cardinalidade ilimitada:

370 

371* `prompt.id`: UUID correlacionando um prompt do usuário com todos os eventos subsequentes até o próximo prompt. Veja [Atributos de correlação de evento](#atributos-de-correlação-de-evento).

372* `workspace.host_paths`: diretórios de workspace do host selecionados no aplicativo desktop, como um array de string

373 

374### Métricas

375 

376Claude Code exporta as seguintes métricas:

377 

378| Nome da Métrica | Descrição | Unidade |

379| ------------------------------------- | ------------------------------------------------------------------- | ------- |

380| `claude_code.session.count` | Contagem de sessões CLI iniciadas | count |

381| `claude_code.lines_of_code.count` | Contagem de linhas de código modificadas | count |

382| `claude_code.pull_request.count` | Número de pull requests criados | count |

383| `claude_code.commit.count` | Número de commits git criados | count |

384| `claude_code.cost.usage` | Custo da sessão Claude Code | USD |

385| `claude_code.token.usage` | Número de tokens usados | tokens |

386| `claude_code.code_edit_tool.decision` | Contagem de decisões de permissão da ferramenta de edição de código | count |

387| `claude_code.active_time.total` | Tempo ativo total em segundos | s |

388 

389### Detalhes das métricas

390 

391Cada métrica inclui os atributos padrão listados acima. Métricas com atributos adicionais específicos do contexto são observadas abaixo.

392 

393#### Contador de sessão

394 

395Incrementado no início de cada sessão.

396 

397**Atributos**:

398 

399* Todos os [atributos padrão](#atributos-padrão)

400* `start_type`: Como a sessão foi iniciada. Um de `"fresh"`, `"resume"` ou `"continue"`

401 

402#### Contador de linhas de código

403 

404Incrementado quando código é adicionado ou removido.

405 

406**Atributos**:

407 

408* Todos os [atributos padrão](#atributos-padrão)

409* `type`: (`"added"`, `"removed"`)

410 

411#### Contador de pull request

412 

413Incrementado ao criar pull requests via Claude Code.

414 

415**Atributos**:

416 

417* Todos os [atributos padrão](#atributos-padrão)

418 

419#### Contador de commit

420 

421Incrementado ao criar commits git via Claude Code.

422 

423**Atributos**:

424 

425* Todos os [atributos padrão](#atributos-padrão)

426 

427#### Contador de custo

428 

429Incrementado após cada solicitação de API.

430 

431**Atributos**:

432 

433* Todos os [atributos padrão](#atributos-padrão)

434* `model`: Identificador do modelo (por exemplo, "claude-sonnet-4-6")

435* `query_source`: Categoria do subsistema que emitiu a solicitação. Um de `"main"`, `"subagent"` ou `"auxiliary"`

436* `speed`: `"fast"` quando a solicitação usou modo rápido. Ausente caso contrário

437* `effort`: [Nível de esforço](/pt/model-config#adjust-effort-level) aplicado à solicitação: `"low"`, `"medium"`, `"high"`, `"xhigh"` ou `"max"`. Ausente quando o modelo não suporta esforço.

438 

439#### Contador de token

440 

441Incrementado após cada solicitação de API.

442 

443**Atributos**:

444 

445* Todos os [atributos padrão](#atributos-padrão)

446* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)

447* `model`: Identificador do modelo (por exemplo, "claude-sonnet-4-6")

448* `query_source`: Categoria do subsistema que emitiu a solicitação. Um de `"main"`, `"subagent"` ou `"auxiliary"`

449* `speed`: `"fast"` quando a solicitação usou modo rápido. Ausente caso contrário

450* `effort`: [Nível de esforço](/pt/model-config#adjust-effort-level) aplicado à solicitação. Veja [Contador de custo](#contador-de-custo) para detalhes.

451 

452#### Contador de decisão da ferramenta de edição de código

453 

454Incrementado quando o usuário aceita ou rejeita o uso da ferramenta Edit, Write ou NotebookEdit.

455 

456**Atributos**:

457 

458* Todos os [atributos padrão](#atributos-padrão)

459* `tool_name`: Nome da ferramenta (`"Edit"`, `"Write"`, `"NotebookEdit"`)

460* `decision`: Decisão do usuário (`"accept"`, `"reject"`)

461* `source`: Onde a decisão veio. Um de `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"` ou `"user_reject"`. Veja o [Evento de decisão da ferramenta](#evento-de-decisão-da-ferramenta) para o que cada valor significa.

462* `language`: Linguagem de programação do arquivo editado, como `"TypeScript"`, `"Python"`, `"JavaScript"` ou `"Markdown"`. Retorna `"unknown"` para extensões de arquivo não reconhecidas.

463 

464#### Contador de tempo ativo

465 

466Rastreia o tempo real gasto usando ativamente Claude Code, excluindo tempo ocioso. Essa métrica é incrementada durante interações do usuário (digitação, leitura de respostas) e durante processamento CLI (execução de ferramentas, geração de resposta de IA).

467 

468**Atributos**:

469 

470* Todos os [atributos padrão](#atributos-padrão)

471* `type`: `"user"` para interações de teclado, `"cli"` para execução de ferramentas e respostas de IA

472 

473### Eventos

474 

475Claude Code exporta os seguintes eventos via logs/eventos OpenTelemetry (quando `OTEL_LOGS_EXPORTER` está configurado):

476 

477#### Atributos de correlação de evento

478 

479Quando um usuário envia um prompt, Claude Code pode fazer múltiplas chamadas de API e executar várias ferramentas. O atributo `prompt.id` permite vincular todos esses eventos de volta ao único prompt que os acionou.

480 

481| Atributo | Descrição |

482| ----------- | ---------------------------------------------------------------------------------------------------- |

483| `prompt.id` | Identificador UUID v4 vinculando todos os eventos produzidos ao processar um único prompt do usuário |

484 

485Para rastrear toda a atividade acionada por um único prompt, filtre seus eventos por um valor específico de `prompt.id`. Isso retorna o evento user\_prompt, quaisquer eventos api\_request e quaisquer eventos tool\_result que ocorreram ao processar esse prompt.

486 

487<Note>

488 `prompt.id` é intencionalmente excluído de métricas porque cada prompt gera um ID único, o que criaria um número sempre crescente de séries temporais. Use-o apenas para análise em nível de evento e trilhas de auditoria.

489</Note>

490 

491#### Evento de prompt do usuário

492 

493Registrado quando um usuário envia um prompt.

494 

495**Nome do Evento**: `claude_code.user_prompt`

496 

497**Atributos**:

498 

499* Todos os [atributos padrão](#atributos-padrão)

500* `event.name`: `"user_prompt"`

501* `event.timestamp`: Timestamp ISO 8601

502* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

503* `prompt_length`: Comprimento do prompt

504* `prompt`: Conteúdo do prompt (reduzido por padrão, ativar com `OTEL_LOG_USER_PROMPTS=1`)

505* `command_name`: Nome do comando quando o prompt invoca um. Nomes de comando integrados e agrupados como `compact` ou `debug` são emitidos como estão; aliases como `reset` emitem como digitados em vez do nome canônico. Nomes de comando customizado, plugin e MCP colapsam para `custom` ou `mcp` a menos que `OTEL_LOG_TOOL_DETAILS=1` esteja definido

506* `command_source`: Origem do comando quando presente: `builtin`, `custom` ou `mcp`. Comandos fornecidos por plugin relatam como `custom`

507 

508#### Evento de resultado da ferramenta

509 

510Registrado quando uma ferramenta conclui a execução.

511 

512**Nome do Evento**: `claude_code.tool_result`

513 

514**Atributos**:

515 

516* Todos os [atributos padrão](#atributos-padrão)

517* `event.name`: `"tool_result"`

518* `event.timestamp`: Timestamp ISO 8601

519* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

520* `tool_name`: Nome da ferramenta

521* `tool_use_id`: Identificador único para esta invocação de ferramenta. Corresponde ao `tool_use_id` passado para hooks, permitindo correlação entre eventos OTel e dados capturados por hook.

522* `success`: `"true"` ou `"false"`

523* `duration_ms`: Tempo de execução em milissegundos

524* `error_type`: String de categoria de erro quando a ferramenta falhou, como `"Error:ENOENT"` ou `"ShellError"`

525* `error` (quando `OTEL_LOG_TOOL_DETAILS=1`): Mensagem de erro completa quando a ferramenta falhou

526* `decision_type`: Ou `"accept"` ou `"reject"`

527* `decision_source`: Onde a decisão veio. Um de `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"` ou `"user_reject"`. Veja o [Evento de decisão da ferramenta](#evento-de-decisão-da-ferramenta) para o que cada valor significa.

528* `tool_input_size_bytes`: Tamanho da entrada da ferramenta serializada em JSON em bytes

529* `tool_result_size_bytes`: Tamanho do resultado da ferramenta em bytes

530* `mcp_server_scope`: Identificador de escopo do servidor MCP (para ferramentas MCP)

531* `tool_parameters` (quando `OTEL_LOG_TOOL_DETAILS=1`): String JSON contendo parâmetros específicos da ferramenta:

532 * Para ferramenta Bash: inclui `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox` e `git_commit_id` (o SHA do commit, quando um comando `git commit` é bem-sucedido)

533 * Para ferramentas MCP: inclui `mcp_server_name`, `mcp_tool_name`

534 * Para ferramenta Skill: inclui `skill_name`

535 * Para ferramenta Task: inclui `subagent_type`

536* `tool_input` (quando `OTEL_LOG_TOOL_DETAILS=1`): Argumentos de ferramenta serializados em JSON. Valores individuais com mais de 512 caracteres são truncados, e a carga útil completa é limitada a \~4 K caracteres. Aplica-se a todas as ferramentas, incluindo ferramentas MCP.

537 

538#### Evento de solicitação de API

539 

540Registrado para cada solicitação de API para Claude.

541 

542**Nome do Evento**: `claude_code.api_request`

543 

544**Atributos**:

545 

546* Todos os [atributos padrão](#atributos-padrão)

547* `event.name`: `"api_request"`

548* `event.timestamp`: Timestamp ISO 8601

549* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

550* `model`: Modelo usado (por exemplo, "claude-sonnet-4-6")

551* `cost_usd`: Custo estimado em USD

552* `duration_ms`: Duração da solicitação em milissegundos

553* `input_tokens`: Número de tokens de entrada

554* `output_tokens`: Número de tokens de saída

555* `cache_read_tokens`: Número de tokens lidos do cache

556* `cache_creation_tokens`: Número de tokens usados para criação de cache

557* `request_id`: ID de solicitação da API Anthropic do cabeçalho `request-id` da resposta, como `"req_011..."`. Presente apenas quando a API retorna um.

558* `speed`: `"fast"` ou `"normal"`, indicando se o modo rápido estava ativo

559* `query_source`: Subsistema que emitiu a solicitação, como `"repl_main_thread"`, `"compact"` ou um nome de subagente

560* `effort`: [Nível de esforço](/pt/model-config#adjust-effort-level) aplicado à solicitação: `"low"`, `"medium"`, `"high"`, `"xhigh"` ou `"max"`. Ausente quando o modelo não suporta esforço.

561 

562#### Evento de erro de API

563 

564Registrado quando uma solicitação de API para Claude falha.

565 

566**Nome do Evento**: `claude_code.api_error`

567 

568**Atributos**:

569 

570* Todos os [atributos padrão](#atributos-padrão)

571* `event.name`: `"api_error"`

572* `event.timestamp`: Timestamp ISO 8601

573* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

574* `model`: Modelo usado (por exemplo, "claude-sonnet-4-6")

575* `error`: Mensagem de erro

576* `status_code`: Código de status HTTP como número. Ausente para erros não-HTTP, como falhas de conexão.

577* `duration_ms`: Duração da solicitação em milissegundos

578* `attempt`: Número total de tentativas feitas, incluindo a solicitação inicial (`1` significa que nenhuma tentativa ocorreu)

579* `request_id`: ID de solicitação da API Anthropic do cabeçalho `request-id` da resposta, como `"req_011..."`. Presente apenas quando a API retorna um.

580* `speed`: `"fast"` ou `"normal"`, indicando se o modo rápido estava ativo

581* `query_source`: Subsistema que emitiu a solicitação, como `"repl_main_thread"`, `"compact"` ou um nome de subagente

582* `effort`: [Nível de esforço](/pt/model-config#adjust-effort-level) aplicado à solicitação. Ausente quando o modelo não suporta esforço.

583 

584#### Evento de corpo de solicitação de API

585 

586Registrado para cada tentativa de solicitação de API quando `OTEL_LOG_RAW_API_BODIES` está definido. Um evento é emitido por tentativa, então tentativas com parâmetros ajustados cada uma produzem seu próprio evento.

587 

588**Nome do Evento**: `claude_code.api_request_body`

589 

590**Atributos**:

591 

592* Todos os [atributos padrão](#atributos-padrão)

593* `event.name`: `"api_request_body"`

594* `event.timestamp`: Timestamp ISO 8601

595* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

596* `body`: Parâmetros de solicitação da API Messages serializados em JSON (prompt do sistema, mensagens, ferramentas, etc.), truncados em 60 KB. Conteúdo de pensamento estendido em turnos anteriores do assistente é reduzido. Emitido apenas em modo inline (`OTEL_LOG_RAW_API_BODIES=1`).

597* `body_ref`: Caminho absoluto para um arquivo `<dir>/<uuid>.request.json` contendo o corpo não truncado. Emitido apenas em modo arquivo (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

598* `body_length`: Comprimento do corpo não truncado. Bytes UTF-8 quando `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unidades de código UTF-16 quando `=1`

599* `body_truncated`: `"true"` quando truncamento inline ocorreu. Ausente em modo arquivo e quando nenhum truncamento ocorreu.

600* `model`: Identificador do modelo dos parâmetros de solicitação

601* `query_source`: Subsistema que emitiu a solicitação (por exemplo, `"compact"`)

602 

603#### Evento de corpo de resposta de API

604 

605Registrado para cada resposta de API bem-sucedida quando `OTEL_LOG_RAW_API_BODIES` está definido.

606 

607**Nome do Evento**: `claude_code.api_response_body`

608 

609**Atributos**:

610 

611* Todos os [atributos padrão](#atributos-padrão)

612* `event.name`: `"api_response_body"`

613* `event.timestamp`: Timestamp ISO 8601

614* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

615* `body`: Resposta da API Messages serializada em JSON (id, blocos de conteúdo, uso, razão de parada), truncada em 60 KB. Conteúdo de pensamento estendido é reduzido. Emitido apenas em modo inline (`OTEL_LOG_RAW_API_BODIES=1`).

616* `body_ref`: Caminho absoluto para um arquivo `<dir>/<request_id>.response.json` contendo o corpo não truncado. Emitido apenas em modo arquivo (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

617* `body_length`: Comprimento do corpo não truncado. Bytes UTF-8 quando `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unidades de código UTF-16 quando `=1`

618* `body_truncated`: `"true"` quando truncamento inline ocorreu. Ausente em modo arquivo e quando nenhum truncamento ocorreu.

619* `model`: Identificador do modelo

620* `query_source`: Subsistema que emitiu a solicitação

621* `request_id`: ID de solicitação da API Anthropic do cabeçalho `request-id` da resposta, como `"req_011..."`. Presente apenas quando a API retorna um.

622 

623#### Evento de decisão da ferramenta

624 

625Registrado quando uma decisão de permissão da ferramenta é feita (aceitar/rejeitar).

626 

627**Nome do Evento**: `claude_code.tool_decision`

628 

629**Atributos**:

630 

631* Todos os [atributos padrão](#atributos-padrão)

632* `event.name`: `"tool_decision"`

633* `event.timestamp`: Timestamp ISO 8601

634* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

635* `tool_name`: Nome da ferramenta (por exemplo, "Read", "Edit", "Write", "NotebookEdit")

636* `tool_use_id`: Identificador único para esta invocação de ferramenta. Corresponde ao `tool_use_id` passado para hooks, permitindo correlação entre eventos OTel e dados capturados por hook.

637* `decision`: Ou `"accept"` ou `"reject"`

638* `source`: Onde a decisão veio:

639 * `"config"`: Decidido automaticamente sem avisar, baseado em configurações de projeto, política gerenciada corporativa, sinalizadores `--allowedTools` ou `--disallowedTools`, o modo de permissão ativo ou porque a ferramenta é inerentemente segura.

640 * `"hook"`: Um hook `PreToolUse` ou `PermissionRequest` retornou a decisão.

641 * `"user_permanent"`: Emitido quando o usuário escolheu "Sempre permitir" quando solicitado, salvando uma regra em suas configurações pessoais. Também emitido para chamadas posteriores que correspondem a essa regra salva. Tratado como uma aceitação.

642 * `"user_temporary"`: Emitido quando o usuário escolheu "Sim" ou "Sim, para esta sessão" quando solicitado, sem salvar uma regra. Também emitido para chamadas posteriores na mesma sessão que correspondem a essa permissão com escopo de sessão. Tratado como uma aceitação.

643 * `"user_abort"`: Emitido quando o usuário descartou o aviso de permissão sem responder. Tratado como uma rejeição.

644 * `"user_reject"`: Emitido quando o usuário escolheu "Não" quando solicitado, ou uma chamada correspondeu a uma regra de negação em suas configurações pessoais. Tratado como uma rejeição.

645 

646#### Evento de modo de permissão alterado

647 

648Registrado quando o modo de permissão muda, por exemplo de ciclagem Shift+Tab, saída do modo plano ou verificação de gate de modo automático.

649 

650**Nome do Evento**: `claude_code.permission_mode_changed`

651 

652**Atributos**:

653 

654* Todos os [atributos padrão](#atributos-padrão)

655* `event.name`: `"permission_mode_changed"`

656* `event.timestamp`: Timestamp ISO 8601

657* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

658* `from_mode`: O modo de permissão anterior, por exemplo `"default"`, `"plan"`, `"acceptEdits"`, `"auto"` ou `"bypassPermissions"`

659* `to_mode`: O novo modo de permissão

660* `trigger`: O que causou a mudança. Um de `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"` ou `"auto_opt_in"`. Ausente quando a transição se origina do SDK ou bridge

661 

662#### Evento de autenticação

663 

664Registrado quando `/login` ou `/logout` é concluído.

665 

666**Nome do Evento**: `claude_code.auth`

667 

668**Atributos**:

669 

670* Todos os [atributos padrão](#atributos-padrão)

671* `event.name`: `"auth"`

672* `event.timestamp`: Timestamp ISO 8601

673* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

674* `action`: `"login"` ou `"logout"`

675* `success`: `"true"` ou `"false"`

676* `auth_method`: Método de autenticação, como `"oauth"`

677* `error_category`: Tipo de erro categórico quando a ação falhou. A mensagem de erro bruta nunca é incluída

678* `status_code`: Código de status HTTP como string quando a ação falhou com um erro HTTP

679 

680#### Evento de conexão do servidor MCP

681 

682Registrado quando um servidor MCP se conecta, desconecta ou falha ao conectar.

683 

684**Nome do Evento**: `claude_code.mcp_server_connection`

685 

686**Atributos**:

687 

688* Todos os [atributos padrão](#atributos-padrão)

689* `event.name`: `"mcp_server_connection"`

690* `event.timestamp`: Timestamp ISO 8601

691* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

692* `status`: `"connected"`, `"failed"` ou `"disconnected"`

693* `transport_type`: Transporte do servidor, como `"stdio"`, `"sse"` ou `"http"`

694* `server_scope`: Escopo em que o servidor está configurado, como `"user"`, `"project"` ou `"local"`

695* `duration_ms`: Duração da tentativa de conexão em milissegundos

696* `error_code`: Código de erro quando a conexão falhou

697* `server_name` (quando `OTEL_LOG_TOOL_DETAILS=1`): Nome do servidor configurado

698* `error` (quando `OTEL_LOG_TOOL_DETAILS=1`): Mensagem de erro completa quando a conexão falhou

699 

700#### Evento de erro interno

701 

702Registrado quando Claude Code captura um erro interno inesperado. Apenas o nome da classe de erro e um código estilo errno são registrados. A mensagem de erro e rastreamento de pilha nunca são incluídos. Este evento não é emitido ao executar contra Bedrock, Vertex ou Foundry, ou quando `DISABLE_ERROR_REPORTING` está definido.

703 

704**Nome do Evento**: `claude_code.internal_error`

705 

706**Atributos**:

707 

708* Todos os [atributos padrão](#atributos-padrão)

709* `event.name`: `"internal_error"`

710* `event.timestamp`: Timestamp ISO 8601

711* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

712* `error_name`: Nome da classe de erro, como `"TypeError"` ou `"SyntaxError"`

713* `error_code`: Código errno Node.js como `"ENOENT"` quando presente no erro

714 

715#### Evento de plugin instalado

716 

717Registrado quando um plugin termina de instalar, tanto do comando CLI `claude plugin install` quanto da UI interativa `/plugin`.

718 

719**Nome do Evento**: `claude_code.plugin_installed`

720 

721**Atributos**:

722 

723* Todos os [atributos padrão](#atributos-padrão)

724* `event.name`: `"plugin_installed"`

725* `event.timestamp`: Timestamp ISO 8601

726* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

727* `marketplace.is_official`: `"true"` se o marketplace é um marketplace oficial Anthropic, `"false"` caso contrário

728* `install.trigger`: `"cli"` ou `"ui"`

729* `plugin.name`: Nome do plugin instalado. Para marketplaces de terceiros isso é incluído apenas quando `OTEL_LOG_TOOL_DETAILS=1`

730* `plugin.version`: Versão do plugin quando declarada na entrada do marketplace. Para marketplaces de terceiros isso é incluído apenas quando `OTEL_LOG_TOOL_DETAILS=1`

731* `marketplace.name`: Marketplace do qual o plugin foi instalado. Para marketplaces de terceiros isso é incluído apenas quando `OTEL_LOG_TOOL_DETAILS=1`

732 

733#### Evento de skill ativado

734 

735Registrado quando uma skill é invocada, seja Claude a chama através da ferramenta Skill ou você a executa como um comando `/`.

736 

737**Nome do Evento**: `claude_code.skill_activated`

738 

739**Atributos**:

740 

741* Todos os [atributos padrão](#atributos-padrão)

742* `event.name`: `"skill_activated"`

743* `event.timestamp`: Timestamp ISO 8601

744* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

745* `skill.name`: Nome da skill. Para skills definidas pelo usuário e de plugin de terceiros o valor é o placeholder `"custom_skill"` a menos que `OTEL_LOG_TOOL_DETAILS=1`

746* `invocation_trigger`: Como a skill foi acionada (`"user-slash"`, `"claude-proactive"` ou `"nested-skill"`)

747* `skill.source`: De onde a skill foi carregada (por exemplo, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

748* `plugin.name` (quando `OTEL_LOG_TOOL_DETAILS=1` ou o plugin é de um marketplace oficial): Nome do plugin proprietário quando a skill é fornecida por um plugin

749* `marketplace.name` (quando `OTEL_LOG_TOOL_DETAILS=1` ou o plugin é de um marketplace oficial): Marketplace do qual o plugin proprietário foi instalado, quando a skill é fornecida por um plugin

750 

751#### Evento de menção @

752 

753Registrado quando Claude Code resolve uma menção `@` em um prompt. Nem toda menção emite um evento: caminhos de saída antecipada, como negações de permissão, arquivos superdimensionados, anexos de referência PDF e falhas de listagem de diretório retornam sem registrar.

754 

755**Nome do Evento**: `claude_code.at_mention`

756 

757**Atributos**:

758 

759* Todos os [atributos padrão](#atributos-padrão)

760* `event.name`: `"at_mention"`

761* `event.timestamp`: Timestamp ISO 8601

762* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

763* `mention_type`: Tipo de menção (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`)

764* `success`: Se a menção foi resolvida com sucesso (`"true"` ou `"false"`)

765 

766#### Evento de tentativas de API esgotadas

767 

768Registrado uma vez quando uma solicitação de API falha após mais de uma tentativa. Emitido junto com o evento `api_error` final.

769 

770**Nome do Evento**: `claude_code.api_retries_exhausted`

771 

772**Atributos**:

773 

774* Todos os [atributos padrão](#atributos-padrão)

775* `event.name`: `"api_retries_exhausted"`

776* `event.timestamp`: Timestamp ISO 8601

777* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

778* `model`: Modelo usado

779* `error`: Mensagem de erro final

780* `status_code`: Código de status HTTP como número. Ausente para erros não-HTTP.

781* `total_attempts`: Número total de tentativas feitas

782* `total_retry_duration_ms`: Tempo total de parede em todas as tentativas

783* `speed`: `"fast"` ou `"normal"`

784 

785#### Evento de início de execução de hook

786 

787Registrado quando um ou mais hooks começam a executar para um evento de hook.

788 

789**Nome do Evento**: `claude_code.hook_execution_start`

790 

791**Atributos**:

792 

793* Todos os [atributos padrão](#atributos-padrão)

794* `event.name`: `"hook_execution_start"`

795* `event.timestamp`: Timestamp ISO 8601

796* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

797* `hook_event`: Tipo de evento de hook, como `"PreToolUse"` ou `"PostToolUse"`

798* `hook_name`: Nome completo do hook incluindo matcher, como `"PreToolUse:Write"`

799* `num_hooks`: Número de comandos de hook correspondentes

800* `managed_only`: `"true"` quando apenas hooks de política gerenciada são permitidos

801* `hook_source`: `"policySettings"` ou `"merged"`

802* `hook_definitions`: Configuração de hook serializada em JSON. Incluído apenas quando rastreamento beta detalhado e `OTEL_LOG_TOOL_DETAILS=1` estão ambos ativados

803 

804#### Evento de conclusão de execução de hook

805 

806Registrado quando todos os hooks para um evento de hook terminaram.

807 

808**Nome do Evento**: `claude_code.hook_execution_complete`

809 

810**Atributos**:

811 

812* Todos os [atributos padrão](#atributos-padrão)

813* `event.name`: `"hook_execution_complete"`

814* `event.timestamp`: Timestamp ISO 8601

815* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

816* `hook_event`: Tipo de evento de hook

817* `hook_name`: Nome completo do hook incluindo matcher

818* `num_hooks`: Número de comandos de hook correspondentes

819* `num_success`: Contagem que completou com sucesso

820* `num_blocking`: Contagem que retornou uma decisão de bloqueio

821* `num_non_blocking_error`: Contagem que falhou sem bloquear

822* `num_cancelled`: Contagem cancelada antes da conclusão

823* `total_duration_ms`: Duração de parede de todos os hooks correspondentes

824* `managed_only`: `"true"` quando apenas hooks de política gerenciada são permitidos

825* `hook_source`: `"policySettings"` ou `"merged"`

826* `hook_definitions`: Configuração de hook serializada em JSON. Incluído apenas quando rastreamento beta detalhado e `OTEL_LOG_TOOL_DETAILS=1` estão ambos ativados

827 

828#### Evento de compactação

829 

830Registrado quando a compactação de conversa é concluída.

831 

832**Nome do Evento**: `claude_code.compaction`

833 

834**Atributos**:

835 

836* Todos os [atributos padrão](#atributos-padrão)

837* `event.name`: `"compaction"`

838* `event.timestamp`: Timestamp ISO 8601

839* `event.sequence`: Contador monotonicamente crescente para ordenar eventos dentro de uma sessão

840* `trigger`: `"auto"` ou `"manual"`

841* `success`: `"true"` ou `"false"`

842* `duration_ms`: Duração da compactação

843* `pre_tokens`: Contagem aproximada de tokens antes da compactação

844* `post_tokens`: Contagem aproximada de tokens após compactação

845* `error`: Mensagem de erro quando a compactação falhou

846 

847## Interpretar dados de métricas e eventos

848 

849As métricas e eventos exportados suportam uma gama de análises:

850 

851### Monitoramento de uso

852 

853| Métrica | Oportunidade de Análise |

854| ------------------------------------------------------------- | ------------------------------------------------------------- |

855| `claude_code.token.usage` | Dividir por `type` (entrada/saída), usuário, equipe ou modelo |

856| `claude_code.session.count` | Rastrear adoção e engajamento ao longo do tempo |

857| `claude_code.lines_of_code.count` | Medir produtividade rastreando adições/remoções de código |

858| `claude_code.commit.count` & `claude_code.pull_request.count` | Entender o impacto nos fluxos de trabalho de desenvolvimento |

859 

860### Monitoramento de custo

861 

862A métrica `claude_code.cost.usage` ajuda com:

863 

864* Rastreamento de tendências de uso entre equipes ou indivíduos

865* Identificação de sessões de alto uso para otimização

866 

867<Note>

868 As métricas de custo são aproximações. Para dados de faturamento oficiais, consulte seu provedor de API (Claude Console, Amazon Bedrock ou Google Cloud Vertex).

869</Note>

870 

871### Alertas e segmentação

872 

873Alertas comuns a considerar:

874 

875* Picos de custo

876* Consumo incomum de tokens

877* Alto volume de sessão de usuários específicos

878 

879Todas as métricas podem ser segmentadas por `user.account_uuid`, `user.account_id`, `organization.id`, `session.id`, `model` e `app.version`.

880 

881### Detectar esgotamento de tentativas

882 

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

884 

885O atributo `attempt` no evento registra quantas tentativas foram feitas no total. Um valor maior que `CLAUDE_CODE_MAX_RETRIES` (padrão `10`) indica que a solicitação esgotou todas as tentativas em um erro transitório. Um valor menor indica um erro não retentável como uma resposta `400`.

886 

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

888 

889### Análise de eventos

890 

891Os dados de eventos fornecem insights detalhados sobre interações do Claude Code:

892 

893**Padrões de Uso de Ferramentas**: analise eventos de resultado de ferramentas para identificar:

894 

895* Ferramentas mais frequentemente usadas

896* Taxas de sucesso da ferramenta

897* Tempos médios de execução da ferramenta

898* Padrões de erro por tipo de ferramenta

899 

900**Monitoramento de Desempenho**: rastreie durações de solicitações de API e tempos de execução de ferramentas para identificar gargalos de desempenho.

901 

902## Considerações de backend

903 

904Sua escolha de backends de métricas, logs e rastreamentos determina os tipos de análises que você pode realizar:

905 

906### Para métricas

907 

908* **Bancos de dados de série temporal (por exemplo, Prometheus)**: Cálculos de taxa, métricas agregadas

909* **Armazenamentos colunares (por exemplo, ClickHouse)**: Consultas complexas, análise de usuário único

910* **Plataformas de observabilidade completas (por exemplo, Honeycomb, Datadog)**: Consultas avançadas, visualização, alertas

911 

912### Para eventos/logs

913 

914* **Sistemas de agregação de logs (por exemplo, Elasticsearch, Loki)**: Busca de texto completo, análise de logs

915* **Armazenamentos colunares (por exemplo, ClickHouse)**: Análise de eventos estruturados

916* **Plataformas de observabilidade completas (por exemplo, Honeycomb, Datadog)**: Correlação entre métricas e eventos

917 

918### Para rastreamentos

919 

920Escolha um backend que suporte armazenamento de rastreamento distribuído e correlação de span:

921 

922* **Sistemas de rastreamento distribuído (por exemplo, Jaeger, Zipkin, Grafana Tempo)**: Visualização de span, waterfalls de solicitação, análise de latência

923* **Plataformas de observabilidade completas (por exemplo, Honeycomb, Datadog)**: Busca de rastreamento e correlação com métricas e logs

924 

925Para organizações que exigem métricas de Usuário Ativo Diário/Semanal/Mensal (DAU/WAU/MAU), considere backends que suportam consultas eficientes de valor único.

926 

927## Informações de serviço

928 

929Todas as métricas e eventos são exportados com os seguintes atributos de recurso:

930 

931* `service.name`: `claude-code`

932* `service.version`: Versão atual do Claude Code

933* `os.type`: Tipo de sistema operacional (por exemplo, `linux`, `darwin`, `windows`)

934* `os.version`: String de versão do sistema operacional

935* `host.arch`: Arquitetura do host (por exemplo, `amd64`, `arm64`)

936* `wsl.version`: Número de versão do WSL (apenas presente ao executar no Windows Subsystem for Linux)

937* Nome do Medidor: `com.anthropic.claude_code`

938 

939## Recursos de medição de ROI

940 

941Para um guia abrangente sobre como medir o retorno sobre investimento para Claude Code, incluindo configuração de telemetria, análise de custo, métricas de produtividade e relatórios automatizados, consulte o [Guia de Medição de ROI do Claude Code](https://github.com/anthropics/claude-code-monitoring-guide). Este repositório fornece configurações Docker Compose prontas para uso, configurações Prometheus e OpenTelemetry, e modelos para gerar relatórios de produtividade integrados com ferramentas como Linear.

942 

943## Segurança e privacidade

944 

945* 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](/pt/data-usage#telemetry-services)

946* 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

947* 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 campo

948* 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`

949* 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`. Quando ativado, eventos `tool_result` incluem um atributo `tool_parameters` com comandos Bash, nomes de servidor MCP e ferramenta, e nomes de skill, mais um atributo `tool_input` com caminhos de arquivo, URLs, padrões de busca e outros argumentos. Eventos `user_prompt` incluem o `command_name` verbatim para comandos customizado, plugin e MCP. Spans de rastreamento incluem o mesmo atributo `tool_input` e atributos derivados de entrada como `file_path`. Valores individuais com mais de 512 caracteres são truncados e o total é limitado a \~4 K caracteres, mas os argumentos ainda podem conter valores sensíveis. Configure seu backend de telemetria para filtrar ou reduzir esses atributos conforme necessário

950* O conteúdo de entrada e saída de ferramenta não é registrado em spans de rastreamento por padrão. Para incluí-lo, defina `OTEL_LOG_TOOL_CONTENT=1`. Quando ativado, eventos de span incluem conteúdo completo de entrada e saída de ferramenta truncado em 60 KB por span. Isso pode incluir conteúdos de arquivo brutos de resultados da ferramenta Read e saída de comando Bash. Configure seu backend de telemetria para filtrar ou reduzir esses atributos conforme necessário

951* Corpos de solicitação e resposta da API Anthropic Messages brutos não são registrados por padrão. Para incluí-los, defina `OTEL_LOG_RAW_API_BODIES`. Com `=1`, cada chamada de API emite eventos de log `api_request_body` e `api_response_body` cujo atributo `body` é a carga útil serializada em JSON, truncada em 60 KB. Com `=file:<dir>`, corpos não truncados são escritos em arquivos `.request.json` e `.response.json` sob esse diretório e os eventos carregam um caminho `body_ref` em vez do corpo inline. Envie o diretório com um coletor de log ou sidecar em vez de através do fluxo de telemetria. Em ambos os modos, os corpos contêm o histórico de conversa completo (prompt do sistema, cada turno anterior de usuário e assistente, resultados de ferramenta), então ativar isso implica consentimento para tudo que os outros sinalizadores de conteúdo `OTEL_LOG_*` revelariam. O conteúdo de pensamento estendido do Claude é sempre reduzido desses corpos independentemente de outras configurações

952 

953## Monitorar Claude Code no Amazon Bedrock

954 

955Para orientação detalhada de monitoramento de uso do Claude Code para Amazon Bedrock, consulte [Implementação de Monitoramento do Claude Code (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md).

network-config.md +132 −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# Configuração de rede empresarial

6 

7> Configure Claude Code para ambientes empresariais com servidores proxy, Autoridades de Certificação (CA) personalizadas e autenticação mútua de Transport Layer Security (mTLS).

8 

9Claude Code suporta várias configurações de rede e segurança empresariais através de variáveis de ambiente. Isso inclui rotear o tráfego através de servidores proxy corporativos, confiar em Autoridades de Certificação (CA) personalizadas e autenticar com certificados de Transport Layer Security (mTLS) mútuo para segurança aprimorada.

10 

11<Note>

12 Todas as variáveis de ambiente mostradas nesta página também podem ser configuradas em [`settings.json`](/pt/settings).

13</Note>

14 

15## Configuração de proxy

16 

17### Variáveis de ambiente

18 

19Claude Code respeita variáveis de ambiente de proxy padrão:

20 

21```bash theme={null}

22# Proxy HTTPS (recomendado)

23export HTTPS_PROXY=https://proxy.example.com:8080

24 

25# Proxy HTTP (se HTTPS não estiver disponível)

26export HTTP_PROXY=http://proxy.example.com:8080

27 

28# Ignorar proxy para solicitações específicas - formato separado por espaço

29export NO_PROXY="localhost 192.168.1.1 example.com .example.com"

30# Ignorar proxy para solicitações específicas - formato separado por vírgula

31export NO_PROXY="localhost,192.168.1.1,example.com,.example.com"

32# Ignorar proxy para todas as solicitações

33export NO_PROXY="*"

34```

35 

36<Note>

37 Claude Code não suporta proxies SOCKS.

38</Note>

39 

40### Autenticação básica

41 

42Se seu proxy exigir autenticação básica, inclua credenciais na URL do proxy:

43 

44```bash theme={null}

45export HTTPS_PROXY=http://username:password@proxy.example.com:8080

46```

47 

48<Warning>

49 Evite codificar senhas em scripts. Use variáveis de ambiente ou armazenamento seguro de credenciais.

50</Warning>

51 

52<Tip>

53 Para proxies que exigem autenticação avançada (NTLM, Kerberos, etc.), considere usar um serviço LLM Gateway que suporte seu método de autenticação.

54</Tip>

55 

56## Armazenamento de certificados CA

57 

58Por padrão, Claude Code confia tanto em seus certificados CA Mozilla agrupados quanto no armazenamento de certificados do seu sistema operacional. Proxies de inspeção TLS empresariais, como CrowdStrike Falcon e Zscaler, funcionam sem configuração adicional quando seu certificado raiz é instalado no armazenamento de confiança do SO.

59 

60<Note>

61 A integração do armazenamento de CA do sistema requer a distribuição binária nativa do Claude Code. Ao executar no tempo de execução Node.js, o armazenamento de CA do sistema não é mesclado automaticamente. Nesse caso, defina `NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem` para confiar em uma CA raiz empresarial.

62</Note>

63 

64`CLAUDE_CODE_CERT_STORE` aceita uma lista separada por vírgulas de fontes. Os valores reconhecidos são `bundled` para o conjunto de CA Mozilla enviado com Claude Code e `system` para o armazenamento de confiança do sistema operacional. O padrão é `bundled,system`.

65 

66Para confiar apenas no conjunto de CA Mozilla agrupado:

67 

68```bash theme={null}

69export CLAUDE_CODE_CERT_STORE=bundled

70```

71 

72Para confiar apenas no armazenamento de certificados do SO:

73 

74```bash theme={null}

75export CLAUDE_CODE_CERT_STORE=system

76```

77 

78<Note>

79 `CLAUDE_CODE_CERT_STORE` não possui uma chave de esquema dedicada em `settings.json`. Defina-a através do bloco `env` em `~/.claude/settings.json` ou diretamente no ambiente do processo.

80</Note>

81 

82## Certificados CA personalizados

83 

84Se seu ambiente empresarial usa uma CA personalizada, configure Claude Code para confiar nela diretamente:

85 

86```bash theme={null}

87export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem

88```

89 

90## Autenticação mTLS

91 

92Para ambientes empresariais que exigem autenticação de certificado de cliente:

93 

94```bash theme={null}

95# Certificado de cliente para autenticação

96export CLAUDE_CODE_CLIENT_CERT=/path/to/client-cert.pem

97 

98# Chave privada do cliente

99export CLAUDE_CODE_CLIENT_KEY=/path/to/client-key.pem

100 

101# Opcional: Frase de acesso para chave privada criptografada

102export CLAUDE_CODE_CLIENT_KEY_PASSPHRASE="your-passphrase"

103```

104 

105## Requisitos de acesso à rede

106 

107Claude Code requer acesso aos seguintes URLs. Coloque esses URLs na lista de permissões em sua configuração de proxy e regras de firewall, especialmente em ambientes de rede containerizados ou restritos.

108 

109| URL | Necessário para |

110| ------------------------------ | ------------------------------------------------------------------------------------------------------------- |

111| `api.anthropic.com` | Solicitações da API Claude |

112| `claude.ai` | Autenticação de conta claude.ai |

113| `platform.claude.com` | Autenticação de conta do Anthropic Console |

114| `downloads.claude.ai` | Downloads de executáveis de plugins; instalador nativo e atualizador automático nativo |

115| `storage.googleapis.com` | {/* max-version: 2.1.115 */}Instalador nativo e atualizador automático nativo em versões anteriores a 2.1.116 |

116| `bridge.claudeusercontent.com` | Ponte WebSocket da extensão [Claude no Chrome](/pt/chrome) |

117 

118Se você instalar Claude Code através do npm ou gerenciar sua própria distribuição binária, os usuários finais podem não precisar de acesso a `downloads.claude.ai` ou `storage.googleapis.com`.

119 

120Claude Code também envia telemetria operacional opcional por padrão, que você pode desabilitar com variáveis de ambiente. Consulte [Serviços de telemetria](/pt/data-usage#telemetry-services) para saber como desabilitá-la antes de finalizar sua lista de permissões.

121 

122Ao usar [Amazon Bedrock](/pt/amazon-bedrock), [Google Vertex AI](/pt/google-vertex-ai) ou [Microsoft Foundry](/pt/microsoft-foundry), o tráfego de modelo e autenticação vão para seu provedor em vez de `api.anthropic.com`, `claude.ai` ou `platform.claude.com`. A ferramenta WebFetch ainda chama `api.anthropic.com` para sua [verificação de segurança de domínio](/pt/data-usage#webfetch-domain-safety-check) a menos que você defina `skipWebFetchPreflight: true` em [configurações](/pt/settings).

123 

124[Claude Code na web](/pt/claude-code-on-the-web) e [Code Review](/pt/code-review) se conectam aos seus repositórios a partir da infraestrutura gerenciada pela Anthropic. Se sua organização GitHub Enterprise Cloud restringe o acesso por endereço IP, ative [herança de lista de permissão de IP para GitHub Apps instalados](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). O Claude GitHub App registra seus intervalos de IP, portanto, ativar essa configuração permite acesso sem configuração manual. Para [adicionar os intervalos à sua lista de permissões manualmente](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) em vez disso, ou para configurar outros firewalls, consulte [Endereços IP da API Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).

125 

126Para instâncias [GitHub Enterprise Server](/pt/github-enterprise-server) auto-hospedadas atrás de um firewall, coloque na lista de permissões os mesmos [Endereços IP da API Anthropic](https://platform.claude.com/docs/en/api/ip-addresses) para que a infraestrutura Anthropic possa alcançar seu host GHES para clonar repositórios e postar comentários de revisão.

127 

128## Recursos adicionais

129 

130* [Configurações de Claude Code](/pt/settings)

131* [Referência de variáveis de ambiente](/pt/env-vars)

132* [Guia de solução de problemas](/pt/troubleshooting)

output-styles.md +90 −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# Estilos de saída

6 

7> Adapte Claude Code para usos além da engenharia de software

8 

9Os estilos de saída permitem que você use Claude Code como qualquer tipo de agente, mantendo suas capacidades principais, como executar scripts locais, ler/escrever arquivos e rastrear TODOs.

10 

11## Estilos de saída integrados

12 

13O estilo de saída **Default** do Claude Code é o prompt do sistema existente, projetado para ajudá-lo a completar tarefas de engenharia de software com eficiência.

14 

15Existem dois estilos de saída integrados adicionais focados em ensiná-lo sobre a base de código e como Claude opera:

16 

17* **Explanatory**: Fornece "Insights" educacionais entre ajudá-lo a completar tarefas de engenharia de software. Ajuda você a entender as escolhas de implementação e padrões da base de código.

18 

19* **Learning**: Modo colaborativo de aprender fazendo, onde Claude não apenas compartilhará "Insights" enquanto codifica, mas também pedirá que você contribua com pequenos e estratégicos pedaços de código. Claude Code adicionará marcadores `TODO(human)` no seu código para você implementar.

20 

21## Como os estilos de saída funcionam

22 

23Os estilos de saída modificam diretamente o prompt do sistema do Claude Code.

24 

25* Os estilos de saída personalizados excluem instruções para codificação (como verificar código com testes), a menos que `keep-coding-instructions` seja verdadeiro.

26* Todos os estilos de saída têm suas próprias instruções personalizadas adicionadas ao final do prompt do sistema.

27* Todos os estilos de saída acionam lembretes para Claude aderir às instruções do estilo de saída durante a conversa.

28 

29O uso de tokens depende do estilo. Adicionar instruções ao prompt do sistema aumenta os tokens de entrada, embora o prompt caching reduza esse custo após a primeira solicitação em uma sessão. Os estilos integrados Explanatory e Learning produzem respostas mais longas que Default por design, o que aumenta os tokens de saída. Para estilos personalizados, o uso de tokens de saída depende do que suas instruções dizem ao Claude para produzir.

30 

31## Altere seu estilo de saída

32 

33Execute `/config` e selecione **Output style** para escolher um estilo de um menu. Sua seleção é salva em `.claude/settings.local.json` no [nível do projeto local](/pt/settings).

34 

35Para definir um estilo sem o menu, edite o campo `outputStyle` diretamente em um arquivo de configurações:

36 

37```json theme={null}

38{

39 "outputStyle": "Explanatory"

40}

41```

42 

43Como o estilo de saída é definido no prompt do sistema no início da sessão, as alterações entram em vigor na próxima vez que você iniciar uma nova sessão. Isso mantém o prompt do sistema estável durante uma conversa para que o prompt caching possa reduzir a latência e o custo.

44 

45## Crie um estilo de saída personalizado

46 

47Os estilos de saída personalizados são arquivos Markdown com frontmatter e o texto que será adicionado ao prompt do sistema:

48 

49```markdown theme={null}

50---

51name: My Custom Style

52description:

53 A brief description of what this style does, to be displayed to the user

54---

55 

56# Custom Style Instructions

57 

58You are an interactive CLI tool that helps users with software engineering

59tasks. [Your custom instructions here...]

60 

61## Specific Behaviors

62 

63[Define how the assistant should behave in this style...]

64```

65 

66Você pode salvar esses arquivos no nível do usuário (`~/.claude/output-styles`) ou no nível do projeto (`.claude/output-styles`).

67 

68### Frontmatter

69 

70Os arquivos de estilo de saída suportam frontmatter para especificar metadados:

71 

72| Frontmatter | Propósito | Padrão |

73| :------------------------- | :--------------------------------------------------------------------------------------- | :----------------------- |

74| `name` | Nome do estilo de saída, se não for o nome do arquivo | Herda do nome do arquivo |

75| `description` | Descrição do estilo de saída, mostrada no seletor `/config` | Nenhum |

76| `keep-coding-instructions` | Se deve manter as partes do prompt do sistema do Claude Code relacionadas à codificação. | false |

77 

78## Comparações com recursos relacionados

79 

80### Output Styles vs. CLAUDE.md vs. --append-system-prompt

81 

82Os estilos de saída "desligam" completamente as partes do prompt do sistema padrão do Claude Code específicas para engenharia de software. Nem CLAUDE.md nem `--append-system-prompt` editam o prompt do sistema padrão do Claude Code. CLAUDE.md adiciona o conteúdo como uma mensagem do usuário *seguindo* o prompt do sistema padrão do Claude Code. `--append-system-prompt` anexa o conteúdo ao prompt do sistema.

83 

84### Output Styles vs. [Agents](/pt/sub-agents)

85 

86Os estilos de saída afetam diretamente o loop do agente principal e apenas afetam o prompt do sistema. Os agentes são invocados para lidar com tarefas específicas e podem incluir configurações adicionais como o modelo a usar, as ferramentas disponíveis e algum contexto sobre quando usar o agente.

87 

88### Output Styles vs. [Skills](/pt/skills)

89 

90Os estilos de saída modificam como Claude responde (formatação, tom, estrutura) e estão sempre ativos uma vez selecionados. Skills são prompts específicos de tarefas que você invoca com `/skill-name` ou que Claude carrega automaticamente quando relevante. Use estilos de saída para preferências de formatação consistentes; use skills para fluxos de trabalho e tarefas reutilizáveis.

overview.md +875 −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# Visão geral do Claude Code

6 

7> Claude Code é uma ferramenta de codificação agentic que lê sua base de código, edita arquivos, executa comandos e se integra com suas ferramentas de desenvolvimento. Disponível em seu terminal, IDE, aplicativo de desktop e navegador.

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Claude Code é um assistente de codificação alimentado por IA que ajuda você a construir recursos, corrigir bugs e automatizar tarefas de desenvolvimento. Ele compreende toda a sua base de código e pode trabalhar em vários arquivos e ferramentas para realizar tarefas.

640 

641<div data-gb-slot="overview-install-configurator">

642 <Experiment flag="overview-install-configurator" treatment={<InstallConfigurator />} />

643</div>

644 

645## Comece agora

646 

647Escolha seu ambiente para começar. A maioria das superfícies requer uma [assinatura Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_pricing) ou uma conta do [Anthropic Console](https://console.anthropic.com/). O Terminal CLI e VS Code também suportam [provedores de terceiros](/pt/third-party-integrations).

648 

649<Tabs>

650 <Tab title="Terminal">

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

652 

653 To install Claude Code, use one of the following methods:

654 

655 <Tabs>

656 <Tab title="Native Install (Recommended)">

657 **macOS, Linux, WSL:**

658 

659 ```bash theme={null}

660 curl -fsSL https://claude.ai/install.sh | bash

661 ```

662 

663 **Windows PowerShell:**

664 

665 ```powershell theme={null}

666 irm https://claude.ai/install.ps1 | iex

667 ```

668 

669 **Windows CMD:**

670 

671 ```batch theme={null}

672 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

673 ```

674 

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

676 

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

678 

679 <Info>

680 Native installations automatically update in the background to keep you on the latest version.

681 </Info>

682 </Tab>

683 

684 <Tab title="Homebrew">

685 ```bash theme={null}

686 brew install --cask claude-code

687 ```

688 

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

690 

691 <Info>

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

693 </Info>

694 </Tab>

695 

696 <Tab title="WinGet">

697 ```powershell theme={null}

698 winget install Anthropic.ClaudeCode

699 ```

700 

701 <Info>

702 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

703 </Info>

704 </Tab>

705 </Tabs>

706 

707 You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

708 

709 Em seguida, inicie Claude Code em qualquer projeto:

710 

711 ```bash theme={null}

712 cd your-project

713 claude

714 ```

715 

716 Você será solicitado a fazer login no primeiro uso. É isso! [Continue com o Quickstart →](/pt/quickstart)

717 

718 <Tip>

719 Veja [configuração avançada](/pt/setup) para opções de instalação, atualizações manuais ou instruções de desinstalação. Visite [troubleshooting de instalação](/pt/troubleshoot-install) se você encontrar problemas.

720 </Tip>

721 </Tab>

722 

723 <Tab title="VS Code">

724 A extensão VS Code fornece diffs inline, @-mentions, revisão de plano e histórico de conversa diretamente em seu editor.

725 

726 * [Instalar para VS Code](vscode:extension/anthropic.claude-code)

727 * [Instalar para Cursor](cursor:extension/anthropic.claude-code)

728 

729 Ou procure por "Claude Code" na visualização de Extensões (`Cmd+Shift+X` no Mac, `Ctrl+Shift+X` no Windows/Linux). Após instalar, abra a Paleta de Comandos (`Cmd+Shift+P` / `Ctrl+Shift+P`), digite "Claude Code" e selecione **Abrir em Nova Aba**.

730 

731 [Comece com VS Code →](/pt/vs-code#get-started)

732 </Tab>

733 

734 <Tab title="Aplicativo de desktop">

735 Um aplicativo independente para executar Claude Code fora de seu IDE ou terminal. Revise diffs visualmente, execute várias sessões lado a lado, agende tarefas recorrentes e inicie sessões na nuvem.

736 

737 Baixe e instale:

738 

739 * [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) (Intel e Apple Silicon)

740 * [Windows](https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs) (x64)

741 * [Windows ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs)

742 

743 Após instalar, inicie Claude, faça login e clique na aba **Code** para começar a codificar. Uma [assinatura paga](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_desktop_pricing) é necessária.

744 

745 [Saiba mais sobre o aplicativo de desktop →](/pt/desktop-quickstart)

746 </Tab>

747 

748 <Tab title="Web">

749 Execute Claude Code em seu navegador sem configuração local. Inicie tarefas de longa duração e volte quando estiverem prontas, trabalhe em repositórios que você não tem localmente ou execute várias tarefas em paralelo. Disponível em navegadores de desktop e no aplicativo Claude iOS.

750 

751 Comece a codificar em [claude.ai/code](https://claude.ai/code).

752 

753 [Comece na web →](/pt/web-quickstart)

754 </Tab>

755 

756 <Tab title="JetBrains">

757 Um plugin para IntelliJ IDEA, PyCharm, WebStorm e outras IDEs JetBrains com visualização de diff interativa e compartilhamento de contexto de seleção.

758 

759 Instale o [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) do JetBrains Marketplace e reinicie sua IDE.

760 

761 [Comece com JetBrains →](/pt/jetbrains)

762 </Tab>

763</Tabs>

764 

765## O que você pode fazer

766 

767Aqui estão algumas das maneiras como você pode usar Claude Code:

768 

769<AccordionGroup>

770 <Accordion title="Automatize o trabalho que você continua adiando" icon="wand-magic-sparkles">

771 Claude Code lida com as tarefas tediosas que consomem seu dia: escrever testes para código não testado, corrigir erros de lint em um projeto, resolver conflitos de mesclagem, atualizar dependências e escrever notas de lançamento.

772 

773 ```bash theme={null}

774 claude "write tests for the auth module, run them, and fix any failures"

775 ```

776 </Accordion>

777 

778 <Accordion title="Construa recursos e corrija bugs" icon="hammer">

779 Descreva o que você quer em linguagem simples. Claude Code planeja a abordagem, escreve o código em vários arquivos e verifica se funciona.

780 

781 Para bugs, cole uma mensagem de erro ou descreva o sintoma. Claude Code rastreia o problema em sua base de código, identifica a causa raiz e implementa uma correção. Veja [fluxos de trabalho comuns](/pt/common-workflows) para mais exemplos.

782 </Accordion>

783 

784 <Accordion title="Crie commits e pull requests" icon="code-branch">

785 Claude Code funciona diretamente com git. Ele prepara alterações, escreve mensagens de commit, cria branches e abre pull requests.

786 

787 ```bash theme={null}

788 claude "commit my changes with a descriptive message"

789 ```

790 

791 Em CI, você pode automatizar revisão de código e triagem de problemas com [GitHub Actions](/pt/github-actions) ou [GitLab CI/CD](/pt/gitlab-ci-cd).

792 </Accordion>

793 

794 <Accordion title="Conecte suas ferramentas com MCP" icon="plug">

795 O [Model Context Protocol (MCP)](/pt/mcp) é um padrão aberto para conectar ferramentas de IA a fontes de dados externas. Com MCP, Claude Code pode ler seus documentos de design no Google Drive, atualizar tickets no Jira, extrair dados do Slack ou usar suas próprias ferramentas personalizadas.

796 </Accordion>

797 

798 <Accordion title="Personalize com instruções, skills e hooks" icon="sliders">

799 [`CLAUDE.md`](/pt/memory) é um arquivo markdown que você adiciona à raiz do seu projeto que Claude Code lê no início de cada sessão. Use-o para definir padrões de codificação, decisões de arquitetura, bibliotecas preferidas e listas de verificação de revisão. Claude também constrói [memória automática](/pt/memory#auto-memory) conforme funciona, salvando aprendizados como comandos de compilação e insights de depuração em sessões sem você escrever nada.

800 

801 Crie [comandos personalizados](/pt/skills) para empacotar fluxos de trabalho repetíveis que sua equipe pode compartilhar, como `/review-pr` ou `/deploy-staging`.

802 

803 [Hooks](/pt/hooks) permitem que você execute comandos shell antes ou depois de ações do Claude Code, como formatação automática após cada edição de arquivo ou execução de lint antes de um commit.

804 </Accordion>

805 

806 <Accordion title="Execute equipes de agentes e construa agentes personalizados" icon="users">

807 Gere [múltiplos agentes Claude Code](/pt/sub-agents) que trabalham em diferentes partes de uma tarefa simultaneamente. Um agente líder coordena o trabalho, atribui subtarefas e mescla resultados.

808 

809 Para fluxos de trabalho totalmente personalizados, o [Agent SDK](/pt/agent-sdk/overview) permite que você construa seus próprios agentes alimentados pelas ferramentas e capacidades do Claude Code, com controle total sobre orquestração, acesso a ferramentas e permissões.

810 </Accordion>

811 

812 <Accordion title="Pipe, script e automatize com o CLI" icon="terminal">

813 Claude Code é composável e segue a filosofia Unix. Pipe logs nele, execute-o em CI ou encadeie-o com outras ferramentas:

814 

815 ```bash theme={null}

816 # Analise a saída de log recente

817 tail -200 app.log | claude -p "Slack me if you see any anomalies"

818 

819 # Automatize traduções em CI

820 claude -p "translate new strings into French and raise a PR for review"

821 

822 # Operações em massa em arquivos

823 git diff main --name-only | claude -p "review these changed files for security issues"

824 ```

825 

826 Veja a [referência CLI](/pt/cli-reference) para o conjunto completo de comandos e flags.

827 </Accordion>

828 

829 <Accordion title="Agende tarefas recorrentes" icon="clock">

830 Execute Claude em um cronograma para automatizar trabalho que se repete: revisões de PR matinais, análise de falhas de CI durante a noite, auditorias de dependência semanais ou sincronização de documentos após PRs serem mesclados.

831 

832 * [Routines](/pt/routines) são executadas em infraestrutura gerenciada pela Anthropic, portanto continuam funcionando mesmo quando seu computador está desligado. Elas também podem ser acionadas por chamadas de API ou eventos do GitHub. Crie-as a partir da web, do aplicativo Desktop ou executando `/schedule` no CLI.

833 * [Tarefas agendadas do Desktop](/pt/desktop-scheduled-tasks) são executadas em sua máquina, com acesso direto aos seus arquivos e ferramentas locais

834 * [`/loop`](/pt/scheduled-tasks) repete um prompt dentro de uma sessão CLI para polling rápido

835 </Accordion>

836 

837 <Accordion title="Trabalhe de qualquer lugar" icon="globe">

838 As sessões não estão vinculadas a uma única superfície. Mova o trabalho entre ambientes conforme seu contexto muda:

839 

840 * Afaste-se de sua mesa e continue trabalhando do seu telefone ou qualquer navegador com [Remote Control](/pt/remote-control)

841 * Envie uma mensagem para [Dispatch](/pt/desktop#sessions-from-dispatch) com uma tarefa do seu telefone e abra a sessão Desktop que ela cria

842 * Inicie uma tarefa de longa duração na [web](/pt/claude-code-on-the-web) ou [aplicativo iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684), depois puxe-a para seu terminal com `claude --teleport`

843 * Entregue uma sessão de terminal para o [aplicativo Desktop](/pt/desktop) com `/desktop` para revisão visual de diff

844 * Rotear tarefas do chat da equipe: mencione `@Claude` no [Slack](/pt/slack) com um relatório de bug e obtenha um pull request de volta

845 </Accordion>

846</AccordionGroup>

847 

848## Use Claude Code em qualquer lugar

849 

850Cada superfície se conecta ao mesmo mecanismo Claude Code subjacente, portanto seus arquivos CLAUDE.md, configurações e MCP servers funcionam em todos eles.

851 

852Além dos ambientes [Terminal](/pt/quickstart), [VS Code](/pt/vs-code), [JetBrains](/pt/jetbrains), [Desktop](/pt/desktop) e [Web](/pt/claude-code-on-the-web) acima, Claude Code se integra com CI/CD, chat e fluxos de trabalho do navegador:

853 

854| Eu quero... | Melhor opção |

855| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |

856| Continuar uma sessão local do meu telefone ou outro dispositivo | [Remote Control](/pt/remote-control) |

857| Enviar eventos do Telegram, Discord, iMessage ou meus próprios webhooks para uma sessão | [Channels](/pt/channels) |

858| Iniciar uma tarefa localmente, continuar no celular | [Web](/pt/claude-code-on-the-web) ou [aplicativo Claude iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684) |

859| Executar Claude em um cronograma recorrente | [Routines](/pt/routines) ou [Tarefas agendadas do Desktop](/pt/desktop-scheduled-tasks) |

860| Automatizar revisões de PR e triagem de problemas | [GitHub Actions](/pt/github-actions) ou [GitLab CI/CD](/pt/gitlab-ci-cd) |

861| Obter revisão automática de código em cada PR | [GitHub Code Review](/pt/code-review) |

862| Rotear relatórios de bugs do Slack para pull requests | [Slack](/pt/slack) |

863| Depurar aplicações web ao vivo | [Chrome](/pt/chrome) |

864| Construir agentes personalizados para seus próprios fluxos de trabalho | [Agent SDK](/pt/agent-sdk/overview) |

865 

866## Próximos passos

867 

868Depois de instalar Claude Code, estes guias ajudam você a aprofundar.

869 

870* [Quickstart](/pt/quickstart): caminhe através de sua primeira tarefa real, desde explorar uma base de código até fazer commit de uma correção

871* [Armazene instruções e memórias](/pt/memory): dê ao Claude instruções persistentes com arquivos CLAUDE.md e memória automática

872* [Fluxos de trabalho comuns](/pt/common-workflows) e [melhores práticas](/pt/best-practices): padrões para aproveitar ao máximo Claude Code

873* [Configurações](/pt/settings): personalize Claude Code para seu fluxo de trabalho

874* [Troubleshooting](/pt/troubleshooting): soluções para problemas comuns

875* [code.claude.com](https://code.claude.com/): demos, preços e detalhes do produto

permission-modes.md +290 −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# Escolha um modo de permissão

6 

7> Controle se Claude pede permissão antes de editar arquivos ou executar comandos. Cicle modos com Shift+Tab na CLI ou use o seletor de modo no VS Code, Desktop e claude.ai.

8 

9Quando Claude quer editar um arquivo, executar um comando shell ou fazer uma solicitação de rede, ele pausa e pede sua aprovação. Os modos de permissão controlam com que frequência essa pausa acontece. O modo que você escolhe molda o fluxo de uma sessão: o modo padrão faz você revisar cada ação conforme ela chega, enquanto modos mais flexíveis permitem que Claude trabalhe em trechos mais longos ininterruptos e relate quando terminar. Escolha mais supervisão para trabalho sensível, ou menos interrupções quando você confia na direção.

10 

11## Modos disponíveis

12 

13Cada modo faz um tradeoff diferente entre conveniência e supervisão. A tabela abaixo mostra o que Claude pode fazer sem um prompt de permissão em cada modo.

14 

15| Modo | O que é executado sem pedir | Melhor para |

16| :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------ | :----------------------------------------------- |

17| `default` | Apenas leituras | Começando, trabalho sensível |

18| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Leituras, edições de arquivo e comandos comuns do filesystem (`mkdir`, `touch`, `mv`, `cp`, etc.) | Iterando em código que você está revisando |

19| [`plan`](#analyze-before-you-edit-with-plan-mode) | Apenas leituras | Explorando uma base de código antes de alterá-la |

20| [`auto`](#eliminate-prompts-with-auto-mode) | Tudo, com verificações de segurança de fundo | Tarefas longas, reduzindo fadiga de prompt |

21| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Apenas ferramentas pré-aprovadas | CI bloqueado e scripts |

22| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tudo | Apenas contêineres e VMs isolados |

23 

24Em todos os modos exceto `bypassPermissions`, escritas em [caminhos protegidos](#protected-paths) nunca são auto-aprovadas, protegendo o estado do repositório e a configuração própria de Claude contra corrupção acidental.

25 

26Os modos definem a linha de base. Sobreponha [regras de permissão](/pt/permissions#manage-permissions) no topo para pré-aprovar ou bloquear ferramentas específicas em qualquer modo exceto `bypassPermissions`, que pula a camada de permissão inteiramente.

27 

28## Alternar modos de permissão

29 

30Você pode alternar modos no meio de uma sessão, na inicialização ou como padrão persistente. O modo é definido através desses controles, não pedindo a Claude no chat. Selecione sua interface abaixo para ver como alterá-lo.

31 

32<Tabs>

33 <Tab title="CLI">

34 **Durante uma sessão**: pressione `Shift+Tab` para ciclar `default` → `acceptEdits` → `plan`. O modo atual aparece na barra de status. Nem todo modo está no ciclo padrão:

35 

36 * `auto`: aparece quando sua conta atende aos [requisitos do auto mode](#eliminate-prompts-with-auto-mode); ciclar para auto mostra um prompt de aceitação até que você o aceite, ou selecione **Não, não pergunte novamente** para remover auto do ciclo

37 * `bypassPermissions`: aparece depois que você inicia com `--permission-mode bypassPermissions`, `--dangerously-skip-permissions`, ou `--allow-dangerously-skip-permissions`; a variante `--allow-` adiciona o modo ao ciclo sem ativá-lo

38 * `dontAsk`: nunca aparece no ciclo; defina-o com `--permission-mode dontAsk`

39 

40 Os modos opcionais habilitados se encaixam após `plan`, com `bypassPermissions` primeiro e `auto` por último. Se você tiver ambos habilitados, você ciclará através de `bypassPermissions` a caminho de `auto`.

41 

42 **Na inicialização**: passe o modo como uma flag.

43 

44 ```bash theme={null}

45 claude --permission-mode plan

46 ```

47 

48 **Como padrão**: defina `defaultMode` em [settings](/pt/settings#settings-files).

49 

50 ```json theme={null}

51 {

52 "permissions": {

53 "defaultMode": "acceptEdits"

54 }

55 }

56 ```

57 

58 A mesma flag `--permission-mode` funciona com `-p` para [execuções não-interativas](/pt/headless).

59 </Tab>

60 

61 <Tab title="VS Code">

62 **Durante uma sessão**: clique no indicador de modo na parte inferior da caixa de prompt.

63 

64 **Como padrão**: defina `claudeCode.initialPermissionMode` nas configurações do VS Code, ou use o painel de configurações da extensão Claude Code.

65 

66 O indicador de modo mostra esses rótulos, mapeados para o modo que cada um aplica:

67 

68 | Rótulo da UI | Modo |

69 | :----------------- | :------------------ |

70 | Ask before edits | `default` |

71 | Edit automatically | `acceptEdits` |

72 | Plan mode | `plan` |

73 | Auto mode | `auto` |

74 | Bypass permissions | `bypassPermissions` |

75 

76 Auto mode aparece no indicador de modo depois que você habilita **Allow dangerously skip permissions** nas configurações da extensão, mas permanece indisponível até que sua conta atenda a todos os requisitos listados na [seção de auto mode](#eliminate-prompts-with-auto-mode). A configuração `claudeCode.initialPermissionMode` não aceita `auto`; para iniciar em auto mode por padrão, defina `defaultMode` em seu [`settings.json`](/pt/settings#settings-files) do Claude Code em vez disso.

77 

78 Bypass permissions também requer o toggle **Allow dangerously skip permissions** antes de aparecer no indicador de modo.

79 

80 Veja o [guia do VS Code](/pt/vs-code) para detalhes específicos da extensão.

81 </Tab>

82 

83 <Tab title="JetBrains">

84 O plugin JetBrains executa Claude Code no terminal do IDE, então alternar modos funciona da mesma forma que na CLI: pressione `Shift+Tab` para ciclar, ou passe `--permission-mode` ao iniciar.

85 </Tab>

86 

87 <Tab title="Desktop">

88 Use o seletor de modo ao lado do botão enviar. Auto e Bypass permissions aparecem apenas depois que você os habilita nas configurações do Desktop. Veja o [guia do Desktop](/pt/desktop#choose-a-permission-mode).

89 </Tab>

90 

91 <Tab title="Web and mobile">

92 Use o dropdown de modo ao lado da caixa de prompt em [claude.ai/code](https://claude.ai/code) ou no aplicativo móvel. Prompts de permissão aparecem em claude.ai para aprovação. Quais modos aparecem depende de onde a sessão é executada:

93 

94 * **Sessões em nuvem** em [Claude Code na web](/pt/claude-code-on-the-web): Auto accept edits e Plan mode. Ask permissions, Auto e Bypass permissions não estão disponíveis.

95 * **Sessões de [Remote Control](/pt/remote-control)** em sua máquina local: Ask permissions, Auto accept edits e Plan mode. Auto e Bypass permissions não estão disponíveis.

96 

97 Para Remote Control, você também pode definir o modo inicial ao iniciar o host:

98 

99 ```bash theme={null}

100 claude remote-control --permission-mode acceptEdits

101 ```

102 </Tab>

103</Tabs>

104 

105## Auto-approve file edits with acceptEdits mode

106 

107O modo `acceptEdits` permite que Claude crie e edite arquivos em seu diretório de trabalho sem solicitar. A barra de status mostra `⏵⏵ accept edits on` enquanto este modo está ativo.

108 

109Além de edições de arquivo, o modo `acceptEdits` auto-aprova comandos Bash comuns do filesystem: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` e `sed`. Esses comandos também são auto-aprovados quando prefixados com variáveis de ambiente seguras como `LANG=C` ou `NO_COLOR=1`, ou wrappers de processo como `timeout`, `nice` ou `nohup`. Como edições de arquivo, a auto-aprovação se aplica apenas a caminhos dentro de seu diretório de trabalho ou `additionalDirectories`. Caminhos fora desse escopo, escritas em [caminhos protegidos](#protected-paths) e todos os outros comandos Bash ainda solicitam.

110 

111Quando a [ferramenta PowerShell](/pt/tools-reference#powershell-tool) está ativada, o modo `acceptEdits` também auto-aprova `Set-Content`, `Add-Content`, `Clear-Content` e `Remove-Item` em caminhos dentro do escopo, junto com seus aliases comuns. As mesmas regras de escopo e caminho protegido se aplicam.

112 

113Use `acceptEdits` quando você quer revisar alterações em seu editor ou via `git diff` depois do fato em vez de aprovar cada edição inline. Pressione `Shift+Tab` uma vez do modo padrão para entrar nele, ou inicie com ele diretamente:

114 

115```bash theme={null}

116claude --permission-mode acceptEdits

117```

118 

119## Analyze before you edit with plan mode

120 

121Plan mode diz a Claude para pesquisar e propor alterações sem fazê-las. Claude lê arquivos, executa comandos shell para explorar e escreve um plano, mas não edita seu código-fonte. Prompts de permissão ainda se aplicam da mesma forma que o modo padrão.

122 

123Entre em plan mode pressionando `Shift+Tab` ou prefixando um único prompt com `/plan`. Você também pode iniciar em plan mode a partir da CLI:

124 

125```bash theme={null}

126claude --permission-mode plan

127```

128 

129Pressione `Shift+Tab` novamente para sair do plan mode sem aprovar um plano.

130 

131Quando o plano está pronto, Claude o apresenta e pergunta como proceder. A partir desse prompt você pode:

132 

133* Aprovar e iniciar em auto mode

134* Aprovar e aceitar edições

135* Aprovar e revisar cada edição manualmente

136* Continuar planejando com feedback

137* Refinar com [Ultraplan](/pt/ultraplan) para revisão baseada em navegador

138 

139Cada opção de aprovação também oferece limpar o contexto de planejamento primeiro.

140 

141## Elimine prompts com auto mode

142 

143<Note>

144 Auto mode requer Claude Code v2.1.83 ou posterior.

145</Note>

146 

147Auto mode permite que Claude execute sem prompts de permissão. Um modelo classificador separado revisa ações antes de serem executadas, bloqueando qualquer coisa que escale além de sua solicitação, direcione infraestrutura não reconhecida ou pareça impulsionada por conteúdo hostil que Claude leu.

148 

149<Warning>

150 Auto mode é uma visualização de pesquisa. Reduz prompts mas não garante segurança. Use-o para tarefas onde você confia na direção geral, não como substituto para revisão em operações sensíveis.

151</Warning>

152 

153Auto mode está disponível apenas quando sua conta atende a todos esses requisitos:

154 

155* **Plan**: Max, Team, Enterprise ou API. Não disponível em Pro.

156* **Admin**: em Team e Enterprise, um admin deve habilitá-lo em [configurações de admin do Claude Code](https://claude.ai/admin-settings/claude-code) antes que os usuários possam ativá-lo. Admins também podem bloqueá-lo definindo `permissions.disableAutoMode` para `"disable"` em [configurações gerenciadas](/pt/permissions#managed-settings).

157* **Model**: Claude Sonnet 4.6, Opus 4.6 ou Opus 4.7 em planos Team, Enterprise e API; Claude Opus 4.7 apenas em planos Max. Outros modelos, incluindo Haiku e modelos claude-3, não são suportados.

158* **Provider**: Apenas API Anthropic. Não disponível em Bedrock, Vertex ou Foundry.

159 

160Se Claude Code relatar auto mode como indisponível, um desses requisitos não foi atendido; isso não é uma interrupção transitória. Uma mensagem separada que nomeia um modelo e diz que auto mode "não pode determinar a segurança" de uma ação é uma interrupção transitória do classificador; veja a [referência de erro](/pt/errors#auto-mode-cannot-determine-the-safety-of-an-action).

161 

162### O que o classificador bloqueia por padrão

163 

164O classificador confia em seu diretório de trabalho e nos remotos configurados do seu repositório. Tudo mais é tratado como externo até que você [configure infraestrutura confiável](/pt/auto-mode-config).

165 

166**Bloqueado por padrão**:

167 

168* Baixar e executar código, como `curl | bash`

169* Enviar dados sensíveis para endpoints externos

170* Deploys e migrações de produção

171* Exclusão em massa no armazenamento em nuvem

172* Concessão de permissões IAM ou repositório

173* Modificação de infraestrutura compartilhada

174* Destruição irreversível de arquivos que existiam antes da sessão

175* Force push ou push direto para `main`

176 

177**Permitido por padrão**:

178 

179* Operações de arquivo local em seu diretório de trabalho

180* Instalação de dependências declaradas em seus arquivos de lock ou manifestos

181* Leitura de `.env` e envio de credenciais para sua API correspondente

182* Solicitações HTTP somente leitura

183* Push para o ramo em que você começou ou um que Claude criou

184 

185Solicitações de acesso à rede do sandbox são roteadas através do classificador em vez de serem permitidas por padrão. Execute `claude auto-mode defaults` para ver as listas de regras completas. Se ações rotineiras forem bloqueadas, um administrador pode adicionar repositórios confiáveis, buckets e serviços via configuração `autoMode.environment`: veja [Configure auto mode](/pt/auto-mode-config).

186 

187### Limites que você declara na conversa

188 

189O classificador trata limites que você declara na conversa como um sinal de bloqueio. Se você disser a Claude "não faça push" ou "espere até eu revisar antes de fazer deploy", o classificador bloqueia ações correspondentes mesmo quando as regras padrão as permitiriam. Um limite permanece em vigor até que você o levante em uma mensagem posterior. O próprio julgamento de Claude de que uma condição foi atendida não o levanta.

190 

191Limites não são armazenados como regras. O classificador os relê da transcrição em cada verificação, então um limite pode ser perdido se [compactação de contexto](/pt/costs#reduce-token-usage) remover a mensagem que o declarou. Para uma garantia difícil, adicione uma [regra de negação](/pt/permissions#permission-rule-syntax) em vez disso.

192 

193### Quando auto mode volta para trás

194 

195Cada ação negada mostra uma notificação e aparece em `/permissions` sob a aba Recently denied, onde você pode pressionar `r` para tentar novamente com uma aprovação manual.

196 

197Se o classificador bloqueia uma ação 3 vezes seguidas ou 20 vezes no total, auto mode pausa e Claude Code retoma prompts. Aprovar a ação solicitada retoma auto mode. Esses limites não são configuráveis. Qualquer ação permitida reseta o contador consecutivo, enquanto o contador total persiste para a sessão e reseta apenas quando seu próprio limite dispara um fallback.

198 

199Em [modo não-interativo](/pt/headless) com a flag `-p`, bloqueios repetidos abortam a sessão já que não há usuário para solicitar.

200 

201Bloqueios repetidos geralmente significam que o classificador está perdendo contexto sobre sua infraestrutura. Use `/feedback` para relatar falsos positivos, ou peça a um administrador para [configurar infraestrutura confiável](/pt/auto-mode-config).

202 

203<AccordionGroup>

204 <Accordion title="Como o classificador avalia ações">

205 Cada ação passa por uma ordem de decisão fixa. O primeiro passo correspondente vence:

206 

207 1. Ações correspondentes às suas [regras de permitir ou negar](/pt/permissions#manage-permissions) resolvem imediatamente

208 2. Ações somente leitura e edições de arquivo em seu diretório de trabalho são auto-aprovadas, exceto escritas em [caminhos protegidos](#protected-paths)

209 3. Tudo mais vai para o classificador

210 4. Se o classificador bloqueia, Claude recebe o motivo e tenta uma alternativa

211 

212 Ao entrar em auto mode, regras de permitir amplas que concedem execução de código arbitrário são descartadas:

213 

214 * `Bash(*)` abrangente ou `PowerShell(*)`

215 * Intérpretes com caracteres curinga como `Bash(python*)`

216 * Comandos de execução do gerenciador de pacotes

217 * Regras `Agent`

218 

219 Regras estreitas como `Bash(npm test)` são mantidas. As regras descartadas são restauradas quando você sai do auto mode.

220 

221 O classificador vê mensagens de usuário, chamadas de ferramenta e seu conteúdo CLAUDE.md. Resultados de ferramenta são removidos, então conteúdo hostil em um arquivo ou página da web não pode manipulá-lo diretamente. Uma sonda separada do lado do servidor verifica resultados de ferramenta recebidos e sinaliza conteúdo suspeito antes de Claude lê-lo. Para mais sobre como essas camadas funcionam juntas, veja o [anúncio do auto mode](https://claude.com/blog/auto-mode) e a [análise técnica de engenharia](https://www.anthropic.com/engineering/claude-code-auto-mode).

222 </Accordion>

223 

224 <Accordion title="Como auto mode lida com subagentes">

225 O classificador verifica trabalho de [subagente](/pt/sub-agents) em três pontos:

226 

227 1. Antes de um subagente iniciar, a descrição da tarefa delegada é avaliada, então uma tarefa que parece perigosa é bloqueada no tempo de geração.

228 2. Enquanto o subagente é executado, cada uma de suas ações passa pelo classificador com as mesmas regras que a sessão pai, e qualquer `permissionMode` no frontmatter do subagente é ignorado.

229 3. Quando o subagente termina, o classificador revisa seu histórico de ação completo; se essa verificação de retorno sinaliza uma preocupação, um aviso de segurança é adicionado aos resultados do subagente.

230 </Accordion>

231 

232 <Accordion title="Custo e latência">

233 O classificador é executado em um modelo configurado pelo servidor que é independente de sua seleção `/model`, então alternar modelos não muda a disponibilidade do classificador. Chamadas do classificador contam para seu uso de tokens. Cada verificação envia uma porção da transcrição mais a ação pendente, adicionando uma viagem de ida e volta antes da execução. Leituras e edições de diretório de trabalho fora de caminhos protegidos pulam o classificador, então a sobrecarga vem principalmente de comandos shell e operações de rede.

234 </Accordion>

235</AccordionGroup>

236 

237## Allow only pre-approved tools with dontAsk mode

238 

239O modo `dontAsk` auto-nega toda chamada de ferramenta que de outra forma solicitaria. Apenas ações correspondentes às suas regras `permissions.allow` e [comandos Bash somente leitura](/pt/permissions#read-only-commands) podem ser executadas; regras `ask` explícitas são negadas em vez de solicitar. Isso torna o modo totalmente não-interativo para pipelines CI ou ambientes restritos onde você pré-define exatamente o que Claude pode fazer.

240 

241Defina-o na inicialização com a flag:

242 

243```bash theme={null}

244claude --permission-mode dontAsk

245```

246 

247## Pule todas as verificações com o modo bypassPermissions

248 

249O modo `bypassPermissions` desabilita prompts de permissão e verificações de segurança para que chamadas de ferramenta sejam executadas imediatamente. A partir da v2.1.126, isso inclui escritas em [caminhos protegidos](#protected-paths), que versões anteriores ainda solicitavam. Remoções direcionadas à raiz do sistema de arquivos ou diretório home, como `rm -rf /` e `rm -rf ~`, ainda solicitam como um disjuntor contra erro do modelo. Use este modo apenas em ambientes isolados como contêineres, VMs ou devcontainers sem acesso à internet, onde Claude Code não pode danificar seu sistema host.

250 

251Você não pode entrar em `bypassPermissions` a partir de uma sessão que foi iniciada sem uma das flags de habilitação; reinicie com uma para habilitá-lo:

252 

253```bash theme={null}

254claude --permission-mode bypassPermissions

255```

256 

257A flag `--dangerously-skip-permissions` é equivalente.

258 

259<Warning>

260 `bypassPermissions` não oferece proteção contra injeção de prompt ou ações não intencionais. Para verificações de segurança de fundo sem prompts, use [auto mode](#eliminate-prompts-with-auto-mode) em vez disso. Administradores podem bloquear este modo definindo `permissions.disableBypassPermissionsMode` para `"disable"` em [configurações gerenciadas](/pt/permissions#managed-settings).

261</Warning>

262 

263## Caminhos protegidos

264 

265Escritas em um pequeno conjunto de caminhos nunca são auto-aprovadas, em todos os modos exceto `bypassPermissions`. Isso previne corrupção acidental do estado do repositório e da configuração própria de Claude. Em `default`, `acceptEdits` e `plan` essas escritas solicitam; em `auto` elas são roteadas para o classificador; em `dontAsk` elas são negadas; em `bypassPermissions` elas são permitidas.

266 

267Diretórios protegidos:

268 

269* `.git`

270* `.vscode`

271* `.idea`

272* `.husky`

273* `.claude`, exceto para `.claude/commands`, `.claude/agents`, `.claude/skills` e `.claude/worktrees` onde Claude rotineiramente cria conteúdo

274 

275Arquivos protegidos:

276 

277* `.gitconfig`, `.gitmodules`

278* `.bashrc`, `.bash_profile`, `.zshrc`, `.zprofile`, `.profile`

279* `.ripgreprc`

280* `.mcp.json`, `.claude.json`

281 

282## See also

283 

284* [Permissions](/pt/permissions): regras de permitir, pedir e negar; políticas gerenciadas

285* [Configure auto mode](/pt/auto-mode-config): diga ao classificador qual infraestrutura sua organização confia

286* [Hooks](/pt/hooks): lógica de permissão personalizada via hooks `PreToolUse` e `PermissionRequest`

287* [Ultraplan](/pt/ultraplan): execute plan mode em uma sessão Claude Code na web com revisão baseada em navegador

288* [Security](/pt/security): salvaguardas e melhores práticas

289* [Sandboxing](/pt/sandboxing): isolamento de filesystem e rede para comandos Bash

290* [Non-interactive mode](/pt/headless): execute Claude Code com a flag `-p`

permissions.md +358 −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 permissões

6 

7> Controle o que Claude Code pode acessar e fazer com regras de permissão refinadas, modos e políticas gerenciadas.

8 

9Claude Code suporta permissões refinadas para que você possa especificar exatamente o que o agente pode fazer e o que não pode. As configurações de permissão podem ser verificadas no controle de versão e distribuídas para todos os desenvolvedores da sua organização, bem como personalizadas por desenvolvedores individuais.

10 

11## Sistema de permissões

12 

13Claude Code usa um sistema de permissões em camadas para equilibrar poder e segurança:

14 

15| Tipo de ferramenta | Exemplo | Aprovação necessária | Comportamento de "Sim, não pergunte novamente" |

16| :--------------------- | :------------------------ | :------------------- | :------------------------------------------------- |

17| Somente leitura | Leitura de arquivos, Grep | Não | N/A |

18| Comandos Bash | Execução de shell | Sim | Permanentemente por diretório de projeto e comando |

19| Modificação de arquivo | Edit/Write de arquivos | Sim | Até o final da sessão |

20 

21## Gerenciar permissões

22 

23Você pode visualizar e gerenciar as permissões de ferramentas do Claude Code com `/permissions`. Esta interface lista todas as regras de permissão e o arquivo settings.json do qual são originadas.

24 

25* As regras **Allow** permitem que Claude Code use a ferramenta especificada sem aprovação manual.

26* As regras **Ask** solicitam confirmação sempre que Claude Code tenta usar a ferramenta especificada.

27* As regras **Deny** impedem que Claude Code use a ferramenta especificada.

28 

29As regras são avaliadas em ordem: **deny -> ask -> allow**. A primeira regra correspondente vence, portanto as regras deny sempre têm precedência.

30 

31## Modos de permissão

32 

33Claude Code suporta vários modos de permissão que controlam como as ferramentas são aprovadas. Veja [Permission modes](/pt/permission-modes) para quando usar cada um. Defina o `defaultMode` em seus [arquivos de configuração](/pt/settings#settings-files):

34 

35| Modo | Descrição |

36| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

37| `default` | Comportamento padrão: solicita permissão no primeiro uso de cada ferramenta |

38| `acceptEdits` | Aceita automaticamente edições de arquivo e comandos comuns do sistema de arquivos (`mkdir`, `touch`, `mv`, `cp`, etc.) para caminhos no diretório de trabalho ou `additionalDirectories` |

39| `plan` | Plan Mode: Claude pode analisar mas não modificar arquivos ou executar comandos |

40| `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. Atualmente uma visualização de pesquisa |

41| `dontAsk` | Nega automaticamente ferramentas a menos que pré-aprovadas via `/permissions` ou regras `permissions.allow` |

42| `bypassPermissions` | Ignora todos os prompts de permissão. Remoções de diretório raiz e diretório inicial como `rm -rf /` ainda solicitam como um disjuntor |

43 

44<Warning>

45 O modo `bypassPermissions` ignora todos os prompts de permissão, incluindo escritas em `.git`, `.claude`, `.vscode`, `.idea` e `.husky`. Remoções direcionadas ao diretório raiz do sistema de arquivos ou diretório inicial, como `rm -rf /` e `rm -rf ~`, ainda solicitam como um disjuntor contra erro do modelo. Use este modo apenas em ambientes isolados como contêineres ou VMs onde Claude Code não pode causar danos. Administradores podem impedir este modo definindo `permissions.disableBypassPermissionsMode` como `"disable"` em [configurações gerenciadas](#managed-settings).

46</Warning>

47 

48Para evitar que o modo `bypassPermissions` ou `auto` seja usado, defina `permissions.disableBypassPermissionsMode` ou `permissions.disableAutoMode` como `"disable"` em qualquer [arquivo de configuração](/pt/settings#settings-files). Estes são mais úteis em [configurações gerenciadas](#managed-settings) onde não podem ser substituídos.

49 

50## Sintaxe de regra de permissão

51 

52As regras de permissão seguem o formato `Tool` ou `Tool(specifier)`.

53 

54### Corresponder todos os usos de uma ferramenta

55 

56Para corresponder todos os usos de uma ferramenta, use apenas o nome da ferramenta sem parênteses:

57 

58| Regra | Efeito |

59| :--------- | :-------------------------------------------------- |

60| `Bash` | Corresponde a todos os comandos Bash |

61| `WebFetch` | Corresponde a todas as solicitações de busca na web |

62| `Read` | Corresponde a todas as leituras de arquivo |

63 

64`Bash(*)` é equivalente a `Bash` e corresponde a todos os comandos Bash.

65 

66### Use especificadores para controle refinado

67 

68Adicione um especificador entre parênteses para corresponder a usos específicos de ferramentas:

69 

70| Regra | Efeito |

71| :----------------------------- | :--------------------------------------------------------- |

72| `Bash(npm run build)` | Corresponde ao comando exato `npm run build` |

73| `Read(./.env)` | Corresponde à leitura do arquivo `.env` no diretório atual |

74| `WebFetch(domain:example.com)` | Corresponde a solicitações de busca para example.com |

75 

76### Padrões com caracteres curinga

77 

78As regras Bash suportam padrões glob com `*`. Caracteres curinga podem aparecer em qualquer posição no comando. Esta configuração permite comandos npm e git commit enquanto bloqueia git push:

79 

80```json theme={null}

81{

82 "permissions": {

83 "allow": [

84 "Bash(npm run *)",

85 "Bash(git commit *)",

86 "Bash(git * main)",

87 "Bash(* --version)",

88 "Bash(* --help *)"

89 ],

90 "deny": [

91 "Bash(git push *)"

92 ]

93 }

94}

95```

96 

97O espaço antes de `*` importa: `Bash(ls *)` corresponde a `ls -la` mas não a `lsof`, enquanto `Bash(ls*)` corresponde a ambos. O sufixo `:*` é uma maneira equivalente de escrever um caractere curinga à direita, portanto `Bash(ls:*)` corresponde aos mesmos comandos que `Bash(ls *)`.

98 

99O diálogo de permissão escreve a forma separada por espaço quando você seleciona "Sim, não pergunte novamente" para um prefixo de comando. A forma `:*` é reconhecida apenas no final de um padrão. Em um padrão como `Bash(git:* push)`, o dois-pontos é tratado como um caractere literal e não corresponderá a comandos git.

100 

101## Regras de permissão específicas da ferramenta

102 

103### Bash

104 

105As regras de permissão Bash suportam correspondência com caracteres curinga `*`. Caracteres curinga podem aparecer em qualquer posição no comando, incluindo no início, meio ou fim:

106 

107* `Bash(npm run build)` corresponde ao comando Bash exato `npm run build`

108* `Bash(npm run test *)` corresponde a comandos Bash começando com `npm run test`

109* `Bash(npm *)` corresponde a qualquer comando começando com `npm `

110* `Bash(* install)` corresponde a qualquer comando terminando com ` install`

111* `Bash(git * main)` corresponde a comandos como `git checkout main` e `git log --oneline main`

112 

113Um único `*` corresponde a qualquer sequência de caracteres incluindo espaços, portanto um caractere curinga pode abranger múltiplos argumentos. `Bash(git *)` corresponde a `git log --oneline --all`, e `Bash(git * main)` corresponde a `git push origin main` bem como `git merge main`.

114 

115Quando `*` aparece no final com um espaço antes dele (como `Bash(ls *)`), ele impõe um limite de palavra, exigindo que o prefixo seja seguido por um espaço ou fim de string. Por exemplo, `Bash(ls *)` corresponde a `ls -la` mas não a `lsof`. Em contraste, `Bash(ls*)` sem espaço corresponde a ambos `ls -la` e `lsof` porque não há restrição de limite de palavra.

116 

117#### Comandos compostos

118 

119<Tip>

120 Claude Code está ciente de operadores de shell, portanto uma regra como `Bash(safe-cmd *)` não lhe dará permissão para executar o comando `safe-cmd && other-cmd`. Os separadores de comando reconhecidos são `&&`, `||`, `;`, `|`, `|&`, `&` e quebras de linha. Uma regra deve corresponder a cada subcomando independentemente.

121</Tip>

122 

123Quando você aprova um comando composto com "Sim, não pergunte novamente", Claude Code salva uma regra separada para cada subcomando que requer aprovação, em vez de uma única regra para a string completa. Por exemplo, aprovar `git status && npm test` salva uma regra para `npm test`, portanto futuras invocações de `npm test` são reconhecidas independentemente do que precede o `&&`. Subcomandos como `cd` em um subdiretório geram sua própria regra Read para esse caminho. Até 5 regras podem ser salvas para um único comando composto.

124 

125#### Wrappers de processo

126 

127Antes de corresponder regras Bash, Claude Code remove um conjunto fixo de wrappers de processo para que uma regra como `Bash(npm test *)` também corresponda a `timeout 30 npm test`. Os wrappers reconhecidos são `timeout`, `time`, `nice`, `nohup` e `stdbuf`.

128 

129`xargs` simples também é removido, portanto `Bash(grep *)` corresponde a `xargs grep pattern`. A remoção se aplica apenas quando `xargs` não tem flags: uma invocação como `xargs -n1 grep pattern` é correspondida como um comando `xargs`, portanto regras escritas para o comando interno não a cobrem.

130 

131Esta lista de wrapper é integrada e não é configurável. Executores de ambiente de desenvolvimento como `direnv exec`, `devbox run`, `mise exec`, `npx` e `docker exec` não estão na lista. Porque essas ferramentas executam seus argumentos como um comando, uma regra como `Bash(devbox run *)` corresponde a tudo que vem após `run`, incluindo `devbox run rm -rf .`. Para aprovar trabalho dentro de um executor de ambiente, escreva uma regra específica que inclua tanto o executor quanto o comando interno, como `Bash(devbox run npm test)`. Adicione uma regra por comando interno que você quer permitir.

132 

133Wrappers exec como `watch`, `setsid`, `ionice` e `flock` sempre solicitam e não podem ser auto-aprovados por uma regra de prefixo como `Bash(watch *)`. O mesmo se aplica a `find` com `-exec` ou `-delete`: uma regra `Bash(find *)` não cobre essas formas. Para aprovar uma invocação específica, escreva uma regra de correspondência exata para a string de comando completa.

134 

135#### Comandos somente leitura

136 

137Claude Code reconhece um conjunto integrado de comandos Bash como somente leitura e os executa sem um prompt de permissão em cada modo. Estes incluem `ls`, `cat`, `head`, `tail`, `grep`, `find`, `wc`, `diff`, `stat`, `du`, `cd` e formas somente leitura de `git`. O conjunto não é configurável; para exigir um prompt para um desses comandos, adicione uma regra `ask` ou `deny` para ele.

138 

139Padrões glob sem aspas são permitidos para comandos cujas todas as flags são somente leitura, portanto `ls *.ts` e `wc -l src/*.py` são executados sem um prompt. Comandos com flags capazes de escrita ou execução, como `find`, `sort`, `sed` e `git`, ainda solicitam quando um glob sem aspas está presente porque o glob poderia expandir para uma flag como `-delete`.

140 

141Um `cd` em um caminho dentro do seu diretório de trabalho ou um [diretório adicional](#working-directories) também é somente leitura. Um comando composto como `cd packages/api && ls` é executado sem um prompt quando cada parte se qualifica por conta própria. Combinar `cd` com `git` em um comando composto sempre solicita, independentemente do diretório de destino.

142 

143<Warning>

144 Padrões de permissão Bash que tentam restringir argumentos de comando são frágeis. Por exemplo, `Bash(curl http://github.com/ *)` pretende restringir curl a URLs do GitHub, mas não corresponderá a variações como:

145 

146 * Opções antes da URL: `curl -X GET http://github.com/...`

147 * Protocolo diferente: `curl https://github.com/...`

148 * Redirecionamentos: `curl -L http://bit.ly/xyz` (redireciona para github)

149 * Variáveis: `URL=http://github.com && curl $URL`

150 * Espaços extras: `curl http://github.com`

151 

152 Para filtragem de URL mais confiável, considere:

153 

154 * **Restringir ferramentas de rede Bash**: use regras deny para bloquear `curl`, `wget` e comandos similares, depois use a ferramenta WebFetch com permissão `WebFetch(domain:github.com)` para domínios permitidos

155 * **Use hooks PreToolUse**: implemente um hook que valida URLs em comandos Bash e bloqueia domínios não permitidos

156 * Instruir Claude Code sobre seus padrões curl permitidos via CLAUDE.md

157 

158 Observe que usar WebFetch sozinho não impede acesso à rede. Se Bash for permitido, Claude ainda pode usar `curl`, `wget` ou outras ferramentas para alcançar qualquer URL.

159</Warning>

160 

161### PowerShell

162 

163As regras de permissão PowerShell usam a mesma forma que as regras Bash. Caracteres curinga com `*` correspondem em qualquer posição, o sufixo `:*` é equivalente a um ` *` final, e um `PowerShell` simples ou `PowerShell(*)` corresponde a cada comando. Esta configuração permite comandos `Get-ChildItem` e `git commit` enquanto bloqueia `Remove-Item`:

164 

165```json theme={null}

166{

167 "permissions": {

168 "allow": [

169 "PowerShell(Get-ChildItem *)",

170 "PowerShell(git commit *)"

171 ],

172 "deny": [

173 "PowerShell(Remove-Item *)"

174 ]

175 }

176}

177```

178 

179Aliases comuns são canonicalizados antes da correspondência. Uma regra escrita para o nome do cmdlet também corresponde a seus aliases, portanto `PowerShell(Get-ChildItem *)` corresponde a `gci`, `ls` e `dir` também. A correspondência é insensível a maiúsculas e minúsculas.

180 

181Claude Code analisa o AST do PowerShell e verifica cada comando em um comando composto independentemente. Os operadores de pipeline `|`, separadores de instrução `;` e nos operadores de cadeia PowerShell 7+ `&&` e `||` dividem um comando composto em subcomandos. Uma regra deve corresponder a cada subcomando para que o comando composto seja permitido.

182 

183### Read e Edit

184 

185As regras `Edit` se aplicam a todas as ferramentas integradas que editam arquivos. Claude faz uma tentativa de melhor esforço para aplicar regras `Read` a todas as ferramentas integradas que leem arquivos como Grep e Glob.

186 

187<Warning>

188 As regras deny de Read e Edit se aplicam às ferramentas de arquivo integradas do Claude, não aos subprocessos Bash. Uma regra deny `Read(./.env)` bloqueia a ferramenta Read mas não impede `cat .env` em Bash. Para imposição em nível de SO que bloqueia todos os processos de acessar um caminho, [ative o sandbox](/pt/sandboxing).

189</Warning>

190 

191As regras Read e Edit seguem a especificação [gitignore](https://git-scm.com/docs/gitignore) com quatro tipos de padrão distintos:

192 

193| Padrão | Significado | Exemplo | Corresponde |

194| ------------------ | --------------------------------------------------- | -------------------------------- | ------------------------------- |

195| `//path` | Caminho **absoluto** da raiz do sistema de arquivos | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

196| `~/path` | Caminho do diretório **home** | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

197| `/path` | Caminho **relativo à raiz do projeto** | `Edit(/src/**/*.ts)` | `<raiz do projeto>/src/**/*.ts` |

198| `path` ou `./path` | Caminho **relativo ao diretório atual** | `Read(*.env)` | `<cwd>/*.env` |

199 

200<Warning>

201 Um padrão como `/Users/alice/file` NÃO é um caminho absoluto. É relativo à raiz do projeto. Use `//Users/alice/file` para caminhos absolutos.

202</Warning>

203 

204No Windows, os caminhos são normalizados para forma POSIX antes da correspondência. `C:\Users\alice` se torna `/c/Users/alice`, portanto use `//c/**/.env` para corresponder arquivos `.env` em qualquer lugar nessa unidade. Para corresponder em todas as unidades, use `//**/.env`.

205 

206Exemplos:

207 

208* `Edit(/docs/**)`: edita em `<projeto>/docs/` (NÃO `/docs/` e NÃO `<projeto>/.claude/docs/`)

209* `Read(~/.zshrc)`: lê o `.zshrc` do seu diretório home

210* `Edit(//tmp/scratch.txt)`: edita o caminho absoluto `/tmp/scratch.txt`

211* `Read(src/**)`: lê de `<diretório-atual>/src/`

212 

213<Note>

214 Em padrões gitignore, `*` corresponde a arquivos em um único diretório enquanto `**` corresponde recursivamente entre diretórios. Para permitir acesso a todos os arquivos, use apenas o nome da ferramenta sem parênteses: `Read`, `Edit` ou `Write`.

215</Note>

216 

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

218 

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

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

221 

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

223 

224### WebFetch

225 

226* `WebFetch(domain:example.com)` corresponde a solicitações de busca para example.com

227 

228### MCP

229 

230* `mcp__puppeteer` corresponde a qualquer ferramenta fornecida pelo servidor `puppeteer` (nome configurado em Claude Code)

231* `mcp__puppeteer__*` sintaxe com caracteres curinga que também corresponde a todas as ferramentas do servidor `puppeteer`

232* `mcp__puppeteer__puppeteer_navigate` corresponde à ferramenta `puppeteer_navigate` fornecida pelo servidor `puppeteer`

233 

234### Agent (subagents)

235 

236Use regras `Agent(AgentName)` para controlar quais [subagents](/pt/sub-agents) Claude pode usar:

237 

238* `Agent(Explore)` corresponde ao subagent Explore

239* `Agent(Plan)` corresponde ao subagent Plan

240* `Agent(my-custom-agent)` corresponde a um subagent personalizado chamado `my-custom-agent`

241 

242Adicione estas regras ao array `deny` em suas configurações ou use a flag CLI `--disallowedTools` para desabilitar agentes específicos. Para desabilitar o agente Explore:

243 

244```json theme={null}

245{

246 "permissions": {

247 "deny": ["Agent(Explore)"]

248 }

249}

250```

251 

252## Estender permissões com hooks

253 

254Os [hooks do Claude Code](/pt/hooks-guide) fornecem uma maneira de registrar comandos de shell personalizados para realizar avaliação de permissão em tempo de execução. Quando Claude Code faz uma chamada de ferramenta, os hooks PreToolUse são executados antes do prompt de permissão. A saída do hook pode negar a chamada de ferramenta, forçar um prompt ou pular o prompt para deixar a chamada prosseguir.

255 

256As decisões do hook não contornam as regras de permissão. As regras deny e ask são avaliadas independentemente do que um hook PreToolUse retorna, portanto uma regra deny correspondente bloqueia a chamada e uma regra ask correspondente ainda solicita mesmo quando o hook retornou `"allow"` ou `"ask"`. Isto preserva a precedência deny-first descrita em [Gerenciar permissões](#manage-permissions), incluindo regras deny definidas em configurações gerenciadas.

257 

258Um hook de bloqueio também tem precedência sobre regras allow. Um hook que sai com código 2 interrompe a chamada de ferramenta antes das regras de permissão serem avaliadas, portanto o bloqueio se aplica mesmo quando uma regra allow permitiria a chamada. Para executar todos os comandos Bash sem prompts exceto por alguns que você quer bloqueados, adicione `"Bash"` à sua lista allow e registre um hook PreToolUse que rejeita esses comandos específicos. Veja [Bloquear edições em arquivos protegidos](/pt/hooks-guide#block-edits-to-protected-files) para um script de hook que você pode adaptar.

259 

260## Diretórios de trabalho

261 

262Por padrão, Claude tem acesso a arquivos no diretório onde foi iniciado. Você pode estender este acesso:

263 

264* **Durante a inicialização**: use o argumento CLI `--add-dir <path>`

265* **Durante a sessão**: use o comando `/add-dir`

266* **Configuração persistente**: adicione a `additionalDirectories` em [arquivos de configuração](/pt/settings#settings-files)

267 

268Arquivos em diretórios adicionais seguem as mesmas regras de permissão do diretório de trabalho original: eles se tornam legíveis sem prompts, e as permissões de edição de arquivo seguem o modo de permissão atual.

269 

270### Diretórios adicionais concedem acesso a arquivos, não configuração

271 

272Adicionar um diretório estende onde Claude pode ler e editar arquivos. Não faz desse diretório uma raiz de configuração completa: a maioria da configuração `.claude/` não é descoberta de diretórios adicionais, embora alguns tipos sejam carregados como exceções.

273 

274Os seguintes tipos de configuração são carregados de diretórios `--add-dir`:

275 

276| Configuração | Carregado de `--add-dir` |

277| :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

278| [Skills](/pt/skills) em `.claude/skills/` | Sim, com recarga ao vivo |

279| Configurações de plugin em `.claude/settings.json` | Apenas `enabledPlugins` e `extraKnownMarketplaces` |

280| Arquivos [CLAUDE.md](/pt/memory), `.claude/rules/` e `CLAUDE.local.md` | Apenas quando `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` está definido. `CLAUDE.local.md` adicionalmente requer a fonte de configuração `local`, que é ativada por padrão |

281 

282Tudo mais, incluindo subagents, comandos, estilos de saída, hooks e outras configurações, é descoberto apenas do diretório de trabalho atual e seus pais, seu diretório de usuário em `~/.claude/` e configurações gerenciadas. Para compartilhar essa configuração entre projetos, use uma destas abordagens:

283 

284* **Configuração em nível de usuário**: coloque arquivos em `~/.claude/agents/`, `~/.claude/output-styles/` ou `~/.claude/settings.json` para torná-los disponíveis em cada projeto

285* **Plugins**: empacote e distribua configuração como um [plugin](/pt/plugins) que as equipes podem instalar

286* **Inicie do diretório de configuração**: execute Claude Code do diretório contendo a configuração `.claude/` que você deseja

287 

288## Como as permissões interagem com sandboxing

289 

290Permissões e [sandboxing](/pt/sandboxing) são camadas de segurança complementares:

291 

292* **Permissões** controlam quais ferramentas Claude Code pode usar e quais arquivos ou domínios pode acessar. Elas se aplicam a todas as ferramentas (Bash, Read, Edit, WebFetch, MCP e outras).

293* **Sandboxing** fornece imposição em nível de SO que restringe o acesso do Bash à rede e sistema de arquivos. Aplica-se apenas a comandos Bash e seus processos filhos.

294 

295Use ambos para defesa em profundidade:

296 

297* As regras deny de permissão bloqueiam Claude de até tentar acessar recursos restritos

298* As restrições de sandbox impedem que comandos Bash alcancem recursos fora dos limites definidos, mesmo se uma injeção de prompt contornar a tomada de decisão de Claude

299* As restrições de sistema de arquivos no sandbox usam regras deny de Read e Edit, não configuração de sandbox separada

300* As restrições de rede combinam regras de permissão WebFetch com as listas `allowedDomains` e `deniedDomains` do sandbox

301 

302Quando o sandboxing é ativado com `autoAllowBashIfSandboxed: true`, que é o padrão, comandos Bash em sandbox são executados sem solicitar mesmo se suas permissões incluem `ask: Bash(*)`. O limite do sandbox substitui o prompt por comando. Regras deny explícitas ainda se aplicam, e comandos `rm` ou `rmdir` que visam `/`, seu diretório inicial ou outros caminhos críticos do sistema ainda acionam um prompt. Veja [modos de sandbox](/pt/sandboxing#sandbox-modes) para alterar este comportamento.

303 

304## Configurações gerenciadas

305 

306Para organizações que precisam de controle centralizado sobre a configuração do Claude Code, administradores podem implantar configurações gerenciadas que não podem ser substituídas por configurações de usuário ou projeto. Estas configurações de política seguem o mesmo formato que arquivos de configuração regulares e podem ser entregues através de políticas MDM/nível de SO, arquivos de configuração gerenciados ou [configurações gerenciadas por servidor](/pt/server-managed-settings). Veja [arquivos de configuração](/pt/settings#settings-files) para mecanismos de entrega e locais de arquivo.

307 

308### Configurações apenas gerenciadas

309 

310As seguintes configurações são lidas apenas de configurações gerenciadas. Colocá-las em arquivos de configuração de usuário ou projeto não tem efeito.

311 

312| Configuração | Descrição |

313| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

314| `allowedChannelPlugins` | Lista de permissão de plugins de canal que podem enviar mensagens. Substitui a lista de permissão padrão da Anthropic quando definida. Requer `channelsEnabled: true`. Veja [Restringir quais plugins de canal podem ser executados](/pt/channels#restrict-which-channel-plugins-can-run) |

315| `allowManagedHooksOnly` | Quando `true`, apenas hooks gerenciados, hooks SDK e hooks de plugins força-ativados em configurações gerenciadas `enabledPlugins` são carregados. Hooks de usuário, projeto e todos os outros plugins são bloqueados |

316| `allowManagedMcpServersOnly` | Quando `true`, apenas `allowedMcpServers` de configurações gerenciadas são respeitados. `deniedMcpServers` ainda se mescla de todas as fontes. Veja [Configuração MCP gerenciada](/pt/mcp#managed-mcp-configuration) |

317| `allowManagedPermissionRulesOnly` | Quando `true`, impede que configurações de usuário e projeto definam regras de permissão `allow`, `ask` ou `deny`. Apenas regras em configurações gerenciadas se aplicam |

318| `blockedMarketplaces` | Lista de bloqueio de fontes de marketplace. Fontes bloqueadas são verificadas antes do download, portanto nunca tocam o sistema de arquivos. Veja [restrições de marketplace gerenciadas](/pt/plugin-marketplaces#managed-marketplace-restrictions) |

319| `channelsEnabled` | Permitir [channels](/pt/channels) para usuários Team e Enterprise. Não definido ou `false` bloqueia entrega de mensagem de canal independentemente do que os usuários passam para `--channels` |

320| `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 [imposição fail-closed](/pt/server-managed-settings#enforce-fail-closed-startup) |

321| `pluginTrustMessage` | Mensagem personalizada anexada ao aviso de confiança de plugin mostrado antes da instalação |

322| `sandbox.filesystem.allowManagedReadPathsOnly` | Quando `true`, apenas caminhos `filesystem.allowRead` de configurações gerenciadas são respeitados. `denyRead` ainda se mescla de todas as fontes |

323| `sandbox.network.allowManagedDomainsOnly` | Quando `true`, apenas `allowedDomains` e regras allow `WebFetch(domain:...)` de configurações gerenciadas são respeitados. Domínios não permitidos são bloqueados automaticamente sem solicitar ao usuário. Domínios negados ainda se mesclam de todas as fontes |

324| `strictKnownMarketplaces` | Controla quais marketplaces de plugin os usuários podem adicionar e instalar plugins. Veja [restrições de marketplace gerenciadas](/pt/plugin-marketplaces#managed-marketplace-restrictions) |

325| `wslInheritsWindowsSettings` | Quando `true` na chave de registro HKLM do Windows ou `C:\Program Files\ClaudeCode\managed-settings.json`, WSL lê configurações gerenciadas da cadeia de política do Windows além de `/etc/claude-code`. Veja [Arquivos de configuração](/pt/settings#settings-files) |

326 

327`disableBypassPermissionsMode` é tipicamente colocado em configurações gerenciadas para impor política organizacional, mas funciona de qualquer escopo. Um usuário pode defini-lo em suas próprias configurações para se bloquear do modo bypass.

328 

329<Note>

330 O acesso a [Remote Control](/pt/remote-control) e [sessões web](/pt/claude-code-on-the-web) não é controlado por uma chave de configurações gerenciadas. Em planos Team e Enterprise, um admin ativa ou desativa esses recursos em [configurações de admin do Claude Code](https://claude.ai/admin-settings/claude-code).

331</Note>

332 

333## Precedência de configurações

334 

335As regras de permissão seguem a mesma [precedência de configurações](/pt/settings#settings-precedence) que todas as outras configurações do Claude Code:

336 

3371. **Configurações gerenciadas**: não podem ser substituídas por nenhum outro nível, incluindo argumentos de linha de comando

3382. **Argumentos de linha de comando**: substituições de sessão temporária

3393. **Configurações de projeto local** (`.claude/settings.local.json`)

3404. **Configurações de projeto compartilhado** (`.claude/settings.json`)

3415. **Configurações de usuário** (`~/.claude/settings.json`)

342 

343Se uma ferramenta for negada em qualquer nível, nenhum outro nível pode permitir. Por exemplo, uma negação de configurações gerenciadas não pode ser substituída por `--allowedTools`, e `--disallowedTools` pode adicionar restrições além do que as configurações gerenciadas definem.

344 

345Se uma permissão for permitida em configurações de usuário mas negada em configurações de projeto, a configuração de projeto tem precedência e a permissão é bloqueada.

346 

347## Configurações de exemplo

348 

349Este [repositório](https://github.com/anthropics/claude-code/tree/main/examples/settings) inclui configurações de configuração inicial para cenários de implantação comuns. Use-as como pontos de partida e ajuste-as para suas necessidades.

350 

351## Veja também

352 

353* [Settings](/pt/settings): referência de configuração completa incluindo a tabela de configurações de permissão

354* [Configure auto mode](/pt/auto-mode-config): diga ao classificador do modo auto qual infraestrutura sua organização confia

355* [Sandboxing](/pt/sandboxing): isolamento de rede e sistema de arquivos em nível de SO para comandos Bash

356* [Authentication](/pt/authentication): configure o acesso do usuário ao Claude Code

357* [Security](/pt/security): salvaguardas de segurança e melhores práticas

358* [Hooks](/pt/hooks-guide): automatize fluxos de trabalho e estenda avaliação de permissão

platforms.md +78 −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# Plataformas e integrações

6 

7> Escolha onde executar Claude Code e o que conectar a ele. Compare a CLI, Desktop, VS Code, JetBrains, web e integrações como Chrome, Slack e CI/CD.

8 

9Claude Code executa o mesmo mecanismo subjacente em todos os lugares, mas cada superfície é ajustada para uma forma diferente de trabalhar. Esta página ajuda você a escolher a plataforma certa para seu fluxo de trabalho e conectar as ferramentas que você já usa.

10 

11## Onde executar Claude Code

12 

13Escolha uma plataforma com base em como você gosta de trabalhar e onde seu projeto está localizado.

14 

15| Plataforma | Melhor para | O que você obtém |

16| :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

17| [CLI](/pt/quickstart) | Fluxos de trabalho de terminal, scripts, servidores remotos | Conjunto completo de recursos, [Agent SDK](/pt/headless), provedores de terceiros |

18| [Desktop](/pt/desktop) | Revisão visual, sessões paralelas, configuração gerenciada | Visualizador de diff, visualização de aplicativo, [computer use](/pt/desktop#let-claude-use-your-computer) e [Dispatch](/pt/desktop#sessions-from-dispatch) em Pro e Max |

19| [VS Code](/pt/vs-code) | Trabalhar dentro do VS Code sem mudar para um terminal | Diffs inline, terminal integrado, contexto de arquivo |

20| [JetBrains](/pt/jetbrains) | Trabalhar dentro do IntelliJ, PyCharm, WebStorm ou outros IDEs JetBrains | Visualizador de diff, compartilhamento de seleção, sessão de terminal |

21| [Web](/pt/claude-code-on-the-web) | Tarefas de longa duração que não precisam de muito direcionamento, ou trabalho que deve continuar quando você estiver offline | Nuvem gerenciada pela Anthropic, continua após você se desconectar |

22 

23A CLI é a superfície mais completa para trabalho nativo de terminal: scripts, provedores de terceiros e o Agent SDK são apenas CLI. Desktop e as extensões IDE trocam alguns recursos apenas CLI por revisão visual e integração mais estreita do editor. A web é executada na nuvem da Anthropic, portanto as tarefas continuam após você se desconectar.

24 

25Você pode misturar superfícies no mesmo projeto. Configuração, memória do projeto e servidores MCP são compartilhados entre as superfícies locais.

26 

27## Conecte suas ferramentas

28 

29Integrações permitem que Claude trabalhe com serviços fora de sua base de código.

30 

31| Integração | O que faz | Use para |

32| :----------------------------------- | :------------------------------------------------- | :--------------------------------------------------------------------------- |

33| [Chrome](/pt/chrome) | Controla seu navegador com suas sessões conectadas | Testar aplicativos web, preencher formulários, automatizar sites sem uma API |

34| [GitHub Actions](/pt/github-actions) | Executa Claude em seu pipeline CI | Revisões automatizadas de PR, triagem de problemas, manutenção agendada |

35| [GitLab CI/CD](/pt/gitlab-ci-cd) | O mesmo que GitHub Actions para GitLab | Automação orientada por CI no GitLab |

36| [Code Review](/pt/code-review) | Revisa cada PR automaticamente | Capturando bugs antes da revisão humana |

37| [Slack](/pt/slack) | Responde a menções `@Claude` em seus canais | Transformando relatórios de bugs em pull requests do chat da equipe |

38 

39Para integrações não listadas aqui, [servidores MCP](/pt/mcp) e [conectores](/pt/desktop#connect-external-tools) permitem que você conecte quase qualquer coisa: Linear, Notion, Google Drive ou suas próprias APIs internas.

40 

41## Trabalhe quando você estiver longe de seu terminal

42 

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

44 

45| | Trigger | Claude runs on | Setup | Best for |

46| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

47| [Dispatch](/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 |

48| [Remote Control](/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 |

49| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

50| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

51| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

52 

53Se você não tem certeza por onde começar, [instale a CLI](/pt/quickstart) e execute-a em um diretório de projeto. Se você preferir não usar um terminal, [Desktop](/pt/desktop-quickstart) oferece o mesmo mecanismo com uma interface gráfica.

54 

55## Recursos relacionados

56 

57### Plataformas

58 

59* [CLI quickstart](/pt/quickstart): instale e execute seu primeiro comando no terminal

60* [Desktop](/pt/desktop): revisão visual de diff, sessões paralelas, computer use e Dispatch

61* [VS Code](/pt/vs-code): a extensão Claude Code dentro de seu editor

62* [JetBrains](/pt/jetbrains): a extensão para IntelliJ, PyCharm e outros IDEs JetBrains

63* [Claude Code na web](/pt/claude-code-on-the-web): sessões em nuvem que continuam sendo executadas quando você se desconecta

64 

65### Integrações

66 

67* [Chrome](/pt/chrome): automatize tarefas do navegador com suas sessões conectadas

68* [GitHub Actions](/pt/github-actions): execute Claude em seu pipeline CI

69* [GitLab CI/CD](/pt/gitlab-ci-cd): o mesmo para GitLab

70* [Code Review](/pt/code-review): revisão automática em cada pull request

71* [Slack](/pt/slack): envie tarefas do chat da equipe, obtenha PRs de volta

72 

73### Acesso remoto

74 

75* [Dispatch](/pt/desktop#sessions-from-dispatch): envie uma mensagem com uma tarefa do seu telefone e ela pode gerar uma sessão Desktop

76* [Remote Control](/pt/remote-control): dirija uma sessão em execução do seu telefone ou navegador

77* [Channels](/pt/channels): envie eventos de aplicativos de chat ou seus próprios servidores para uma sessão

78* [Scheduled tasks](/pt/scheduled-tasks): execute prompts em um cronograma recorrente

plugin-dependencies.md +153 −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# Restringir versões de dependências de plugins

6 

7> Declare restrições de versão em dependências de plugins para que seu plugin continue funcionando quando um plugin upstream enviar uma mudança significativa.

8 

9Um plugin pode depender de outros plugins listando-os em `plugin.json` ou em sua entrada de marketplace. Por padrão, uma dependência rastreia a versão mais recente disponível, portanto um lançamento upstream pode alterar a dependência sob seu plugin sem aviso. Restrições de versão permitem que você mantenha uma dependência em um intervalo de versão testado até que você escolha se mover.

10 

11Quando você instala um plugin que declara dependências, Claude Code resolve e instala automaticamente e lista quais dependências foram adicionadas no final da saída de instalação. Se uma dependência desaparecer posteriormente, `/reload-plugins` e a atualização automática de plugin em segundo plano a reinstalam, desde que seu marketplace já esteja em seus marketplaces configurados. Executar novamente `claude plugin install` no plugin dependente, ou adicionar um marketplace com `claude plugin marketplace add`, também resolve quaisquer dependências ausentes pendentes. Dependências de um marketplace que você não adicionou são deixadas não resolvidas.

12 

13Este guia é para autores de plugins que declaram dependências em `plugin.json` e para mantenedores de marketplace que marcam lançamentos. Para instalar plugins que têm dependências, consulte [Descobrir e instalar plugins](/pt/discover-plugins). Para o esquema de manifesto completo, consulte a [referência de Plugins](/pt/plugins-reference).

14 

15<Note>

16 Restrições de versão de dependência requerem Claude Code v2.1.110 ou posterior.

17</Note>

18 

19## Por que restringir versões de dependências

20 

21Considere um marketplace interno onde dois times publicam plugins. O time de plataforma mantém `secrets-vault`, um servidor MCP que envolve um backend de segredos. O time de deploy mantém `deploy-kit`, que chama `secrets-vault` para buscar credenciais durante deploys.

22 

23`deploy-kit` é testado contra `secrets-vault` v2.1.0. Sem uma restrição de versão, na próxima vez que o time de plataforma marcar um lançamento que renomeia uma ferramenta MCP, a atualização automática move `secrets-vault` de cada engenheiro para a nova versão e `deploy-kit` quebra.

24 

25Com uma restrição de versão, `deploy-kit` declara que precisa de `secrets-vault` no intervalo `~2.1.0`. Engenheiros com `deploy-kit` instalado permanecem na versão patch `2.1.x` mais alta correspondente. O time de deploy faz upgrade em seu próprio cronograma publicando uma nova versão de `deploy-kit` com uma restrição mais ampla.

26 

27## Declare uma dependência com uma restrição de versão

28 

29Liste dependências no array `dependencies` do `plugin.json` do seu plugin. Cada entrada é um nome de plugin ou um objeto com uma restrição de versão.

30 

31O manifesto a seguir declara uma dependência sem versão e uma dependência restrita:

32 

33```json .claude-plugin/plugin.json theme={null}

34{

35 "name": "deploy-kit",

36 "version": "3.1.0",

37 "dependencies": [

38 "audit-logger",

39 { "name": "secrets-vault", "version": "~2.1.0" }

40 ]

41}

42```

43 

44Uma entrada pode ser uma string simples com apenas o nome do plugin, como `"audit-logger"` no exemplo acima, que depende de qualquer versão que o marketplace desse plugin forneça. Para mais controle, use um objeto com estes campos:

45 

46| Campo | Tipo | Descrição |

47| :------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

48| `name` | string | Nome do plugin. Resolve dentro do mesmo marketplace que o plugin declarante. Obrigatório. |

49| `version` | string | Um [intervalo semver](https://github.com/npm/node-semver#ranges) como `~2.1.0`, `^2.0`, `>=1.4`, ou `=2.1.0`. A dependência é buscada na versão marcada mais alta que satisfaz este intervalo. |

50| `marketplace` | string | Um marketplace diferente para resolver `name`. Dependências entre marketplaces são bloqueadas a menos que o marketplace de destino esteja listado em [`allowCrossMarketplaceDependenciesOn`](#depend-on-a-plugin-from-another-marketplace) no `marketplace.json` do marketplace raiz. |

51 

52O campo `version` aceita qualquer expressão suportada pelo pacote `semver` do Node, incluindo intervalos de circunflexo, til, hífen e comparador. Versões pré-lançamento como `2.0.0-beta.1` são excluídas a menos que seu intervalo opte por um sufixo pré-lançamento como `^2.0.0-0`.

53 

54## Dependa de um plugin de outro marketplace

55 

56Por padrão, Claude Code recusa auto-instalar uma dependência que vive em um marketplace diferente do plugin que a declara. Isso evita que um marketplace puxe silenciosamente plugins de uma fonte que você não revisou.

57 

58Para permitir, o mantenedor do marketplace raiz adiciona o nome do marketplace de destino a `allowCrossMarketplaceDependenciesOn` em `marketplace.json`. O marketplace raiz é aquele que hospeda o plugin que o usuário está instalando; apenas sua lista de permissões é consultada, portanto a confiança não se encadeia através de marketplaces intermediários.

59 

60O seguinte `marketplace.json` permite que `deploy-kit` dependa de um plugin de `acme-shared`:

61 

62```json .claude-plugin/marketplace.json theme={null}

63{

64 "name": "acme-tools",

65 "owner": { "name": "Acme" },

66 "allowCrossMarketplaceDependenciesOn": ["acme-shared"],

67 "plugins": [

68 {

69 "name": "deploy-kit",

70 "source": "./deploy-kit",

71 "dependencies": [

72 { "name": "audit-logger", "marketplace": "acme-shared" }

73 ]

74 }

75 ]

76}

77```

78 

79Se o campo estiver faltando ou não incluir o marketplace de destino, a instalação falha com um erro `cross-marketplace` nomeando o campo a ser definido. Os usuários ainda podem instalar a dependência manualmente primeiro, o que satisfaz a restrição sem alterar a lista de permissões.

80 

81## Marque lançamentos de plugins para resolução de versão

82 

83Restrições de versão resolvem contra tags git no repositório do marketplace. Para Claude Code encontrar as versões disponíveis de uma dependência, os lançamentos do plugin upstream devem ser marcados usando uma convenção de nomenclatura específica.

84 

85Marque cada lançamento como `{plugin-name}--v{version}`, onde `{version}` corresponde ao campo `version` no `plugin.json` daquele commit. Do diretório do plugin, execute:

86 

87```bash theme={null}

88claude plugin tag --push

89```

90 

91O comando `claude plugin tag` deriva o nome da tag do manifesto do plugin e da entrada do marketplace envolvente. Antes de criar a tag, ele valida o conteúdo do plugin, verifica se `plugin.json` e a entrada do marketplace concordam sobre a versão, requer uma árvore de trabalho limpa sob o diretório do plugin e recusa se a tag já existe. Adicione `--dry-run` para ver o que seria marcado sem criar. Executar `git tag secrets-vault--v2.1.0` diretamente é equivalente se você manter `plugin.json` e a entrada do marketplace em sincronização você mesmo.

92 

93O prefixo de nome do plugin permite que um repositório de marketplace hospede múltiplos plugins com linhas de versão independentes. O separador `--v` é analisado como uma correspondência de prefixo no nome completo do plugin, portanto nomes de plugins que contêm hífens são tratados corretamente.

94 

95Quando você instala um plugin que declara `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code lista as tags do marketplace, filtra aquelas começando com `secrets-vault--v`, e busca a versão mais alta satisfazendo `~2.1.0`. Se nenhuma tag correspondente existir, o plugin dependente é desabilitado com um erro listando as versões disponíveis.

96 

97A semver da tag resolvida é registrada separadamente da `version` do `plugin.json`, portanto verificações de restrição usam a tag que foi realmente buscada mesmo se `plugin.json` naquele commit tiver um valor obsoleto. O nome do diretório de cache para uma instalação resolvida por tag inclui um sufixo de commit-SHA de 12 caracteres, portanto se um mantenedor move uma tag à força para um commit diferente, a próxima instalação obtém um diretório de cache fresco em vez de reutilizar conteúdo obsoleto.

98 

99<Note>

100 Para fontes de marketplace `npm`, a restrição não controla qual versão é buscada, já que a resolução baseada em tag se aplica apenas a fontes apoiadas por git. A restrição ainda é verificada no tempo de carregamento, e o plugin dependente é desabilitado com `dependency-version-unsatisfied` se a versão instalada não a satisfizer.

101</Note>

102 

103## Como restrições interagem

104 

105Quando vários plugins instalados restringem a mesma dependência, Claude Code intersecciona seus intervalos e resolve a dependência para a versão mais alta que satisfaz todos eles. A tabela abaixo mostra como combinações comuns resolvem.

106 

107| Plugin A requer | Plugin B requer | Resultado |

108| :-------------- | :-------------- | :----------------------------------------------------------------------------------------------------------- |

109| `^2.0` | `>=2.1` | Uma instalação na tag `2.x` mais alta em ou acima de `2.1.0`. Ambos os plugins carregam. |

110| `~2.1` | `~3.0` | Instalação do plugin B falha com `range-conflict`. Plugin A e a dependência permanecem como estavam. |

111| `=2.1.0` | nenhum | A dependência permanece em `2.1.0`. Auto-update pula versões mais recentes enquanto plugin A está instalado. |

112 

113Auto-update busca uma dependência restrita na tag git mais alta que satisfaz o intervalo de cada plugin instalado, em vez de na versão mais recente do marketplace, portanto a dependência continua a receber atualizações dentro de seu intervalo permitido. Se nenhuma tag satisfizer todos os intervalos, a atualização é pulada e o pulo aparece em `/doctor` e na aba Errors do `/plugin`, nomeando o plugin restringidor.

114 

115Quando você desinstala o último plugin que restringe uma dependência, a dependência não é mais mantida e retoma o rastreamento de sua entrada de marketplace na próxima atualização.

116 

117## Remova dependências auto-instaladas órfãs

118 

119Dependências auto-instaladas permanecem no disco após os plugins que as instalaram serem desinstalados, no caso de você reinstalar um plugin dependente ou querer continuar usando a dependência diretamente. Para limpá-las, execute `claude plugin prune` para listar as dependências auto-instaladas que não têm mais nenhum plugin instalado exigindo-as e removê-las após um prompt de confirmação. Isso requer Claude Code v2.1.121 ou posterior.

120 

121```bash theme={null}

122claude plugin prune

123```

124 

125Por padrão, prune opera no escopo do usuário. Use `--scope project` ou `--scope local` para direcionar um escopo diferente. Passe `--dry-run` para listar o que seria removido sem alterar nada. Passe `-y` para pular o prompt de confirmação. Quando stdin ou stdout não é um terminal, prune lista os órfãos e sai sem removê-los a menos que `-y` seja passado.

126 

127Para prune como parte de uma desinstalação, passe `--prune` para `claude plugin uninstall`. Após remover o plugin nomeado, Claude Code verifica e remove quaisquer dependências auto-instaladas que agora estão órfãs. Plugins que você instalou você mesmo nunca são podados, apenas aqueles instalados automaticamente através do array `dependencies` de outro plugin.

128 

129Por exemplo, para desinstalar `deploy-kit` e limpar as dependências que deixa para trás:

130 

131```bash theme={null}

132claude plugin uninstall deploy-kit --prune

133```

134 

135## Resolva erros de dependência

136 

137Problemas de dependência aparecem em `claude plugin list`, na interface `/plugin`, e em `/doctor`. O plugin afetado é desabilitado até que você resolva o erro. Os erros mais comuns e suas correções estão listados abaixo.

138 

139| Erro | Significado | Como resolver |

140| :------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141| `dependency-unsatisfied` | Uma dependência declarada não está instalada, ou está instalada mas desabilitada. | Execute o comando `claude plugin install` mostrado na mensagem de erro. Se o marketplace da dependência ainda não está configurado, adicione-o com `claude plugin marketplace add` e Claude Code resolve a dependência automaticamente. Se a dependência está desabilitada, ative-a. |

142| `range-conflict` | Os requisitos de versão para uma dependência não podem ser combinados. A mensagem de erro nomeia a causa: nenhuma versão satisfaz todos os intervalos, um intervalo não é sintaxe semver válida, ou os intervalos combinados são muito complexos para interseccionar. | Desinstale ou atualize um dos plugins conflitantes, corrija qualquer string `version` inválida, simplifique cadeias `\|\|` longas, ou peça ao autor upstream para ampliar sua restrição. |

143| `dependency-version-unsatisfied` | A versão da dependência instalada está fora do intervalo declarado deste plugin. | Execute `claude plugin install <dependency>@<marketplace>` para re-resolver a dependência contra todas as restrições atuais. |

144| `no-matching-tag` | O repositório da dependência não tem uma tag `{name}--v*` satisfazendo o intervalo. | Verifique se o upstream marcou lançamentos usando a convenção acima, ou relaxe seu intervalo. |

145 

146Para verificar esses erros programaticamente, execute `claude plugin list --json` e leia o campo `errors` em cada plugin.

147 

148## Veja também

149 

150* [Criar plugins](/pt/plugins): construa plugins com skills, agents e hooks

151* [Criar e distribuir um marketplace de plugins](/pt/plugin-marketplaces): hospede plugins para seu time

152* [Referência de Plugins](/pt/plugins-reference#plugin-manifest-schema): o esquema completo de `plugin.json`

153* [Gerenciamento de versão](/pt/plugins-reference#version-management): como a versão própria de um plugin é resolvida e usada como a chave de cache

plugin-marketplaces.md +1054 −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# Criar e distribuir um marketplace de plugins

6 

7> Crie e hospede marketplaces de plugins para distribuir extensões Claude Code em equipes e comunidades.

8 

9Um **marketplace de plugins** é um catálogo que permite distribuir plugins para outros. Os marketplaces fornecem descoberta centralizada, rastreamento de versão, atualizações automáticas e suporte para múltiplos tipos de fonte (repositórios git, caminhos locais e muito mais). Este guia mostra como criar seu próprio marketplace para compartilhar plugins com sua equipe ou comunidade.

10 

11Procurando instalar plugins de um marketplace existente? Veja [Descobrir e instalar plugins pré-construídos](/pt/discover-plugins).

12 

13## Visão geral

14 

15Criar e distribuir um marketplace envolve:

16 

171. **Criar plugins**: construir um ou mais plugins com skills, agents, hooks, MCP servers ou LSP servers. Este guia assume que você já tem plugins para distribuir; veja [Criar plugins](/pt/plugins) para detalhes sobre como criá-los.

182. **Criar um arquivo de marketplace**: definir um `marketplace.json` que lista seus plugins e onde encontrá-los (veja [Criar o arquivo de marketplace](#create-the-marketplace-file)).

193. **Hospedar o marketplace**: fazer push para GitHub, GitLab ou outro host git (veja [Hospedar e distribuir marketplaces](#host-and-distribute-marketplaces)).

204. **Compartilhar com usuários**: usuários adicionam seu marketplace com `/plugin marketplace add` e instalam plugins individuais (veja [Descobrir e instalar plugins](/pt/discover-plugins)).

21 

22Depois que seu marketplace estiver ativo, você pode atualizá-lo fazendo push de alterações para seu repositório. Os usuários atualizam sua cópia local com `/plugin marketplace update`.

23 

24## Passo a passo: criar um marketplace local

25 

26Este exemplo cria um marketplace com um plugin: uma skill `/quality-review` para revisões de código. Você criará a estrutura de diretórios, adicionará uma skill, criará o manifesto do plugin e o catálogo do marketplace, depois instalará e testará.

27 

28<Steps>

29 <Step title="Criar a estrutura de diretórios">

30 ```bash theme={null}

31 mkdir -p my-marketplace/.claude-plugin

32 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin

33 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review

34 ```

35 </Step>

36 

37 <Step title="Criar a skill">

38 Crie um arquivo `SKILL.md` que define o que a skill `/quality-review` faz.

39 

40 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

41 ---

42 description: Revisar código para bugs, segurança e desempenho

43 disable-model-invocation: true

44 ---

45 

46 Revise o código que selecionei ou as alterações recentes para:

47 - Possíveis bugs ou casos extremos

48 - Preocupações de segurança

49 - Problemas de desempenho

50 - Melhorias de legibilidade

51 

52 Seja conciso e acionável.

53 ```

54 </Step>

55 

56 <Step title="Criar o manifesto do plugin">

57 Crie um arquivo `plugin.json` que descreve o plugin. O manifesto vai no diretório `.claude-plugin/`.

58 

59 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}

60 {

61 "name": "quality-review-plugin",

62 "description": "Adiciona uma skill /quality-review para revisões rápidas de código",

63 "version": "1.0.0"

64 }

65 ```

66 

67 <Note>

68 Definir `version` significa que os usuários só recebem atualizações quando você altera este campo, então aumente-o em cada lançamento. Se você omitir `version` e hospedar este marketplace no git, cada commit conta automaticamente como uma nova versão. Veja [Resolução de versão](#version-resolution-and-release-channels) para escolher a abordagem correta.

69 </Note>

70 </Step>

71 

72 <Step title="Criar o arquivo de marketplace">

73 Crie o catálogo de marketplace que lista seu plugin.

74 

75 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

76 {

77 "name": "my-plugins",

78 "owner": {

79 "name": "Seu Nome"

80 },

81 "plugins": [

82 {

83 "name": "quality-review-plugin",

84 "source": "./plugins/quality-review-plugin",

85 "description": "Adiciona uma skill /quality-review para revisões rápidas de código"

86 }

87 ]

88 }

89 ```

90 </Step>

91 

92 <Step title="Adicionar e instalar">

93 Adicione o marketplace e instale o plugin.

94 

95 ```shell theme={null}

96 /plugin marketplace add ./my-marketplace

97 /plugin install quality-review-plugin@my-plugins

98 ```

99 </Step>

100 

101 <Step title="Experimentar">

102 Selecione algum código em seu editor e execute sua nova skill.

103 

104 ```shell theme={null}

105 /quality-review

106 ```

107 </Step>

108</Steps>

109 

110Para saber mais sobre o que os plugins podem fazer, incluindo hooks, agents, MCP servers e LSP servers, veja [Plugins](/pt/plugins).

111 

112<Note>

113 **Como os plugins são instalados**: Quando os usuários instalam um plugin, Claude Code copia o diretório do plugin para um local de cache. Isso significa que os plugins não podem referenciar arquivos fora de seu diretório usando caminhos como `../shared-utils`, porque esses arquivos não serão copiados.

114 

115 Se você precisar compartilhar arquivos entre plugins, use symlinks. Veja [Plugin caching and file resolution](/pt/plugins-reference#plugin-caching-and-file-resolution) para detalhes.

116</Note>

117 

118## Criar o arquivo de marketplace

119 

120Crie `.claude-plugin/marketplace.json` na raiz do seu repositório. Este arquivo define o nome do seu marketplace, informações do proprietário e uma lista de plugins com suas fontes.

121 

122Cada entrada de plugin precisa no mínimo de um `name` e `source` (onde buscá-lo). Veja o [esquema completo](#marketplace-schema) abaixo para todos os campos disponíveis.

123 

124```json theme={null}

125{

126 "name": "company-tools",

127 "owner": {

128 "name": "DevTools Team",

129 "email": "devtools@example.com"

130 },

131 "plugins": [

132 {

133 "name": "code-formatter",

134 "source": "./plugins/formatter",

135 "description": "Formatação automática de código ao salvar",

136 "version": "2.1.0",

137 "author": {

138 "name": "DevTools Team"

139 }

140 },

141 {

142 "name": "deployment-tools",

143 "source": {

144 "source": "github",

145 "repo": "company/deploy-plugin"

146 },

147 "description": "Ferramentas de automação de implantação"

148 }

149 ]

150}

151```

152 

153## Esquema de marketplace

154 

155### Campos obrigatórios

156 

157| Campo | Tipo | Descrição | Exemplo |

158| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------- |

159| `name` | string | Identificador de marketplace (kebab-case, sem espaços). Isso é público: os usuários o veem ao instalar plugins (por exemplo, `/plugin install my-tool@your-marketplace`). | `"acme-tools"` |

160| `owner` | object | Informações do mantenedor do marketplace ([veja campos abaixo](#owner-fields)) | |

161| `plugins` | array | Lista de plugins disponíveis | Veja abaixo |

162 

163<Note>

164 **Nomes reservados**: Os seguintes nomes de marketplace são reservados para uso oficial da Anthropic e não podem ser usados por marketplaces de terceiros: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `knowledge-work-plugins`, `life-sciences`. Nomes que imitam marketplaces oficiais (como `official-claude-plugins` ou `anthropic-tools-v2`) também são bloqueados.

165</Note>

166 

167### Campos do proprietário

168 

169| Campo | Tipo | Obrigatório | Descrição |

170| :------ | :----- | :---------- | :----------------------------- |

171| `name` | string | Sim | Nome do mantenedor ou equipe |

172| `email` | string | Não | Email de contato do mantenedor |

173 

174### Campos opcionais

175 

176| Campo | Tipo | Descrição |

177| :------------------------------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

178| `$schema` | string | URL do JSON Schema para autocompletar e validação do editor. Claude Code ignora este campo no momento do carregamento. |

179| `description` | string | Breve descrição do marketplace |

180| `version` | string | Versão do manifesto do marketplace |

181| `metadata.pluginRoot` | string | Diretório base adicionado aos caminhos de fonte de plugin relativos (por exemplo, `"./plugins"` permite escrever `"source": "formatter"` em vez de `"source": "./plugins/formatter"`) |

182| `allowCrossMarketplaceDependenciesOn` | array | Outros marketplaces que plugins neste marketplace podem depender. Dependências de um marketplace não listado aqui são bloqueadas na instalação. Veja [Depender de um plugin de outro marketplace](/pt/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

183 

184`description` e `version` também são aceitos sob `metadata` para compatibilidade com versões anteriores.

185 

186## Entradas de plugin

187 

188Cada entrada de plugin no array `plugins` descreve um plugin e onde encontrá-lo. Você pode incluir qualquer campo do [esquema de manifesto de plugin](/pt/plugins-reference#plugin-manifest-schema) (como `description`, `version`, `author`, `commands`, `hooks`, etc.), além destes campos específicos do marketplace: `source`, `category`, `tags` e `strict`.

189 

190### Campos obrigatórios

191 

192| Campo | Tipo | Descrição |

193| :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |

194| `name` | string | Identificador de plugin (kebab-case, sem espaços). Isso é público: os usuários o veem ao instalar (por exemplo, `/plugin install my-plugin@marketplace`). |

195| `source` | string\|object | Onde buscar o plugin (veja [Fontes de plugin](#plugin-sources) abaixo) |

196 

197### Campos de plugin opcionais

198 

199**Campos de metadados padrão:**

200 

201| Campo | Tipo | Descrição |

202| :------------ | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

203| `description` | string | Breve descrição do plugin |

204| `version` | string | Versão do plugin. Se definido (aqui ou em `plugin.json`), o plugin é fixado a esta string e os usuários recebem atualizações apenas quando ela muda. Omita para usar o SHA do commit do git. Veja [Resolução de versão](#version-resolution-and-release-channels). |

205| `author` | object | Informações do autor do plugin (`name` obrigatório, `email` opcional) |

206| `homepage` | string | URL da página inicial ou documentação do plugin |

207| `repository` | string | URL do repositório de código-fonte |

208| `license` | string | Identificador de licença SPDX (por exemplo, MIT, Apache-2.0) |

209| `keywords` | array | Tags para descoberta e categorização de plugins |

210| `category` | string | Categoria do plugin para organização |

211| `tags` | array | Tags para pesquisabilidade |

212| `strict` | boolean | Controla se `plugin.json` é a autoridade para definições de componentes (padrão: true). Veja [Strict mode](#strict-mode) abaixo. |

213 

214**Campos de configuração de componentes:**

215 

216| Campo | Tipo | Descrição |

217| :----------- | :------------- | :-------------------------------------------------------------------------- |

218| `skills` | string\|array | Caminhos personalizados para diretórios de skill contendo `<name>/SKILL.md` |

219| `commands` | string\|array | Caminhos personalizados para arquivos de skill `.md` simples ou diretórios |

220| `agents` | string\|array | Caminhos personalizados para arquivos de agent |

221| `hooks` | string\|object | Configuração de hooks personalizada ou caminho para arquivo de hooks |

222| `mcpServers` | string\|object | Configurações de MCP server ou caminho para config de MCP |

223| `lspServers` | string\|object | Configurações de LSP server ou caminho para config de LSP |

224 

225## Fontes de plugin

226 

227As fontes de plugin informam ao Claude Code onde buscar cada plugin individual listado em seu marketplace. Elas são definidas no campo `source` de cada entrada de plugin em `marketplace.json`.

228 

229Depois que um plugin é clonado ou copiado para a máquina local, ele é copiado para o cache de plugin versionado local em `~/.claude/plugins/cache`.

230 

231| Fonte | Tipo | Campos | Notas |

232| ---------------- | --------------------------------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |

233| Caminho relativo | `string` (por exemplo, `"./my-plugin"`) | nenhum | Diretório local dentro do repositório de marketplace. Deve começar com `./`. Resolvido relativamente à raiz do marketplace, não ao diretório `.claude-plugin/` |

234| `github` | object | `repo`, `ref?`, `sha?` | |

235| `url` | object | `url`, `ref?`, `sha?` | Fonte de URL Git |

236| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Subdiretório dentro de um repositório git. Clona esparsamente para minimizar largura de banda para monorepos |

237| `npm` | object | `package`, `version?`, `registry?` | Instalado via `npm install` |

238 

239<Note>

240 **Fontes de marketplace vs fontes de plugin**: Estes são conceitos diferentes que controlam coisas diferentes.

241 

242 * **Fonte de marketplace** — onde buscar o próprio catálogo `marketplace.json`. Definido quando os usuários executam `/plugin marketplace add` ou em configurações `extraKnownMarketplaces`. Suporta `ref` (branch/tag) mas não `sha`.

243 * **Fonte de plugin** — onde buscar um plugin individual listado no marketplace. Definido no campo `source` de cada entrada de plugin dentro de `marketplace.json`. Suporta tanto `ref` (branch/tag) quanto `sha` (commit exato).

244 

245 Por exemplo, um marketplace hospedado em `acme-corp/plugin-catalog` (fonte de marketplace) pode listar um plugin buscado de `acme-corp/code-formatter` (fonte de plugin). A fonte de marketplace e a fonte de plugin apontam para repositórios diferentes e são fixadas independentemente.

246</Note>

247 

248### Caminhos relativos

249 

250Para plugins no mesmo repositório, use um caminho começando com `./`:

251 

252```json theme={null}

253{

254 "name": "my-plugin",

255 "source": "./plugins/my-plugin"

256}

257```

258 

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

260 

261<Note>

262 Caminhos relativos funcionam apenas quando os usuários adicionam seu marketplace via Git (GitHub, GitLab ou URL git). Se os usuários adicionarem seu marketplace via URL direta para o arquivo `marketplace.json`, caminhos relativos não serão resolvidos corretamente. Para distribuição baseada em URL, use fontes GitHub, npm ou URL git. Veja [Troubleshooting](#plugins-with-relative-paths-fail-in-url-based-marketplaces) para detalhes.

263</Note>

264 

265### Repositórios GitHub

266 

267```json theme={null}

268{

269 "name": "github-plugin",

270 "source": {

271 "source": "github",

272 "repo": "owner/plugin-repo"

273 }

274}

275```

276 

277Você pode fixar a um branch, tag ou commit específico:

278 

279```json theme={null}

280{

281 "name": "github-plugin",

282 "source": {

283 "source": "github",

284 "repo": "owner/plugin-repo",

285 "ref": "v2.0.0",

286 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

287 }

288}

289```

290 

291| Campo | Tipo | Descrição |

292| :----- | :----- | :---------------------------------------------------------------------------------- |

293| `repo` | string | Obrigatório. Repositório GitHub no formato `owner/repo` |

294| `ref` | string | Opcional. Branch ou tag Git (padrão é o branch padrão do repositório) |

295| `sha` | string | Opcional. SHA de commit git completo de 40 caracteres para fixar a uma versão exata |

296 

297### Repositórios Git

298 

299```json theme={null}

300{

301 "name": "git-plugin",

302 "source": {

303 "source": "url",

304 "url": "https://gitlab.com/team/plugin.git"

305 }

306}

307```

308 

309Você pode fixar a um branch, tag ou commit específico:

310 

311```json theme={null}

312{

313 "name": "git-plugin",

314 "source": {

315 "source": "url",

316 "url": "https://gitlab.com/team/plugin.git",

317 "ref": "main",

318 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

319 }

320}

321```

322 

323| Campo | Tipo | Descrição |

324| :---- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

325| `url` | string | Obrigatório. URL completa do repositório git (`https://` ou `git@`). O sufixo `.git` é opcional, então URLs do Azure DevOps e AWS CodeCommit sem o sufixo funcionam |

326| `ref` | string | Opcional. Branch ou tag Git (padrão é o branch padrão do repositório) |

327| `sha` | string | Opcional. SHA de commit git completo de 40 caracteres para fixar a uma versão exata |

328 

329### Subdiretórios Git

330 

331Use `git-subdir` para apontar para um plugin que vive dentro de um subdiretório de um repositório git. Claude Code usa um clone parcial e esparso para buscar apenas o subdiretório, minimizando largura de banda para grandes monorepos.

332 

333```json theme={null}

334{

335 "name": "my-plugin",

336 "source": {

337 "source": "git-subdir",

338 "url": "https://github.com/acme-corp/monorepo.git",

339 "path": "tools/claude-plugin"

340 }

341}

342```

343 

344Você pode fixar a um branch, tag ou commit específico:

345 

346```json theme={null}

347{

348 "name": "my-plugin",

349 "source": {

350 "source": "git-subdir",

351 "url": "https://github.com/acme-corp/monorepo.git",

352 "path": "tools/claude-plugin",

353 "ref": "v2.0.0",

354 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

355 }

356}

357```

358 

359O campo `url` também aceita atalho GitHub (`owner/repo`) ou URLs SSH (`git@github.com:owner/repo.git`).

360 

361| Campo | Tipo | Descrição |

362| :----- | :----- | :------------------------------------------------------------------------------------------------------------------ |

363| `url` | string | Obrigatório. URL do repositório Git, atalho GitHub `owner/repo` ou URL SSH |

364| `path` | string | Obrigatório. Caminho do subdiretório dentro do repositório contendo o plugin (por exemplo, `"tools/claude-plugin"`) |

365| `ref` | string | Opcional. Branch ou tag Git (padrão é o branch padrão do repositório) |

366| `sha` | string | Opcional. SHA de commit git completo de 40 caracteres para fixar a uma versão exata |

367 

368### Pacotes npm

369 

370Plugins distribuídos como pacotes npm são instalados usando `npm install`. Isso funciona com qualquer pacote no registro npm público ou um registro privado que sua equipe hospeda.

371 

372```json theme={null}

373{

374 "name": "my-npm-plugin",

375 "source": {

376 "source": "npm",

377 "package": "@acme/claude-plugin"

378 }

379}

380```

381 

382Para fixar a uma versão específica, adicione o campo `version`:

383 

384```json theme={null}

385{

386 "name": "my-npm-plugin",

387 "source": {

388 "source": "npm",

389 "package": "@acme/claude-plugin",

390 "version": "2.1.0"

391 }

392}

393```

394 

395Para instalar de um registro privado ou interno, adicione o campo `registry`:

396 

397```json theme={null}

398{

399 "name": "my-npm-plugin",

400 "source": {

401 "source": "npm",

402 "package": "@acme/claude-plugin",

403 "version": "^2.0.0",

404 "registry": "https://npm.example.com"

405 }

406}

407```

408 

409| Campo | Tipo | Descrição |

410| :--------- | :----- | :------------------------------------------------------------------------------------------------------ |

411| `package` | string | Obrigatório. Nome do pacote ou pacote com escopo (por exemplo, `@org/plugin`) |

412| `version` | string | Opcional. Versão ou intervalo de versão (por exemplo, `2.1.0`, `^2.0.0`, `~1.5.0`) |

413| `registry` | string | Opcional. URL de registro npm personalizado. Padrão é o registro npm do sistema (tipicamente npmjs.org) |

414 

415### Entradas de plugin avançadas

416 

417Este exemplo mostra uma entrada de plugin usando muitos dos campos opcionais, incluindo caminhos personalizados para commands, agents, hooks e MCP servers:

418 

419```json theme={null}

420{

421 "name": "enterprise-tools",

422 "source": {

423 "source": "github",

424 "repo": "company/enterprise-plugin"

425 },

426 "description": "Ferramentas de automação de fluxo de trabalho empresarial",

427 "version": "2.1.0",

428 "author": {

429 "name": "Enterprise Team",

430 "email": "enterprise@example.com"

431 },

432 "homepage": "https://docs.example.com/plugins/enterprise-tools",

433 "repository": "https://github.com/company/enterprise-plugin",

434 "license": "MIT",

435 "keywords": ["enterprise", "workflow", "automation"],

436 "category": "productivity",

437 "commands": [

438 "./commands/core/",

439 "./commands/enterprise/",

440 "./commands/experimental/preview.md"

441 ],

442 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],

443 "hooks": {

444 "PostToolUse": [

445 {

446 "matcher": "Write|Edit",

447 "hooks": [

448 {

449 "type": "command",

450 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"

451 }

452 ]

453 }

454 ]

455 },

456 "mcpServers": {

457 "enterprise-db": {

458 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

459 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]

460 }

461 },

462 "strict": false

463}

464```

465 

466Coisas importantes a notar:

467 

468* **`commands` e `agents`**: Você pode especificar múltiplos diretórios ou arquivos individuais. Os caminhos são relativos à raiz do plugin.

469* **`${CLAUDE_PLUGIN_ROOT}`**: use esta variável em hooks e configurações de MCP server para referenciar arquivos dentro do diretório de instalação do plugin. Isso é necessário porque os plugins são copiados para um local de cache quando instalados. Para dependências ou estado que devem sobreviver a atualizações de plugin, use [`${CLAUDE_PLUGIN_DATA}`](/pt/plugins-reference#persistent-data-directory) em vez disso.

470* **`strict: false`**: Como isso está definido como false, o plugin não precisa de seu próprio `plugin.json`. A entrada de marketplace define tudo. Veja [Strict mode](#strict-mode) abaixo.

471 

472### Strict mode

473 

474O campo `strict` controla se `plugin.json` é a autoridade para definições de componentes (skills, agents, hooks, MCP servers, output styles).

475 

476| Valor | Comportamento |

477| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |

478| `true` (padrão) | `plugin.json` é a autoridade. A entrada de marketplace pode complementá-lo com componentes adicionais, e ambas as fontes são mescladas. |

479| `false` | A entrada de marketplace é a definição completa. Se o plugin também tem um `plugin.json` que declara componentes, isso é um conflito e o plugin falha ao carregar. |

480 

481**Quando usar cada modo:**

482 

483* **`strict: true`**: o plugin tem seu próprio `plugin.json` e gerencia seus próprios componentes. A entrada de marketplace pode adicionar skills ou hooks extras no topo. Este é o padrão e funciona para a maioria dos plugins.

484* **`strict: false`**: o operador do marketplace quer controle total. O repositório do plugin fornece arquivos brutos, e a entrada de marketplace define quais desses arquivos são expostos como skills, agents, hooks, etc. Útil quando o marketplace reestrutura ou curada os componentes de um plugin de forma diferente do que o autor do plugin pretendia.

485 

486## Hospedar e distribuir marketplaces

487 

488### Hospedar no GitHub (recomendado)

489 

490GitHub fornece o método de distribuição mais fácil:

491 

4921. **Criar um repositório**: Configure um novo repositório para seu marketplace

4932. **Adicionar arquivo de marketplace**: Crie `.claude-plugin/marketplace.json` com suas definições de plugin

4943. **Compartilhar com equipes**: Os usuários adicionam seu marketplace com `/plugin marketplace add owner/repo`

495 

496**Benefícios**: Controle de versão integrado, rastreamento de problemas e recursos de colaboração em equipe.

497 

498### Hospedar em outros serviços git

499 

500Qualquer serviço de hospedagem git funciona, como GitLab, Bitbucket e servidores auto-hospedados. Os usuários adicionam com a URL completa do repositório:

501 

502```shell theme={null}

503/plugin marketplace add https://gitlab.com/company/plugins.git

504```

505 

506### Repositórios privados

507 

508Claude Code suporta instalar plugins de repositórios privados. Para instalação manual e atualizações, Claude Code usa seus ajudantes de credencial git existentes, então acesso HTTPS via `gh auth login`, Keychain do macOS ou `git-credential-store` funciona da mesma forma que em seu terminal. Acesso SSH funciona desde que o host já esteja em seu arquivo `known_hosts` e a chave esteja carregada em `ssh-agent`, já que Claude Code suprime prompts SSH interativos para a impressão digital do host e passphrase da chave.

509 

510As atualizações automáticas em segundo plano são executadas na inicialização sem ajudantes de credencial, já que prompts interativos bloqueariam Claude Code de iniciar. Para habilitar atualizações automáticas para marketplaces privados, defina o token de autenticação apropriado em seu ambiente:

511 

512| Provedor | Variáveis de ambiente | Notas |

513| :-------- | :--------------------------- | :--------------------------------------------- |

514| GitHub | `GITHUB_TOKEN` ou `GH_TOKEN` | Token de acesso pessoal ou token de GitHub App |

515| GitLab | `GITLAB_TOKEN` ou `GL_TOKEN` | Token de acesso pessoal ou token de projeto |

516| Bitbucket | `BITBUCKET_TOKEN` | Senha de app ou token de acesso ao repositório |

517 

518Defina o token em sua configuração de shell (por exemplo, `.bashrc`, `.zshrc`) ou passe-o ao executar Claude Code:

519 

520```bash theme={null}

521export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx

522```

523 

524<Note>

525 Para ambientes CI/CD, configure o token como uma variável de ambiente secreta. GitHub Actions fornece automaticamente `GITHUB_TOKEN` para repositórios na mesma organização.

526</Note>

527 

528### Testar localmente antes da distribuição

529 

530Teste seu marketplace localmente antes de compartilhar:

531 

532```shell theme={null}

533/plugin marketplace add ./my-local-marketplace

534/plugin install test-plugin@my-local-marketplace

535```

536 

537Para a gama completa de comandos add (GitHub, URLs Git, caminhos locais, URLs remotas), veja [Adicionar marketplaces](/pt/discover-plugins#add-marketplaces).

538 

539### Exigir marketplaces para sua equipe

540 

541Você pode configurar seu repositório para que os membros da equipe sejam automaticamente solicitados a instalar seu marketplace quando confiarem na pasta do projeto. Adicione seu marketplace a `.claude/settings.json`:

542 

543```json theme={null}

544{

545 "extraKnownMarketplaces": {

546 "company-tools": {

547 "source": {

548 "source": "github",

549 "repo": "your-org/claude-plugins"

550 }

551 }

552 }

553}

554```

555 

556Você também pode especificar quais plugins devem ser habilitados por padrão:

557 

558```json theme={null}

559{

560 "enabledPlugins": {

561 "code-formatter@company-tools": true,

562 "deployment-tools@company-tools": true

563 }

564}

565```

566 

567Para opções de configuração completas, veja [Plugin settings](/pt/settings#plugin-settings).

568 

569<Note>

570 Se você usar uma fonte local `directory` ou `file` com um caminho relativo, o caminho é resolvido contra o checkout principal do seu repositório. Quando você executa Claude Code de um git worktree, o caminho ainda aponta para o checkout principal, então todos os worktrees compartilham o mesmo local de marketplace. O estado do marketplace é armazenado uma vez por usuário em `~/.claude/plugins/known_marketplaces.json`, não por projeto.

571</Note>

572 

573### Pré-popular plugins para containers

574 

575Para imagens de container e ambientes CI, você pode pré-popular um diretório de plugins no tempo de construção para que Claude Code inicie com marketplaces e plugins já disponíveis, sem clonar nada em tempo de execução. Defina a variável de ambiente `CLAUDE_CODE_PLUGIN_SEED_DIR` para apontar para este diretório.

576 

577Para colocar em camadas múltiplos diretórios seed, separe caminhos com `:` em Unix ou `;` no Windows. Claude Code procura cada diretório em ordem, e o primeiro seed que contém um determinado marketplace ou cache de plugin vence.

578 

579O diretório seed espelha a estrutura de `~/.claude/plugins`:

580 

581```

582$CLAUDE_CODE_PLUGIN_SEED_DIR/

583 known_marketplaces.json

584 marketplaces/<name>/...

585 cache/<marketplace>/<plugin>/<version>/...

586```

587 

588Para construir um diretório seed, execute Claude Code uma vez durante a construção da imagem, instale os plugins que você precisa, depois copie o diretório `~/.claude/plugins` resultante em sua imagem e aponte `CLAUDE_CODE_PLUGIN_SEED_DIR` para ele.

589 

590Para pular a etapa de cópia, defina `CLAUDE_CODE_PLUGIN_CACHE_DIR` para seu caminho de seed de destino durante a construção para que os plugins sejam instalados diretamente lá:

591 

592```bash theme={null}

593CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins

594CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins

595```

596 

597Então defina `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` no ambiente de tempo de execução do seu container para que Claude Code leia do seed na inicialização.

598 

599Na inicialização, Claude Code registra marketplaces encontrados no `known_marketplaces.json` do seed na configuração primária, e usa caches de plugin encontrados sob `cache/` no local sem re-clonar. Isso funciona tanto em modo interativo quanto em modo não-interativo com a flag `-p`.

600 

601Detalhes de comportamento:

602 

603* **Somente leitura**: o diretório seed nunca é escrito. As atualizações automáticas são desabilitadas para marketplaces seed já que git pull falharia em um sistema de arquivos somente leitura.

604* **Entradas seed têm precedência**: marketplaces declarados no seed sobrescrevem qualquer entrada correspondente na configuração do usuário em cada inicialização. Para optar por não usar um plugin seed, use `/plugin disable` em vez de remover o marketplace.

605* **Resolução de caminho**: Claude Code localiza conteúdo de marketplace sondando `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` em tempo de execução, não confiando em caminhos armazenados dentro do JSON do seed. Isso significa que o seed funciona corretamente mesmo quando montado em um caminho diferente de onde foi construído.

606* **Mutação é bloqueada**: executar `/plugin marketplace remove` ou `/plugin marketplace update` contra um marketplace gerenciado por seed falha com orientação para pedir ao seu administrador para atualizar a imagem seed.

607* **Compõe com configurações**: se `extraKnownMarketplaces` ou `enabledPlugins` declaram um marketplace que já existe no seed, Claude Code usa a cópia do seed em vez de clonar.

608 

609### Restrições de marketplace gerenciado

610 

611Para organizações que exigem controle rigoroso sobre fontes de plugin, administradores podem restringir quais marketplaces de plugin os usuários podem adicionar usando a configuração [`strictKnownMarketplaces`](/pt/settings#strictknownmarketplaces) em configurações gerenciadas.

612 

613Quando `strictKnownMarketplaces` é configurado em configurações gerenciadas, o comportamento de restrição depende do valor:

614 

615| Valor | Comportamento |

616| ------------------- | ------------------------------------------------------------------------------------------------- |

617| Indefinido (padrão) | Sem restrições. Os usuários podem adicionar qualquer marketplace |

618| Array vazio `[]` | Bloqueio completo. Os usuários não podem adicionar novos marketplaces |

619| Lista de fontes | Os usuários podem apenas adicionar marketplaces que correspondem exatamente à lista de permissões |

620 

621#### Configurações comuns

622 

623Desabilitar todas as adições de marketplace:

624 

625```json theme={null}

626{

627 "strictKnownMarketplaces": []

628}

629```

630 

631Permitir apenas marketplaces específicos:

632 

633```json theme={null}

634{

635 "strictKnownMarketplaces": [

636 {

637 "source": "github",

638 "repo": "acme-corp/approved-plugins"

639 },

640 {

641 "source": "github",

642 "repo": "acme-corp/security-tools",

643 "ref": "v2.0"

644 },

645 {

646 "source": "url",

647 "url": "https://plugins.example.com/marketplace.json"

648 }

649 ]

650}

651```

652 

653Permitir todos os marketplaces de um servidor git interno usando correspondência de padrão regex no host. Esta é a abordagem recomendada para [GitHub Enterprise Server](/pt/github-enterprise-server#plugin-marketplaces-on-ghes) ou instâncias GitLab auto-hospedadas:

654 

655```json theme={null}

656{

657 "strictKnownMarketplaces": [

658 {

659 "source": "hostPattern",

660 "hostPattern": "^github\\.example\\.com$"

661 }

662 ]

663}

664```

665 

666Permitir marketplaces baseados em sistema de arquivos de um diretório específico usando correspondência de padrão regex no caminho:

667 

668```json theme={null}

669{

670 "strictKnownMarketplaces": [

671 {

672 "source": "pathPattern",

673 "pathPattern": "^/opt/approved/"

674 }

675 ]

676}

677```

678 

679Use `".*"` como `pathPattern` para permitir qualquer caminho de sistema de arquivos enquanto ainda controla fontes de rede com `hostPattern`.

680 

681<Note>

682 `strictKnownMarketplaces` restringe o que os usuários podem adicionar, mas não registra marketplaces por conta própria. Para tornar marketplaces permitidos disponíveis automaticamente sem usuários executarem `/plugin marketplace add`, combine com [`extraKnownMarketplaces`](/pt/settings#extraknownmarketplaces) no mesmo `managed-settings.json`. Veja [Usando ambos juntos](/pt/settings#strictknownmarketplaces).

683</Note>

684 

685#### Como as restrições funcionam

686 

687As restrições são verificadas antes de qualquer operação de rede ou sistema de arquivos. A verificação é executada na adição de marketplace e na instalação, atualização, atualização e auto-atualização de plugin. Se um marketplace foi adicionado antes da política ser configurada e sua fonte não corresponder mais à lista de permissões, Claude Code recusa instalar ou atualizar plugins a partir dele. A mesma aplicação se aplica a `blockedMarketplaces`.

688 

689A lista de permissões usa correspondência exata para a maioria dos tipos de fonte. Para um marketplace ser permitido, todos os campos especificados devem corresponder exatamente:

690 

691* Para fontes GitHub: `repo` é obrigatório, e `ref` ou `path` também devem corresponder se especificados na lista de permissões

692* Para fontes de URL: a URL completa deve corresponder exatamente

693* Para fontes `hostPattern`: o host do marketplace é correspondido contra o padrão regex

694* Para fontes `pathPattern`: o caminho do sistema de arquivos do marketplace é correspondido contra o padrão regex

695 

696Como `strictKnownMarketplaces` é definido em [configurações gerenciadas](/pt/settings#settings-files), configurações individuais de usuários e projetos não podem substituir essas restrições.

697 

698Para detalhes de configuração completos incluindo todos os tipos de fonte suportados e comparação com `extraKnownMarketplaces`, veja a [referência strictKnownMarketplaces](/pt/settings#strictknownmarketplaces).

699 

700### Resolução de versão e canais de lançamento

701 

702As versões de plugin determinam caminhos de cache e detecção de atualização: se a versão resolvida corresponder ao que um usuário já tem, `/plugin update` e auto-atualização pulam o plugin.

703 

704Claude Code resolve a versão de um plugin a partir do primeiro destes que está definido:

705 

7061. `version` no `plugin.json` do plugin

7072. `version` na entrada de marketplace do plugin

7083. O SHA do commit git da fonte do plugin

709 

710Para os tipos de fonte baseados em git `github`, `url`, `git-subdir` e caminhos relativos dentro de um marketplace hospedado em git, você pode omitir `version` inteiramente e cada novo commit é tratado como uma nova versão. Esta é a configuração mais simples para plugins internos ou em desenvolvimento ativo.

711 

712<Warning>

713 Definir `version` fixa o plugin. Se `plugin.json` declara `"version": "1.0.0"`, fazer push de novos commits sem alterar essa string não faz nada para usuários existentes, porque Claude Code vê a mesma versão e mantém a cópia em cache. Aumente o campo em cada lançamento, ou omita-o para usar o SHA do commit.

714 

715 Evite definir `version` em ambos `plugin.json` e a entrada de marketplace. O valor `plugin.json` sempre vence silenciosamente, então uma versão de manifesto obsoleta pode mascarar uma versão que você definiu em `marketplace.json`.

716</Warning>

717 

718#### Configurar canais de lançamento

719 

720Para suportar canais de lançamento "stable" e "latest" para seus plugins, você pode configurar dois marketplaces que apontam para diferentes refs ou SHAs do mesmo repositório. Você pode então atribuir os dois marketplaces a diferentes grupos de usuários através de [configurações gerenciadas](/pt/settings#settings-files).

721 

722<Warning>

723 Cada canal deve resolver para uma versão diferente. Se você usar versões explícitas, `plugin.json` deve declarar uma `version` diferente em cada ref fixado. Se você omitir `version`, os SHAs de commit distintos já distinguem os canais. Se dois refs resolverem para a mesma string de versão, Claude Code os trata como idênticos e pula a atualização.

724</Warning>

725 

726##### Exemplo

727 

728```json theme={null}

729{

730 "name": "stable-tools",

731 "plugins": [

732 {

733 "name": "code-formatter",

734 "source": {

735 "source": "github",

736 "repo": "acme-corp/code-formatter",

737 "ref": "stable"

738 }

739 }

740 ]

741}

742```

743 

744```json theme={null}

745{

746 "name": "latest-tools",

747 "plugins": [

748 {

749 "name": "code-formatter",

750 "source": {

751 "source": "github",

752 "repo": "acme-corp/code-formatter",

753 "ref": "latest"

754 }

755 }

756 ]

757}

758```

759 

760##### Atribuir canais a grupos de usuários

761 

762Atribua cada marketplace ao grupo de usuários apropriado através de configurações gerenciadas. Por exemplo, o grupo stable recebe:

763 

764```json theme={null}

765{

766 "extraKnownMarketplaces": {

767 "stable-tools": {

768 "source": {

769 "source": "github",

770 "repo": "acme-corp/stable-tools"

771 }

772 }

773 }

774}

775```

776 

777O grupo early-access recebe `latest-tools` em vez disso:

778 

779```json theme={null}

780{

781 "extraKnownMarketplaces": {

782 "latest-tools": {

783 "source": {

784 "source": "github",

785 "repo": "acme-corp/latest-tools"

786 }

787 }

788 }

789}

790```

791 

792#### Fixar versões de dependência

793 

794Um plugin pode restringir suas dependências a um intervalo semver para que atualizações de uma dependência não quebrem o plugin dependente. Veja [Restringir versões de dependência de plugin](/pt/plugin-dependencies) para a convenção de git-tag `{plugin-name}--v{version}`, sintaxe de intervalo e como múltiplas restrições na mesma dependência são combinadas.

795 

796## Validação e testes

797 

798Teste seu marketplace antes de compartilhar.

799 

800Valide a sintaxe JSON do seu marketplace:

801 

802```bash theme={null}

803claude plugin validate .

804```

805 

806Ou de dentro de Claude Code:

807 

808```shell theme={null}

809/plugin validate .

810```

811 

812Adicione o marketplace para testes:

813 

814```shell theme={null}

815/plugin marketplace add ./path/to/marketplace

816```

817 

818Instale um plugin de teste para verificar se tudo funciona:

819 

820```shell theme={null}

821/plugin install test-plugin@marketplace-name

822```

823 

824Para fluxos de trabalho completos de testes de plugin, veja [Testar seus plugins localmente](/pt/plugins#test-your-plugins-locally). Para troubleshooting técnico, veja [Plugins reference](/pt/plugins-reference).

825 

826## Gerenciar marketplaces a partir da CLI

827 

828Claude Code fornece subcomandos `claude plugin marketplace` não-interativos para scripting e automação. Estes são equivalentes aos comandos `/plugin marketplace` disponíveis dentro de uma sessão interativa.

829 

830### Plugin marketplace add

831 

832Adicione um marketplace de um repositório GitHub, URL git, URL remota ou caminho local.

833 

834```bash theme={null}

835claude plugin marketplace add <source> [options]

836```

837 

838**Argumentos:**

839 

840* `<source>`: Atalho GitHub `owner/repo`, URL git, URL remota para um arquivo `marketplace.json` ou caminho de diretório local. Para fixar a um branch ou tag, anexe `@ref` ao atalho GitHub ou `#ref` a uma URL git

841 

842**Opções:**

843 

844| Opção | Descrição | Padrão |

845| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- | :----- |

846| `--scope <scope>` | Onde declarar o marketplace: `user`, `project` ou `local`. Veja [Plugin installation scopes](/pt/plugins-reference#plugin-installation-scopes) | `user` |

847| `--sparse <paths...>` | Limitar checkout a diretórios específicos via git sparse-checkout. Útil para monorepos | |

848 

849Adicione um marketplace do GitHub usando atalho `owner/repo`:

850 

851```bash theme={null}

852claude plugin marketplace add acme-corp/claude-plugins

853```

854 

855Fixe a um branch ou tag específico com `@ref`:

856 

857```bash theme={null}

858claude plugin marketplace add acme-corp/claude-plugins@v2.0

859```

860 

861Adicione de uma URL git em um host não-GitHub:

862 

863```bash theme={null}

864claude plugin marketplace add https://gitlab.example.com/team/plugins.git

865```

866 

867Adicione de uma URL remota que serve o arquivo `marketplace.json` diretamente:

868 

869```bash theme={null}

870claude plugin marketplace add https://example.com/marketplace.json

871```

872 

873Adicione de um diretório local para testes:

874 

875```bash theme={null}

876claude plugin marketplace add ./my-marketplace

877```

878 

879Declare o marketplace no escopo do projeto para que seja compartilhado com sua equipe via `.claude/settings.json`:

880 

881```bash theme={null}

882claude plugin marketplace add acme-corp/claude-plugins --scope project

883```

884 

885Para um monorepo, limite o checkout aos diretórios que contêm conteúdo de plugin:

886 

887```bash theme={null}

888claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

889```

890 

891### Plugin marketplace list

892 

893Liste todos os marketplaces configurados.

894 

895```bash theme={null}

896claude plugin marketplace list [options]

897```

898 

899**Opções:**

900 

901| Opção | Descrição |

902| :------- | :-------------- |

903| `--json` | Saída como JSON |

904 

905### Plugin marketplace remove

906 

907Remova um marketplace configurado. O alias `rm` também é aceito.

908 

909```bash theme={null}

910claude plugin marketplace remove <name>

911```

912 

913**Argumentos:**

914 

915* `<name>`: nome do marketplace a remover, conforme mostrado por `claude plugin marketplace list`. Este é o `name` de `marketplace.json`, não a fonte que você passou para `add`

916 

917<Warning>

918 Remover um marketplace também desinstala qualquer plugin que você instalou dele. Para atualizar um marketplace sem perder plugins instalados, use `claude plugin marketplace update` em vez disso.

919</Warning>

920 

921### Plugin marketplace update

922 

923Atualize marketplaces de suas fontes para recuperar novos plugins e mudanças de versão.

924 

925```bash theme={null}

926claude plugin marketplace update [name]

927```

928 

929**Argumentos:**

930 

931* `[name]`: nome do marketplace a atualizar, conforme mostrado por `claude plugin marketplace list`. Atualiza todos os marketplaces se omitido

932 

933Tanto `remove` quanto `update` falham quando executados contra um marketplace gerenciado por seed, que é somente leitura. Ao atualizar todos os marketplaces, entradas gerenciadas por seed são puladas e outros marketplaces ainda são atualizados. Para alterar plugins fornecidos por seed, peça ao seu administrador para atualizar a imagem seed. Veja [Pré-popular plugins para containers](#pre-populate-plugins-for-containers).

934 

935## Troubleshooting

936 

937### Marketplace não carregando

938 

939**Sintomas**: Não consegue adicionar marketplace ou ver plugins dele

940 

941**Soluções**:

942 

943* Verifique se a URL do marketplace é acessível

944* Verifique se `.claude-plugin/marketplace.json` existe no caminho especificado

945* Garanta que a sintaxe JSON é válida e o frontmatter está bem formado usando `claude plugin validate` ou `/plugin validate`

946* Para repositórios privados, confirme que você tem permissões de acesso

947 

948### Erros de validação de marketplace

949 

950Execute `claude plugin validate .` ou `/plugin validate .` do seu diretório de marketplace para verificar problemas. O validador verifica `plugin.json`, frontmatter de skill/agent/command e `hooks/hooks.json` para erros de sintaxe e esquema. Erros comuns:

951 

952| Erro | Causa | Solução |

953| :------------------------------------------------ | :----------------------------------------------------- | :---------------------------------------------------------------------------------------------------- |

954| `File not found: .claude-plugin/marketplace.json` | Manifesto ausente | Crie `.claude-plugin/marketplace.json` com campos obrigatórios |

955| `Invalid JSON syntax: Unexpected token...` | Erro de sintaxe JSON em marketplace.json | Verifique vírgulas ausentes, vírgulas extras ou strings não citadas |

956| `Duplicate plugin name "x" found in marketplace` | Dois plugins compartilham o mesmo nome | Dê a cada plugin um valor `name` único |

957| `plugins[0].source: Path contains ".."` | Caminho de fonte contém `..` | Use caminhos relativos à raiz do marketplace sem `..`. Veja [Caminhos relativos](#relative-paths) |

958| `YAML frontmatter failed to parse: ...` | YAML inválido em um arquivo de skill, agent ou command | Corrija a sintaxe YAML no bloco frontmatter. Em tempo de execução este arquivo carrega sem metadados. |

959| `Invalid JSON syntax: ...` (hooks.json) | `hooks/hooks.json` malformado | Corrija a sintaxe JSON. Um `hooks/hooks.json` malformado previne o plugin inteiro de carregar. |

960 

961**Avisos** (não bloqueadores):

962 

963* `Marketplace has no plugins defined`: adicione pelo menos um plugin ao array `plugins`

964* `No marketplace description provided`: adicione uma `description` de nível superior para ajudar os usuários a entender seu marketplace

965* `Plugin name "x" is not kebab-case`: o nome do plugin contém letras maiúsculas, espaços ou caracteres especiais. Renomeie para apenas letras minúsculas, dígitos e hífens (por exemplo, `my-plugin`). Claude Code aceita outras formas, mas a sincronização de marketplace do Claude.ai as rejeita.

966 

967### Falhas de instalação de plugin

968 

969**Sintomas**: Marketplace aparece mas a instalação do plugin falha

970 

971**Soluções**:

972 

973* Verifique se as URLs de fonte do plugin são acessíveis

974* Verifique se os diretórios de plugin contêm arquivos obrigatórios

975* Para fontes GitHub, garanta que repositórios são públicos ou você tem acesso

976* Teste fontes de plugin manualmente clonando/baixando

977 

978### Falha de autenticação de repositório privado

979 

980**Sintomas**: Erros de autenticação ao instalar plugins de repositórios privados

981 

982**Soluções**:

983 

984Para instalação manual e atualizações:

985 

986* Verifique se você está autenticado com seu provedor git (por exemplo, execute `gh auth status` para GitHub)

987* Verifique se seu ajudante de credencial está configurado corretamente: `git config --global credential.helper`

988* Tente clonar o repositório manualmente para verificar se suas credenciais funcionam

989 

990Para atualizações automáticas em segundo plano:

991 

992* Defina o token apropriado em seu ambiente: `echo $GITHUB_TOKEN`

993* Verifique se o token tem as permissões obrigatórias (acesso de leitura ao repositório)

994* Para GitHub, garanta que o token tem o escopo `repo` para repositórios privados

995* Para GitLab, garanta que o token tem pelo menos escopo `read_repository`

996* Verifique se o token não expirou

997 

998### Atualizações de marketplace falham em ambientes offline

999 

1000**Sintomas**: `git pull` do marketplace falha e Claude Code limpa o cache existente, causando plugins ficarem indisponíveis.

1001 

1002**Causa**: Por padrão, quando um `git pull` falha, Claude Code remove o clone obsoleto e tenta re-clonar. Em ambientes offline ou airgapped, re-clonar falha da mesma forma, deixando o diretório de marketplace vazio.

1003 

1004**Solução**: Defina `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para manter o cache existente quando o pull falhar em vez de limpá-lo:

1005 

1006```bash theme={null}

1007export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

1008```

1009 

1010Com esta variável definida, Claude Code retém o clone obsoleto do marketplace em falha de `git pull` e continua usando o último estado conhecido como bom. Para implantações totalmente offline onde o repositório nunca será alcançável, use [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) para pré-popular o diretório de plugins no tempo de construção em vez disso.

1011 

1012### Operações Git expiram

1013 

1014**Sintomas**: Instalação de plugin ou atualizações de marketplace falham com um erro de timeout como "Git clone timed out after 120s" ou "Git pull timed out after 120s".

1015 

1016**Causa**: Claude Code usa um timeout de 120 segundos para todas as operações git, incluindo clonagem de repositórios de plugin e puxar atualizações de marketplace. Repositórios grandes ou conexões de rede lentas podem exceder este limite.

1017 

1018**Solução**: Aumente o timeout usando a variável de ambiente `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. O valor está em milissegundos:

1019 

1020```bash theme={null}

1021export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 minutos

1022```

1023 

1024### Plugins com caminhos relativos falham em marketplaces baseados em URL

1025 

1026**Sintomas**: Adicionou um marketplace via URL (como `https://example.com/marketplace.json`), mas plugins com fontes de caminho relativo como `"./plugins/my-plugin"` falham ao instalar com erros "path not found".

1027 

1028**Causa**: Marketplaces baseados em URL apenas baixam o próprio arquivo `marketplace.json`. Eles não baixam arquivos de plugin do servidor. Caminhos relativos na entrada de marketplace referenciam arquivos no servidor remoto que não foram baixados.

1029 

1030**Soluções**:

1031 

1032* **Use fontes externas**: Altere entradas de plugin para usar fontes GitHub, npm ou URL git em vez de caminhos relativos:

1033 ```json theme={null}

1034 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

1035 ```

1036* **Use um marketplace baseado em Git**: Hospede seu marketplace em um repositório Git e adicione-o com a URL git. Marketplaces baseados em Git clonam o repositório inteiro, tornando caminhos relativos funcionarem corretamente.

1037 

1038### Arquivos não encontrados após instalação

1039 

1040**Sintomas**: Plugin instala mas referências a arquivos falham, especialmente arquivos fora do diretório do plugin

1041 

1042**Causa**: Plugins são copiados para um diretório de cache em vez de serem usados no local. Caminhos que referenciam arquivos fora do diretório do plugin (como `../shared-utils`) não funcionarão porque esses arquivos não são copiados.

1043 

1044**Soluções**: Veja [Plugin caching and file resolution](/pt/plugins-reference#plugin-caching-and-file-resolution) para workarounds incluindo symlinks e reestruturação de diretório.

1045 

1046Para ferramentas de debugging adicionais e problemas comuns, veja [Debugging and development tools](/pt/plugins-reference#debugging-and-development-tools).

1047 

1048## Veja também

1049 

1050* [Descobrir e instalar plugins pré-construídos](/pt/discover-plugins) - Instalando plugins de marketplaces existentes

1051* [Plugins](/pt/plugins) - Criando seus próprios plugins

1052* [Plugins reference](/pt/plugins-reference) - Especificações técnicas completas e esquemas

1053* [Plugin settings](/pt/settings#plugin-settings) - Opções de configuração de plugin

1054* [strictKnownMarketplaces reference](/pt/settings#strictknownmarketplaces) - Restrições de marketplace gerenciado

plugins.md +454 −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# Criar plugins

6 

7> Crie plugins personalizados para estender Claude Code com skills, agents, hooks e MCP servers.

8 

9Plugins permitem que você estenda Claude Code com funcionalidade personalizada que pode ser compartilhada entre projetos e equipes. Este guia cobre a criação de seus próprios plugins com skills, agents, hooks e MCP servers.

10 

11Procurando instalar plugins existentes? Veja [Descobrir e instalar plugins](/pt/discover-plugins). Para especificações técnicas completas, veja [Referência de plugins](/pt/plugins-reference).

12 

13## Quando usar plugins vs configuração independente

14 

15Claude Code suporta duas maneiras de adicionar skills, agents e hooks personalizados:

16 

17| Abordagem | Nomes de skills | Melhor para |

18| :-------------------------------------------------------- | :------------------- | :------------------------------------------------------------------------------------------------------------------------ |

19| **Independente** (diretório `.claude/`) | `/hello` | Fluxos de trabalho pessoais, personalizações específicas do projeto, experimentos rápidos |

20| **Plugins** (diretórios com `.claude-plugin/plugin.json`) | `/plugin-name:hello` | Compartilhamento com colegas de equipe, distribuição para a comunidade, lançamentos versionados, reutilizável em projetos |

21 

22**Use configuração independente quando**:

23 

24* Você está personalizando Claude Code para um único projeto

25* A configuração é pessoal e não precisa ser compartilhada

26* Você está experimentando com skills ou hooks antes de empacotá-los

27* Você quer nomes de skills curtos como `/hello` ou `/deploy`

28 

29**Use plugins quando**:

30 

31* Você quer compartilhar funcionalidade com sua equipe ou comunidade

32* Você precisa dos mesmos skills/agents em múltiplos projetos

33* Você quer controle de versão e atualizações fáceis para suas extensões

34* Você está distribuindo através de um marketplace

35* Você está ok com skills com namespace como `/my-plugin:hello` (namespacing previne conflitos entre plugins)

36 

37<Tip>

38 Comece com configuração independente em `.claude/` para iteração rápida, depois [converta para um plugin](#convert-existing-configurations-to-plugins) quando estiver pronto para compartilhar.

39</Tip>

40 

41## Início rápido

42 

43Este início rápido o guia através da criação de um plugin com um skill personalizado. Você criará um manifesto (o arquivo de configuração que define seu plugin), adicionará um skill e o testará localmente usando a flag `--plugin-dir`.

44 

45### Pré-requisitos

46 

47* Claude Code [instalado e autenticado](/pt/quickstart#step-1-install-claude-code)

48 

49<Note>

50 Se você não vir o comando `/plugin`, atualize Claude Code para a versão mais recente. Veja [Troubleshooting](/pt/troubleshooting) para instruções de atualização.

51</Note>

52 

53### Crie seu primeiro plugin

54 

55<Steps>

56 <Step title="Crie o diretório do plugin">

57 Cada plugin vive em seu próprio diretório contendo um manifesto e seus skills, agents ou hooks. Crie um agora:

58 

59 ```bash theme={null}

60 mkdir my-first-plugin

61 ```

62 </Step>

63 

64 <Step title="Crie o manifesto do plugin">

65 O arquivo de manifesto em `.claude-plugin/plugin.json` define a identidade do seu plugin: seu nome, descrição e versão. Claude Code usa esses metadados para exibir seu plugin no gerenciador de plugins.

66 

67 Crie o diretório `.claude-plugin` dentro da pasta do seu plugin:

68 

69 ```bash theme={null}

70 mkdir my-first-plugin/.claude-plugin

71 ```

72 

73 Depois crie `my-first-plugin/.claude-plugin/plugin.json` com este conteúdo:

74 

75 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

76 {

77 "name": "my-first-plugin",

78 "description": "A greeting plugin to learn the basics",

79 "version": "1.0.0",

80 "author": {

81 "name": "Your Name"

82 }

83 }

84 ```

85 

86 | Campo | Propósito |

87 | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

88 | `name` | Identificador único e namespace de skill. Skills são prefixados com isso (ex: `/my-first-plugin:hello`). |

89 | `description` | Mostrado no gerenciador de plugins ao navegar ou instalar plugins. |

90 | `version` | Opcional. Se definido, os usuários recebem atualizações apenas quando você incrementa este campo. Se omitido e seu plugin é distribuído via git, o SHA do commit é usado e cada commit conta como uma nova versão. Veja [gerenciamento de versão](/pt/plugins-reference#version-management). |

91 | `author` | Opcional. Útil para atribuição. |

92 

93 Para campos adicionais como `homepage`, `repository` e `license`, veja o [esquema de manifesto completo](/pt/plugins-reference#plugin-manifest-schema).

94 </Step>

95 

96 <Step title="Adicione um skill">

97 Skills vivem no diretório `skills/`. Cada skill é uma pasta contendo um arquivo `SKILL.md`. O nome da pasta se torna o nome do skill, prefixado com o namespace do plugin (`hello/` em um plugin nomeado `my-first-plugin` cria `/my-first-plugin:hello`).

98 

99 Crie um diretório de skill na pasta do seu plugin:

100 

101 ```bash theme={null}

102 mkdir -p my-first-plugin/skills/hello

103 ```

104 

105 Depois crie `my-first-plugin/skills/hello/SKILL.md` com este conteúdo:

106 

107 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

108 ---

109 description: Greet the user with a friendly message

110 disable-model-invocation: true

111 ---

112 

113 Greet the user warmly and ask how you can help them today.

114 ```

115 </Step>

116 

117 <Step title="Teste seu plugin">

118 Execute Claude Code com a flag `--plugin-dir` para carregar seu plugin:

119 

120 ```bash theme={null}

121 claude --plugin-dir ./my-first-plugin

122 ```

123 

124 Uma vez que Claude Code inicia, tente seu novo skill:

125 

126 ```shell theme={null}

127 /my-first-plugin:hello

128 ```

129 

130 Você verá Claude responder com uma saudação. Execute `/help` para ver seu skill listado sob o namespace do plugin.

131 

132 <Note>

133 **Por que namespacing?** Plugin skills são sempre com namespace (como `/my-first-plugin:hello`) para prevenir conflitos quando múltiplos plugins têm skills com o mesmo nome.

134 

135 Para mudar o prefixo de namespace, atualize o campo `name` em `plugin.json`.

136 </Note>

137 </Step>

138 

139 <Step title="Adicione argumentos de skill">

140 Torne seu skill dinâmico aceitando entrada do usuário. O placeholder `$ARGUMENTS` captura qualquer texto que o usuário fornece após o nome do skill.

141 

142 Atualize seu arquivo `SKILL.md`:

143 

144 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

145 ---

146 description: Greet the user with a personalized message

147 ---

148 

149 # Hello Skill

150 

151 Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

152 ```

153 

154 Execute `/reload-plugins` para pegar as mudanças, depois tente o skill com seu nome:

155 

156 ```shell theme={null}

157 /my-first-plugin:hello Alex

158 ```

159 

160 Claude o saudará pelo nome. Para mais sobre passar argumentos para skills, veja [Skills](/pt/skills#pass-arguments-to-skills).

161 </Step>

162</Steps>

163 

164Você criou e testou com sucesso um plugin com estes componentes-chave:

165 

166* **Manifesto do plugin** (`.claude-plugin/plugin.json`): descreve os metadados do seu plugin

167* **Diretório de skills** (`skills/`): contém seus skills personalizados

168* **Argumentos de skill** (`$ARGUMENTS`): captura entrada do usuário para comportamento dinâmico

169 

170<Tip>

171 A flag `--plugin-dir` é útil para desenvolvimento e testes. Quando estiver pronto para compartilhar seu plugin com outros, veja [Criar e distribuir um marketplace de plugins](/pt/plugin-marketplaces).

172</Tip>

173 

174## Visão geral da estrutura do plugin

175 

176Você criou um plugin com um skill, mas plugins podem incluir muito mais: agents personalizados, hooks, MCP servers, LSP servers e monitores de background.

177 

178<Warning>

179 **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</Warning>

181 

182| Diretório | Localização | Propósito |

183| :---------------- | :------------- | :------------------------------------------------------------------------------------- |

184| `.claude-plugin/` | Raiz do plugin | Contém manifesto `plugin.json` (opcional se componentes usam localizações padrão) |

185| `skills/` | Raiz do plugin | Skills como diretórios `<name>/SKILL.md` |

186| `commands/` | Raiz do plugin | Skills como arquivos Markdown simples. Use `skills/` para novos plugins |

187| `agents/` | Raiz do plugin | Definições de agent personalizadas |

188| `hooks/` | Raiz do plugin | Manipuladores de eventos em `hooks.json` |

189| `.mcp.json` | Raiz do plugin | Configurações de MCP server |

190| `.lsp.json` | Raiz do plugin | Configurações de LSP server para inteligência de código |

191| `monitors/` | Raiz do plugin | Configurações de monitor de background em `monitors.json` |

192| `bin/` | Raiz do plugin | Executáveis adicionados ao `PATH` da ferramenta Bash enquanto o plugin está habilitado |

193| `settings.json` | Raiz do plugin | [Configurações](/pt/settings) padrão aplicadas quando o plugin é habilitado |

194 

195<Note>

196 **Próximos passos**: Pronto para adicionar mais recursos? Vá para [Desenvolver plugins mais complexos](#develop-more-complex-plugins) para adicionar agents, hooks, MCP servers e LSP servers. Para especificações técnicas completas de todos os componentes do plugin, veja [Referência de plugins](/pt/plugins-reference).

197</Note>

198 

199## Desenvolver plugins mais complexos

200 

201Uma vez que você está confortável com plugins básicos, você pode criar extensões mais sofisticadas.

202 

203### Adicione Skills ao seu plugin

204 

205Plugins podem incluir [Agent Skills](/pt/skills) para estender as capacidades do Claude. Skills são invocados por modelo: Claude os usa automaticamente com base no contexto da tarefa.

206 

207Adicione um diretório `skills/` na raiz do seu plugin com pastas de Skill contendo arquivos `SKILL.md`:

208 

209```text theme={null}

210my-plugin/

211├── .claude-plugin/

212│ └── plugin.json

213└── skills/

214 └── code-review/

215 └── SKILL.md

216```

217 

218Cada `SKILL.md` contém frontmatter YAML e instruções. Inclua uma `description` para que Claude saiba quando usar o skill:

219 

220```yaml theme={null}

221---

222description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.

223---

224 

225When reviewing code, check for:

2261. Code organization and structure

2272. Error handling

2283. Security concerns

2294. Test coverage

230```

231 

232Após instalar o plugin, execute `/reload-plugins` para carregar os Skills. Para orientação completa de autoria de Skill incluindo divulgação progressiva e restrições de ferramentas, veja [Agent Skills](/pt/skills).

233 

234### Adicione LSP servers ao seu plugin

235 

236<Tip>

237 Para linguagens comuns como TypeScript, Python e Rust, instale os plugins LSP pré-construídos do marketplace oficial. Crie plugins LSP personalizados apenas quando você precisar de suporte para linguagens não cobertas.

238</Tip>

239 

240Plugins LSP (Language Server Protocol) dão ao Claude inteligência de código em tempo real. Se você precisar suportar uma linguagem que não tem um plugin LSP oficial, você pode criar um próprio adicionando um arquivo `.lsp.json` ao seu plugin:

241 

242```json .lsp.json theme={null}

243{

244 "go": {

245 "command": "gopls",

246 "args": ["serve"],

247 "extensionToLanguage": {

248 ".go": "go"

249 }

250 }

251}

252```

253 

254Usuários instalando seu plugin devem ter o binário do language server instalado em sua máquina.

255 

256Para opções de configuração LSP completas, veja [LSP servers](/pt/plugins-reference#lsp-servers).

257 

258### Adicione monitores de background ao seu plugin

259 

260Monitores de background permitem que seu plugin observe logs, arquivos ou status externo em background e notifique Claude conforme eventos chegam. Claude Code inicia cada monitor automaticamente quando o plugin está ativo, então você não precisa instruir Claude a iniciar a observação.

261 

262Adicione um arquivo `monitors/monitors.json` na raiz do plugin com um array de entradas de monitor:

263 

264```json monitors/monitors.json theme={null}

265[

266 {

267 "name": "error-log",

268 "command": "tail -F ./logs/error.log",

269 "description": "Application error log"

270 }

271]

272```

273 

274Cada linha de stdout do `command` é entregue ao Claude como uma notificação durante a sessão. Para o esquema completo, incluindo o trigger `when` e substituição de variáveis, veja [Monitors](/pt/plugins-reference#monitors).

275 

276### Envie configurações padrão com seu plugin

277 

278Plugins podem incluir um arquivo `settings.json` na raiz do plugin para aplicar configuração padrão quando o plugin é habilitado. Atualmente, apenas as chaves `agent` e `subagentStatusLine` são suportadas.

279 

280Definir `agent` ativa um dos [agents personalizados](/pt/sub-agents) do plugin como a thread principal, aplicando seu prompt de sistema, restrições de ferramentas e modelo. Isso permite que um plugin mude como Claude Code se comporta por padrão quando habilitado.

281 

282```json settings.json theme={null}

283{

284 "agent": "security-reviewer"

285}

286```

287 

288Este exemplo ativa o agent `security-reviewer` definido no diretório `agents/` do plugin. Configurações de `settings.json` têm prioridade sobre `settings` declarados em `plugin.json`. Chaves desconhecidas são silenciosamente ignoradas.

289 

290### Organize plugins complexos

291 

292Para plugins com muitos componentes, organize sua estrutura de diretório por funcionalidade. Para layouts de diretório completos e padrões de organização, veja [Estrutura de diretório do plugin](/pt/plugins-reference#plugin-directory-structure).

293 

294### Teste seus plugins localmente

295 

296Use a flag `--plugin-dir` para testar plugins durante o desenvolvimento. Isso carrega seu plugin diretamente sem exigir instalação.

297 

298```bash theme={null}

299claude --plugin-dir ./my-plugin

300```

301 

302Quando um plugin `--plugin-dir` tem o mesmo nome que um plugin marketplace instalado, a cópia local tem precedência para essa sessão. Isso permite que você teste mudanças em um plugin que você já tem instalado sem desinstalá-lo primeiro. Plugins marketplace forçadamente habilitados por configurações gerenciadas são a única exceção e não podem ser substituídos.

303 

304Conforme você faz mudanças no seu plugin, execute `/reload-plugins` para pegar as atualizações sem reiniciar. Isso recarrega plugins, skills, agents, hooks, MCP servers do plugin e LSP servers do plugin. Teste seus componentes de plugin:

305 

306* Tente seus skills com `/plugin-name:skill-name`

307* Verifique que agents aparecem em `/agents`

308* Verifique que hooks funcionam como esperado

309 

310<Tip>

311 Você pode carregar múltiplos plugins de uma vez especificando a flag múltiplas vezes:

312 

313 ```bash theme={null}

314 claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

315 ```

316</Tip>

317 

318### Depure problemas de plugin

319 

320Se seu plugin não está funcionando como esperado:

321 

3221. **Verifique a estrutura**: Certifique-se de que seus diretórios estão na raiz do plugin, não dentro de `.claude-plugin/`

3232. **Teste componentes individualmente**: Verifique cada skill, agent e hook separadamente

3243. **Use ferramentas de validação e depuração**: Veja [Ferramentas de depuração e desenvolvimento](/pt/plugins-reference#debugging-and-development-tools) para comandos CLI e técnicas de troubleshooting

325 

326### Compartilhe seus plugins

327 

328Quando seu plugin estiver pronto para compartilhar:

329 

3301. **Adicione documentação**: Inclua um `README.md` com instruções de instalação e uso

3312. **Escolha uma estratégia de versionamento**: Decida se deve definir uma `version` explícita ou confiar no SHA do commit git. Veja [gerenciamento de versão](/pt/plugins-reference#version-management)

3323. **Crie ou use um marketplace**: Distribua através de [marketplaces de plugins](/pt/plugin-marketplaces) para instalação

3334. **Teste com outros**: Tenha membros da equipe testarem o plugin antes de distribuição mais ampla

334 

335Uma vez que seu plugin está em um marketplace, outros podem instalá-lo usando as instruções em [Descobrir e instalar plugins](/pt/discover-plugins). Para manter um plugin interno à sua equipe, hospede o marketplace em um [repositório privado](/pt/plugin-marketplaces#private-repositories).

336 

337### Envie seu plugin para o marketplace oficial

338 

339Para enviar um plugin para o marketplace oficial da Anthropic, use um dos formulários de envio no aplicativo:

340 

341* **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

342* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

343 

344Uma vez que seu plugin está listado, você pode ter seu próprio CLI solicitar aos usuários do Claude Code que o instalem. Veja [Recomende seu plugin a partir de seu CLI](/pt/plugin-hints).

345 

346<Note>

347 Para especificações técnicas completas, técnicas de depuração e estratégias de distribuição, veja [Referência de plugins](/pt/plugins-reference).

348</Note>

349 

350## Converta configurações existentes para plugins

351 

352Se você já tem skills ou hooks em seu diretório `.claude/`, você pode convertê-los em um plugin para compartilhamento e distribuição mais fáceis.

353 

354### Passos de migração

355 

356<Steps>

357 <Step title="Crie a estrutura do plugin">

358 Crie um novo diretório de plugin:

359 

360 ```bash theme={null}

361 mkdir -p my-plugin/.claude-plugin

362 ```

363 

364 Crie o arquivo de manifesto em `my-plugin/.claude-plugin/plugin.json`:

365 

366 ```json my-plugin/.claude-plugin/plugin.json theme={null}

367 {

368 "name": "my-plugin",

369 "description": "Migrated from standalone configuration",

370 "version": "1.0.0"

371 }

372 ```

373 </Step>

374 

375 <Step title="Copie seus arquivos existentes">

376 Copie suas configurações existentes para o diretório do plugin:

377 

378 ```bash theme={null}

379 # Copy commands

380 cp -r .claude/commands my-plugin/

381 

382 # Copy agents (if any)

383 cp -r .claude/agents my-plugin/

384 

385 # Copy skills (if any)

386 cp -r .claude/skills my-plugin/

387 ```

388 </Step>

389 

390 <Step title="Migre hooks">

391 Se você tem hooks em suas configurações, crie um diretório de hooks:

392 

393 ```bash theme={null}

394 mkdir my-plugin/hooks

395 ```

396 

397 Crie `my-plugin/hooks/hooks.json` com sua configuração de hooks. Copie o objeto `hooks` de seu `.claude/settings.json` ou `settings.local.json`, já que o formato é o mesmo. O comando recebe entrada de hook como JSON em stdin, então use `jq` para extrair o caminho do arquivo:

398 

399 ```json my-plugin/hooks/hooks.json theme={null}

400 {

401 "hooks": {

402 "PostToolUse": [

403 {

404 "matcher": "Write|Edit",

405 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

406 }

407 ]

408 }

409 }

410 ```

411 </Step>

412 

413 <Step title="Teste seu plugin migrado">

414 Carregue seu plugin para verificar se tudo funciona:

415 

416 ```bash theme={null}

417 claude --plugin-dir ./my-plugin

418 ```

419 

420 Teste cada componente: execute seus skills, verifique que agents aparecem em `/agents` e verifique que hooks disparam corretamente.

421 </Step>

422</Steps>

423 

424### O que muda ao migrar

425 

426| Independente (`.claude/`) | Plugin |

427| :---------------------------------------- | :-------------------------------------- |

428| Disponível apenas em um projeto | Pode ser compartilhado via marketplaces |

429| Arquivos em `.claude/commands/` | Arquivos em `plugin-name/commands/` |

430| Hooks em `settings.json` | Hooks em `hooks/hooks.json` |

431| Deve copiar manualmente para compartilhar | Instale com `/plugin install` |

432 

433<Note>

434 Após migrar, você pode remover os arquivos originais de `.claude/` para evitar duplicatas. A versão do plugin terá precedência quando carregada.

435</Note>

436 

437## Próximos passos

438 

439Agora que você entende o sistema de plugins do Claude Code, aqui estão caminhos sugeridos para diferentes objetivos:

440 

441### Para usuários de plugins

442 

443* [Descobrir e instalar plugins](/pt/discover-plugins): navegue em marketplaces e instale plugins

444* [Configurar marketplaces de equipe](/pt/discover-plugins#configure-team-marketplaces): configure plugins no nível do repositório para sua equipe

445 

446### Para desenvolvedores de plugins

447 

448* [Criar e distribuir um marketplace](/pt/plugin-marketplaces): empacote e compartilhe seus plugins

449* [Referência de plugins](/pt/plugins-reference): especificações técnicas completas

450* Mergulhe mais fundo em componentes específicos do plugin:

451 * [Skills](/pt/skills): detalhes de desenvolvimento de skill

452 * [Subagents](/pt/sub-agents): configuração e capacidades de agent

453 * [Hooks](/pt/hooks): manipulação de eventos e automação

454 * [MCP](/pt/mcp): integração de ferramentas externas

plugins-reference.md +1011 −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# Referência de plugins

6 

7> Referência técnica completa para o sistema de plugins do Claude Code, incluindo esquemas, comandos CLI e especificações de componentes.

8 

9<Tip>

10 Procurando instalar plugins? Veja [Descobrir e instalar plugins](/pt/discover-plugins). Para criar plugins, veja [Plugins](/pt/plugins). Para distribuir plugins, veja [Marketplaces de plugins](/pt/plugin-marketplaces).

11</Tip>

12 

13Esta referência fornece especificações técnicas completas para o sistema de plugins do Claude Code, incluindo esquemas de componentes, comandos CLI e ferramentas de desenvolvimento.

14 

15Um **plugin** é um diretório independente de componentes que estende o Claude Code com funcionalidade personalizada. Os componentes do plugin incluem skills, agents, hooks, servidores MCP, servidores LSP e monitors.

16 

17## Referência de componentes de plugin

18 

19### Skills

20 

21Os plugins adicionam skills ao Claude Code, criando atalhos `/name` que você ou Claude podem invocar.

22 

23**Localização**: Diretório `skills/` ou `commands/` na raiz do plugin

24 

25**Formato de arquivo**: Skills são diretórios com `SKILL.md`; comandos são arquivos markdown simples

26 

27**Estrutura de skill**:

28 

29```text theme={null}

30skills/

31├── pdf-processor/

32│ ├── SKILL.md

33│ ├── reference.md (opcional)

34│ └── scripts/ (opcional)

35└── code-reviewer/

36 └── SKILL.md

37```

38 

39**Comportamento de integração**:

40 

41* Skills e comandos são descobertos automaticamente quando o plugin é instalado

42* Claude pode invocá-los automaticamente com base no contexto da tarefa

43* Skills podem incluir arquivos de suporte ao lado de SKILL.md

44 

45Para detalhes completos, veja [Skills](/pt/skills).

46 

47### Agents

48 

49Os plugins podem fornecer subagents especializados para tarefas específicas que Claude pode invocar automaticamente quando apropriado.

50 

51**Localização**: Diretório `agents/` na raiz do plugin

52 

53**Formato de arquivo**: Arquivos markdown descrevendo capacidades do agent

54 

55**Estrutura de agent**:

56 

57```markdown theme={null}

58---

59name: agent-name

60description: No que este agent se especializa e quando Claude deve invocá-lo

61model: sonnet

62effort: medium

63maxTurns: 20

64disallowedTools: Write, Edit

65---

66 

67Prompt de sistema detalhado para o agent descrevendo seu papel, expertise e comportamento.

68```

69 

70Os agents de plugin suportam campos frontmatter `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background` e `isolation`. O único valor válido de `isolation` é `"worktree"`. Por razões de segurança, `hooks`, `mcpServers` e `permissionMode` não são suportados para agents fornecidos por plugin.

71 

72**Pontos de integração**:

73 

74* Agents aparecem na interface `/agents`

75* Claude pode invocar agents automaticamente com base no contexto da tarefa

76* Agents podem ser invocados manualmente por usuários

77* Agents de plugin funcionam ao lado de agents Claude integrados

78 

79Para detalhes completos, veja [Subagents](/pt/sub-agents).

80 

81### Hooks

82 

83Os plugins podem fornecer manipuladores de eventos que respondem a eventos do Claude Code automaticamente.

84 

85**Localização**: `hooks/hooks.json` na raiz do plugin, ou inline em plugin.json

86 

87**Formato**: Configuração JSON com matchers de eventos e ações

88 

89**Configuração de hook**:

90 

91```json theme={null}

92{

93 "hooks": {

94 "PostToolUse": [

95 {

96 "matcher": "Write|Edit",

97 "hooks": [

98 {

99 "type": "command",

100 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"

101 }

102 ]

103 }

104 ]

105 }

106}

107```

108 

109Os hooks de plugin respondem aos mesmos eventos de ciclo de vida que [hooks definidos pelo usuário](/pt/hooks):

110 

111| Event | When it fires |

112| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

113| `SessionStart` | When a session begins or resumes |

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

115| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

116| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

117| `PreToolUse` | Before a tool call executes. Can block it |

118| `PermissionRequest` | When a permission dialog appears |

119| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

120| `PostToolUse` | After a tool call succeeds |

121| `PostToolUseFailure` | After a tool call fails |

122| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

123| `Notification` | When Claude Code sends a notification |

124| `SubagentStart` | When a subagent is spawned |

125| `SubagentStop` | When a subagent finishes |

126| `TaskCreated` | When a task is being created via `TaskCreate` |

127| `TaskCompleted` | When a task is being marked as completed |

128| `Stop` | When Claude finishes responding |

129| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

130| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

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

132| `ConfigChange` | When a configuration file changes during a session |

133| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

134| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

135| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

136| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

137| `PreCompact` | Before context compaction |

138| `PostCompact` | After context compaction completes |

139| `Elicitation` | When an MCP server requests user input during a tool call |

140| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

141| `SessionEnd` | When a session terminates |

142 

143**Tipos de hook**:

144 

145* `command`: executar comandos shell ou scripts

146* `http`: enviar o JSON do evento como uma solicitação POST para uma URL

147* `mcp_tool`: chamar uma ferramenta em um servidor [MCP](/pt/mcp) configurado

148* `prompt`: avaliar um prompt com um LLM (usa placeholder `$ARGUMENTS` para contexto)

149* `agent`: executar um verificador agentic com ferramentas para tarefas de verificação complexas

150 

151### MCP servers

152 

153Os plugins podem agrupar servidores Model Context Protocol (MCP) para conectar Claude Code com ferramentas e serviços externos.

154 

155**Localização**: `.mcp.json` na raiz do plugin, ou inline em plugin.json

156 

157**Formato**: Configuração padrão de servidor MCP

158 

159**Configuração de servidor MCP**:

160 

161```json theme={null}

162{

163 "mcpServers": {

164 "plugin-database": {

165 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

166 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

167 "env": {

168 "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"

169 }

170 },

171 "plugin-api-client": {

172 "command": "npx",

173 "args": ["@company/mcp-server", "--plugin-mode"],

174 "cwd": "${CLAUDE_PLUGIN_ROOT}"

175 }

176 }

177}

178```

179 

180**Comportamento de integração**:

181 

182* Servidores MCP de plugin iniciam automaticamente quando o plugin é habilitado

183* Servidores aparecem como ferramentas MCP padrão no kit de ferramentas de Claude

184* Capacidades do servidor se integram perfeitamente com as ferramentas existentes de Claude

185* Servidores de plugin podem ser configurados independentemente de servidores MCP do usuário

186 

187### LSP servers

188 

189<Tip>

190 Procurando usar plugins LSP? Instale-os do marketplace oficial: procure por "lsp" na aba Discover do `/plugin`. Esta seção documenta como criar plugins LSP para linguagens não cobertas pelo marketplace oficial.

191</Tip>

192 

193Os plugins podem fornecer servidores [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) para dar a Claude inteligência de código em tempo real enquanto trabalha em seu codebase.

194 

195A integração LSP fornece:

196 

197* **Diagnósticos instantâneos**: Claude vê erros e avisos imediatamente após cada edição

198* **Navegação de código**: ir para definição, encontrar referências e informações de hover

199* **Consciência de linguagem**: informações de tipo e documentação para símbolos de código

200 

201**Localização**: `.lsp.json` na raiz do plugin, ou inline em `plugin.json`

202 

203**Formato**: Configuração JSON mapeando nomes de servidores de linguagem para suas configurações

204 

205**Formato de arquivo `.lsp.json`**:

206 

207```json theme={null}

208{

209 "go": {

210 "command": "gopls",

211 "args": ["serve"],

212 "extensionToLanguage": {

213 ".go": "go"

214 }

215 }

216}

217```

218 

219**Inline em `plugin.json`**:

220 

221```json theme={null}

222{

223 "name": "my-plugin",

224 "lspServers": {

225 "go": {

226 "command": "gopls",

227 "args": ["serve"],

228 "extensionToLanguage": {

229 ".go": "go"

230 }

231 }

232 }

233}

234```

235 

236**Campos obrigatórios:**

237 

238| Campo | Descrição |

239| :-------------------- | :------------------------------------------------------------ |

240| `command` | O binário LSP a executar (deve estar em PATH) |

241| `extensionToLanguage` | Mapeia extensões de arquivo para identificadores de linguagem |

242 

243**Campos opcionais:**

244 

245| Campo | Descrição |

246| :---------------------- | :------------------------------------------------------------------- |

247| `args` | Argumentos de linha de comando para o servidor LSP |

248| `transport` | Transporte de comunicação: `stdio` (padrão) ou `socket` |

249| `env` | Variáveis de ambiente a definir ao iniciar o servidor |

250| `initializationOptions` | Opções passadas ao servidor durante a inicialização |

251| `settings` | Configurações passadas via `workspace/didChangeConfiguration` |

252| `workspaceFolder` | Caminho da pasta de workspace para o servidor |

253| `startupTimeout` | Tempo máximo para aguardar inicialização do servidor (milissegundos) |

254| `shutdownTimeout` | Tempo máximo para aguardar encerramento gracioso (milissegundos) |

255| `restartOnCrash` | Se deve reiniciar automaticamente o servidor se ele falhar |

256| `maxRestarts` | Número máximo de tentativas de reinicialização antes de desistir |

257 

258<Warning>

259 **Você deve instalar o binário do servidor de linguagem separadamente.** Plugins LSP configuram como Claude Code se conecta a um servidor de linguagem, mas não incluem o servidor em si. Se você vir `Executable not found in $PATH` na aba Errors do `/plugin`, instale o binário necessário para sua linguagem.

260</Warning>

261 

262**Plugins LSP disponíveis:**

263 

264| Plugin | Servidor de linguagem | Comando de instalação |

265| :--------------- | :------------------------- | :------------------------------------------------------------------------------------------- |

266| `pyright-lsp` | Pyright (Python) | `pip install pyright` ou `npm install -g pyright` |

267| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |

268| `rust-lsp` | rust-analyzer | [Veja instalação de rust-analyzer](https://rust-analyzer.github.io/manual.html#installation) |

269 

270Instale o servidor de linguagem primeiro, depois instale o plugin do marketplace.

271 

272### Monitors

273 

274Os plugins podem declarar monitors de fundo que Claude Code inicia automaticamente quando o plugin está ativo. Cada monitor executa um comando shell pela duração da sessão e entrega cada linha stdout a Claude como uma notificação, para que Claude possa reagir a entradas de log, mudanças de status ou eventos pesquisados sem ser solicitado a iniciar o watch em si.

275 

276Os monitors de plugin usam o mesmo mecanismo que a [ferramenta Monitor](/pt/tools-reference#monitor-tool) e compartilham suas restrições de disponibilidade. Eles são executados apenas em sessões CLI interativas, executados sem sandbox no mesmo nível de confiança que [hooks](#hooks), e são ignorados em hosts onde a ferramenta Monitor não está disponível.

277 

278<Note>

279 Os monitors de plugin requerem Claude Code v2.1.105 ou posterior.

280</Note>

281 

282**Localização**: `monitors/monitors.json` na raiz do plugin, ou inline em `plugin.json`

283 

284**Formato**: Array JSON de entradas de monitor

285 

286O seguinte `monitors/monitors.json` monitora um endpoint de status de implantação e um log de erro local:

287 

288```json theme={null}

289[

290 {

291 "name": "deploy-status",

292 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/poll-deploy.sh ${user_config.api_endpoint}",

293 "description": "Mudanças de status de implantação"

294 },

295 {

296 "name": "error-log",

297 "command": "tail -F ./logs/error.log",

298 "description": "Log de erro da aplicação",

299 "when": "on-skill-invoke:debug"

300 }

301]

302```

303 

304Para declarar monitors inline, defina a chave `monitors` em `plugin.json` para o mesmo array. Para carregar de um caminho não padrão, defina `monitors` para uma string de caminho relativo como `"./config/monitors.json"`.

305 

306**Campos obrigatórios:**

307 

308| Campo | Descrição |

309| :------------ | :----------------------------------------------------------------------------------------------------------------------------- |

310| `name` | Identificador único dentro do plugin. Previne processos duplicados quando o plugin recarrega ou uma skill é invocada novamente |

311| `command` | Comando shell executado como um processo de fundo persistente no diretório de trabalho da sessão |

312| `description` | Resumo breve do que está sendo monitorado. Mostrado no painel de tarefas e em resumos de notificação |

313 

314**Campos opcionais:**

315 

316| Campo | Descrição |

317| :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

318| `when` | Controla quando o monitor inicia. `"always"` o inicia no início da sessão e no recarregamento do plugin, e é o padrão. `"on-skill-invoke:<skill-name>"` o inicia na primeira vez que a skill nomeada neste plugin é despachada |

319 

320O valor `command` suporta as mesmas [substituições de variáveis](#environment-variables) que configurações de servidor MCP e LSP: `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${user_config.*}` e qualquer `${ENV_VAR}` do ambiente. Prefixe o comando com `cd "${CLAUDE_PLUGIN_ROOT}" && ` se o script precisa ser executado do próprio diretório do plugin.

321 

322Desabilitar um plugin no meio da sessão não para monitors que já estão em execução. Eles param quando a sessão termina.

323 

324### Themes

325 

326Os plugins podem fornecer temas de cor que aparecem em `/theme` ao lado das predefinições integradas e dos temas locais do usuário. Um tema é um arquivo JSON em `themes/` com uma predefinição `base` e um mapa esparso `overrides` de tokens de cor.

327 

328```json theme={null}

329{

330 "name": "Dracula",

331 "base": "dark",

332 "overrides": {

333 "claude": "#bd93f9",

334 "error": "#ff5555",

335 "success": "#50fa7b"

336 }

337}

338```

339 

340Selecionar um tema de plugin persiste `custom:<plugin-name>:<slug>` na configuração do usuário. Temas de plugin são somente leitura; pressionar `Ctrl+E` em um em `/theme` o copia para `~/.claude/themes/` para que o usuário possa editar a cópia.

341 

342***

343 

344## Escopos de instalação de plugin

345 

346Quando você instala um plugin, você escolhe um **escopo** que determina onde o plugin está disponível e quem mais pode usá-lo:

347 

348| Escopo | Arquivo de configurações | Caso de uso |

349| :-------- | :------------------------------------------------------- | :--------------------------------------------------------- |

350| `user` | `~/.claude/settings.json` | Plugins pessoais disponíveis em todos os projetos (padrão) |

351| `project` | `.claude/settings.json` | Plugins de equipe compartilhados via controle de versão |

352| `local` | `.claude/settings.local.json` | Plugins específicos do projeto, gitignored |

353| `managed` | [Configurações gerenciadas](/pt/settings#settings-files) | Plugins gerenciados (somente leitura, apenas atualizar) |

354 

355Os plugins usam o mesmo sistema de escopo que outras configurações do Claude Code. Para instruções de instalação e flags de escopo, veja [Instalar plugins](/pt/discover-plugins#install-plugins). Para uma explicação completa de escopos, veja [Escopos de configuração](/pt/settings#configuration-scopes).

356 

357***

358 

359## Esquema de manifesto de plugin

360 

361O arquivo `.claude-plugin/plugin.json` define os metadados e configuração do seu plugin. Esta seção documenta todos os campos e opções suportados.

362 

363O manifesto é opcional. Se omitido, Claude Code descobre automaticamente componentes em [localizações padrão](#file-locations-reference) e deriva o nome do plugin do nome do diretório. Use um manifesto quando você precisar fornecer metadados ou caminhos de componentes personalizados.

364 

365### Esquema completo

366 

367```json theme={null}

368{

369 "name": "plugin-name",

370 "version": "1.2.0",

371 "description": "Brief plugin description",

372 "author": {

373 "name": "Author Name",

374 "email": "author@example.com",

375 "url": "https://github.com/author"

376 },

377 "homepage": "https://docs.example.com/plugin",

378 "repository": "https://github.com/author/plugin",

379 "license": "MIT",

380 "keywords": ["keyword1", "keyword2"],

381 "skills": "./custom/skills/",

382 "commands": ["./custom/commands/special.md"],

383 "agents": ["./custom/agents/reviewer.md"],

384 "hooks": "./config/hooks.json",

385 "mcpServers": "./mcp-config.json",

386 "outputStyles": "./styles/",

387 "themes": "./themes/",

388 "lspServers": "./.lsp.json",

389 "monitors": "./monitors.json",

390 "dependencies": [

391 "helper-lib",

392 { "name": "secrets-vault", "version": "~2.1.0" }

393 ]

394}

395```

396 

397### Campos obrigatórios

398 

399Se você incluir um manifesto, `name` é o único campo obrigatório.

400 

401| Campo | Tipo | Descrição | Exemplo |

402| :----- | :----- | :-------------------------------------------- | :------------------- |

403| `name` | string | Identificador único (kebab-case, sem espaços) | `"deployment-tools"` |

404 

405Este nome é usado para namespacing de componentes. Por exemplo, na UI, o agent `agent-creator` para o plugin com nome `plugin-dev` aparecerá como `plugin-dev:agent-creator`.

406 

407### Campos de metadados

408 

409| Campo | Tipo | Descrição | Exemplo |

410| :------------ | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

411| `$schema` | string | URL do JSON Schema para autocomplete e validação do editor. Claude Code ignora este campo no momento do carregamento. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

412| `version` | string | Opcional. Versão semântica. Definir isso fixa o plugin para essa string de versão, então os usuários só recebem atualizações quando você a incrementa. Se omitido, Claude Code volta para o SHA do commit git, então cada commit é tratado como uma nova versão. Se também definido na entrada do marketplace, `plugin.json` vence. Veja [Gerenciamento de versão](#version-management). | `"2.1.0"` |

413| `description` | string | Explicação breve do propósito do plugin | `"Deployment automation tools"` |

414| `author` | object | Informações do autor | `{"name": "Dev Team", "email": "dev@company.com"}` |

415| `homepage` | string | URL de documentação | `"https://docs.example.com"` |

416| `repository` | string | URL do código-fonte | `"https://github.com/user/plugin"` |

417| `license` | string | Identificador de licença | `"MIT"`, `"Apache-2.0"` |

418| `keywords` | array | Tags de descoberta | `["deployment", "ci-cd"]` |

419 

420### Campos de caminho de componente

421 

422| Campo | Tipo | Descrição | Exemplo |

423| :------------- | :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

424| `skills` | string\|array | Diretórios de skill personalizados contendo `<name>/SKILL.md` (substitui padrão `skills/`) | `"./custom/skills/"` |

425| `commands` | string\|array | Arquivos de skill `.md` planos personalizados ou diretórios (substitui padrão `commands/`) | `"./custom/cmd.md"` ou `["./cmd1.md"]` |

426| `agents` | string\|array | Arquivos de agent personalizados (substitui padrão `agents/`) | `"./custom/agents/reviewer.md"` |

427| `hooks` | string\|array\|object | Caminhos de configuração de hooks ou configuração inline | `"./my-extra-hooks.json"` |

428| `mcpServers` | string\|array\|object | Caminhos de configuração MCP ou configuração inline | `"./my-extra-mcp-config.json"` |

429| `outputStyles` | string\|array | Arquivos/diretórios de estilo de saída personalizados (substitui padrão `output-styles/`) | `"./styles/"` |

430| `themes` | string\|array | Arquivos/diretórios de tema de cor (substitui padrão `themes/`). Veja [Temas](#themes) | `"./themes/"` |

431| `lspServers` | string\|array\|object | Configurações [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"` |

432| `monitors` | string\|array | Configurações de [Monitor](/pt/tools-reference#monitor-tool) de fundo que iniciam automaticamente quando o plugin está ativo. Veja [Monitors](#monitors) | `"./monitors.json"` |

433| `userConfig` | object | Valores configuráveis pelo usuário solicitados no momento da habilitação. Veja [Configuração do usuário](#user-configuration) | Veja abaixo |

434| `channels` | array | Declarações de canal para injeção de mensagens (estilo Telegram, Slack, Discord). Veja [Canais](#channels) | Veja abaixo |

435| `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](/pt/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

436 

437### Configuração do usuário

438 

439O campo `userConfig` declara valores que Claude Code solicita ao usuário quando o plugin é habilitado. Use isso em vez de exigir que os usuários editem manualmente `settings.json`.

440 

441```json theme={null}

442{

443 "userConfig": {

444 "api_endpoint": {

445 "type": "string",

446 "title": "API endpoint",

447 "description": "O endpoint de API da sua equipe"

448 },

449 "api_token": {

450 "type": "string",

451 "title": "API token",

452 "description": "Token de autenticação de API",

453 "sensitive": true

454 }

455 }

456}

457```

458 

459As chaves devem ser identificadores válidos. Cada opção suporta estes campos:

460 

461| Campo | Obrigatório | Descrição |

462| :------------ | :---------- | :---------------------------------------------------------------------------------------------- |

463| `type` | Sim | Um de `string`, `number`, `boolean`, `directory`, ou `file` |

464| `title` | Sim | Rótulo mostrado no diálogo de configuração |

465| `description` | Sim | Texto de ajuda mostrado abaixo do campo |

466| `sensitive` | Não | Se `true`, mascara entrada e armazena o valor em armazenamento seguro em vez de `settings.json` |

467| `required` | Não | Se `true`, validação falha quando o campo está vazio |

468| `default` | Não | Valor usado quando o usuário não fornece nada |

469| `multiple` | Não | Para tipo `string`, permite um array de strings |

470| `min` / `max` | Não | Limites para tipo `number` |

471 

472Cada valor está disponível para substituição como `${user_config.KEY}` em configurações de servidor MCP e LSP, comandos de hook e comandos de monitor. Valores não sensíveis também podem ser substituídos em conteúdo de skill e agent. Todos os valores são exportados para subprocessos de plugin como variáveis de ambiente `CLAUDE_PLUGIN_OPTION_<KEY>`.

473 

474Valores não sensíveis são armazenados em `settings.json` sob `pluginConfigs[<plugin-id>].options`. Valores sensíveis vão para o chaveiro do sistema (ou `~/.claude/.credentials.json` onde o chaveiro não está disponível). O armazenamento em chaveiro é compartilhado com tokens OAuth e tem um limite total aproximado de 2 KB, então mantenha valores sensíveis pequenos.

475 

476### Canais

477 

478O campo `channels` permite que um plugin declare um ou mais canais de mensagem que injetam conteúdo na conversa. Cada canal se vincula a um servidor MCP que o plugin fornece.

479 

480```json theme={null}

481{

482 "channels": [

483 {

484 "server": "telegram",

485 "userConfig": {

486 "bot_token": {

487 "type": "string",

488 "title": "Bot token",

489 "description": "Token do bot Telegram",

490 "sensitive": true

491 },

492 "owner_id": {

493 "type": "string",

494 "title": "Owner ID",

495 "description": "Seu ID de usuário Telegram"

496 }

497 }

498 }

499 ]

500}

501```

502 

503O campo `server` é obrigatório e deve corresponder a uma chave em `mcpServers` do plugin. O `userConfig` opcional por canal usa o mesmo esquema que o campo de nível superior, permitindo que o plugin solicite tokens de bot ou IDs de proprietário quando o plugin é habilitado.

504 

505### Regras de comportamento de caminho

506 

507Para `skills`, `commands`, `agents`, `outputStyles`, `themes` e `monitors`, um caminho personalizado substitui o padrão. Se o manifesto especificar `skills`, o diretório padrão `skills/` não é verificado; se especificar `monitors`, o padrão `monitors/monitors.json` não é carregado. [Hooks](#hooks), [MCP servers](#mcp-servers) e [LSP servers](#lsp-servers) têm semântica diferente para lidar com múltiplas fontes.

508 

509* Todos os caminhos devem ser relativos à raiz do plugin e começar com `./`

510* Componentes de caminhos personalizados usam as mesmas regras de nomenclatura e namespacing

511* Múltiplos caminhos podem ser especificados como arrays

512* Para manter o diretório padrão e adicionar mais caminhos para skills, commands, agents ou output styles, inclua o padrão em seu array: `"skills": ["./skills/", "./extras/"]`

513* Quando um caminho de skill aponta para um diretório que contém um `SKILL.md` diretamente, por exemplo `"skills": ["./"]` apontando para a raiz do plugin, o campo frontmatter `name` em `SKILL.md` determina o nome de invocação da skill. Isso fornece um nome estável independentemente do diretório de instalação. Se `name` não estiver definido no frontmatter, o nome base do diretório é usado como fallback.

514 

515**Exemplos de caminho**:

516 

517```json theme={null}

518{

519 "commands": [

520 "./specialized/deploy.md",

521 "./utilities/batch-process.md"

522 ],

523 "agents": [

524 "./custom-agents/reviewer.md",

525 "./custom-agents/tester.md"

526 ]

527}

528```

529 

530### Variáveis de ambiente

531 

532Claude Code fornece duas variáveis para referenciar caminhos de plugin. Ambas são substituídas inline em qualquer lugar que apareçam em conteúdo de skill, conteúdo de agent, comandos de hook, comandos de monitor e configurações de servidor MCP ou LSP. Ambas também são exportadas como variáveis de ambiente para processos de hook e subprocessos de servidor MCP ou LSP.

533 

534**`${CLAUDE_PLUGIN_ROOT}`**: o caminho absoluto para o diretório de instalação do seu plugin. Use isso para referenciar scripts, binários e arquivos de configuração agrupados com o plugin. Este caminho muda quando o plugin é atualizado, então arquivos que você escreve aqui não sobrevivem a uma atualização.

535 

536**`${CLAUDE_PLUGIN_DATA}`**: um diretório persistente para estado do plugin que sobrevive a atualizações. Use isso para dependências instaladas como `node_modules` ou ambientes virtuais Python, código gerado, caches e quaisquer outros arquivos que devem persistir entre versões de plugin. O diretório é criado automaticamente na primeira vez que esta variável é referenciada.

537 

538```json theme={null}

539{

540 "hooks": {

541 "PostToolUse": [

542 {

543 "hooks": [

544 {

545 "type": "command",

546 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"

547 }

548 ]

549 }

550 ]

551 }

552}

553```

554 

555#### Diretório de dados persistente

556 

557O diretório `${CLAUDE_PLUGIN_DATA}` resolve para `~/.claude/plugins/data/{id}/`, onde `{id}` é o identificador do plugin com caracteres fora de `a-z`, `A-Z`, `0-9`, `_` e `-` substituídos por `-`. Para um plugin instalado como `formatter@my-marketplace`, o diretório é `~/.claude/plugins/data/formatter-my-marketplace/`.

558 

559Um uso comum é instalar dependências de linguagem uma vez e reutilizá-las em sessões e atualizações de plugin. Como o diretório de dados sobrevive a qualquer versão única de plugin, uma verificação de existência de diretório sozinha não pode detectar quando uma atualização muda o manifesto de dependência do plugin. O padrão recomendado compara o manifesto agrupado contra uma cópia no diretório de dados e reinstala quando diferem.

560 

561Este hook `SessionStart` instala `node_modules` na primeira execução e novamente sempre que uma atualização de plugin inclui um `package.json` alterado:

562 

563```json theme={null}

564{

565 "hooks": {

566 "SessionStart": [

567 {

568 "hooks": [

569 {

570 "type": "command",

571 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

572 }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580O `diff` sai com código diferente de zero quando a cópia armazenada está faltando ou difere da agrupada, cobrindo tanto a primeira execução quanto atualizações que mudam dependências. Se `npm install` falhar, o `rm` final remove o manifesto copiado para que a próxima sessão tente novamente.

581 

582Scripts agrupados em `${CLAUDE_PLUGIN_ROOT}` podem então executar contra o `node_modules` persistido:

583 

584```json theme={null}

585{

586 "mcpServers": {

587 "routines": {

588 "command": "node",

589 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

590 "env": {

591 "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"

592 }

593 }

594 }

595}

596```

597 

598O diretório de dados é deletado automaticamente quando você desinstala o plugin do último escopo onde está instalado. A interface `/plugin` mostra o tamanho do diretório e solicita confirmação antes de deletar. O CLI deleta por padrão; passe [`--keep-data`](#plugin-uninstall) para preservá-lo.

599 

600***

601 

602## Cache de plugin e resolução de arquivo

603 

604Os plugins são especificados de uma de duas maneiras:

605 

606* Através de `claude --plugin-dir`, pela duração de uma sessão.

607* Através de um marketplace, instalado para sessões futuras.

608 

609Para fins de segurança e verificação, Claude Code copia plugins do *marketplace* para o **cache de plugin** local do usuário (`~/.claude/plugins/cache`) em vez de usá-los no local. Entender esse comportamento é importante ao desenvolver plugins que referenciam arquivos externos.

610 

611Cada versão instalada é um diretório separado no cache. Quando você atualiza ou desinstala um plugin, o diretório de versão anterior é marcado como órfão e removido automaticamente 7 dias depois. O período de carência permite que sessões Claude Code concorrentes que já carregaram a versão antiga continuem funcionando sem erros.

612 

613As ferramentas Glob e Grep de Claude pulam diretórios de versão órfã durante buscas, então resultados de arquivo não incluem código de plugin desatualizado.

614 

615### Limitações de travessia de caminho

616 

617Plugins instalados não podem referenciar arquivos fora de seu diretório. Caminhos que atravessam fora da raiz do plugin (como `../shared-utils`) não funcionarão após a instalação porque esses arquivos externos não são copiados para o cache.

618 

619### Trabalhando com dependências externas

620 

621Se seu plugin precisa acessar arquivos fora de seu diretório, você pode criar links simbólicos para arquivos externos dentro de seu diretório de plugin. Links simbólicos são preservados no cache em vez de desreferenciados, e eles resolvem para seu alvo em tempo de execução. O seguinte comando cria um link de dentro de seu diretório de plugin para um local de utilitários compartilhados:

622 

623```bash theme={null}

624ln -s /path/to/shared-utils ./shared-utils

625```

626 

627Isso fornece flexibilidade enquanto mantém os benefícios de segurança do sistema de cache.

628 

629***

630 

631## Estrutura de diretório de plugin

632 

633### Layout de plugin padrão

634 

635Um plugin completo segue esta estrutura:

636 

637```text theme={null}

638enterprise-plugin/

639├── .claude-plugin/ # Diretório de metadados (opcional)

640│ └── plugin.json # manifesto de plugin

641├── skills/ # Skills

642│ ├── code-reviewer/

643│ │ └── SKILL.md

644│ └── pdf-processor/

645│ ├── SKILL.md

646│ └── scripts/

647├── commands/ # Skills como arquivos .md planos

648│ ├── status.md

649│ └── logs.md

650├── agents/ # Definições de subagent

651│ ├── security-reviewer.md

652│ ├── performance-tester.md

653│ └── compliance-checker.md

654├── output-styles/ # Definições de estilo de saída

655│ └── terse.md

656├── themes/ # Definições de tema de cor

657│ └── dracula.json

658├── monitors/ # Configurações de monitor de fundo

659│ └── monitors.json

660├── hooks/ # Configurações de hook

661│ ├── hooks.json # Configuração de hook principal

662│ └── security-hooks.json # Hooks adicionais

663├── bin/ # Executáveis de plugin adicionados a PATH

664│ └── my-tool # Invocável como comando bare na ferramenta Bash

665├── settings.json # Configurações padrão para o plugin

666├── .mcp.json # Definições de servidor MCP

667├── .lsp.json # Configurações de servidor LSP

668├── scripts/ # Scripts de hook e utilitário

669│ ├── security-scan.sh

670│ ├── format-code.py

671│ └── deploy.js

672├── LICENSE # Arquivo de licença

673└── CHANGELOG.md # Histórico de versão

674```

675 

676<Warning>

677 O diretório `.claude-plugin/` contém o arquivo `plugin.json`. Todos os outros diretórios (commands/, agents/, skills/, output-styles/, themes/, monitors/, hooks/) devem estar na raiz do plugin, não dentro de `.claude-plugin/`.

678</Warning>

679 

680### Referência de localizações de arquivo

681 

682| Componente | Localização padrão | Propósito |

683| :---------------- | :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

684| **Manifesto** | `.claude-plugin/plugin.json` | Metadados e configuração de plugin (opcional) |

685| **Skills** | `skills/` | Skills com estrutura `<name>/SKILL.md` |

686| **Commands** | `commands/` | Skills como arquivos Markdown planos. Use `skills/` para novos plugins |

687| **Agents** | `agents/` | Arquivos Markdown de Subagent |

688| **Output styles** | `output-styles/` | Definições de estilo de saída |

689| **Themes** | `themes/` | Definições de tema de cor |

690| **Hooks** | `hooks/hooks.json` | Configuração de hook |

691| **MCP servers** | `.mcp.json` | Definições de servidor MCP |

692| **LSP servers** | `.lsp.json` | Configurações de servidor de linguagem |

693| **Monitors** | `monitors/monitors.json` | Configurações de monitor de fundo |

694| **Executáveis** | `bin/` | Executáveis adicionados ao `PATH` da ferramenta Bash. Arquivos aqui são invocáveis como comandos bare em qualquer chamada de ferramenta Bash enquanto o plugin está habilitado |

695| **Configurações** | `settings.json` | Configuração padrão aplicada quando o plugin é habilitado. Atualmente apenas as chaves [`agent`](/pt/sub-agents) e [`subagentStatusLine`](/pt/statusline#subagent-status-lines) são suportadas |

696 

697***

698 

699## Referência de comandos CLI

700 

701Claude Code fornece comandos CLI para gerenciamento de plugin não interativo, útil para scripting e automação.

702 

703### plugin install

704 

705Instale um plugin dos marketplaces disponíveis.

706 

707```bash theme={null}

708claude plugin install <plugin> [options]

709```

710 

711**Argumentos:**

712 

713* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name` para um marketplace específico

714 

715**Opções:**

716 

717| Opção | Descrição | Padrão |

718| :-------------------- | :-------------------------------------------------- | :----- |

719| `-s, --scope <scope>` | Escopo de instalação: `user`, `project`, ou `local` | `user` |

720| `-h, --help` | Exibir ajuda para comando | |

721 

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

723 

724**Exemplos:**

725 

726```bash theme={null}

727# Instalar em escopo de usuário (padrão)

728claude plugin install formatter@my-marketplace

729 

730# Instalar em escopo de projeto (compartilhado com equipe)

731claude plugin install formatter@my-marketplace --scope project

732 

733# Instalar em escopo local (gitignored)

734claude plugin install formatter@my-marketplace --scope local

735```

736 

737### plugin uninstall

738 

739Remova um plugin instalado.

740 

741```bash theme={null}

742claude plugin uninstall <plugin> [options]

743```

744 

745**Argumentos:**

746 

747* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`

748 

749**Opções:**

750 

751| Opção | Descrição | Padrão |

752| :-------------------- | :------------------------------------------------------------------------------------------------------------- | :----- |

753| `-s, --scope <scope>` | Desinstalar do escopo: `user`, `project`, ou `local` | `user` |

754| `--keep-data` | Preservar o [diretório de dados persistente](#persistent-data-directory) do plugin | |

755| `--prune` | Também remover dependências auto-instaladas que nenhum outro plugin requer. Veja [plugin prune](#plugin-prune) | |

756| `-y, --yes` | Pular o prompt de confirmação `--prune`. Necessário quando stdin não é um TTY | |

757| `-h, --help` | Exibir ajuda para comando | |

758 

759**Aliases:** `remove`, `rm`

760 

761Por padrão, desinstalar do último escopo restante também deleta 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.

762 

763### plugin prune

764 

765Remova dependências de plugin auto-instaladas que não são mais necessárias por nenhum plugin instalado. Dependências que Claude Code puxou para satisfazer o campo [`dependencies`](/pt/plugin-dependencies) de outro plugin são removidas; plugins que você instalou diretamente nunca são tocados.

766 

767```bash theme={null}

768claude plugin prune [options]

769```

770 

771**Opções:**

772 

773| Opção | Descrição | Padrão |

774| :-------------------- | :------------------------------------------------------------------ | :----- |

775| `-s, --scope <scope>` | Limpar no escopo: `user`, `project`, ou `local` | `user` |

776| `--dry-run` | Listar o que seria removido sem remover nada | |

777| `-y, --yes` | Pular o prompt de confirmação. Necessário quando stdin não é um TTY | |

778| `-h, --help` | Exibir ajuda para comando | |

779 

780**Aliases:** `autoremove`

781 

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

783 

784<Note>

785 `claude plugin prune` requer Claude Code v2.1.121 ou posterior.

786</Note>

787 

788### plugin enable

789 

790Habilite um plugin desabilitado.

791 

792```bash theme={null}

793claude plugin enable <plugin> [options]

794```

795 

796**Argumentos:**

797 

798* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`

799 

800**Opções:**

801 

802| Opção | Descrição | Padrão |

803| :-------------------- | :--------------------------------------------------- | :----- |

804| `-s, --scope <scope>` | Escopo para habilitar: `user`, `project`, ou `local` | `user` |

805| `-h, --help` | Exibir ajuda para comando | |

806 

807### plugin disable

808 

809Desabilite um plugin sem desinstalá-lo.

810 

811```bash theme={null}

812claude plugin disable <plugin> [options]

813```

814 

815**Argumentos:**

816 

817* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`

818 

819**Opções:**

820 

821| Opção | Descrição | Padrão |

822| :-------------------- | :----------------------------------------------------- | :----- |

823| `-s, --scope <scope>` | Escopo para desabilitar: `user`, `project`, ou `local` | `user` |

824| `-h, --help` | Exibir ajuda para comando | |

825 

826### plugin update

827 

828Atualize um plugin para a versão mais recente.

829 

830```bash theme={null}

831claude plugin update <plugin> [options]

832```

833 

834**Argumentos:**

835 

836* `<plugin>`: Nome do plugin ou `plugin-name@marketplace-name`

837 

838**Opções:**

839 

840| Opção | Descrição | Padrão |

841| :-------------------- | :-------------------------------------------------------------- | :----- |

842| `-s, --scope <scope>` | Escopo para atualizar: `user`, `project`, `local`, ou `managed` | `user` |

843| `-h, --help` | Exibir ajuda para comando | |

844 

845***

846 

847### plugin list

848 

849Liste plugins instalados com sua versão, marketplace de origem e status de habilitação.

850 

851```bash theme={null}

852claude plugin list [options]

853```

854 

855**Opções:**

856 

857| Opção | Descrição | Padrão |

858| :------------ | :----------------------------------------------------------- | :----- |

859| `--json` | Saída como JSON | |

860| `--available` | Incluir plugins disponíveis de marketplaces. Requer `--json` | |

861| `-h, --help` | Exibir ajuda para comando | |

862 

863### plugin tag

864 

865Crie uma tag git de lançamento para o plugin no diretório atual. Execute de dentro da pasta do plugin. Veja [Tag plugin releases](/pt/plugin-dependencies#tag-plugin-releases-for-version-resolution).

866 

867```bash theme={null}

868claude plugin tag [options]

869```

870 

871**Opções:**

872 

873| Opção | Descrição | Padrão |

874| :------------ | :------------------------------------------------------------------------ | :----- |

875| `--push` | Enviar a tag para o remoto após criá-la | |

876| `--dry-run` | Imprimir o que seria marcado sem criar a tag | |

877| `-f, --force` | Criar a tag mesmo que a árvore de trabalho esteja suja ou a tag já exista | |

878| `-h, --help` | Exibir ajuda para comando | |

879 

880***

881 

882## Ferramentas de depuração e desenvolvimento

883 

884### Comandos de depuração

885 

886Use `claude --debug` para ver detalhes de carregamento de plugin:

887 

888Isso mostra:

889 

890* Quais plugins estão sendo carregados

891* Quaisquer erros em manifestos de plugin

892* Registro de skill, agent e hook

893* Inicialização de servidor MCP

894 

895### Problemas comuns

896 

897| Problema | Causa | Solução |

898| :---------------------------------- | :---------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

899| Plugin não carregando | `plugin.json` inválido | Execute `claude plugin validate` ou `/plugin validate` para verificar `plugin.json`, frontmatter de skill/agent/comando e `hooks/hooks.json` para erros de sintaxe e esquema |

900| Skills não aparecendo | Estrutura de diretório errada | Garanta `skills/` ou `commands/` na raiz do plugin, não dentro de `.claude-plugin/` |

901| Hooks não disparando | Script não executável | Execute `chmod +x script.sh` |

902| Servidor MCP falha | `${CLAUDE_PLUGIN_ROOT}` ausente | Use variável para todos os caminhos de plugin |

903| Erros de caminho | Caminhos absolutos usados | Todos os caminhos devem ser relativos e começar com `./` |

904| LSP `Executable not found in $PATH` | Servidor de linguagem não instalado | Instale o binário (ex: `npm install -g typescript-language-server typescript`) |

905 

906### Exemplos de mensagens de erro

907 

908**Erros de validação de manifesto**:

909 

910* `Invalid JSON syntax: Unexpected token } in JSON at position 142`: verificar vírgulas ausentes, vírgulas extras ou strings não citadas

911* `Plugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required`: um campo obrigatório está faltando

912* `Plugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...`: erro de sintaxe JSON

913 

914**Erros de carregamento de plugin**:

915 

916* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.`: caminho de comando existe mas não contém arquivos de comando válidos

917* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`: o caminho `source` em marketplace.json aponta para um diretório inexistente

918* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`: remover definições de componentes duplicadas ou remover `strict: false` na entrada do marketplace

919 

920### Solução de problemas de hook

921 

922**Script de hook não executando**:

923 

9241. Verificar se o script é executável: `chmod +x ./scripts/your-script.sh`

9252. Verificar a linha shebang: Primeira linha deve ser `#!/bin/bash` ou `#!/usr/bin/env bash`

9263. Verificar se o caminho usa `${CLAUDE_PLUGIN_ROOT}`: `"command": "${CLAUDE_PLUGIN_ROOT}/scripts/your-script.sh"`

9274. Testar o script manualmente: `./scripts/your-script.sh`

928 

929**Hook não disparando em eventos esperados**:

930 

9311. Verificar se o nome do evento está correto (sensível a maiúsculas): `PostToolUse`, não `postToolUse`

9322. Verificar se o padrão de matcher corresponde às suas ferramentas: `"matcher": "Write|Edit"` para operações de arquivo

9333. Confirmar se o tipo de hook é válido: `command`, `http`, `mcp_tool`, `prompt`, ou `agent`

934 

935### Solução de problemas de servidor MCP

936 

937**Servidor não iniciando**:

938 

9391. Verificar se o comando existe e é executável

9402. Verificar se todos os caminhos usam variável `${CLAUDE_PLUGIN_ROOT}`

9413. Verificar os logs do servidor MCP: `claude --debug` mostra erros de inicialização

9424. Testar o servidor manualmente fora do Claude Code

943 

944**Ferramentas do servidor não aparecendo**:

945 

9461. Garantir que o servidor está adequadamente configurado em `.mcp.json` ou `plugin.json`

9472. Verificar se o servidor implementa o protocolo MCP corretamente

9483. Verificar timeouts de conexão na saída de depuração

949 

950### Erros de estrutura de diretório

951 

952**Sintomas**: Plugin carrega mas componentes (skills, agents, hooks) estão faltando.

953 

954**Estrutura correta**: Componentes devem estar na raiz do plugin, não dentro de `.claude-plugin/`. Apenas `plugin.json` pertence em `.claude-plugin/`.

955 

956```text theme={null}

957my-plugin/

958├── .claude-plugin/

959│ └── plugin.json ← Apenas manifesto aqui

960├── commands/ ← No nível raiz

961├── agents/ ← No nível raiz

962└── hooks/ ← No nível raiz

963```

964 

965Se seus componentes estão dentro de `.claude-plugin/`, mova-os para a raiz do plugin.

966 

967**Checklist de depuração**:

968 

9691. Executar `claude --debug` e procurar por mensagens "loading plugin"

9702. Verificar se cada diretório de componente está listado na saída de depuração

9713. Verificar se as permissões de arquivo permitem ler os arquivos de plugin

972 

973***

974 

975## Referência de distribuição e versionamento

976 

977### Gerenciamento de versão

978 

979Claude Code usa a versão do plugin como a chave de cache que determina se uma atualização está disponível. Quando você executa `/plugin update` ou a atualização automática é acionada, Claude Code calcula a versão atual e ignora a atualização se ela corresponder ao que já está instalado.

980 

981A versão é resolvida a partir do primeiro destes que está definido:

982 

9831. O campo `version` no `plugin.json` do plugin

9842. O campo `version` na entrada do marketplace do plugin em `marketplace.json`

9853. O SHA do commit git do plugin, para fontes `github`, `url`, `git-subdir` e relative-path em um marketplace hospedado em git

9864. `unknown`, para fontes `npm` ou diretórios locais não dentro de um repositório git

987 

988Isso oferece duas maneiras de versionar um plugin:

989 

990| Abordagem | Como | Comportamento de atualização | Melhor para |

991| :----------------------- | :---------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- |

992| **Versão explícita** | Defina `"version": "2.1.0"` em `plugin.json` | Os usuários recebem atualizações apenas quando você aumenta este campo. Enviar novos commits sem aumentá-lo não tem efeito, e `/plugin update` relata "já está na versão mais recente". | Plugins publicados com ciclos de lançamento estáveis |

993| **Versão SHA do commit** | Omita `version` tanto de `plugin.json` quanto da entrada do marketplace | Os usuários recebem atualizações em cada novo commit para a fonte git do plugin | Plugins internos ou de equipe em desenvolvimento ativo |

994 

995<Warning>

996 Se você definir `version` em `plugin.json`, você deve aumentá-lo toda vez que quiser que os usuários recebam alterações. Enviar novos commits sozinho não é suficiente, porque Claude Code vê a mesma string de versão e mantém a cópia em cache. Se você está iterando rapidamente, deixe `version` indefinido para que o SHA do commit git seja usado em vez disso.

997</Warning>

998 

999Se você usar versões explícitas, siga [versionamento semântico](https://semver.org) (`MAJOR.MINOR.PATCH`): aumente MAJOR para mudanças de quebra, MINOR para novos recursos, PATCH para correções de bugs. Documente as alterações em um `CHANGELOG.md`.

1000 

1001***

1002 

1003## Veja também

1004 

1005* [Plugins](/pt/plugins) - Tutoriais e uso prático

1006* [Marketplaces de plugins](/pt/plugin-marketplaces) - Criando e gerenciando marketplaces

1007* [Skills](/pt/skills) - Detalhes de desenvolvimento de skill

1008* [Subagents](/pt/sub-agents) - Configuração e capacidades de agent

1009* [Hooks](/pt/hooks) - Manipulação de eventos e automação

1010* [MCP](/pt/mcp) - Integração de ferramenta externa

1011* [Configurações](/pt/settings) - Opções de configuração para plugins

quickstart.md +976 −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# Guia de Início Rápido

6 

7> Bem-vindo ao Claude Code!

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Este guia de início rápido o colocará usando assistência de codificação alimentada por IA em poucos minutos. Ao final, você entenderá como usar Claude Code para tarefas comuns de desenvolvimento.

640 

641<Experiment flag="quickstart-install-configurator" treatment={<InstallConfigurator />} />

642 

643## Antes de começar

644 

645Certifique-se de que você tem:

646 

647* Um terminal ou prompt de comando aberto

648 * Se você nunca usou o terminal antes, confira o [guia de terminal](/pt/terminal-guide)

649* Um projeto de código para trabalhar

650* Uma [assinatura Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Teams ou Enterprise), conta do [Claude Console](https://console.anthropic.com/), ou acesso através de um [provedor de nuvem suportado](/pt/third-party-integrations)

651 

652<Note>

653 Este guia cobre o CLI do terminal. Claude Code também está disponível na [web](https://claude.ai/code), como um [aplicativo de desktop](/pt/desktop), em [VS Code](/pt/vs-code) e [IDEs JetBrains](/pt/jetbrains), no [Slack](/pt/slack), e em CI/CD com [GitHub Actions](/pt/github-actions) e [GitLab](/pt/gitlab-ci-cd). Veja [todas as interfaces](/pt/overview#use-claude-code-everywhere).

654</Note>

655 

656## Passo 1: Instale Claude Code

657 

658To install Claude Code, use one of the following methods:

659 

660<Tabs>

661 <Tab title="Native Install (Recommended)">

662 **macOS, Linux, WSL:**

663 

664 ```bash theme={null}

665 curl -fsSL https://claude.ai/install.sh | bash

666 ```

667 

668 **Windows PowerShell:**

669 

670 ```powershell theme={null}

671 irm https://claude.ai/install.ps1 | iex

672 ```

673 

674 **Windows CMD:**

675 

676 ```batch theme={null}

677 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

678 ```

679 

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

681 

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

683 

684 <Info>

685 Native installations automatically update in the background to keep you on the latest version.

686 </Info>

687 </Tab>

688 

689 <Tab title="Homebrew">

690 ```bash theme={null}

691 brew install --cask claude-code

692 ```

693 

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

695 

696 <Info>

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

698 </Info>

699 </Tab>

700 

701 <Tab title="WinGet">

702 ```powershell theme={null}

703 winget install Anthropic.ClaudeCode

704 ```

705 

706 <Info>

707 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

708 </Info>

709 </Tab>

710</Tabs>

711 

712You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

713 

714## Passo 2: Faça login em sua conta

715 

716Claude Code requer uma conta para usar. Quando você inicia uma sessão interativa com o comando `claude`, você precisará fazer login:

717 

718```bash theme={null}

719claude

720# Você será solicitado a fazer login no primeiro uso

721```

722 

723```bash theme={null}

724/login

725# Siga os prompts para fazer login com sua conta

726```

727 

728Você pode fazer login usando qualquer um destes tipos de conta:

729 

730* [Claude Pro, Max, Teams ou Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (recomendado)

731* [Claude Console](https://console.anthropic.com/) (acesso à API com créditos pré-pagos). No primeiro login, um workspace "Claude Code" é criado automaticamente no Console para rastreamento centralizado de custos.

732* [Amazon Bedrock, Google Vertex AI ou Microsoft Foundry](/pt/third-party-integrations) (provedores de nuvem empresariais)

733 

734Depois de fazer login, suas credenciais são armazenadas e você não precisará fazer login novamente. Para trocar de conta mais tarde, use o comando `/login`.

735 

736## Passo 3: Inicie sua primeira sessão

737 

738Abra seu terminal em qualquer diretório de projeto e inicie Claude Code:

739 

740```bash theme={null}

741cd /path/to/your/project

742claude

743```

744 

745Você verá a tela de boas-vindas do Claude Code com as informações da sua sessão, conversas recentes e atualizações mais recentes. Digite `/help` para comandos disponíveis ou `/resume` para continuar uma conversa anterior.

746 

747<Tip>

748 Depois de fazer login (Passo 2), suas credenciais são armazenadas em seu sistema. Saiba mais em [Gerenciamento de Credenciais](/pt/authentication#credential-management).

749</Tip>

750 

751## Passo 4: Faça sua primeira pergunta

752 

753Vamos começar entendendo sua base de código. Tente um destes comandos:

754 

755```text theme={null}

756what does this project do?

757```

758 

759Claude analisará seus arquivos e fornecerá um resumo. Você também pode fazer perguntas mais específicas:

760 

761```text theme={null}

762what technologies does this project use?

763```

764 

765```text theme={null}

766where is the main entry point?

767```

768 

769```text theme={null}

770explain the folder structure

771```

772 

773Você também pode perguntar ao Claude sobre suas próprias capacidades:

774 

775```text theme={null}

776what can Claude Code do?

777```

778 

779```text theme={null}

780how do I create custom skills in Claude Code?

781```

782 

783```text theme={null}

784can Claude Code work with Docker?

785```

786 

787<Note>

788 Claude Code lê seus arquivos de projeto conforme necessário. Você não precisa adicionar contexto manualmente.

789</Note>

790 

791## Passo 5: Faça sua primeira alteração de código

792 

793Agora vamos fazer Claude Code fazer alguma codificação real. Tente uma tarefa simples:

794 

795```text theme={null}

796add a hello world function to the main file

797```

798 

799Claude Code irá:

800 

8011. Encontrar o arquivo apropriado

8022. Mostrar as alterações propostas

8033. Pedir sua aprovação

8044. Fazer a edição

805 

806<Note>

807 Claude Code sempre pede permissão antes de modificar arquivos. Você pode aprovar alterações individuais ou ativar o modo "Aceitar tudo" para uma sessão.

808</Note>

809 

810## Passo 6: Use Git com Claude Code

811 

812Claude Code torna as operações Git conversacionais:

813 

814```text theme={null}

815what files have I changed?

816```

817 

818```text theme={null}

819commit my changes with a descriptive message

820```

821 

822Você também pode solicitar operações Git mais complexas:

823 

824```text theme={null}

825create a new branch called feature/quickstart

826```

827 

828```text theme={null}

829show me the last 5 commits

830```

831 

832```text theme={null}

833help me resolve merge conflicts

834```

835 

836## Passo 7: Corrija um bug ou adicione um recurso

837 

838Claude é proficiente em depuração e implementação de recursos.

839 

840Descreva o que você quer em linguagem natural:

841 

842```text theme={null}

843add input validation to the user registration form

844```

845 

846Ou corrija problemas existentes:

847 

848```text theme={null}

849there's a bug where users can submit empty forms - fix it

850```

851 

852Claude Code irá:

853 

854* Localizar o código relevante

855* Entender o contexto

856* Implementar uma solução

857* Executar testes se disponíveis

858 

859## Passo 8: Teste outros fluxos de trabalho comuns

860 

861Existem várias maneiras de trabalhar com Claude:

862 

863**Refatore código**

864 

865```text theme={null}

866refactor the authentication module to use async/await instead of callbacks

867```

868 

869**Escreva testes**

870 

871```text theme={null}

872write unit tests for the calculator functions

873```

874 

875**Atualize documentação**

876 

877```text theme={null}

878update the README with installation instructions

879```

880 

881**Revisão de código**

882 

883```text theme={null}

884review my changes and suggest improvements

885```

886 

887<Tip>

888 Fale com Claude como você falaria com um colega prestativo. Descreva o que você quer alcançar, e ele o ajudará a chegar lá.

889</Tip>

890 

891## Comandos essenciais

892 

893Aqui estão os comandos mais importantes para uso diário:

894 

895| Comando | O que faz | Exemplo |

896| ------------------- | -------------------------------------------------- | ----------------------------------- |

897| `claude` | Iniciar modo interativo | `claude` |

898| `claude "task"` | Executar uma tarefa única | `claude "fix the build error"` |

899| `claude -p "query"` | Executar consulta única, depois sair | `claude -p "explain this function"` |

900| `claude -c` | Continuar conversa mais recente no diretório atual | `claude -c` |

901| `claude -r` | Retomar uma conversa anterior | `claude -r` |

902| `claude commit` | Criar um commit Git | `claude commit` |

903| `/clear` | Limpar histórico de conversa | `/clear` |

904| `/help` | Mostrar comandos disponíveis | `/help` |

905| `exit` ou Ctrl+C | Sair do Claude Code | `exit` |

906 

907Veja a [referência CLI](/pt/cli-reference) para uma lista completa de comandos.

908 

909## Dicas profissionais para iniciantes

910 

911Para mais, veja [melhores práticas](/pt/best-practices) e [fluxos de trabalho comuns](/pt/common-workflows).

912 

913<AccordionGroup>

914 <Accordion title="Seja específico com seus pedidos">

915 Em vez de: "fix the bug"

916 

917 Tente: "fix the login bug where users see a blank screen after entering wrong credentials"

918 </Accordion>

919 

920 <Accordion title="Use instruções passo a passo">

921 Divida tarefas complexas em etapas:

922 

923 ```text theme={null}

924 1. create a new database table for user profiles

925 2. create an API endpoint to get and update user profiles

926 3. build a webpage that allows users to see and edit their information

927 ```

928 </Accordion>

929 

930 <Accordion title="Deixe Claude explorar primeiro">

931 Antes de fazer alterações, deixe Claude entender seu código:

932 

933 ```text theme={null}

934 analyze the database schema

935 ```

936 

937 ```text theme={null}

938 build a dashboard showing products that are most frequently returned by our UK customers

939 ```

940 </Accordion>

941 

942 <Accordion title="Economize tempo com atalhos">

943 * Pressione `?` para ver todos os atalhos de teclado disponíveis

944 * Use Tab para conclusão de comando

945 * Pressione ↑ para histórico de comando

946 * Digite `/` para ver todos os comandos e skills

947 </Accordion>

948</AccordionGroup>

949 

950## Próximos passos

951 

952Agora que você aprendeu o básico, explore recursos mais avançados:

953 

954<CardGroup cols={2}>

955 <Card title="Como Claude Code funciona" icon="microchip" href="/pt/how-claude-code-works">

956 Entenda o loop agêntico, ferramentas integradas e como Claude Code interage com seu projeto

957 </Card>

958 

959 <Card title="Melhores práticas" icon="star" href="/pt/best-practices">

960 Obtenha melhores resultados com prompting eficaz e configuração de projeto

961 </Card>

962 

963 <Card title="Fluxos de trabalho comuns" icon="graduation-cap" href="/pt/common-workflows">

964 Guias passo a passo para tarefas comuns

965 </Card>

966 

967 <Card title="Estenda Claude Code" icon="puzzle-piece" href="/pt/features-overview">

968 Personalize com CLAUDE.md, skills, hooks, MCP e muito mais

969 </Card>

970</CardGroup>

971 

972## Obtendo ajuda

973 

974* **Em Claude Code**: Digite `/help` ou pergunte "how do I..."

975* **Documentação**: Você está aqui! Navegue por outros guias

976* **Comunidade**: Junte-se ao nosso [Discord](https://www.anthropic.com/discord) para dicas e suporte

remote-control.md +259 −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# Continue sessões locais de qualquer dispositivo com Remote Control

6 

7> Continue uma sessão local do Claude Code do seu telefone, tablet ou qualquer navegador usando Remote Control. Funciona com claude.ai/code e o aplicativo Claude para dispositivos móveis.

8 

9<Note>

10 Remote Control está em visualização de pesquisa e disponível em todos os planos. Em Team e Enterprise, ele fica desativado por padrão até que um administrador ative o toggle Remote Control nas [configurações de administrador do Claude Code](https://claude.ai/admin-settings/claude-code).

11</Note>

12 

13Remote Control conecta [claude.ai/code](https://claude.ai/code) ou o 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) a uma sessão do Claude Code em execução na sua máquina. Inicie uma tarefa na sua mesa, depois continue a partir do seu telefone no sofá ou de um navegador em outro computador.

14 

15Quando você inicia uma sessão de Remote Control na sua máquina, Claude continua executando localmente o tempo todo, portanto nada se move para a nuvem. Com Remote Control você pode:

16 

17* **Usar seu ambiente local completo remotamente**: seu sistema de arquivos, [MCP servers](/pt/mcp), ferramentas e configuração do projeto permanecem disponíveis, e digitar `@` autocompleta caminhos de arquivo do seu projeto local

18* **Trabalhar em ambas as superfícies ao mesmo tempo**: a conversa permanece sincronizada em todos os dispositivos conectados, para que você possa enviar mensagens do seu terminal, navegador e telefone de forma intercambiável

19* **Sobreviver a interrupções**: se seu laptop dormir ou sua rede cair, a sessão se reconecta automaticamente quando sua máquina voltar a ficar online

20 

21Diferentemente do [Claude Code na web](/pt/claude-code-on-the-web), que é executado em infraestrutura em nuvem, as sessões de Remote Control são executadas diretamente na sua máquina e interagem com seu sistema de arquivos local. As interfaces web e móvel são apenas uma janela para essa sessão local.

22 

23<Note>

24 Remote Control requer Claude Code v2.1.51 ou posterior. Verifique sua versão com `claude --version`.

25</Note>

26 

27Esta página aborda a configuração, como iniciar e conectar a sessões, e como Remote Control se compara ao Claude Code na web.

28 

29## Requisitos

30 

31Antes de usar Remote Control, confirme que seu ambiente atende a estas condições:

32 

33* **Assinatura**: disponível nos planos Pro, Max, Team e Enterprise. Chaves de API não são suportadas. Em Team e Enterprise, um administrador deve primeiro ativar o toggle Remote Control nas [configurações de administrador do Claude Code](https://claude.ai/admin-settings/claude-code).

34* **Autenticação**: execute `claude` e use `/login` para fazer login através de claude.ai se você ainda não fez isso.

35* **Confiança do workspace**: execute `claude` no diretório do seu projeto pelo menos uma vez para aceitar o diálogo de confiança do workspace.

36 

37## Inicie uma sessão de Remote Control

38 

39Você pode iniciar uma sessão de Remote Control a partir da CLI ou da extensão VS Code. A CLI oferece três modos de invocação; VS Code usa o comando `/remote-control`.

40 

41<Tabs>

42 <Tab title="Modo servidor">

43 Navegue até o diretório do seu projeto e execute:

44 

45 ```bash theme={null}

46 claude remote-control

47 ```

48 

49 O processo continua em execução no seu terminal em modo servidor, aguardando conexões remotas. Ele exibe uma URL de sessão que você pode usar para [conectar de outro dispositivo](#connect-from-another-device), e você pode pressionar a barra de espaço para mostrar um código QR para acesso rápido do seu telefone. Enquanto uma sessão remota está ativa, o terminal mostra o status da conexão e a atividade da ferramenta.

50 

51 Sinalizadores disponíveis:

52 

53 | Sinalizador | Descrição |

54 | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

55 | `--name "My Project"` | Define um título de sessão personalizado visível na lista de sessões em claude.ai/code. |

56 | `--remote-control-session-name-prefix <prefix>` | Prefixo para nomes de sessão gerados automaticamente quando nenhum nome explícito é definido. O padrão é o nome do host da sua máquina, produzindo nomes como `myhost-graceful-unicorn`. Defina `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` para o mesmo efeito. |

57 | `--spawn <mode>` | Como o servidor cria sessões.<br />• `same-dir` (padrão): todas as sessões compartilham o diretório de trabalho atual, portanto podem entrar em conflito se editarem os mesmos arquivos.<br />• `worktree`: cada sessão sob demanda obtém seu próprio [git worktree](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees). Requer um repositório git.<br />• `session`: modo de sessão única. Serve exatamente uma sessão e rejeita conexões adicionais. Definido apenas na inicialização.<br />Pressione `w` em tempo de execução para alternar entre `same-dir` e `worktree`. |

58 | `--capacity <N>` | Número máximo de sessões simultâneas. O padrão é 32. Não pode ser usado com `--spawn=session`. |

59 | `--verbose` | Mostra logs detalhados de conexão e sessão. |

60 | `--sandbox` / `--no-sandbox` | Ativa ou desativa [sandboxing](/pt/sandboxing) para isolamento de sistema de arquivos e rede. Desativado por padrão. |

61 </Tab>

62 

63 <Tab title="Sessão interativa">

64 Para iniciar uma sessão normal interativa do Claude Code com Remote Control ativado, use a flag `--remote-control` (ou `--rc`):

65 

66 ```bash theme={null}

67 claude --remote-control

68 ```

69 

70 Opcionalmente, passe um nome para a sessão:

71 

72 ```bash theme={null}

73 claude --remote-control "My Project"

74 ```

75 

76 Isso oferece uma sessão interativa completa no seu terminal que você também pode controlar a partir de claude.ai ou do aplicativo Claude. Diferentemente de `claude remote-control` (modo servidor), você pode digitar mensagens localmente enquanto a sessão também está disponível remotamente.

77 </Tab>

78 

79 <Tab title="De uma sessão existente">

80 Se você já está em uma sessão do Claude Code e deseja continuá-la remotamente, use o comando `/remote-control` (ou `/rc`):

81 

82 ```text theme={null}

83 /remote-control

84 ```

85 

86 Passe um nome como argumento para definir um título de sessão personalizado:

87 

88 ```text theme={null}

89 /remote-control My Project

90 ```

91 

92 Isso inicia uma sessão de Remote Control que carrega seu histórico de conversa atual e exibe uma URL de sessão e código QR que você pode usar para [conectar de outro dispositivo](#connect-from-another-device). As flags `--verbose`, `--sandbox` e `--no-sandbox` não estão disponíveis com este comando.

93 </Tab>

94 

95 <Tab title="VS Code">

96 Na [extensão VS Code do Claude Code](/pt/vs-code), digite `/remote-control` ou `/rc` na caixa de prompt, ou abra o menu de comandos com `/` e selecione-o. Requer Claude Code v2.1.79 ou posterior.

97 

98 ```text theme={null}

99 /remote-control

100 ```

101 

102 Um banner aparece acima da caixa de prompt mostrando o status da conexão. Uma vez conectado, clique em **Open in browser** no banner para ir diretamente para a sessão, ou encontre-a na lista de sessões em [claude.ai/code](https://claude.ai/code). A URL da sessão também é postada na conversa.

103 

104 Para desconectar, clique no ícone de fechar no banner ou execute `/remote-control` novamente.

105 

106 Diferentemente da CLI, o comando VS Code não aceita um argumento de nome ou exibe um código QR. O título da sessão é derivado do seu histórico de conversa ou primeiro prompt.

107 </Tab>

108</Tabs>

109 

110### Conectar de outro dispositivo

111 

112Depois que uma sessão de Remote Control está ativa, você tem algumas maneiras de conectar de outro dispositivo:

113 

114* **Abra a URL da sessão** em qualquer navegador para ir diretamente para a sessão em [claude.ai/code](https://claude.ai/code).

115* **Escaneie o código QR** mostrado ao lado da URL da sessão para abri-lo diretamente no aplicativo Claude. Com `claude remote-control`, pressione a barra de espaço para alternar a exibição do código QR.

116* **Abra [claude.ai/code](https://claude.ai/code) ou o aplicativo Claude** e encontre a sessão pelo nome na lista de sessões. As sessões de Remote Control mostram um ícone de computador com um ponto de status verde quando online.

117 

118O título da sessão remota é escolhido nesta ordem:

119 

1201. O nome que você passou para `--name`, `--remote-control` ou `/remote-control`

1212. O título que você definiu com `/rename`

1223. A última mensagem significativa no histórico de conversa existente

1234. Um nome gerado automaticamente como `myhost-graceful-unicorn`, onde `myhost` é o nome do host da sua máquina ou o prefixo que você definiu com `--remote-control-session-name-prefix`

124 

125Se você não definir um nome explícito, o título será atualizado para refletir seu prompt assim que você enviar um.

126 

127Se o ambiente já tiver uma sessão ativa, você será perguntado se deseja continuá-la ou iniciar uma nova.

128 

129Se você ainda não tem o aplicativo Claude, use o comando `/mobile` dentro do Claude Code para exibir um código QR de download 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).

130 

131### Ativar Remote Control para todas as sessões

132 

133Por padrão, Remote Control só é ativado quando você executa explicitamente `claude remote-control`, `claude --remote-control` ou `/remote-control`. Para ativá-lo automaticamente para cada sessão interativa, execute `/config` dentro do Claude Code e defina **Enable Remote Control for all sessions** como `true`. Defina-o de volta para `false` para desativar.

134 

135Com essa configuração ativada, cada processo interativo do Claude Code registra uma sessão remota. Se você executar várias instâncias, cada uma obtém seu próprio ambiente e sessão. Para executar várias sessões simultâneas a partir de um único processo, use o [modo servidor](#start-a-remote-control-session) em vez disso.

136 

137## Conexão e segurança

138 

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

140 

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

142 

143## Remote Control vs Claude Code na web

144 

145Remote Control e [Claude Code na web](/pt/claude-code-on-the-web) usam a interface claude.ai/code. A diferença fundamental é onde a sessão é executada: Remote Control é executado na sua máquina, portanto seus MCP servers locais, ferramentas e configuração do projeto permanecem disponíveis. Claude Code na web é executado em infraestrutura em nuvem gerenciada pela Anthropic.

146 

147Use Remote Control quando você está no meio do trabalho local e deseja continuar de outro dispositivo. Use Claude Code na web quando você deseja iniciar uma tarefa sem nenhuma configuração local, trabalhar em um repositório que você não tem clonado ou executar várias tarefas em paralelo.

148 

149## Notificações push móveis

150 

151Quando Remote Control está ativo, Claude pode enviar notificações push para seu telefone.

152 

153Claude decide quando fazer push. Normalmente envia uma quando uma tarefa de longa duração termina ou quando precisa de uma decisão sua para continuar. Você também pode solicitar um push em seu prompt, por exemplo `notify me when the tests finish`. Além do toggle on/off abaixo, não há configuração por evento.

154 

155<Note>

156 Notificações push móveis requerem Claude Code v2.1.110 ou posterior.

157</Note>

158 

159Para configurar notificações push móveis:

160 

161<Steps>

162 <Step title="Instale o aplicativo Claude para dispositivos móveis">

163 Baixe 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).

164 </Step>

165 

166 <Step title="Faça login com sua conta do Claude Code">

167 Use a mesma conta e organização que você usa para Claude Code no terminal.

168 </Step>

169 

170 <Step title="Permita notificações">

171 Aceite o prompt de permissão de notificação do sistema operacional.

172 </Step>

173 

174 <Step title="Ative push no Claude Code">

175 No seu terminal, execute `/config` e ative **Push when Claude decides**.

176 </Step>

177</Steps>

178 

179Se as notificações não chegarem:

180 

181* Se `/config` mostrar **No mobile registered**, abra o aplicativo Claude no seu telefone para que ele possa atualizar seu token de push. O aviso desaparece na próxima vez que Remote Control se conectar.

182* No iOS, os modos Focus e resumos de notificações podem suprimir ou atrasar pushes. Verifique Configurações → Notificações → Claude.

183* No Android, a otimização agressiva de bateria pode atrasar a entrega. Isente o aplicativo Claude da otimização de bateria nas configurações do sistema.

184 

185## Limitações

186 

187* **Uma sessão remota por processo interativo**: fora do modo servidor, cada instância do Claude Code suporta uma sessão remota por vez. Use o [modo servidor](#start-a-remote-control-session) para executar várias sessões simultâneas a partir de um único processo.

188* **O processo local deve continuar em execução**: Remote Control é executado como um processo local. Se você fechar o terminal, sair do VS Code ou parar o processo `claude`, a sessão termina.

189* **Interrupção de rede estendida**: se sua máquina estiver ligada mas não conseguir alcançar a rede por mais de aproximadamente 10 minutos, a sessão expira e o processo sai. Execute `claude remote-control` novamente para iniciar uma nova sessão.

190* **Ultraplan desconecta Remote Control**: iniciar uma sessão [ultraplan](/pt/ultraplan) desconecta qualquer sessão de Remote Control ativa porque ambos os recursos ocupam a interface claude.ai/code e apenas um pode estar conectado por vez.

191* **Alguns comandos são apenas locais**: comandos que abrem um seletor interativo no terminal, como `/mcp`, `/plugin` ou `/resume`, funcionam apenas a partir da CLI local. Comandos que produzem saída de texto, incluindo `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/extra-usage`, `/recap` e `/reload-plugins`, funcionam a partir de dispositivos móveis e web.

192 

193## Solução de problemas

194 

195### "Remote Control requires a claude.ai subscription"

196 

197Você não está autenticado com uma conta claude.ai. Execute `claude auth login` e escolha a opção claude.ai. Se `ANTHROPIC_API_KEY` estiver definida em seu ambiente, desative-a primeiro.

198 

199### "Remote Control requires a full-scope login token"

200 

201Você está autenticado com um token de longa duração de `claude setup-token` ou da variável de ambiente `CLAUDE_CODE_OAUTH_TOKEN`. Esses tokens são limitados apenas a inferência e não podem estabelecer sessões de Remote Control. Execute `claude auth login` para autenticar com um token de sessão de escopo completo em vez disso.

202 

203### "Unable to determine your organization for Remote Control eligibility"

204 

205Suas informações de conta em cache estão desatualizadas ou incompletas. Execute `claude auth login` para atualizá-las.

206 

207### "Remote Control is not yet enabled for your account"

208 

209A verificação de elegibilidade pode falhar com certas variáveis de ambiente presentes:

210 

211* `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` ou `DISABLE_TELEMETRY`: desative-as e tente novamente.

212* `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` ou `CLAUDE_CODE_USE_FOUNDRY`: Remote Control requer autenticação claude.ai e não funciona com provedores de terceiros.

213 

214Se nenhuma delas estiver definida, execute `/logout` e depois `/login` para atualizar.

215 

216### "Remote Control is disabled by your organization's policy"

217 

218Este erro tem três causas distintas. Execute `/status` primeiro para ver qual método de login e assinatura você está usando.

219 

220* **Você está autenticado com uma chave de API ou conta Console**: Remote Control requer OAuth claude.ai. Execute `/login` e escolha a opção claude.ai. Se `ANTHROPIC_API_KEY` estiver definida em seu ambiente, desative-a.

221* **Seu administrador de Team ou Enterprise não ativou**: Remote Control fica desativado por padrão nesses planos. Um administrador pode ativá-lo em [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) ativando o toggle **Remote Control**. Esta é uma configuração de organização no lado do servidor, não uma chave de [configurações gerenciadas](/pt/permissions#managed-only-settings).

222* **O toggle do administrador está acinzentado**: sua organização tem uma configuração de retenção de dados ou conformidade que é incompatível com Remote Control. Isso não pode ser alterado no painel de administração. Entre em contato com o suporte da Anthropic para discutir opções.

223 

224### "Remote credentials fetch failed"

225 

226Claude Code não conseguiu obter uma credencial de curta duração da API Anthropic para estabelecer a conexão. Execute novamente com `--verbose` para ver o erro completo:

227 

228```bash theme={null}

229claude remote-control --verbose

230```

231 

232Causas comuns:

233 

234* Não conectado: execute `claude` e use `/login` para autenticar com sua conta claude.ai. A autenticação por chave de API não é suportada para Remote Control.

235* Problema de rede ou proxy: um firewall ou proxy pode estar bloqueando a solicitação HTTPS de saída. Remote Control requer acesso à API Anthropic na porta 443.

236* Falha na criação de sessão: se você também vir `Session creation failed — see debug log`, a falha aconteceu anteriormente na configuração. Verifique se sua assinatura está ativa.

237 

238## Escolha a abordagem correta

239 

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

241 

242| | Trigger | Claude runs on | Setup | Best for |

243| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

244| [Dispatch](/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 |

245| [Remote Control](/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 |

246| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

247| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

248| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

249 

250## Recursos relacionados

251 

252* [Claude Code na web](/pt/claude-code-on-the-web): execute sessões em ambientes em nuvem gerenciados pela Anthropic em vez de na sua máquina

253* [Ultraplan](/pt/ultraplan): inicie uma sessão de planejamento em nuvem a partir do seu terminal e revise o plano no seu navegador

254* [Channels](/pt/channels): encaminhe Telegram, Discord ou iMessage para uma sessão para que Claude reaja a mensagens enquanto você está ausente

255* [Dispatch](/pt/desktop#sessions-from-dispatch): envie uma mensagem com uma tarefa do seu telefone e ela pode gerar uma sessão Desktop para lidar com isso

256* [Autenticação](/pt/authentication): configure `/login` e gerencie credenciais para claude.ai

257* [Referência de CLI](/pt/cli-reference): lista completa de flags e comandos incluindo `claude remote-control`

258* [Segurança](/pt/security): como as sessões de Remote Control se encaixam no modelo de segurança do Claude Code

259* [Uso de dados](/pt/data-usage): quais dados fluem através da API Anthropic durante sessões locais e remotas

routines.md +317 −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# Automatizar trabalho com rotinas

6 

7> Coloque Claude Code no piloto automático. Defina rotinas que são executadas em um cronograma, acionadas em chamadas de API ou reagem a eventos do GitHub a partir da infraestrutura em nuvem gerenciada pela Anthropic.

8 

9<Note>

10 As rotinas estão em visualização de pesquisa. O comportamento, limites e a superfície da API podem mudar.

11</Note>

12 

13Uma rotina é uma configuração salva do Claude Code: um prompt, um ou mais repositórios e um conjunto de [conectores](/pt/mcp), empacotados uma vez e executados automaticamente. As rotinas são executadas na infraestrutura em nuvem gerenciada pela Anthropic, portanto continuam funcionando quando seu laptop está fechado.

14 

15Cada rotina pode ter um ou mais acionadores anexados a ela:

16 

17* **Agendada**: executada em uma cadência recorrente como horária, noturna ou semanal

18* **API**: acionada sob demanda enviando um POST HTTP para um endpoint por rotina com um token de portador

19* **GitHub**: executada automaticamente em resposta a eventos de repositório, como pull requests ou lançamentos

20 

21Uma única rotina pode combinar acionadores. Por exemplo, uma rotina de revisão de PR pode ser executada à noite, acionada a partir de um script de implantação e também reagir a cada novo PR.

22 

23As rotinas estão disponíveis nos planos Pro, Max, Team e Enterprise com [Claude Code na web](/pt/claude-code-on-the-web) ativado. Crie e gerencie-as em [claude.ai/code/routines](https://claude.ai/code/routines), ou a partir da CLI com `/schedule`.

24 

25Esta página aborda a criação de uma rotina, a configuração de cada tipo de acionador, o gerenciamento de execuções e como os limites de uso se aplicam.

26 

27## Exemplos de casos de uso

28 

29Cada exemplo emparelha um tipo de acionador com o tipo de trabalho para o qual as rotinas são adequadas: sem supervisão, repetível e vinculado a um resultado claro.

30 

31**Manutenção de backlog.** Um acionador de cronograma é executado todas as noites da semana contra seu rastreador de problemas via um conector. A rotina lê os problemas abertos desde a última execução, aplica rótulos, atribui proprietários com base na área de código referenciada e publica um resumo no Slack para que a equipe comece o dia com uma fila organizada.

32 

33**Triagem de alertas.** Sua ferramenta de monitoramento chama o endpoint da API da rotina quando um limite de erro é ultrapassado, passando o corpo do alerta como `text`. A rotina extrai o rastreamento de pilha, correlaciona-o com commits recentes no repositório e abre um pull request de rascunho com uma correção proposta e um link de volta ao alerta. O responsável pela chamada revisa o PR em vez de começar a partir de um terminal em branco.

34 

35**Revisão de código personalizada.** Um acionador do GitHub é executado em `pull_request.opened`. A rotina aplica a lista de verificação de revisão da sua equipe, deixa comentários inline para problemas de segurança, desempenho e estilo, e adiciona um comentário de resumo para que os revisores humanos possam se concentrar no design em vez de verificações mecânicas.

36 

37**Verificação de implantação.** Seu pipeline de CD chama o endpoint da API da rotina após cada implantação em produção. A rotina executa verificações de fumaça contra a nova compilação, verifica logs de erro para regressões e publica um go ou no-go no canal de lançamento antes que a janela de implantação se feche.

38 

39**Desvio de documentação.** Um acionador de cronograma é executado semanalmente. A rotina verifica PRs mesclados desde a última execução, sinaliza documentação que referencia APIs alteradas e abre PRs de atualização contra o repositório de documentação para um editor revisar.

40 

41**Porta de biblioteca.** Um acionador do GitHub é executado em `pull_request.closed` filtrado para PRs mesclados em um repositório de SDK. A rotina porta a alteração para um SDK paralelo em outro idioma e abre um PR correspondente, mantendo as duas bibliotecas em sincronia sem um humano reimplementar cada alteração.

42 

43As seções abaixo descrevem como criar uma rotina e configurar cada um desses tipos de acionadores.

44 

45## Criar uma rotina

46 

47Crie uma rotina a partir da web, do aplicativo Desktop ou da CLI. Todas as três superfícies escrevem na mesma conta em nuvem, portanto uma rotina que você cria na CLI aparece em claude.ai/code/routines imediatamente. No aplicativo Desktop, clique em **Nova tarefa** e escolha **Nova tarefa remota**; escolher **Nova tarefa local** em vez disso cria uma [tarefa agendada local do Desktop](/pt/desktop-scheduled-tasks), que é executada em sua máquina e não é uma rotina.

48 

49O formulário de criação configura o prompt da rotina, repositórios, ambiente, conectores e acionadores.

50 

51As rotinas são executadas autonomamente como sessões completas de Claude Code em nuvem: não há seletor de modo de permissão e nenhum prompt de aprovação durante uma execução. A sessão pode executar comandos shell, usar [skills](/pt/skills) confirmadas no repositório clonado e chamar qualquer conector que você incluir. O que uma rotina pode alcançar é determinado pelos repositórios que você seleciona e sua configuração de push de branch, o [acesso à rede do ambiente](/pt/claude-code-on-the-web#the-cloud-environment) e variáveis, e os conectores que você inclui. Escopo cada um desses para o que a rotina realmente precisa.

52 

53As rotinas pertencem à sua conta individual claude.ai. Elas não são compartilhadas com colegas de equipe e contam contra a permissão de execução diária da sua conta. Qualquer coisa que uma rotina faz através de sua identidade do GitHub conectada ou conectores aparece como você: commits e pull requests carregam seu usuário do GitHub, e mensagens do Slack, tickets do Linear ou outras ações de conector usam suas contas vinculadas para esses serviços.

54 

55### Criar a partir da web

56 

57<Steps>

58 <Step title="Abrir o formulário de criação">

59 Visite [claude.ai/code/routines](https://claude.ai/code/routines) e clique em **Nova rotina**.

60 </Step>

61 

62 <Step title="Nomeie a rotina e escreva o prompt">

63 Dê à rotina um nome descritivo e escreva o prompt que Claude executa cada vez. O prompt é a parte mais importante: a rotina é executada autonomamente, portanto o prompt deve ser autossuficiente e explícito sobre o que fazer e como o sucesso se parece.

64 

65 A entrada do prompt inclui um seletor de modelo. Claude usa o modelo selecionado em cada execução.

66 </Step>

67 

68 <Step title="Selecionar repositórios">

69 Adicione um ou mais repositórios do GitHub para Claude trabalhar. Cada repositório é clonado no início de uma execução, começando a partir do branch padrão. Claude cria branches com prefixo `claude/` para suas alterações. Para permitir pushes para qualquer branch, ative **Permitir pushes de branch sem restrições** para esse repositório.

70 </Step>

71 

72 <Step title="Selecionar um ambiente">

73 Escolha um [ambiente em nuvem](/pt/claude-code-on-the-web#the-cloud-environment) para a rotina. Os ambientes controlam o que a sessão em nuvem tem acesso:

74 

75 * **Acesso à rede**: defina o nível de acesso à internet disponível durante cada execução

76 * **Variáveis de ambiente**: forneça chaves de API, tokens ou outros segredos que Claude pode usar

77 * **Script de configuração**: instale dependências e ferramentas que a rotina precisa. O resultado é [armazenado em cache](/pt/claude-code-on-the-web#environment-caching), portanto o script não é executado novamente em cada sessão

78 

79 Um ambiente **Padrão** é fornecido. Para usar um ambiente personalizado, [crie um](/pt/claude-code-on-the-web#the-cloud-environment) antes de criar a rotina.

80 </Step>

81 

82 <Step title="Selecionar um acionador">

83 Em **Selecionar um acionador**, escolha como a rotina inicia. Você pode escolher um tipo de acionador ou combinar vários.

84 

85 <Tabs>

86 <Tab title="Cronograma">

87 Escolha uma frequência predefinida: horária, diária, dias da semana ou semanal. Consulte [Adicionar um acionador de cronograma](#add-a-schedule-trigger) para tratamento de fuso horário, escalonamento e intervalos cron personalizados.

88 </Tab>

89 

90 <Tab title="Evento do GitHub">

91 Selecione o repositório, o evento para reagir e filtros opcionais. Consulte [Adicionar um acionador do GitHub](#add-a-github-trigger) para a lista completa de eventos suportados e campos de filtro.

92 </Tab>

93 

94 <Tab title="API">

95 Selecione **API** aqui e salve a rotina. A URL e o token são gerados após a rotina ser salva, pois dependem do ID da rotina. Consulte [Adicionar um acionador de API](#add-an-api-trigger) para copiar a URL e gerar um token.

96 </Tab>

97 </Tabs>

98 </Step>

99 

100 <Step title="Revisar conectores">

101 Todos os seus [conectores MCP](/pt/mcp) conectados são incluídos por padrão. Remova qualquer um que a rotina não precise. Os conectores dão a Claude acesso a serviços externos como Slack, Linear ou Google Drive durante cada execução.

102 </Step>

103 

104 <Step title="Criar a rotina">

105 Clique em **Criar**. A rotina aparece na lista e é executada na próxima vez que um de seus acionadores corresponder. Para iniciar uma execução imediatamente, clique em **Executar agora** na página de detalhes da rotina.

106 

107 Cada execução cria uma nova sessão ao lado de suas outras sessões, onde você pode ver o que Claude fez, revisar alterações e criar um pull request.

108 </Step>

109</Steps>

110 

111### Criar a partir da CLI

112 

113Execute `/schedule` em qualquer sessão para criar uma rotina agendada conversacionalmente. Você também pode passar uma descrição diretamente, como em `/schedule daily PR review at 9am`. Claude percorre as mesmas informações que o formulário web coleta e salva a rotina em sua conta.

114 

115`/schedule` na CLI cria apenas rotinas agendadas. Para adicionar um acionador de API ou GitHub, edite a rotina na web em [claude.ai/code/routines](https://claude.ai/code/routines).

116 

117A CLI também suporta o gerenciamento de rotinas existentes. Execute `/schedule list` para ver todas as rotinas, `/schedule update` para alterar uma ou `/schedule run` para acioná-la imediatamente.

118 

119### Criar a partir do aplicativo Desktop

120 

121Abra a página **Cronograma** no aplicativo Desktop, clique em **Nova tarefa** e escolha **Nova tarefa remota**. O aplicativo Desktop mostra tarefas agendadas locais e rotinas na mesma grade. Consulte [Tarefas agendadas do Desktop](/pt/desktop-scheduled-tasks) para detalhes sobre a opção local.

122 

123## Configurar acionadores

124 

125Uma rotina inicia quando um de seus acionadores corresponde. Você pode anexar qualquer combinação de cronograma, API e acionadores do GitHub à mesma rotina e adicioná-los ou removê-los a qualquer momento na seção **Selecionar um acionador** do formulário de edição da rotina.

126 

127### Adicionar um acionador de cronograma

128 

129Um acionador de cronograma executa a rotina em uma cadência recorrente. Escolha uma frequência predefinida na seção **Selecionar um acionador**: horária, diária, dias da semana ou semanal. Os horários são inseridos em seu fuso horário local e convertidos automaticamente, portanto a rotina é executada naquele horário de parede independentemente de onde a infraestrutura em nuvem está localizada.

130 

131As execuções podem começar alguns minutos após o horário agendado devido ao escalonamento. O deslocamento é consistente para cada rotina.

132 

133Para um intervalo personalizado, como a cada duas horas ou no primeiro de cada mês, escolha a predefinição mais próxima no formulário e execute `/schedule update` na CLI para definir uma expressão cron específica. O intervalo mínimo é uma hora; expressões que são executadas com mais frequência são rejeitadas.

134 

135### Adicionar um acionador de API

136 

137Um acionador de API fornece a uma rotina um endpoint HTTP dedicado. POSTando para o endpoint com o token de portador da rotina inicia uma nova sessão e retorna uma URL de sessão. Use isso para conectar Claude Code em sistemas de alerta, pipelines de implantação, ferramentas internas ou em qualquer lugar onde você possa fazer uma solicitação HTTP autenticada.

138 

139Os acionadores de API são adicionados a uma rotina existente a partir da web. A CLI atualmente não pode criar ou revogar tokens.

140 

141<Steps>

142 <Step title="Abrir a rotina para edição">

143 Vá para [claude.ai/code/routines](https://claude.ai/code/routines), clique na rotina que deseja acionar via API e clique no ícone de lápis para abrir **Editar rotina**.

144 </Step>

145 

146 <Step title="Adicionar um acionador de API">

147 Role até a seção **Selecionar um acionador** abaixo do prompt, clique em **Adicionar outro acionador** e escolha **API**.

148 </Step>

149 

150 <Step title="Copiar a URL e gerar um token">

151 O modal mostra a URL para esta rotina junto com um comando curl de exemplo. Copie a URL e clique em **Gerar token** e copie o token imediatamente. O token é mostrado uma vez e não pode ser recuperado posteriormente, portanto armazene-o em algum lugar seguro, como o armazenamento de segredos da sua ferramenta de alerta.

152 </Step>

153 

154 <Step title="Chamar o endpoint">

155 Envie o token no cabeçalho `Authorization: Bearer` quando você POST para a URL. A seção [Acionar uma rotina](#trigger-a-routine) abaixo mostra um exemplo completo.

156 </Step>

157</Steps>

158 

159Cada rotina tem seu próprio token, limitado ao acionamento apenas dessa rotina. Para rotacioná-lo ou revogá-lo, retorne ao mesmo modal e clique em **Regenerar** ou **Revogar**.

160 

161#### Acionar uma rotina

162 

163Envie uma solicitação POST para o endpoint `/fire` com o token de portador no cabeçalho `Authorization`. O corpo da solicitação aceita um campo `text` opcional para contexto específico da execução, como um corpo de alerta ou um log com falha, passado para a rotina junto com seu prompt salvo. O valor é texto livre e não é analisado: se você enviar JSON ou outra carga estruturada, a rotina a recebe como uma string literal.

164 

165O exemplo abaixo aciona uma rotina a partir de um shell:

166 

167```bash theme={null}

168curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLMNOPQRSTUVW/fire \

169 -H "Authorization: Bearer sk-ant-oat01-xxxxx" \

170 -H "anthropic-beta: experimental-cc-routine-2026-04-01" \

171 -H "anthropic-version: 2023-06-01" \

172 -H "Content-Type: application/json" \

173 -d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'

174```

175 

176Uma solicitação bem-sucedida retorna um corpo JSON com o novo ID de sessão e URL:

177 

178```json theme={null}

179{

180 "type": "routine_fire",

181 "claude_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",

182 "claude_code_session_url": "https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"

183}

184```

185 

186Abra a URL da sessão em um navegador para assistir à execução em tempo real, revisar alterações ou continuar a conversa manualmente.

187 

188<Warning>

189 O endpoint `/fire` é enviado sob o cabeçalho beta `experimental-cc-routine-2026-04-01`. As formas de solicitação e resposta, limites de taxa e semântica de token podem mudar enquanto o recurso está em visualização de pesquisa. As alterações significativas são enviadas atrás de novas versões de cabeçalho beta datadas, e as duas versões de cabeçalho anteriores mais recentes continuam funcionando para que os chamadores tenham tempo para migrar.

190</Warning>

191 

192#### Referência de API

193 

194Para a referência completa da API, incluindo todas as respostas de erro, regras de validação e limites de campo, consulte [Acionar uma rotina via API](https://platform.claude.com/docs/pt/api/claude-code/routines-fire) na documentação da Plataforma Claude.

195 

196O endpoint `/fire` está disponível apenas para usuários de claude.ai e não faz parte da superfície da API da Plataforma Claude.

197 

198### Adicionar um acionador do GitHub

199 

200Um acionador do GitHub inicia uma nova sessão automaticamente quando um evento correspondente ocorre em um repositório conectado. Cada evento correspondente inicia sua própria sessão.

201 

202<Note>

203 Durante a visualização de pesquisa, os eventos de webhook do GitHub estão sujeitos a limites por hora por rotina e por conta. Os eventos além do limite são descartados até que a janela seja redefinida. Veja seus limites atuais em [claude.ai/code/routines](https://claude.ai/code/routines).

204</Note>

205 

206Os acionadores do GitHub são configurados apenas a partir da interface do usuário da web.

207 

208<Steps>

209 <Step title="Abrir a rotina para edição">

210 Vá para [claude.ai/code/routines](https://claude.ai/code/routines), clique na rotina e clique no ícone de lápis para abrir **Editar rotina**.

211 </Step>

212 

213 <Step title="Adicionar um acionador de evento do GitHub">

214 Role até a seção **Selecionar um acionador**, clique em **Adicionar outro acionador** e escolha **Evento do GitHub**.

215 </Step>

216 

217 <Step title="Instalar o aplicativo Claude GitHub">

218 O aplicativo Claude GitHub deve ser instalado no repositório ao qual você deseja se inscrever. A configuração do acionador solicita que você o instale se ainda não estiver.

219 

220 <Note>

221 Executar `/web-setup` na CLI concede acesso ao repositório para clonagem, mas não instala o aplicativo Claude GitHub e não ativa a entrega de webhook. Os acionadores do GitHub exigem a instalação do aplicativo Claude GitHub, que a configuração do acionador solicita que você faça.

222 </Note>

223 </Step>

224 

225 <Step title="Configurar o acionador">

226 Selecione o repositório, escolha um evento da lista de [eventos suportados](#supported-events) e opcionalmente adicione filtros. Salve o acionador.

227 </Step>

228</Steps>

229 

230#### Eventos suportados

231 

232Os acionadores do GitHub podem se inscrever em uma das seguintes categorias de eventos. Dentro de cada categoria, você pode escolher uma ação específica, como `pull_request.opened`, ou reagir a todas as ações na categoria.

233 

234| Evento | Acionadores quando |

235| :----------- | :-------------------------------------------------------------------------------------- |

236| Pull request | Um PR é aberto, fechado, atribuído, rotulado, sincronizado ou atualizado de outra forma |

237| Lançamento | Um lançamento é criado, publicado, editado ou excluído |

238 

239#### Filtrar pull requests

240 

241Use filtros para restringir quais pull requests iniciam uma nova sessão. Todas as condições de filtro devem corresponder para a rotina ser acionada. Os campos de filtro disponíveis são:

242 

243| Filtro | Corresponde |

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

245| Autor | Nome de usuário do GitHub do autor do PR |

246| Título | Texto do título do PR |

247| Corpo | Texto da descrição do PR |

248| Branch base | Branch que o PR tem como alvo |

249| Branch principal | Branch de onde o PR vem |

250| Rótulos | Rótulos aplicados ao PR |

251| É rascunho | Se o PR está em estado de rascunho |

252| É mesclado | Se o PR foi mesclado |

253 

254Cada filtro emparelha um campo com um operador: equals, contains, starts with, is one of, is not one of ou matches regex.

255 

256O operador `matches regex` testa o valor do campo inteiro, não uma substring dentro dele. Para corresponder a qualquer título contendo `hotfix`, escreva `.*hotfix.*`. Sem o `.*` circundante, o filtro corresponde apenas a um título que é exatamente `hotfix` sem nada antes ou depois. Para correspondência de substring literal sem sintaxe regex, use o operador `contains` em vez disso.

257 

258Alguns exemplos de combinações de filtro:

259 

260* **Revisão do módulo de autenticação**: branch base `main`, branch principal contém `auth-provider`. Envia qualquer PR que toque em autenticação para um revisor focado.

261* **Pronto para revisão apenas**: é rascunho é `false`. Pula rascunhos para que a rotina seja executada apenas quando o PR estiver pronto para revisão.

262* **Backport com portão de rótulo**: rótulos incluem `needs-backport`. Aciona uma rotina de porta para outro branch apenas quando um mantenedor marca o PR.

263 

264#### Como as sessões mapeiam para eventos

265 

266Cada evento do GitHub correspondente inicia uma nova sessão. A reutilização de sessão entre eventos não está disponível para rotinas acionadas pelo GitHub, portanto duas atualizações de PR produzem duas sessões independentes.

267 

268## Gerenciar rotinas

269 

270Clique em uma rotina na lista para abrir sua página de detalhes. A página de detalhes mostra os repositórios da rotina, conectores, prompt, cronograma, tokens de API, acionadores do GitHub e uma lista de execuções anteriores.

271 

272### Visualizar e interagir com execuções

273 

274Clique em qualquer execução para abri-la como uma sessão completa. De lá você pode ver o que Claude fez, revisar alterações, criar um pull request ou continuar a conversa. Cada sessão de execução funciona como qualquer outra sessão: use o menu suspenso ao lado do título da sessão para renomear, arquivar ou excluir.

275 

276### Editar e controlar rotinas

277 

278Na página de detalhes da rotina você pode:

279 

280* Clique em **Executar agora** para iniciar uma execução imediatamente sem esperar pelo próximo horário agendado.

281* Use o botão de alternância na seção **Repetições** para pausar ou retomar o cronograma. As rotinas pausadas mantêm sua configuração mas não são executadas até que você as reative.

282* Clique no ícone de lápis para abrir **Editar rotina** e alterar o nome, prompt, repositórios, ambiente, conectores ou qualquer um dos acionadores da rotina. A seção **Selecionar um acionador** é onde você adiciona ou remove cronogramas, tokens de API e acionadores de eventos do GitHub.

283* Clique no ícone de exclusão para remover a rotina. As sessões anteriores criadas pela rotina permanecem em sua lista de sessões.

284 

285### Repositórios e permissões de branch

286 

287As rotinas precisam de acesso ao GitHub para clonar repositórios. Quando você cria uma rotina a partir da CLI com `/schedule`, Claude verifica se sua conta tem o GitHub conectado e solicita que você execute `/web-setup` se não tiver. Consulte [Opções de autenticação do GitHub](/pt/claude-code-on-the-web#github-authentication-options) para as duas maneiras de conceder acesso.

288 

289Cada repositório que você adiciona é clonado em cada execução. Claude começa a partir do branch padrão do repositório, a menos que seu prompt especifique o contrário.

290 

291Por padrão, Claude pode apenas fazer push para branches com prefixo `claude/`. Isso evita que as rotinas modifiquem acidentalmente branches protegidos ou de longa duração. Para remover essa restrição para um repositório específico, ative **Permitir pushes de branch sem restrições** para esse repositório ao criar ou editar a rotina.

292 

293### Conectores

294 

295As rotinas podem usar seus conectores MCP conectados para ler e escrever em serviços externos durante cada execução. Por exemplo, uma rotina que faz triagem de solicitações de suporte pode ler de um canal do Slack e criar problemas no Linear.

296 

297Quando você cria uma rotina, todos os seus conectores atualmente conectados são incluídos por padrão. Remova qualquer um que não seja necessário para limitar quais ferramentas Claude tem acesso durante a execução. Você também pode adicionar conectores diretamente do formulário de rotina.

298 

299Para gerenciar ou adicionar conectores fora do formulário de rotina, visite **Configurações > Conectores** em claude.ai ou use `/schedule update` na CLI.

300 

301### Ambientes

302 

303Cada rotina é executada em um [ambiente em nuvem](/pt/claude-code-on-the-web#the-cloud-environment) que controla acesso à rede, variáveis de ambiente e scripts de configuração. Configure ambientes antes de criar uma rotina para dar a Claude acesso a APIs, instalar dependências ou restringir o escopo da rede. Consulte [ambiente em nuvem](/pt/claude-code-on-the-web#the-cloud-environment) para o guia de configuração completo.

304 

305## Uso e limites

306 

307As rotinas reduzem o uso da assinatura da mesma forma que as sessões interativas. Além dos limites de assinatura padrão, as rotinas têm um limite diário de quantas execuções podem começar por conta. Veja seu consumo atual e execuções de rotina diárias restantes em [claude.ai/code/routines](https://claude.ai/code/routines) ou [claude.ai/settings/usage](https://claude.ai/settings/usage).

308 

309Quando uma rotina atinge o limite diário ou seu limite de uso de assinatura, organizações com uso extra ativado podem continuar executando rotinas em excesso medido. Sem uso extra, execuções adicionais são rejeitadas até que a janela seja redefinida. Ative o uso extra em **Configurações > Faturamento** em claude.ai.

310 

311## Recursos relacionados

312 

313* [`/loop` e agendamento em sessão](/pt/scheduled-tasks): agende tarefas locais dentro de uma sessão CLI aberta

314* [Tarefas agendadas do Desktop](/pt/desktop-scheduled-tasks): tarefas agendadas locais que são executadas em sua máquina com acesso a arquivos locais

315* [Ambiente em nuvem](/pt/claude-code-on-the-web#the-cloud-environment): configure o ambiente de tempo de execução para sessões em nuvem

316* [Conectores MCP](/pt/mcp): conecte serviços externos como Slack, Linear e Google Drive

317* [GitHub Actions](/pt/github-actions): execute Claude em seu pipeline de CI em eventos de repositório

sandboxing.md +329 −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# Sandboxing

6 

7> Aprenda como a ferramenta bash em sandbox do Claude Code fornece isolamento de sistema de arquivos e rede para execução de agentes mais segura e autônoma.

8 

9## Visão geral

10 

11Claude Code apresenta sandboxing nativo para fornecer um ambiente mais seguro para execução de agentes, reduzindo a necessidade de prompts de permissão constantes. Em vez de pedir permissão para cada comando bash, o sandboxing cria limites definidos antecipadamente onde Claude Code pode trabalhar com mais liberdade e risco reduzido.

12 

13A ferramenta bash em sandbox usa primitivos de nível do SO para impor isolamento tanto de sistema de arquivos quanto de rede.

14 

15## Por que o sandboxing é importante

16 

17A segurança tradicional baseada em permissões requer aprovação constante do usuário para comandos bash. Embora isso forneça controle, pode levar a:

18 

19* **Fadiga de aprovação**: Clicar repetidamente em "aprovar" pode fazer com que os usuários prestem menos atenção ao que estão aprovando

20* **Produtividade reduzida**: Interrupções constantes desaceleram fluxos de trabalho de desenvolvimento

21* **Autonomia limitada**: Claude Code não pode trabalhar com eficiência quando aguarda aprovações

22 

23O sandboxing aborda esses desafios ao:

24 

251. **Definir limites claros**: Especificar exatamente quais diretórios e hosts de rede Claude Code pode acessar

262. **Reduzir prompts de permissão**: Comandos seguros dentro do sandbox não requerem aprovação

273. **Manter a segurança**: Tentativas de acessar recursos fora do sandbox acionam notificações imediatas

284. **Habilitar autonomia**: Claude Code pode ser executado de forma mais independente dentro de limites definidos

29 

30<Warning>

31 O sandboxing eficaz requer isolamento **tanto** de sistema de arquivos quanto de rede. Sem isolamento de rede, um agente comprometido poderia exfiltrar arquivos sensíveis como chaves SSH. Sem isolamento de sistema de arquivos, um agente comprometido poderia fazer backdoor de recursos do sistema para obter acesso à rede. Ao configurar o sandboxing, é importante garantir que suas configurações não criem bypasses nesses sistemas.

32</Warning>

33 

34## Como funciona

35 

36### Isolamento de sistema de arquivos

37 

38A ferramenta bash em sandbox restringe o acesso ao sistema de arquivos a diretórios específicos:

39 

40* **Comportamento padrão de escrita**: Acesso de leitura e escrita ao diretório de trabalho atual e seus subdiretórios

41* **Comportamento padrão de leitura**: Acesso de leitura a todo o computador, exceto certos diretórios negados

42* **Acesso bloqueado**: Não é possível modificar arquivos fora do diretório de trabalho atual sem permissão explícita

43* **Configurável**: Defina caminhos permitidos e negados personalizados através de configurações

44 

45Você pode conceder acesso de escrita a caminhos adicionais usando `sandbox.filesystem.allowWrite` em suas configurações. Essas restrições são impostas no nível do SO (Seatbelt no macOS, bubblewrap no Linux), portanto se aplicam a todos os comandos de subprocesso, incluindo ferramentas como `kubectl`, `terraform` e `npm`, não apenas às ferramentas de arquivo do Claude.

46 

47### Isolamento de rede

48 

49O acesso à rede é controlado através de um servidor proxy executado fora do sandbox:

50 

51* **Restrições de domínio**: Apenas domínios aprovados podem ser acessados

52* **Confirmação do usuário**: Novas solicitações de domínio acionam prompts de permissão (a menos que [`allowManagedDomainsOnly`](/pt/settings#sandbox-settings) esteja habilitado, que bloqueia domínios não permitidos automaticamente)

53* **Suporte a proxy personalizado**: Usuários avançados podem implementar regras personalizadas no tráfego de saída

54* **Cobertura abrangente**: As restrições se aplicam a todos os scripts, programas e subprocessos gerados por comandos

55 

56### Imposição no nível do SO

57 

58A ferramenta bash em sandbox aproveita primitivos de segurança do sistema operacional:

59 

60* **macOS**: Usa Seatbelt para imposição de sandbox

61* **Linux**: Usa [bubblewrap](https://github.com/containers/bubblewrap) para isolamento

62* **WSL2**: Usa bubblewrap, igual ao Linux

63 

64WSL1 não é suportado porque bubblewrap requer recursos de kernel disponíveis apenas no WSL2.

65 

66Essas restrições no nível do SO garantem que todos os processos filhos gerados pelos comandos do Claude Code herdem os mesmos limites de segurança.

67 

68## Começando

69 

70### Pré-requisitos

71 

72No **macOS**, o sandboxing funciona imediatamente usando o framework Seatbelt integrado.

73 

74No **Linux e WSL2**, instale primeiro os pacotes necessários:

75 

76<Tabs>

77 <Tab title="Ubuntu/Debian">

78 ```bash theme={null}

79 sudo apt-get install bubblewrap socat

80 ```

81 </Tab>

82 

83 <Tab title="Fedora">

84 ```bash theme={null}

85 sudo dnf install bubblewrap socat

86 ```

87 </Tab>

88</Tabs>

89 

90WSL1 não suporta sandboxing porque carece dos primitivos de namespace do Linux necessários. Se você vir `Sandboxing requires WSL2`, atualize sua distribuição para WSL2 ou execute Claude Code sem sandboxing.

91 

92No WSL2, comandos em sandbox não podem iniciar binários do Windows como `cmd.exe`, `powershell.exe` ou qualquer coisa em `/mnt/c/`. WSL entrega esses para o host do Windows através de um socket Unix, que o sandbox bloqueia. Se um comando precisar invocar um binário do Windows, adicione-o a [`excludedCommands`](/pt/settings#sandbox-settings) para que seja executado fora do sandbox.

93 

94### Habilitar sandboxing

95 

96Você pode habilitar o sandboxing executando o comando `/sandbox`:

97 

98```text theme={null}

99/sandbox

100```

101 

102Isso abre um menu onde você pode escolher entre modos de sandbox. Se as dependências necessárias estiverem faltando (como `bubblewrap` ou `socat` no Linux), o menu exibe instruções de instalação para sua plataforma.

103 

104Por padrão, se o sandbox não conseguir iniciar (dependências ausentes ou plataforma não suportada), Claude Code exibe um aviso e executa comandos sem sandboxing. Para tornar isso uma falha difícil em vez disso, defina [`sandbox.failIfUnavailable`](/pt/settings#sandbox-settings) como `true`. Isso é destinado a implantações gerenciadas que exigem sandboxing como um portão de segurança.

105 

106### Modos de sandbox

107 

108Claude Code oferece dois modos de sandbox:

109 

110**Modo de permissão automática**: Comandos bash tentarão ser executados dentro do sandbox e são automaticamente permitidos sem exigir permissão. Comandos que não podem ser colocados em sandbox (como aqueles que precisam de acesso à rede para hosts não permitidos) voltam ao fluxo de permissão regular. Regras explícitas de negação são sempre respeitadas, e comandos `rm` ou `rmdir` que visam `/`, seu diretório home ou outros caminhos críticos do sistema ainda acionam um prompt de permissão. Regras de ask se aplicam apenas a comandos que voltam ao fluxo de permissão regular.

111 

112**Modo de permissões regular**: Todos os comandos bash passam pelo fluxo de permissão padrão, mesmo quando em sandbox. Isso fornece mais controle, mas requer mais aprovações.

113 

114Em ambos os modos, o sandbox impõe as mesmas restrições de sistema de arquivos e rede. A diferença é apenas se os comandos em sandbox são aprovados automaticamente ou requerem permissão explícita.

115 

116<Info>

117 O modo de permissão automática funciona independentemente de sua configuração de modo de permissão. Mesmo que você não esteja no modo "aceitar edições", comandos bash em sandbox serão executados automaticamente quando a permissão automática estiver habilitada. Isso significa que comandos bash que modificam arquivos dentro dos limites do sandbox serão executados sem avisar, mesmo quando ferramentas de edição de arquivo normalmente exigiriam aprovação.

118</Info>

119 

120### Configurar sandboxing

121 

122Personalize o comportamento do sandbox através de seu arquivo `settings.json`. Veja [Settings](/pt/settings#sandbox-settings) para referência de configuração completa.

123 

124#### Concedendo acesso de escrita de subprocesso a caminhos específicos

125 

126Por padrão, comandos em sandbox podem apenas escrever no diretório de trabalho atual. Se comandos de subprocesso como `kubectl`, `terraform` ou `npm` precisarem escrever fora do diretório do projeto, use `sandbox.filesystem.allowWrite` para conceder acesso a caminhos específicos:

127 

128```json theme={null}

129{

130 "sandbox": {

131 "enabled": true,

132 "filesystem": {

133 "allowWrite": ["~/.kube", "/tmp/build"]

134 }

135 }

136}

137```

138 

139Esses caminhos são impostos no nível do SO, portanto todos os comandos executados dentro do sandbox, incluindo seus processos filhos, os respeitam. Esta é a abordagem recomendada quando uma ferramenta precisa de acesso de escrita a um local específico, em vez de excluir a ferramenta do sandbox inteiramente com `excludedCommands`.

140 

141Quando `allowWrite` (ou `denyWrite`/`denyRead`/`allowRead`) é definido em múltiplos [escopos de configurações](/pt/settings#settings-precedence), os arrays são **mesclados**, significando que caminhos de cada escopo são combinados, não substituídos. Por exemplo, se as configurações gerenciadas permitem escritas em `/opt/company-tools` e um usuário adiciona `~/.kube` em suas configurações pessoais, ambos os caminhos são incluídos na configuração final do sandbox. Isso significa que usuários e projetos podem estender a lista sem duplicar ou sobrescrever caminhos definidos por escopos de prioridade mais alta.

142 

143Prefixos de caminho controlam como os caminhos são resolvidos:

144 

145| Prefixo | Significado | Exemplo |

146| :------------------ | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |

147| `/` | Caminho absoluto da raiz do sistema de arquivos | `/tmp/build` permanece `/tmp/build` |

148| `~/` | Relativo ao diretório home | `~/.kube` torna-se `$HOME/.kube` |

149| `./` ou sem prefixo | Relativo à raiz do projeto para configurações de projeto, ou a `~/.claude` para configurações de usuário | `./output` em `.claude/settings.json` resolve para `<project-root>/output` |

150 

151O prefixo anterior `//path` para caminhos absolutos ainda funciona. Se você usou anteriormente `/path` esperando resolução relativa ao projeto, mude para `./path`. Esta sintaxe difere das [regras de permissão Read e Edit](/pt/permissions#read-and-edit), que usam `//path` para absoluto e `/path` para relativo ao projeto. Os caminhos do sistema de arquivos do sandbox usam convenções padrão: `/tmp/build` é um caminho absoluto.

152 

153Você também pode negar acesso de escrita ou leitura usando `sandbox.filesystem.denyWrite` e `sandbox.filesystem.denyRead`. Estes são mesclados com quaisquer caminhos das regras de permissão `Edit(...)` e `Read(...)`. Para permitir novamente a leitura de caminhos específicos dentro de uma região negada, use `sandbox.filesystem.allowRead`, que tem precedência sobre `denyRead`. Quando `allowManagedReadPathsOnly` está habilitado em configurações gerenciadas, apenas entradas `allowRead` gerenciadas são respeitadas; entradas `allowRead` de usuário, projeto e local são ignoradas. `denyRead` ainda é mesclado de todas as fontes.

154 

155Por exemplo, para bloquear a leitura de todo o diretório home enquanto ainda permite leituras do projeto atual, adicione isto ao `.claude/settings.json` do seu projeto:

156 

157```json theme={null}

158{

159 "sandbox": {

160 "enabled": true,

161 "filesystem": {

162 "denyRead": ["~/"],

163 "allowRead": ["."]

164 }

165 }

166}

167```

168 

169O `.` em `allowRead` resolve para a raiz do projeto porque esta configuração reside em configurações de projeto. Se você colocasse a mesma configuração em `~/.claude/settings.json`, `.` resolveria para `~/.claude` em vez disso, e arquivos do projeto permaneceriam bloqueados pela regra `denyRead`.

170 

171<Tip>

172 Nem todos os comandos são compatíveis com sandboxing imediatamente. Algumas notas que podem ajudá-lo a aproveitar ao máximo o sandbox:

173 

174 * Muitas ferramentas CLI requerem acesso a certos hosts. Conforme você usa essas ferramentas, elas solicitarão permissão para acessar certos hosts. Conceder permissão permitirá que elas acessem esses hosts agora e no futuro, permitindo que sejam executadas com segurança dentro do sandbox.

175 * `watchman` é incompatível com execução no sandbox. Se você estiver executando `jest`, considere usar `jest --no-watchman`

176 * `docker` é incompatível com execução no sandbox. Considere especificar `docker *` em `excludedCommands` para forçá-lo a ser executado fora do sandbox.

177</Tip>

178 

179<Note>

180 Claude Code inclui um mecanismo de escape intencional que permite que comandos sejam executados fora do sandbox quando necessário. Quando um comando falha devido a restrições de sandbox (como problemas de conectividade de rede ou ferramentas incompatíveis), Claude é solicitado a analisar a falha e pode tentar novamente o comando com o parâmetro `dangerouslyDisableSandbox`. Comandos que usam este parâmetro passam pelo fluxo de permissões normal do Claude Code, exigindo permissão do usuário para executar. Isso permite que Claude Code lide com casos extremos onde certas ferramentas ou operações de rede não podem funcionar dentro das restrições do sandbox.

181 

182 Você pode desabilitar este escape hatch definindo `"allowUnsandboxedCommands": false` em suas [configurações de sandbox](/pt/settings#sandbox-settings). Quando desabilitado, o parâmetro `dangerouslyDisableSandbox` é completamente ignorado e todos os comandos devem ser executados em sandbox ou estar explicitamente listados em `excludedCommands`.

183</Note>

184 

185## Benefícios de segurança

186 

187### Proteção contra injeção de prompt

188 

189Mesmo que um atacante manipule com sucesso o comportamento do Claude Code através de injeção de prompt, o sandbox garante que seu sistema permaneça seguro:

190 

191**Proteção de sistema de arquivos:**

192 

193* Não é possível modificar arquivos de configuração críticos como `~/.bashrc`

194* Não é possível modificar arquivos no nível do sistema em `/bin/`

195* Não é possível ler arquivos que são negados em suas [configurações de permissão do Claude](/pt/permissions#manage-permissions)

196 

197**Proteção de rede:**

198 

199* Não é possível exfiltrar dados para servidores controlados por atacantes

200* Não é possível baixar scripts maliciosos de domínios não autorizados

201* Não é possível fazer chamadas de API inesperadas para serviços não aprovados

202* Não é possível contatar nenhum domínio não explicitamente permitido

203 

204**Monitoramento e controle:**

205 

206* Todas as tentativas de acesso fora do sandbox são bloqueadas no nível do SO

207* Você recebe notificações imediatas quando os limites são testados

208* Você pode escolher negar, permitir uma vez ou atualizar permanentemente sua configuração

209 

210### Superfície de ataque reduzida

211 

212O sandboxing limita o dano potencial de:

213 

214* **Dependências maliciosas**: Pacotes NPM ou outras dependências com código prejudicial

215* **Scripts comprometidos**: Scripts de compilação ou ferramentas com vulnerabilidades de segurança

216* **Engenharia social**: Ataques que enganam usuários para executar comandos perigosos

217* **Injeção de prompt**: Ataques que enganam Claude para executar comandos perigosos

218 

219### Operação transparente

220 

221Quando Claude Code tenta acessar recursos de rede fora do sandbox:

222 

2231. A operação é bloqueada no nível do SO

2242. Você recebe uma notificação imediata

2253. Você pode escolher:

226 * Negar a solicitação

227 * Permitir uma vez

228 * Atualizar sua configuração de sandbox para permitir permanentemente

229 

230## Limitações de segurança

231 

232* Limitações de Sandboxing de rede: O sistema de filtragem de rede funciona restringindo os domínios aos quais os processos podem se conectar. Ele não inspeciona de outra forma o tráfego passando pelo proxy e os usuários são responsáveis por garantir que apenas permitam domínios confiáveis em sua política.

233 

234<Warning>

235 Os usuários devem estar cientes dos riscos potenciais que vêm de permitir domínios amplos como `github.com` que podem permitir exfiltração de dados. Além disso, em alguns casos pode ser possível contornar a filtragem de rede através de [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting).

236</Warning>

237 

238* Escalação de privilégio via Unix Sockets: A configuração `allowUnixSockets` pode inadvertidamente conceder acesso a serviços poderosos do sistema que poderiam levar a bypasses de sandbox. Por exemplo, se for usada para permitir acesso a `/var/run/docker.sock`, isso efetivamente concederia acesso ao sistema host através da exploração do socket docker. Os usuários são encorajados a considerar cuidadosamente quaisquer unix sockets que permitam através do sandbox.

239* Escalação de permissão de sistema de arquivos: Permissões de escrita de sistema de arquivos excessivamente amplas podem habilitar ataques de escalação de privilégio. Permitir escritas em diretórios contendo executáveis em `$PATH`, diretórios de configuração do sistema ou arquivos de configuração de shell do usuário (`.bashrc`, `.zshrc`) pode levar a execução de código em diferentes contextos de segurança quando outros usuários ou processos do sistema acessam esses arquivos.

240* Força do Sandbox Linux: A implementação Linux fornece isolamento forte de sistema de arquivos e rede, mas inclui um modo `enableWeakerNestedSandbox` que permite que funcione dentro de ambientes Docker sem namespaces privilegiados. Esta opção enfraquece consideravelmente a segurança e deve ser usada apenas em casos onde isolamento adicional é de outra forma imposto.

241 

242## Como o sandboxing se relaciona com permissões

243 

244Sandboxing e [permissões](/pt/permissions) são camadas de segurança complementares que funcionam juntas:

245 

246* **Permissões** controlam quais ferramentas Claude Code pode usar e são avaliadas antes de qualquer ferramenta ser executada. Elas se aplicam a todas as ferramentas: Bash, Read, Edit, WebFetch, MCP e outras.

247* **Sandboxing** fornece imposição no nível do SO que restringe o que comandos Bash podem acessar no nível de sistema de arquivos e rede. Aplica-se apenas a comandos Bash e seus processos filhos.

248 

249Restrições de sistema de arquivos e rede são configuradas através de configurações de sandbox e regras de permissão:

250 

251* Use `sandbox.filesystem.allowWrite` para conceder acesso de escrita de subprocesso a caminhos fora do diretório de trabalho

252* Use `sandbox.filesystem.denyWrite` e `sandbox.filesystem.denyRead` para bloquear acesso de subprocesso a caminhos específicos

253* Use `sandbox.filesystem.allowRead` para permitir novamente a leitura de caminhos específicos dentro de uma região `denyRead`

254* Use regras de negação `Read` e `Edit` para bloquear acesso a arquivos ou diretórios específicos

255* Use regras de permissão/negação `WebFetch` para controlar acesso a domínios

256* Use `allowedDomains` de sandbox para controlar quais domínios comandos Bash podem alcançar

257* Use `deniedDomains` de sandbox para bloquear domínios específicos mesmo quando um wildcard `allowedDomains` mais amplo permitiria de outra forma

258 

259Caminhos de ambas as configurações `sandbox.filesystem` e regras de permissão são mesclados juntos na configuração final do sandbox.

260 

261Este [repositório](https://github.com/anthropics/claude-code/tree/main/examples/settings) inclui configurações de configurações iniciais para cenários de implantação comuns, incluindo exemplos específicos de sandbox. Use-os como pontos de partida e ajuste-os para suas necessidades.

262 

263## Uso avançado

264 

265### Configuração de proxy personalizado

266 

267Para organizações que exigem segurança de rede avançada, você pode implementar um proxy personalizado para:

268 

269* Descriptografar e inspecionar tráfego HTTPS

270* Aplicar regras de filtragem personalizadas

271* Registrar todas as solicitações de rede

272* Integrar com infraestrutura de segurança existente

273 

274```json theme={null}

275{

276 "sandbox": {

277 "network": {

278 "httpProxyPort": 8080,

279 "socksProxyPort": 8081

280 }

281 }

282}

283```

284 

285### Integração com ferramentas de segurança existentes

286 

287A ferramenta bash em sandbox funciona junto com:

288 

289* **Regras de permissão**: Combine com [configurações de permissão](/pt/permissions) para defesa em profundidade

290* **Contêineres de desenvolvimento**: Use com [devcontainers](/pt/devcontainer) para isolamento adicional

291* **Políticas empresariais**: Imponha configurações de sandbox através de [configurações gerenciadas](/pt/settings#settings-precedence)

292 

293## Melhores práticas

294 

2951. **Comece restritivo**: Comece com permissões mínimas e expanda conforme necessário

2962. **Monitore logs**: Revise tentativas de violação de sandbox para entender as necessidades do Claude Code

2973. **Use configurações específicas do ambiente**: Diferentes regras de sandbox para contextos de desenvolvimento vs. produção

2984. **Combine com permissões**: Use sandboxing junto com políticas IAM para segurança abrangente

2995. **Teste configurações**: Verifique se suas configurações de sandbox não bloqueiam fluxos de trabalho legítimos

300 

301## Código aberto

302 

303O runtime do sandbox está disponível como um pacote npm de código aberto para uso em seus próprios projetos de agentes. Isso permite que a comunidade mais ampla de agentes de IA construa sistemas autônomos mais seguros e protegidos. Isso também pode ser usado para colocar em sandbox outros programas que você possa desejar executar. Por exemplo, para colocar um servidor MCP em sandbox, você poderia executar:

304 

305```bash theme={null}

306npx @anthropic-ai/sandbox-runtime <command-to-sandbox>

307```

308 

309Para detalhes de implementação e código-fonte, visite o [repositório GitHub](https://github.com/anthropic-experimental/sandbox-runtime).

310 

311## Limitações

312 

313* **Overhead de desempenho**: Mínimo, mas algumas operações de sistema de arquivos podem ser ligeiramente mais lentas

314* **Compatibilidade**: Algumas ferramentas que requerem padrões de acesso específicos do sistema podem precisar de ajustes de configuração, ou podem até precisar ser executadas fora do sandbox

315* **Suporte de plataforma**: Suporta macOS, Linux e WSL2. WSL1 não é suportado. Suporte nativo do Windows está planejado.

316 

317## O que o sandboxing não cobre

318 

319O sandbox isola subprocessos Bash. Outras ferramentas operam sob limites diferentes:

320 

321* **Ferramentas de arquivo integradas**: Read, Edit e Write usam o sistema de permissão diretamente em vez de serem executadas através do sandbox. Veja [permissões](/pt/permissions).

322* **Uso de computador**: quando Claude abre aplicativos e controla sua tela, ele é executado em seu desktop real em vez de em um ambiente isolado. Prompts de permissão por aplicativo controlam cada aplicativo. Veja [uso de computador no CLI](/pt/computer-use) ou [uso de computador no Desktop](/pt/desktop#let-claude-use-your-computer).

323 

324## Veja também

325 

326* [Security](/pt/security) - Recursos de segurança abrangentes e melhores práticas

327* [Permissions](/pt/permissions) - Configuração de permissão e controle de acesso

328* [Settings](/pt/settings) - Referência de configuração completa

329* [CLI reference](/pt/cli-reference) - Opções de linha de comando

scheduled-tasks.md +213 −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# Executar prompts em um cronograma

6 

7> Use /loop e as ferramentas de agendamento cron para executar prompts repetidamente, pesquisar status ou definir lembretes únicos em uma sessão do Claude Code.

8 

9<Note>

10 Tarefas agendadas requerem Claude Code v2.1.72 ou posterior. Verifique sua versão com `claude --version`.

11</Note>

12 

13Tarefas 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](/pt/channels): seu CI pode enviar a falha para a sessão diretamente.

14 

15As 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](/pt/routines), [tarefas agendadas do Desktop](/pt/desktop-scheduled-tasks) ou [GitHub Actions](/pt/github-actions).

16 

17## Compare opções de agendamento

18 

19Claude Code offers three ways to schedule recurring or one-off work:

20 

21| | [Cloud](/en/routines) | [Desktop](/en/desktop-scheduled-tasks) | [`/loop`](/en/scheduled-tasks) |

22| :------------------------- | :----------------------------- | :------------------------------------- | :---------------------------------- |

23| Runs on | Anthropic cloud | Your machine | Your machine |

24| Requires machine on | No | Yes | Yes |

25| Requires open session | No | No | Yes |

26| Persistent across restarts | Yes | Yes | Restored on `--resume` if unexpired |

27| Access to local files | No (fresh clone) | Yes | Yes |

28| MCP servers | Connectors configured per task | [Config files](/en/mcp) and connectors | Inherits from session |

29| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |

30| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |

31| Minimum interval | 1 hour | 1 minute | 1 minute |

32 

33<Tip>

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

35</Tip>

36 

37## Execute um prompt repetidamente com /loop

38 

39A skill agrupada `/loop` [bundled skill](/pt/commands) é a maneira mais rápida de executar um prompt repetidamente enquanto a sessão permanece aberta. Tanto o intervalo quanto o prompt são opcionais, e o que você fornece determina como o loop se comporta.

40 

41| O que você fornece | Exemplo | O que acontece |

42| :------------------------ | :-------------------------- | :---------------------------------------------------------------------------------------------------------------- |

43| Intervalo e prompt | `/loop 5m check the deploy` | Seu prompt é executado em um [cronograma fixo](#run-on-a-fixed-interval) |

44| Apenas prompt | `/loop check the deploy` | Seu prompt é executado em um [intervalo que Claude escolhe](#let-claude-choose-the-interval) a cada iteração |

45| Apenas intervalo, ou nada | `/loop` | O [prompt de manutenção integrado](#run-the-built-in-maintenance-prompt) é executado, ou seu `loop.md` se existir |

46 

47Você também pode passar outro comando como o prompt, por exemplo `/loop 20m /review-pr 1234`, para re-executar um fluxo de trabalho empacotado a cada iteração.

48 

49### Execute em um intervalo fixo

50 

51Quando você fornece um intervalo, Claude o converte em uma expressão cron, agenda o trabalho e confirma a cadência e o ID do trabalho.

52 

53```text theme={null}

54/loop 5m check if the deployment finished and tell me what happened

55```

56 

57O intervalo pode preceder o prompt como um token simples como `30m`, ou seguir como uma cláusula como `every 2 hours`. As unidades suportadas são `s` para segundos, `m` para minutos, `h` para horas e `d` para dias.

58 

59Os segundos são arredondados para o minuto mais próximo, pois o cron tem granularidade de um minuto. Os intervalos que não mapeiam para um passo cron limpo, como `7m` ou `90m`, são arredondados para o intervalo mais próximo que funciona e Claude informa qual foi escolhido.

60 

61### Deixe Claude escolher o intervalo

62 

63Quando você omite o intervalo, Claude escolhe um dinamicamente em vez de executar em um cronograma cron fixo. Após cada iteração, ele escolhe um atraso entre um minuto e uma hora com base no que observou: esperas curtas enquanto uma compilação está terminando ou um PR está ativo, esperas mais longas quando nada está pendente. O atraso escolhido e o motivo dele são impressos no final de cada iteração.

64 

65O exemplo abaixo verifica CI e comentários de revisão, com Claude esperando mais tempo entre iterações uma vez que o PR fica silencioso:

66 

67```text theme={null}

68/loop check whether CI passed and address any review comments

69```

70 

71Quando você pede um cronograma `/loop` dinâmico, Claude pode usar a [ferramenta Monitor](/pt/tools-reference#monitor-tool) diretamente. Monitor executa um script em segundo plano e transmite cada linha de saída de volta, o que evita pesquisa completamente e geralmente é mais eficiente em tokens e responsivo do que re-executar um prompt em um intervalo.

72 

73Um loop agendado dinamicamente aparece em sua [lista de tarefas agendadas](#manage-scheduled-tasks) como qualquer outra tarefa, portanto você pode listá-lo ou cancelá-lo da mesma forma. As [regras de jitter](#jitter) não se aplicam a ele, mas a [expiração de sete dias](#seven-day-expiry) se aplica: o loop termina automaticamente sete dias após você iniciá-lo.

74 

75<Note>

76 No Bedrock, Vertex AI e Microsoft Foundry, um prompt sem intervalo é executado em um cronograma fixo de 10 minutos.

77</Note>

78 

79### Execute o prompt de manutenção integrado

80 

81Quando você omite o prompt, Claude usa um prompt de manutenção integrado em vez de um que você fornece. A cada iteração, ele trabalha através do seguinte, em ordem:

82 

83* continuar qualquer trabalho inacabado da conversa

84* cuidar do pull request do branch atual: comentários de revisão, execuções de CI falhadas, conflitos de mesclagem

85* executar passes de limpeza, como caças a bugs ou simplificação quando nada mais está pendente

86 

87Claude não inicia novas iniciativas fora desse escopo, e ações irreversíveis como envio ou exclusão apenas prosseguem quando continuam algo que a transcrição já autorizou.

88 

89```text theme={null}

90/loop

91```

92 

93Um `/loop` simples executa este prompt em um [intervalo escolhido dinamicamente](#let-claude-choose-the-interval). Adicione um intervalo, por exemplo `/loop 15m`, para executá-lo em um cronograma fixo. Para substituir o prompt integrado pelo seu próprio padrão, consulte [Personalize o prompt padrão com loop.md](#customize-the-default-prompt-with-loop-md).

94 

95<Note>

96 No Bedrock, Vertex AI e Microsoft Foundry, `/loop` sem prompt imprime a mensagem de uso em vez de iniciar o loop de manutenção.

97</Note>

98 

99### Personalize o prompt padrão com loop.md

100 

101Um arquivo `loop.md` substitui o prompt de manutenção integrado pelas suas próprias instruções. Ele define um único prompt padrão para `/loop` simples, não uma lista de tarefas agendadas separadas, e é ignorado sempre que você fornece um prompt na linha de comando. Para agendar prompts adicionais junto com ele, use `/loop <prompt>` ou [peça a Claude diretamente](#manage-scheduled-tasks).

102 

103Claude procura o arquivo em dois locais e usa o primeiro que encontra.

104 

105| Caminho | Escopo |

106| :------------------ | :---------------------------------------------------------------------------- |

107| `.claude/loop.md` | Nível do projeto. Tem precedência quando ambos os arquivos existem. |

108| `~/.claude/loop.md` | Nível do usuário. Aplica-se em qualquer projeto que não defina o seu próprio. |

109 

110O arquivo é Markdown simples sem estrutura obrigatória. Escreva como se estivesse digitando o prompt `/loop` diretamente. O exemplo a seguir mantém um branch de lançamento saudável:

111 

112```markdown title=".claude/loop.md" theme={null}

113Check the `release/next` PR. If CI is red, pull the failing job log,

114diagnose, and push a minimal fix. If new review comments have arrived,

115address each one and resolve the thread. If everything is green and

116quiet, say so in one line.

117```

118 

119Edições em `loop.md` entram em vigor na próxima iteração, portanto você pode refinar as instruções enquanto um loop está em execução. Quando nenhum `loop.md` existe em nenhum local, o loop volta ao prompt de manutenção integrado. Mantenha o arquivo conciso: conteúdo além de 25.000 bytes é truncado.

120 

121### Pare um loop

122 

123Para parar um `/loop` enquanto ele está aguardando a próxima iteração, pressione `Esc`. Isso limpa o despertar pendente para que o loop não dispare novamente. As tarefas que você agendou [pedindo a Claude diretamente](#manage-scheduled-tasks) não são afetadas por `Esc` e permanecem no lugar até que você as delete.

124 

125## Defina um lembrete único

126 

127Para lembretes únicos, descreva o que você deseja em linguagem natural em vez de usar `/loop`. Claude agenda uma tarefa de disparo único que se deleta após ser executada.

128 

129```text theme={null}

130remind me at 3pm to push the release branch

131```

132 

133```text theme={null}

134in 45 minutes, check whether the integration tests passed

135```

136 

137Claude fixa o tempo de disparo em um minuto e hora específicos usando uma expressão cron e confirma quando será acionado.

138 

139## Gerencie tarefas agendadas

140 

141Peça a Claude em linguagem natural para listar ou cancelar tarefas, ou referencie as ferramentas subjacentes diretamente.

142 

143```text theme={null}

144what scheduled tasks do I have?

145```

146 

147```text theme={null}

148cancel the deploy check job

149```

150 

151Nos bastidores, Claude usa estas ferramentas:

152 

153| Ferramenta | Propósito |

154| :----------- | :------------------------------------------------------------------------------------------------------------------------ |

155| `CronCreate` | Agendar uma nova tarefa. Aceita uma expressão cron de 5 campos, o prompt a ser executado e se recorre ou dispara uma vez. |

156| `CronList` | Listar todas as tarefas agendadas com seus IDs, cronogramas e prompts. |

157| `CronDelete` | Cancelar uma tarefa por ID. |

158 

159Cada tarefa agendada tem um ID de 8 caracteres que você pode passar para `CronDelete`. Uma sessão pode conter até 50 tarefas agendadas por vez.

160 

161## Como as tarefas agendadas são executadas

162 

163O agendador verifica a cada segundo se há tarefas vencidas e as enfileira com baixa prioridade. Um prompt agendado é acionado entre seus turnos, não enquanto Claude está no meio de uma resposta. Se Claude estiver ocupado quando uma tarefa vencer, o prompt aguarda até que o turno atual termine.

164 

165Todos os horários são interpretados em seu fuso horário local. Uma expressão cron como `0 9 * * *` significa 9h onde você está executando Claude Code, não UTC.

166 

167### Jitter

168 

169Para evitar que cada sessão atinja a API no mesmo momento de tempo real, o agendador adiciona um pequeno deslocamento determinístico aos tempos de disparo:

170 

171* Tarefas recorrentes disparam até 10% de seu período atrasadas, limitadas a 15 minutos. Um trabalho por hora pode disparar em qualquer lugar de `:00` a `:06`.

172* Tarefas únicas agendadas para o topo ou fundo da hora disparam até 90 segundos mais cedo.

173 

174O deslocamento é derivado do ID da tarefa, portanto a mesma tarefa sempre obtém o mesmo deslocamento. Se o tempo exato for importante, escolha um minuto que não seja `:00` ou `:30`, por exemplo `3 9 * * *` em vez de `0 9 * * *`, e o jitter único não será aplicado.

175 

176### Expiração de sete dias

177 

178Tarefas recorrentes expiram automaticamente 7 dias após a criação. A tarefa é acionada uma última vez e depois se deleta. Isso limita quanto tempo um loop esquecido pode ser executado. Se você precisar que uma tarefa recorrente dure mais tempo, cancele e recrie-a antes de expirar, ou use [Routines](/pt/routines) ou [tarefas agendadas do Desktop](/pt/desktop-scheduled-tasks) para agendamento durável.

179 

180## Referência de expressão cron

181 

182`CronCreate` aceita expressões cron padrão de 5 campos: `minute hour day-of-month month day-of-week`. Todos os campos suportam curingas (`*`), valores únicos (`5`), passos (`*/15`), intervalos (`1-5`) e listas separadas por vírgula (`1,15,30`).

183 

184| Exemplo | Significado |

185| :------------- | :--------------------------------- |

186| `*/5 * * * *` | A cada 5 minutos |

187| `0 * * * *` | A cada hora na hora |

188| `7 * * * *` | A cada hora aos 7 minutos passados |

189| `0 9 * * *` | Todos os dias às 9h local |

190| `0 9 * * 1-5` | Dias da semana às 9h local |

191| `30 14 15 3 *` | 15 de março às 14h30 local |

192 

193O dia da semana usa `0` ou `7` para domingo até `6` para sábado. A sintaxe estendida como `L`, `W`, `?` e aliases de nome como `MON` ou `JAN` não é suportada.

194 

195Quando tanto o dia do mês quanto o dia da semana são restritos, uma data corresponde se qualquer campo corresponder. Isso segue a semântica padrão do vixie-cron.

196 

197## Desabilite tarefas agendadas

198 

199Defina `CLAUDE_CODE_DISABLE_CRON=1` em seu ambiente para desabilitar o agendador completamente. As ferramentas cron e `/loop` ficam indisponíveis e qualquer tarefa já agendada para de ser acionada. Consulte [Variáveis de ambiente](/pt/env-vars) para a lista completa de sinalizadores de desabilitação.

200 

201## Limitações

202 

203O agendamento com escopo de sessão tem limitações inerentes:

204 

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

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

207* Iniciar uma conversa nova limpa todas as tarefas com escopo de sessão. Retomar com `claude --resume` ou `claude --continue` restaura tarefas que não expiraram: tarefas recorrentes dentro de sete dias de criação, 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.

208 

209Para automação orientada por cron que precisa ser executada sem supervisão:

210 

211* [Routines](/pt/routines): executadas na infraestrutura gerenciada pela Anthropic em um cronograma, via chamada de API ou em eventos do GitHub

212* [GitHub Actions](/pt/github-actions): use um gatilho `schedule` em CI

213* [Tarefas agendadas do Desktop](/pt/desktop-scheduled-tasks): executadas localmente em sua máquina

security.md +143 −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# Segurança

6 

7> Aprenda sobre as proteções de segurança do Claude Code e as melhores práticas para uso seguro.

8 

9## Como abordamos a segurança

10 

11### Fundação de segurança

12 

13A segurança do seu código é fundamental. Claude Code é construído com segurança em seu núcleo, desenvolvido de acordo com o programa de segurança abrangente da Anthropic. Saiba mais e acesse recursos (relatório SOC 2 Type 2, certificado ISO 27001, etc.) no [Anthropic Trust Center](https://trust.anthropic.com).

14 

15### Arquitetura baseada em permissões

16 

17Claude Code usa permissões somente leitura rigorosas por padrão. Quando ações adicionais são necessárias (editar arquivos, executar testes, executar comandos), Claude Code solicita permissão explícita. Os usuários controlam se devem aprovar ações uma única vez ou permitir automaticamente.

18 

19Projetamos Claude Code para ser transparente e seguro. Por exemplo, exigimos aprovação para comandos bash antes de executá-los, dando a você controle direto. Esta abordagem permite que usuários e organizações configurem permissões diretamente.

20 

21Para configuração detalhada de permissões, consulte [Permissions](/pt/permissions).

22 

23### Proteções integradas

24 

25Para mitigar riscos em sistemas agentic:

26 

27* **Ferramenta bash em sandbox**: [Sandbox](/pt/sandboxing) comandos bash com isolamento de sistema de arquivos e rede, reduzindo prompts de permissão enquanto mantém a segurança. Ative com `/sandbox` para definir limites onde Claude Code pode trabalhar autonomamente

28* **Restrição de acesso de escrita**: Claude Code pode escrever apenas na pasta onde foi iniciado e suas subpastas—não pode modificar arquivos em diretórios pai sem permissão explícita. Embora Claude Code possa ler arquivos fora do diretório de trabalho (útil para acessar bibliotecas do sistema e dependências), operações de escrita são estritamente confinadas ao escopo do projeto, criando um limite de segurança claro

29* **Mitigação de fadiga de prompt**: Suporte para lista de permissões de comandos seguros frequentemente usados por usuário, por base de código ou por organização

30* **Modo Accept Edits**: Aceitar em lote múltiplas edições enquanto mantém prompts de permissão para comandos com efeitos colaterais

31 

32### Responsabilidade do usuário

33 

34Claude Code tem apenas as permissões que você concede. Você é responsável por revisar código e comandos propostos quanto à segurança antes da aprovação.

35 

36## Proteja-se contra injeção de prompt

37 

38Injeção de prompt é uma técnica onde um atacante tenta substituir ou manipular as instruções de um assistente de IA inserindo texto malicioso. Claude Code inclui várias proteções contra esses ataques:

39 

40### Proteções principais

41 

42* **Sistema de permissões**: Operações sensíveis requerem aprovação explícita

43* **Análise com reconhecimento de contexto**: Detecta instruções potencialmente prejudiciais analisando a solicitação completa

44* **Sanitização de entrada**: Previne injeção de comando processando entradas do usuário

45* **Lista de bloqueio de comandos**: Bloqueia comandos arriscados que buscam conteúdo arbitrário da web como `curl` e `wget` por padrão. Quando explicitamente permitido, esteja ciente das [limitações do padrão de permissão](/pt/permissions#tool-specific-permission-rules)

46 

47### Proteções de privacidade

48 

49Implementamos várias proteções para proteger seus dados, incluindo:

50 

51* Períodos de retenção limitados para informações sensíveis (consulte o [Privacy Center](https://privacy.anthropic.com/en/articles/10023548-how-long-do-you-store-my-data) para saber mais)

52* Acesso restrito aos dados de sessão do usuário

53* Controle do usuário sobre preferências de treinamento de dados. Usuários consumidores podem alterar suas [configurações de privacidade](https://claude.ai/settings/privacy) a qualquer momento.

54 

55Para detalhes completos, consulte nossos [Termos de Serviço Comerciais](https://www.anthropic.com/legal/commercial-terms) (para usuários de Team, Enterprise e API) ou [Termos de Consumidor](https://www.anthropic.com/legal/consumer-terms) (para usuários de Free, Pro e Max) e [Política de Privacidade](https://www.anthropic.com/legal/privacy).

56 

57### Proteções adicionais

58 

59* **Aprovação de solicitação de rede**: Ferramentas que fazem solicitações de rede requerem aprovação do usuário por padrão

60* **Janelas de contexto isoladas**: Web fetch usa uma janela de contexto separada para evitar injetar prompts potencialmente maliciosos

61* **Verificação de confiança**: Primeiras execuções de base de código e novos MCP servers requerem verificação de confiança

62 * Nota: A verificação de confiança é desabilitada ao executar de forma não interativa com a flag `-p`

63* **Detecção de injeção de comando**: Comandos bash suspeitos requerem aprovação manual mesmo se previamente permitidos

64* **Correspondência fail-closed**: Comandos não correspondidos padrão para exigir aprovação manual

65* **Descrições em linguagem natural**: Comandos bash complexos incluem explicações para compreensão do usuário

66* **Armazenamento seguro de credenciais**: Chaves de API e tokens são criptografados. Consulte [Credential Management](/pt/authentication#credential-management)

67 

68<Warning>

69 **Risco de segurança do WebDAV no Windows**: Ao executar Claude Code no Windows, recomendamos contra ativar WebDAV ou permitir que Claude Code acesse caminhos como `\\*` que podem conter subdiretórios WebDAV. [WebDAV foi descontinuado pela Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) devido a riscos de segurança. Ativar WebDAV pode permitir que Claude Code dispare solicitações de rede para hosts remotos, contornando o sistema de permissões.

70</Warning>

71 

72**Melhores práticas para trabalhar com conteúdo não confiável**:

73 

741. Revise comandos sugeridos antes da aprovação

752. Evite canalizar conteúdo não confiável diretamente para Claude

763. Verifique alterações propostas em arquivos críticos

774. Use máquinas virtuais (VMs) para executar scripts e fazer chamadas de ferramentas, especialmente ao interagir com serviços web externos

785. Relate comportamento suspeito com `/feedback`

79 

80<Warning>

81 Embora essas proteções reduzam significativamente o risco, nenhum sistema é

82 completamente imune a todos os ataques. Sempre mantenha boas práticas de

83 segurança ao trabalhar com qualquer ferramenta de IA.

84</Warning>

85 

86## Segurança do MCP

87 

88Claude Code permite que os usuários configurem servidores Model Context Protocol (MCP). A lista de MCP servers permitidos é configurada no seu código-fonte, como parte das configurações do Claude Code que os engenheiros verificam no controle de versão.

89 

90Encorajamos escrever seus próprios MCP servers ou usar MCP servers de provedores em que você confia. Você é capaz de configurar permissões do Claude Code para MCP servers. Anthropic não gerencia ou audita nenhum MCP server.

91 

92## Segurança do IDE

93 

94Consulte [VS Code security and privacy](/pt/vs-code#security-and-privacy) para mais informações sobre como executar Claude Code em um IDE.

95 

96## Segurança de execução em nuvem

97 

98Ao usar [Claude Code on the web](/pt/claude-code-on-the-web), controles de segurança adicionais estão em vigor:

99 

100* **Máquinas virtuais isoladas**: Cada sessão em nuvem é executada em uma VM isolada gerenciada pela Anthropic

101* **Controles de acesso à rede**: O acesso à rede é limitado por padrão e pode ser configurado para ser desabilitado ou permitir apenas domínios específicos

102* **Proteção de credenciais**: A autenticação é tratada através de um proxy seguro que usa uma credencial com escopo dentro do sandbox, que é então traduzida para seu token de autenticação GitHub real

103* **Restrições de branch**: Operações de git push são restritas ao branch de trabalho atual

104* **Registro de auditoria**: Todas as operações em ambientes em nuvem são registradas para fins de conformidade e auditoria

105* **Limpeza automática**: Ambientes em nuvem são automaticamente encerrados após a conclusão da sessão

106 

107Para mais detalhes sobre execução em nuvem, consulte [Claude Code on the web](/pt/claude-code-on-the-web).

108 

109[Remote Control](/pt/remote-control) as sessões funcionam de forma diferente: a interface web se conecta a um processo Claude Code em execução em sua máquina local. Toda execução de código e acesso a arquivos permanece local, e os mesmos dados que fluem durante qualquer sessão local do Claude Code viajam através da API Anthropic sobre TLS. Nenhuma VM em nuvem ou sandboxing está envolvido. A conexão usa múltiplas credenciais de curta duração e escopo estreito, cada uma limitada a um propósito específico e expirando independentemente, para limitar o raio de explosão de qualquer credencial comprometida.

110 

111## Melhores práticas de segurança

112 

113### Trabalhando com código sensível

114 

115* Revise todas as alterações sugeridas antes da aprovação

116* Use configurações de permissão específicas do projeto para repositórios sensíveis

117* Considere usar [dev containers](/pt/devcontainer) para isolamento adicional

118* Audite regularmente suas configurações de permissão com `/permissions`

119 

120### Segurança da equipe

121 

122* Use [managed settings](/pt/settings#settings-files) para impor padrões organizacionais

123* Compartilhe configurações de permissão aprovadas através do controle de versão

124* Treine membros da equipe sobre melhores práticas de segurança

125* Monitore o uso do Claude Code através de [métricas OpenTelemetry](/pt/monitoring-usage)

126* Audite ou bloqueie alterações de configurações durante sessões com [`ConfigChange` hooks](/pt/hooks#configchange)

127 

128### Relatando problemas de segurança

129 

130Se você descobrir uma vulnerabilidade de segurança no Claude Code:

131 

1321. Não a divulgue publicamente

1332. Relate-a através do nosso [programa HackerOne](https://hackerone.com/4f1f16ba-10d3-4d09-9ecc-c721aad90f24/embedded_submissions/new)

1343. Inclua etapas detalhadas de reprodução

1354. Permita tempo para que abordemos o problema antes da divulgação pública

136 

137## Recursos relacionados

138 

139* [Sandboxing](/pt/sandboxing) - Isolamento de sistema de arquivos e rede para comandos bash

140* [Permissions](/pt/permissions) - Configure permissões e controles de acesso

141* [Monitoring usage](/pt/monitoring-usage) - Rastreie e audite a atividade do Claude Code

142* [Development containers](/pt/devcontainer) - Ambientes seguros e isolados

143* [Anthropic Trust Center](https://trust.anthropic.com) - Certificações de segurança e conformidade

server-managed-settings.md +224 −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 configurações gerenciadas pelo servidor

6 

7> Configure centralmente o Claude Code para sua organização através de configurações entregues pelo servidor, sem exigir infraestrutura de gerenciamento de dispositivos.

8 

9As configurações gerenciadas pelo servidor permitem que administradores configurem centralmente o Claude Code através de uma interface baseada na web no Claude.ai. Os clientes do Claude Code recebem automaticamente essas configurações quando os usuários se autenticam com suas credenciais organizacionais.

10 

11Essa abordagem foi projetada para organizações que não possuem infraestrutura de gerenciamento de dispositivos ou precisam gerenciar configurações para usuários em dispositivos não gerenciados.

12 

13<Note>

14 As configurações gerenciadas pelo servidor estão disponíveis para clientes do [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) e [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise).

15</Note>

16 

17## Requisitos

18 

19Para usar configurações gerenciadas pelo servidor, você precisa de:

20 

21* Plano Claude for Teams ou Claude for Enterprise

22* Claude Code versão 2.1.38 ou posterior para Claude for Teams, ou versão 2.1.30 ou posterior para Claude for Enterprise

23* Acesso de rede a `api.anthropic.com`

24 

25## Escolha entre configurações gerenciadas pelo servidor e gerenciadas pelo endpoint

26 

27O Claude Code suporta duas abordagens para configuração centralizada. As configurações gerenciadas pelo servidor entregam a configuração dos servidores da Anthropic. As [configurações gerenciadas pelo endpoint](/pt/settings#settings-files) são implantadas diretamente em dispositivos através de políticas nativas do SO (preferências gerenciadas do macOS, registro do Windows) ou arquivos de configurações gerenciadas.

28 

29| Abordagem | Melhor para | Modelo de segurança |

30| :------------------------------------------------------------------------- | :---------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

31| **Configurações gerenciadas pelo servidor** | Organizações sem MDM, ou usuários em dispositivos não gerenciados | Configurações entregues dos servidores da Anthropic no momento da autenticação |

32| **[Configurações gerenciadas pelo endpoint](/pt/settings#settings-files)** | Organizações com MDM ou gerenciamento de endpoint | Configurações implantadas em dispositivos via perfis de configuração MDM, políticas de registro ou arquivos de configurações gerenciadas |

33 

34Se seus dispositivos estão inscritos em uma solução MDM ou gerenciamento de endpoint, as configurações gerenciadas pelo endpoint fornecem garantias de segurança mais fortes porque o arquivo de configurações pode ser protegido contra modificação do usuário no nível do SO.

35 

36## Configurar configurações gerenciadas pelo servidor

37 

38<Steps>

39 <Step title="Abrir o console de administração">

40 No [Claude.ai](https://claude.ai), navegue até **Admin Settings > Claude Code > Managed settings**.

41 </Step>

42 

43 <Step title="Definir suas configurações">

44 Adicione sua configuração como JSON. Todas as [configurações disponíveis em `settings.json`](/pt/settings#available-settings) são suportadas, incluindo [hooks](/pt/hooks), [variáveis de ambiente](/pt/env-vars) e [configurações apenas gerenciadas](/pt/permissions#managed-only-settings) como `allowManagedPermissionRulesOnly`.

45 

46 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:

47 

48 ```json theme={null}

49 {

50 "permissions": {

51 "deny": [

52 "Bash(curl *)",

53 "Read(./.env)",

54 "Read(./.env.*)",

55 "Read(./secrets/**)"

56 ],

57 "disableBypassPermissionsMode": "disable"

58 },

59 "allowManagedPermissionRulesOnly": true

60 }

61 ```

62 

63 Hooks usam o mesmo formato que em `settings.json`.

64 

65 Este exemplo executa um script de auditoria após cada edição de arquivo em toda a organização:

66 

67 ```json theme={null}

68 {

69 "hooks": {

70 "PostToolUse": [

71 {

72 "matcher": "Edit|Write",

73 "hooks": [

74 { "type": "command", "command": "/usr/local/bin/audit-edit.sh" }

75 ]

76 }

77 ]

78 }

79 }

80 ```

81 

82 Para configurar o classificador do [modo automático](/pt/permission-modes#eliminate-prompts-with-auto-mode) para que ele saiba quais repositórios, buckets e domínios sua organização confia:

83 

84 ```json theme={null}

85 {

86 "autoMode": {

87 "environment": [

88 "Source control: github.example.com/acme-corp and all repos under it",

89 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

90 "Trusted internal domains: *.corp.example.com"

91 ]

92 }

93 }

94 ```

95 

96 Como hooks executam comandos shell, os usuários veem uma [caixa de diálogo de aprovação de segurança](#security-approval-dialogs) antes de serem aplicados. Veja [Configurar o modo automático](/pt/auto-mode-config) para saber como as entradas `autoMode` afetam o que o classificador bloqueia e avisos importantes sobre os campos `allow` e `soft_deny`.

97 </Step>

98 

99 <Step title="Salvar e implantar">

100 Salve suas alterações. Os clientes do Claude Code recebem as configurações atualizadas na próxima inicialização ou ciclo de polling por hora.

101 </Step>

102</Steps>

103 

104### Verificar entrega de configurações

105 

106Para confirmar que as configurações estão sendo aplicadas, peça a um usuário para reiniciar o Claude Code. Se a configuração incluir configurações que acionem a [caixa de diálogo de aprovação de segurança](#security-approval-dialogs), o usuário vê um prompt descrevendo as configurações gerenciadas na inicialização. Você também pode verificar que as regras de permissão gerenciadas estão ativas pedindo a um usuário para executar `/permissions` para visualizar suas regras de permissão efetivas.

107 

108### Controle de acesso

109 

110Os seguintes papéis podem gerenciar configurações gerenciadas pelo servidor:

111 

112* **Primary Owner**

113* **Owner**

114 

115Restrinja o acesso a pessoal confiável, pois as alterações de configurações se aplicam a todos os usuários da organização.

116 

117### Configurações apenas gerenciadas

118 

119A maioria das [chaves de configurações](/pt/settings#available-settings) funciona em qualquer escopo. Um punhado de chaves são lidas apenas de configurações gerenciadas e não têm efeito quando colocadas em arquivos de configurações de usuário ou projeto. Veja [configurações apenas gerenciadas](/pt/permissions#managed-only-settings) para a lista completa. Qualquer configuração não nessa lista ainda pode ser colocada em configurações gerenciadas e tem a precedência mais alta.

120 

121### Limitações atuais

122 

123As configurações gerenciadas pelo servidor têm as seguintes limitações:

124 

125* As configurações se aplicam uniformemente a todos os usuários da organização. Configurações por grupo ainda não são suportadas.

126* [Configurações de servidor MCP](/pt/mcp#managed-mcp-configuration) não podem ser distribuídas através de configurações gerenciadas pelo servidor.

127 

128## Entrega de configurações

129 

130### Precedência de configurações

131 

132As configurações gerenciadas pelo servidor e as [configurações gerenciadas pelo endpoint](/pt/settings#settings-files) ocupam o nível mais alto na [hierarquia de configurações](/pt/settings#settings-precedence) do Claude Code. Nenhum outro nível de configurações pode substituí-las, incluindo argumentos de linha de comando.

133 

134Dentro do nível gerenciado, a primeira fonte que entrega uma configuração não vazia vence. As configurações gerenciadas pelo servidor são verificadas primeiro, depois as configurações gerenciadas pelo endpoint. As fontes não se mesclam: se as configurações gerenciadas pelo servidor entregarem qualquer chave, as configurações gerenciadas pelo endpoint são ignoradas completamente. Se as configurações gerenciadas pelo servidor não entregarem nada, as configurações gerenciadas pelo endpoint se aplicam.

135 

136Se você limpar sua configuração gerenciada pelo servidor no console de administração com a intenção de voltar a uma plist gerenciada pelo endpoint ou política de registro, esteja ciente de que [configurações em cache](#fetch-and-caching-behavior) persistem em máquinas cliente até a próxima busca bem-sucedida. Execute `/status` para ver qual fonte gerenciada está ativa.

137 

138### Comportamento de busca e cache

139 

140O Claude Code busca configurações dos servidores da Anthropic na inicialização e faz polling para atualizações a cada hora durante sessões ativas.

141 

142**Primeiro lançamento sem configurações em cache:**

143 

144* O Claude Code busca configurações de forma assíncrona

145* Se a busca falhar, o Claude Code continua sem configurações gerenciadas

146* Há uma breve janela antes das configurações carregarem onde as restrições ainda não são aplicadas

147 

148**Lançamentos subsequentes com configurações em cache:**

149 

150* As configurações em cache se aplicam imediatamente na inicialização

151* O Claude Code busca configurações atualizadas em segundo plano

152* As configurações em cache persistem através de falhas de rede

153 

154O Claude Code aplica atualizações de configurações automaticamente sem reinicialização, exceto para configurações avançadas como configuração OpenTelemetry, que exigem uma reinicialização completa para entrar em vigor.

155 

156### Impor inicialização com falha fechada

157 

158Por padrão, se a busca de configurações remotas falhar na inicialização, a CLI continua sem configurações gerenciadas. Para ambientes onde essa breve janela não aplicada é inaceitável, defina `forceRemoteSettingsRefresh: true` em suas configurações gerenciadas.

159 

160Quando essa configuração está ativa, 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.

161 

162Para ativar isso, adicione a chave à sua configuração de configurações gerenciadas:

163 

164```json theme={null}

165{

166 "forceRemoteSettingsRefresh": true

167}

168```

169 

170Antes de ativar essa configuração, certifique-se de que suas políticas de rede permitem conectividade a `api.anthropic.com`. Se esse endpoint estiver inacessível, a CLI sai na inicialização e os usuários não podem iniciar o Claude Code.

171 

172### Caixas de diálogo de aprovação de segurança

173 

174Certas configurações que podem representar riscos de segurança exigem aprovação explícita do usuário antes de serem aplicadas:

175 

176* **Configurações de comando shell**: configurações que executam comandos shell

177* **Variáveis de ambiente personalizadas**: variáveis não na lista de permissão segura conhecida

178* **Configurações de hooks**: qualquer definição de hook

179 

180Quando essas configurações estão presentes, os usuários veem uma caixa de diálogo de segurança explicando o que está sendo configurado. Os usuários devem aprovar para prosseguir. Se um usuário rejeitar as configurações, o Claude Code sai.

181 

182<Note>

183 No modo não interativo com a flag `-p`, o Claude Code ignora caixas de diálogo de segurança e aplica configurações sem aprovação do usuário.

184</Note>

185 

186## Disponibilidade de plataforma

187 

188As configurações gerenciadas pelo servidor exigem uma conexão direta a `api.anthropic.com` e não estão disponíveis ao usar provedores de modelo de terceiros:

189 

190* Amazon Bedrock

191* Google Vertex AI

192* Microsoft Foundry

193* Endpoints de API personalizados via `ANTHROPIC_BASE_URL` ou [gateways LLM](/pt/llm-gateway)

194 

195## Auditoria de logs

196 

197Os eventos de log de auditoria para alterações de configurações estão disponíveis através da API de conformidade ou exportação de log de auditoria. Entre em contato com sua equipe de conta da Anthropic para obter acesso.

198 

199Os eventos de auditoria incluem o tipo de ação executada, a conta e o dispositivo que executaram a ação, e referências aos valores anteriores e novos.

200 

201## Considerações de segurança

202 

203As configurações gerenciadas pelo servidor fornecem aplicação de política centralizada, mas funcionam como um controle do lado do cliente. Em dispositivos não gerenciados, usuários com acesso de administrador ou sudo podem modificar o binário do Claude Code, sistema de arquivos ou configuração de rede.

204 

205| Cenário | Comportamento |

206| :----------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

207| Usuário edita o arquivo de configurações em cache | O arquivo adulterado se aplica na inicialização, mas as configurações corretas são restauradas na próxima busca do servidor |

208| Usuário deleta o arquivo de configurações em cache | Comportamento de primeiro lançamento ocorre: configurações são buscadas de forma assíncrona com uma breve janela não aplicada |

209| API está indisponível | As configurações em cache se aplicam se disponíveis, caso contrário, as configurações gerenciadas não são aplicadas até a próxima busca bem-sucedida. Com `forceRemoteSettingsRefresh: true`, a CLI sai em vez de continuar |

210| Usuário se autentica com uma organização diferente | As configurações não são entregues para contas fora da organização gerenciada |

211| Usuário configura um [provedor de modelo de terceiros](#platform-availability) | As configurações gerenciadas pelo servidor são ignoradas. Isso inclui definir `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, ou um `ANTHROPIC_BASE_URL` não padrão |

212 

213Para detectar alterações de configuração em tempo de execução, use [hooks `ConfigChange`](/pt/hooks#configchange) para registrar modificações ou bloquear alterações não autorizadas antes que entrem em vigor.

214 

215Para garantias de aplicação mais fortes, use [configurações gerenciadas pelo endpoint](/pt/settings#settings-files) em dispositivos inscritos em uma solução MDM.

216 

217## Veja também

218 

219Páginas relacionadas para gerenciar a configuração do Claude Code:

220 

221* [Settings](/pt/settings): referência de configuração completa incluindo todas as configurações disponíveis

222* [Configurações gerenciadas pelo endpoint](/pt/settings#settings-files): configurações gerenciadas implantadas em dispositivos por TI

223* [Authentication](/pt/authentication): configure o acesso do usuário ao Claude Code

224* [Security](/pt/security): salvaguardas de segurança e melhores práticas

settings.md +914 −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# Configurações do Claude Code

6 

7> Configure o Claude Code com configurações globais e em nível de projeto, e variáveis de ambiente.

8 

9O Claude Code oferece uma variedade de configurações para personalizar seu comportamento de acordo com suas necessidades. Você pode configurar o Claude Code executando o comando `/config` ao usar o REPL interativo, que abre uma interface de Configurações com abas onde você pode visualizar informações de status e modificar opções de configuração.

10 

11## Escopos de configuração

12 

13O Claude Code usa um **sistema de escopo** para determinar onde as configurações se aplicam e com quem são compartilhadas. Compreender os escopos ajuda você a decidir como configurar o Claude Code para uso pessoal, colaboração em equipe ou implantação empresarial.

14 

15### Escopos disponíveis

16 

17| Escopo | Localização | Quem afeta | Compartilhado com a equipe? |

18| :---------- | :-------------------------------------------------------------------------------------------------------- | :--------------------------------------- | :-------------------------- |

19| **Managed** | Configurações gerenciadas pelo servidor, plist / registro, ou `managed-settings.json` em nível de sistema | Todos os usuários na máquina | Sim (implantado por TI) |

20| **User** | Diretório `~/.claude/` | Você, em todos os projetos | Não |

21| **Project** | `.claude/` no repositório | Todos os colaboradores neste repositório | Sim (confirmado no git) |

22| **Local** | `.claude/settings.local.json` | Você, apenas neste repositório | Não (ignorado pelo git) |

23 

24### Quando usar cada escopo

25 

26O escopo **Managed** é para:

27 

28* Políticas de segurança que devem ser aplicadas em toda a organização

29* Requisitos de conformidade que não podem ser substituídos

30* Configurações padronizadas implantadas por TI/DevOps

31 

32O escopo **User** é melhor para:

33 

34* Preferências pessoais que você deseja em todos os lugares (temas, configurações do editor)

35* Ferramentas e plugins que você usa em todos os projetos

36* Chaves de API e autenticação (armazenadas com segurança)

37 

38O escopo **Project** é melhor para:

39 

40* Configurações compartilhadas pela equipe (permissões, hooks, MCP servers)

41* Plugins que toda a equipe deve ter

42* Padronização de ferramentas entre colaboradores

43 

44O escopo **Local** é melhor para:

45 

46* Substituições pessoais para um projeto específico

47* Testar configurações antes de compartilhar com a equipe

48* Configurações específicas da máquina que não funcionarão para outros

49 

50### Como os escopos interagem

51 

52Quando a mesma configuração é definida em vários escopos, escopos mais específicos têm precedência:

53 

541. **Managed** (mais alta) - não pode ser substituída por nada

552. **Argumentos de linha de comando** - substituições de sessão temporárias

563. **Local** - substitui configurações de projeto e usuário

574. **Project** - substitui configurações de usuário

585. **User** (mais baixa) - se aplica quando nada mais especifica a configuração

59 

60Por exemplo, se uma permissão é permitida nas configurações do usuário, mas negada nas configurações do projeto, a configuração do projeto tem precedência e a permissão é bloqueada.

61 

62### O que usa escopos

63 

64Os escopos se aplicam a muitos recursos do Claude Code:

65 

66| Recurso | Localização do usuário | Localização do projeto | Localização local |

67| :-------------- | :------------------------ | :--------------------------------- | :----------------------------- |

68| **Settings** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

69| **Subagents** | `~/.claude/agents/` | `.claude/agents/` | Nenhum |

70| **MCP servers** | `~/.claude.json` | `.mcp.json` | `~/.claude.json` (por projeto) |

71| **Plugins** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

72| **CLAUDE.md** | `~/.claude/CLAUDE.md` | `CLAUDE.md` ou `.claude/CLAUDE.md` | `CLAUDE.local.md` |

73 

74***

75 

76## Arquivos de configuração

77 

78O arquivo `settings.json` é o mecanismo oficial para configurar o Claude Code através de configurações hierárquicas:

79 

80* As **configurações do usuário** são definidas em `~/.claude/settings.json` e se aplicam a todos os projetos.

81* As **configurações do projeto** são salvas no diretório do seu projeto:

82 * `.claude/settings.json` para configurações que são verificadas no controle de origem e compartilhadas com sua equipe

83 * `.claude/settings.local.json` para configurações que não são verificadas, úteis para preferências pessoais e experimentação. O Claude Code configurará o git para ignorar `.claude/settings.local.json` quando for criado.

84* **Configurações gerenciadas**: Para organizações que precisam de controle centralizado, o Claude Code suporta múltiplos mecanismos de entrega para configurações gerenciadas. Todos usam o mesmo formato JSON e não podem ser substituídos por configurações de usuário ou projeto:

85 

86 * **Configurações gerenciadas pelo servidor**: entregues dos servidores da Anthropic através do console de administração do Claude.ai. Veja [configurações gerenciadas pelo servidor](/pt/server-managed-settings).

87 * **Políticas de nível MDM/SO**: entregues através do gerenciamento nativo de dispositivos no macOS e Windows:

88 * macOS: domínio de preferências gerenciadas `com.anthropic.claudecode`. As chaves de nível superior do plist espelham `managed-settings.json`, com configurações aninhadas como dicionários e arrays como arrays de plist. Implante via perfis de configuração em Jamf, Iru (Kandji), ou ferramentas MDM similares.

89 * Windows: chave de registro `HKLM\SOFTWARE\Policies\ClaudeCode` com um valor `Settings` (REG\_SZ ou REG\_EXPAND\_SZ) contendo JSON (implantado via Política de Grupo ou Intune)

90 * Windows (nível de usuário): `HKCU\SOFTWARE\Policies\ClaudeCode` (prioridade de política mais baixa, usada apenas quando nenhuma fonte de nível de administrador existe)

91 * **Baseado em arquivo**: `managed-settings.json` e `managed-mcp.json` implantados em diretórios do sistema:

92 

93 * macOS: `/Library/Application Support/ClaudeCode/`

94 * Linux e WSL: `/etc/claude-code/`

95 * Windows: `C:\Program Files\ClaudeCode\`

96 

97 <Warning>

98 O caminho legado do Windows `C:\ProgramData\ClaudeCode\managed-settings.json` não é mais suportado a partir da v2.1.75. Administradores que implantaram configurações nesse local devem migrar arquivos para `C:\Program Files\ClaudeCode\managed-settings.json`.

99 </Warning>

100 

101 Configurações gerenciadas baseadas em arquivo também suportam um diretório drop-in em `managed-settings.d/` no mesmo diretório do sistema ao lado de `managed-settings.json`. Isto permite que equipes separadas implantem fragmentos de política independentes sem coordenar edições em um único arquivo.

102 

103 Seguindo a convenção systemd, `managed-settings.json` é mesclado primeiro como base, então todos os arquivos `*.json` no diretório drop-in são classificados alfabeticamente e mesclados por cima. Arquivos posteriores substituem anteriores para valores escalares; arrays são concatenados e desduplicados; objetos são mesclados profundamente. Arquivos ocultos começando com `.` são ignorados.

104 

105 Use prefixos numéricos para controlar a ordem de mesclagem, por exemplo `10-telemetry.json` e `20-security.json`.

106 

107 Veja [configurações gerenciadas](/pt/permissions#managed-only-settings) e [Configuração MCP gerenciada](/pt/mcp#managed-mcp-configuration) para detalhes.

108 

109 Este [repositório](https://github.com/anthropics/claude-code/tree/main/examples/mdm) inclui modelos de implantação iniciais para Jamf, Iru (Kandji), Intune, e Política de Grupo. Use estes como pontos de partida e ajuste-os para suas necessidades.

110 

111 <Note>

112 Implantações gerenciadas também podem restringir **adições ao marketplace de plugins** usando `strictKnownMarketplaces`. Para mais informações, veja [Restrições de marketplace gerenciado](/pt/plugin-marketplaces#managed-marketplace-restrictions).

113 </Note>

114* **Outra configuração** é armazenada em `~/.claude.json`. Este arquivo contém sua sessão OAuth, configurações de [MCP server](/pt/mcp) para escopos de usuário e local, estado por projeto (ferramentas permitidas, configurações de confiança), e vários caches. Os MCP servers com escopo de projeto são armazenados separadamente em `.mcp.json`.

115 

116<Note>

117 O Claude Code cria automaticamente backups com timestamp dos arquivos de configuração e retém os cinco backups mais recentes para evitar perda de dados.

118</Note>

119 

120```JSON Exemplo settings.json theme={null}

121{

122 "$schema": "https://json.schemastore.org/claude-code-settings.json",

123 "permissions": {

124 "allow": [

125 "Bash(npm run lint)",

126 "Bash(npm run test *)",

127 "Read(~/.zshrc)"

128 ],

129 "deny": [

130 "Bash(curl *)",

131 "Read(./.env)",

132 "Read(./.env.*)",

133 "Read(./secrets/**)"

134 ]

135 },

136 "env": {

137 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

138 "OTEL_METRICS_EXPORTER": "otlp"

139 },

140 "companyAnnouncements": [

141 "Welcome to Acme Corp! Review our code guidelines at docs.acme.com",

142 "Reminder: Code reviews required for all PRs",

143 "New security policy in effect"

144 ]

145}

146```

147 

148A linha `$schema` no exemplo acima aponta para o [esquema JSON oficial](https://json.schemastore.org/claude-code-settings.json) para configurações do Claude Code. Adicioná-la ao seu `settings.json` ativa o preenchimento automático e validação inline no VS Code, Cursor e qualquer outro editor que suporte validação de esquema JSON.

149 

150O esquema publicado é atualizado periodicamente e pode não incluir configurações adicionadas nos lançamentos CLI mais recentes, então um aviso de validação em um campo documentado recentemente não significa necessariamente que sua configuração é inválida.

151 

152### Configurações disponíveis

153 

154`settings.json` suporta várias opções:

155 

156| Chave | Descrição | Exemplo |

157| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------- |

158| `agent` | Executar a thread principal como um subagent nomeado. Aplica o prompt do sistema, restrições de ferramenta e modelo do subagent. Veja [Invocar subagents explicitamente](/pt/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

159| `allowedChannelPlugins` | (Apenas configurações gerenciadas) Lista de permissões de plugins de canal que podem enviar mensagens. Substitui a lista de permissões padrão da Anthropic quando definido. Indefinido = voltar para o padrão, array vazio = bloquear todos os plugins de canal. Requer `channelsEnabled: true`. Veja [Restringir quais plugins de canal podem executar](/pt/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |

160| `allowedHttpHookUrls` | Lista de permissões de padrões de URL que hooks HTTP podem almejar. Suporta `*` como curinga. Quando definido, hooks com URLs não correspondentes são bloqueados. Indefinido = sem restrição, array vazio = bloquear todos os hooks HTTP. Arrays se mesclam entre fontes de configuração. Veja [Configuração de hooks](#hook-configuration) | `["https://hooks.example.com/*"]` |

161| `allowedMcpServers` | Quando definido em managed-settings.json, lista de permissões de MCP servers que os usuários podem configurar. Indefinido = sem restrições, array vazio = bloqueio. Se aplica a todos os escopos. A lista de negação tem precedência. Veja [Configuração MCP gerenciada](/pt/mcp#managed-mcp-configuration) | `[{ "serverName": "github" }]` |

162| `allowManagedHooksOnly` | (Apenas configurações gerenciadas) Apenas hooks gerenciados, hooks SDK, e hooks de plugins força-habilitados em configurações gerenciadas `enabledPlugins` são carregados. Hooks de usuário, projeto e todos os outros plugins são bloqueados. Veja [Configuração de hooks](#hook-configuration) | `true` |

163| `allowManagedMcpServersOnly` | (Apenas configurações gerenciadas) Apenas `allowedMcpServers` de configurações gerenciadas são respeitados. `deniedMcpServers` ainda se mescla de todas as fontes. Usuários ainda podem adicionar MCP servers, mas apenas a lista de permissões definida pelo administrador se aplica. Veja [Configuração MCP gerenciada](/pt/mcp#managed-mcp-configuration) | `true` |

164| `allowManagedPermissionRulesOnly` | (Apenas configurações gerenciadas) Impedir que configurações de usuário e projeto definam regras de permissão `allow`, `ask` ou `deny`. Apenas regras em configurações gerenciadas se aplicam. Veja [Configurações apenas gerenciadas](/pt/permissions#managed-only-settings) | `true` |

165| `alwaysThinkingEnabled` | Ativar [pensamento estendido](/pt/model-config#extended-thinking) por padrão para todas as sessões. Tipicamente configurado via comando `/config` em vez de editar diretamente | `true` |

166| `apiKeyHelper` | Script personalizado, a ser executado em `/bin/sh`, para gerar um valor de autenticação. Este valor será enviado como cabeçalhos `X-Api-Key` e `Authorization: Bearer` para solicitações de modelo | `/bin/generate_temp_api_key.sh` |

167| `attribution` | Personalizar atribuição para commits git e pull requests. Veja [Configurações de atribuição](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

168| `autoMemoryDirectory` | Diretório personalizado para armazenamento de [memória automática](/pt/memory#storage-location). Aceita um caminho absoluto ou um caminho com prefixo `~/`. Aceito de configurações de política e usuário, e da flag `--settings`. Não aceito de configurações de projeto ou local, já que um repositório clonado poderia fornecer qualquer arquivo para redirecionar escritas de memória para locais sensíveis | `"~/my-memory-dir"` |

169| `autoMode` | Personalizar o que o classificador de [modo automático](/pt/permission-modes#eliminate-prompts-with-auto-mode) bloqueia e permite. Contém arrays `environment`, `allow`, e `soft_deny` de regras em prosa. Inclua a string literal `"$defaults"` em um array para herdar as regras integradas nessa posição. Veja [Configurar modo automático](/pt/auto-mode-config). Não lido de configurações de projeto compartilhadas | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

170| `autoScrollEnabled` | Em [renderização fullscreen](/pt/fullscreen), seguir nova saída até o fundo da conversa. Padrão: `true`. Aparece em `/config` como **Auto-scroll**. Prompts de permissão ainda rolam para a vista quando isto está desligado | `false` |

171| `autoUpdatesChannel` | Canal de lançamento a seguir para atualizações. Use `"stable"` para uma versão que é tipicamente cerca de uma semana antiga e pula versões com regressões maiores, ou `"latest"` (padrão) para o lançamento mais recente | `"stable"` |

172| `availableModels` | Restringir quais modelos os usuários podem selecionar via `/model`, `--model`, ou `ANTHROPIC_MODEL`. Não afeta a opção Padrão. Veja [Restringir seleção de modelo](/pt/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |

173| `awaySummaryEnabled` | Mostrar um resumo de sessão de uma linha quando você retorna ao terminal após alguns minutos ausente. Defina como `false` ou desative Resumo de sessão em `/config` para desabilitar. Mesmo que [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/pt/env-vars) | `true` |

174| `awsAuthRefresh` | Script personalizado que modifica o diretório `.aws` (veja [configuração avançada de credenciais](/pt/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |

175| `awsCredentialExport` | Script personalizado que produz JSON com credenciais AWS (veja [configuração avançada de credenciais](/pt/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |

176| `blockedMarketplaces` | (Apenas configurações gerenciadas) Lista de negação de fontes de marketplace. Aplicado em adição de marketplace e em instalação, atualização, atualização e auto-atualização de plugin, então um marketplace adicionado antes da política ser definida não pode ser usado para buscar plugins. Fontes bloqueadas são verificadas antes do download, então nunca tocam o sistema de arquivos. Veja [Restrições de marketplace gerenciado](/pt/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "untrusted/plugins" }]` |

177| `channelsEnabled` | (Apenas configurações gerenciadas) Permitir [channels](/pt/channels) para usuários de Team e Enterprise. Indefinido ou `false` bloqueia entrega de mensagens de canal independentemente do que os usuários passam para `--channels` | `true` |

178| `cleanupPeriodDays` | Arquivos de sessão mais antigos que este período são deletados na inicialização (padrão: 30 dias, mínimo 1). Definir como `0` é rejeitado com um erro de validação. Também controla o corte de idade para remoção automática de [worktrees de subagent órfãos](/pt/worktrees#clean-up-worktrees) na inicialização. Para desabilitar escritas de transcrição completamente, defina a variável de ambiente [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/pt/env-vars), ou em modo não interativo (`-p`) use a flag `--no-session-persistence` ou a opção SDK `persistSession: false`. | `20` |

179| `companyAnnouncements` | Anúncio a ser exibido aos usuários na inicialização. Se múltiplos anúncios forem fornecidos, eles serão alternados aleatoriamente. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |

180| `defaultShell` | Shell padrão para comandos `!` da caixa de entrada. Aceita `"bash"` (padrão) ou `"powershell"`. Definir `"powershell"` roteia comandos `!` interativos através do PowerShell no Windows. Requer `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Veja [Ferramenta PowerShell](/pt/tools-reference#powershell-tool) | `"powershell"` |

181| `deniedMcpServers` | Quando definido em managed-settings.json, lista de negação de MCP servers que são explicitamente bloqueados. Se aplica a todos os escopos incluindo servers gerenciados. A lista de negação tem precedência sobre a lista de permissões. Veja [Configuração MCP gerenciada](/pt/mcp#managed-mcp-configuration) | `[{ "serverName": "filesystem" }]` |

182| `disableAllHooks` | Desabilitar todos os [hooks](/pt/hooks) e qualquer [linha de status](/pt/statusline) personalizada | `true` |

183| `disableAutoMode` | Defina como `"disable"` para impedir que o [modo automático](/pt/permission-modes#eliminate-prompts-with-auto-mode) seja ativado. Remove `auto` do ciclo `Shift+Tab` e rejeita `--permission-mode auto` na inicialização. Mais útil em [configurações gerenciadas](/pt/permissions#managed-settings) onde os usuários não podem substituir | `"disable"` |

184| `disableDeepLinkRegistration` | Defina como `"disable"` para impedir que o Claude Code registre o manipulador de protocolo `claude-cli://` com o sistema operacional na inicialização. [Deep links](/pt/deep-links) permitem que ferramentas externas abram uma sessão do Claude Code com um prompt pré-preenchido. Útil em ambientes onde o registro de manipulador de protocolo é restrito ou gerenciado separadamente | `"disable"` |

185| `disabledMcpjsonServers` | Lista de MCP servers específicos de arquivos `.mcp.json` para rejeitar | `["filesystem"]` |

186| `disableSkillShellExecution` | Desabilitar execução de shell inline para blocos `` !`...` `` e ` ```! ` em [skills](/pt/skills) e comandos personalizados de fontes de usuário, projeto, plugin ou diretório adicional. Comandos são substituídos por `[shell command execution disabled by policy]` em vez de serem executados. Skills agrupadas e gerenciadas não são afetadas. Mais útil em [configurações gerenciadas](/pt/permissions#managed-settings) onde os usuários não podem substituir | `true` |

187| `editorMode` | Modo de atalho de teclado para o prompt de entrada: `"normal"` ou `"vim"`. Padrão: `"normal"`. Aparece em `/config` como **Editor mode** | `"vim"` |

188| `effortLevel` | Persistir o [nível de esforço](/pt/model-config#adjust-effort-level) entre sessões. Aceita `"low"`, `"medium"`, `"high"`, ou `"xhigh"`. Escrito automaticamente quando você executa `/effort` com um desses valores. Veja [Ajustar nível de esforço](/pt/model-config#adjust-effort-level) para modelos suportados | `"xhigh"` |

189| `enableAllProjectMcpServers` | Aprovar automaticamente todos os MCP servers definidos em arquivos `.mcp.json` do projeto | `true` |

190| `enabledMcpjsonServers` | Lista de MCP servers específicos de arquivos `.mcp.json` para aprovar | `["memory", "github"]` |

191| `env` | Variáveis de ambiente que serão aplicadas a cada sessão | `{"FOO": "bar"}` |

192| `fastModePerSessionOptIn` | Quando `true`, o modo rápido não persiste entre sessões. Cada sessão começa com modo rápido desligado, exigindo que os usuários o habilitem com `/fast`. A preferência de modo rápido do usuário ainda é salva. Veja [Exigir opt-in por sessão](/pt/fast-mode#require-per-session-opt-in) | `true` |

193| `feedbackSurveyRate` | Probabilidade (0–1) que a [pesquisa de qualidade de sessão](/pt/data-usage#session-quality-surveys) aparece quando elegível. Defina como `0` para suprimir completamente. Útil ao usar Bedrock, Vertex, ou Foundry onde a taxa de amostra padrão não se aplica | `0.05` |

194| `fileSuggestion` | Configure um script personalizado para preenchimento automático de arquivo `@`. Veja [Configurações de sugestão de arquivo](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

195| `forceLoginMethod` | Use `claudeai` para restringir login a contas Claude.ai, `console` para restringir login a contas Claude Console (faturamento de uso de API) | `claudeai` |

196| `forceLoginOrgUUID` | Exigir que o login pertença a uma organização específica. Aceita uma string UUID única, que também pré-seleciona essa organização durante o login, ou um array de UUIDs onde qualquer organização listada é aceita sem pré-seleção. Quando definido em configurações gerenciadas, o login falha se a conta autenticada não pertencer a uma organização listada; um array vazio falha fechado e bloqueia o login com uma mensagem de configuração incorreta | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` ou `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

197| `forceRemoteSettingsRefresh` | (Apenas configurações gerenciadas) Bloquear inicialização da CLI até que configurações gerenciadas remotas sejam buscadas recentemente do servidor. Se a busca falhar, a CLI sai em vez de continuar com configurações em cache ou sem configurações. Quando não definido, a inicialização continua sem esperar por configurações remotas. Veja [aplicação fail-closed](/pt/server-managed-settings#enforce-fail-closed-startup) | `true` |

198| `hooks` | Configure comandos personalizados para executar em eventos do ciclo de vida. Veja [documentação de hooks](/pt/hooks) para formato | Veja [hooks](/pt/hooks) |

199| `httpHookAllowedEnvVars` | Lista de permissões de nomes de variáveis de ambiente que hooks HTTP podem interpolar em cabeçalhos. Quando definido, o `allowedEnvVars` efetivo de cada hook é a interseção com esta lista. Indefinido = sem restrição. Arrays se mesclam entre fontes de configuração. Veja [Configuração de hooks](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |

200| `includeCoAuthoredBy` | **Descontinuado**: Use `attribution` em vez disso. Se deve incluir a linha `co-authored-by Claude` em commits git e pull requests (padrão: `true`) | `false` |

201| `includeGitInstructions` | Incluir instruções de workflow de commit e PR integradas e o snapshot de status git no prompt do sistema do Claude (padrão: `true`). Defina como `false` para remover ambos, por exemplo ao usar suas próprias skills de workflow git. A variável de ambiente `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` tem precedência sobre esta configuração quando definida | `false` |

202| `language` | Configure o idioma de resposta preferido do Claude (por exemplo, `"japanese"`, `"spanish"`, `"french"`). Claude responderá neste idioma por padrão. Também define o idioma de [ditado por voz](/pt/voice-dictation#change-the-dictation-language) | `"japanese"` |

203| `minimumVersion` | Piso que impede auto-atualizações em background e `claude update` de instalar uma versão abaixo desta. Mudar do canal `"latest"` para `"stable"` via `/config` solicita que você fique na versão atual ou permita o downgrade. Escolher ficar define este valor. Também útil em [configurações gerenciadas](/pt/permissions#managed-settings) para fixar um mínimo em toda a organização | `"2.1.100"` |

204| `model` | Substituir o modelo padrão a usar para Claude Code | `"claude-sonnet-4-6"` |

205| `modelOverrides` | Mapear IDs de modelo Anthropic para IDs de modelo específicos do provedor, como ARNs de perfil de inferência Bedrock. Cada entrada do seletor de modelo usa seu valor mapeado ao chamar a API do provedor. Veja [Substituir IDs de modelo por versão](/pt/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

206| `otelHeadersHelper` | Script para gerar cabeçalhos OpenTelemetry dinâmicos. Executa na inicialização e periodicamente (veja [Cabeçalhos dinâmicos](/pt/monitoring-usage#dynamic-headers)) | `/bin/generate_otel_headers.sh` |

207| `outputStyle` | Configure um estilo de saída para ajustar o prompt do sistema. Veja [documentação de estilos de saída](/pt/output-styles) | `"Explanatory"` |

208| `permissions` | Veja a tabela abaixo para a estrutura de permissões. | |

209| `plansDirectory` | Personalizar onde os arquivos de plano são armazenados. O caminho é relativo à raiz do projeto. Padrão: `~/.claude/plans` | `"./plans"` |

210| `pluginTrustMessage` | (Apenas configurações gerenciadas) Mensagem personalizada anexada ao aviso de confiança de plugin mostrado antes da instalação. Use isto para adicionar contexto específico da organização, por exemplo para confirmar que plugins do seu marketplace interno são verificados. | `"All plugins from our marketplace are approved by IT"` |

211| `preferredNotifChannel` | Método para notificações de conclusão de tarefa e prompt de permissão: `"auto"`, `"terminal_bell"`, `"iterm2"`, `"iterm2_with_bell"`, `"kitty"`, `"ghostty"`, ou `"notifications_disabled"`. Padrão: `"auto"`, que envia uma notificação de desktop em iTerm2, Ghostty, e Kitty e não faz nada em outros terminais. Defina `"terminal_bell"` para tocar o caractere de sino em qualquer terminal. Aparece em `/config` como **Notifications**. Veja [Obter um sino de terminal ou notificação](/pt/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |

212| `prefersReducedMotion` | Reduzir ou desabilitar animações de UI (spinners, shimmer, efeitos de flash) para acessibilidade | `true` |

213| `prUrlTemplate` | Modelo de URL para o badge de PR mostrado no rodapé e em resumos de resultado de ferramenta. Substitui `{host}`, `{owner}`, `{repo}`, `{number}`, e `{url}` da URL de PR relatada por `gh`. Use para apontar links de PR para uma ferramenta de revisão de código interna em vez de `github.com`. Não afeta autolinks `#123` na prosa do Claude | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

214| `respectGitignore` | Controlar se o seletor de arquivo `@` respeita padrões `.gitignore`. Quando `true` (padrão), arquivos correspondentes a padrões `.gitignore` são excluídos das sugestões | `false` |

215| `showClearContextOnPlanAccept` | Mostrar a opção "limpar contexto" na tela de aceitação do plano. Padrão: `false`. Defina como `true` para restaurar a opção | `true` |

216| `showThinkingSummaries` | Mostrar resumos de [pensamento estendido](/pt/model-config#extended-thinking) em sessões interativas. Quando indefinido ou `false` (padrão em modo interativo), blocos de pensamento são redatados pela API e mostrados como um stub recolhido. A redação apenas muda o que você vê, não o que o modelo gera: para reduzir gastos de pensamento, [reduza o orçamento ou desabilite o pensamento](/pt/model-config#extended-thinking) em vez disso. Modo não interativo (`-p`) e chamadores SDK sempre recebem resumos independentemente desta configuração | `true` |

217| `showTurnDuration` | Mostrar mensagens de duração de turno após respostas, por exemplo "Cooked for 1m 6s". Padrão: `true`. Aparece em `/config` como **Show turn duration** | `false` |

218| `skipWebFetchPreflight` | Pular a [verificação de segurança de domínio WebFetch](/pt/data-usage#webfetch-domain-safety-check) que envia cada nome de host solicitado para `api.anthropic.com` antes de buscar. Defina como `true` em ambientes que bloqueiam tráfego para Anthropic, como implantações Bedrock, Vertex AI, ou Foundry com egresso restritivo. Quando pulado, WebFetch tenta qualquer URL sem consultar a lista de bloqueio | `true` |

219| `spinnerTipsEnabled` | Mostrar dicas no spinner enquanto Claude está trabalhando. Defina como `false` para desabilitar dicas (padrão: `true`) | `false` |

220| `spinnerTipsOverride` | Substituir dicas do spinner com strings personalizadas. `tips`: array de strings de dica. `excludeDefault`: se `true`, mostrar apenas dicas personalizadas; se `false` ou ausente, dicas personalizadas são mescladas com dicas integradas | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |

221| `spinnerVerbs` | Personalizar os verbos de ação mostrados no spinner e mensagens de duração de turno. Defina `mode` como `"replace"` para usar apenas seus verbos, ou `"append"` para adicioná-los aos padrões | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |

222| `sshConfigs` | Conexões SSH para mostrar no dropdown de ambiente [Desktop](/pt/desktop#pre-configure-ssh-connections-for-your-team). Cada entrada requer `id`, `name`, e `sshHost`; `sshPort`, `sshIdentityFile`, e `startDirectory` são opcionais. Quando definido em configurações gerenciadas, conexões são somente leitura para usuários. Lido apenas de configurações gerenciadas e de usuário | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

223| `statusLine` | Configure uma linha de status personalizada para exibir contexto. Veja [documentação de `statusLine`](/pt/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

224| `strictKnownMarketplaces` | (Apenas configurações gerenciadas) Lista de permissões de marketplaces de plugin. Indefinido = sem restrições, array vazio = bloqueio. Aplicado em adição de marketplace e em instalação, atualização, atualização e auto-atualização de plugin, então um marketplace adicionado antes da política ser definida não pode ser usado para buscar plugins. Veja [Restrições de marketplace gerenciado](/pt/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

225| `teammateMode` | Como [colegas de equipe de agente](/pt/agent-teams) são exibidos: `auto` (escolhe painéis divididos em tmux ou iTerm2, em processo caso contrário), `in-process`, ou `tmux`. Veja [escolher um modo de exibição](/pt/agent-teams#choose-a-display-mode) | `"in-process"` |

226| `terminalProgressBarEnabled` | Mostrar a barra de progresso do terminal em terminais suportados: ConEmu, Ghostty 1.2.0+, e iTerm2 3.6.6+. Padrão: `true`. Aparece em `/config` como **Terminal progress bar** | `false` |

227| `tui` | Renderizador de UI de terminal. Use `"fullscreen"` para o renderizador [alt-screen](/pt/fullscreen) sem cintilação com scrollback virtualizado. Use `"default"` para o renderizador clássico de tela principal. Defina via `/tui` | `"fullscreen"` |

228| `useAutoModeDuringPlan` | Se Plan Mode usa semântica de modo automático quando o modo automático está disponível. Padrão: `true`. Não lido de configurações de projeto compartilhadas. Aparece em `/config` como "Use auto mode during plan" | `false` |

229| `viewMode` | Modo de visualização de transcrição padrão na inicialização: `"default"`, `"verbose"`, ou `"focus"`. Substitui a seleção pegajosa `/focus` quando definido | `"verbose"` |

230| `voice` | Configurações de [ditado por voz](/pt/voice-dictation): `enabled` ativa ditado, `mode` seleciona `"hold"` ou `"tap"`, e `autoSubmit` envia o prompt ao soltar a tecla em modo hold. Escrito automaticamente quando você executa `/voice`. Requer uma conta Claude.ai | `{ "enabled": true, "mode": "tap" }` |

231| `voiceEnabled` | Alias legado para `voice.enabled`. Prefira o objeto `voice` | `true` |

232| `wslInheritsWindowsSettings` | (Apenas configurações gerenciadas do Windows) Quando `true`, Claude Code no WSL lê configurações gerenciadas da cadeia de política do Windows além de `/etc/claude-code`, com fontes do Windows tendo prioridade. Apenas honrado quando definido na chave de registro HKLM ou `C:\Program Files\ClaudeCode\managed-settings.json`, ambos exigindo admin do Windows para escrever. Para que a política HKCU também se aplique no WSL, a flag deve ser adicionalmente definida no HKCU em si. Não tem efeito no Windows nativo | `true` |

233 

234### Configurações de config global

235 

236Estas configurações são armazenadas em `~/.claude.json` em vez de `settings.json`. Adicioná-las a `settings.json` acionará um erro de validação de esquema.

237 

238<Note>

239 Versões antes da v2.1.119 também armazenam `autoScrollEnabled`, `editorMode`, `showTurnDuration`, `teammateMode`, e `terminalProgressBarEnabled` aqui em vez de em `settings.json`.

240</Note>

241 

242| Chave | Descrição | Exemplo |

243| :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------ |

244| `autoConnectIde` | Conectar automaticamente a um IDE em execução quando Claude Code inicia de um terminal externo. Padrão: `false`. Aparece em `/config` como **Auto-connect to IDE (external terminal)** ao executar fora de um terminal VS Code ou JetBrains | `true` |

245| `autoInstallIdeExtension` | Instalar automaticamente a extensão IDE do Claude Code ao executar de um terminal VS Code. Padrão: `true`. Aparece em `/config` como **Auto-install IDE extension** ao executar dentro de um terminal VS Code ou JetBrains. Você também pode definir a variável de ambiente [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/pt/env-vars) | `false` |

246| `externalEditorContext` | Prepend a resposta anterior do Claude como contexto comentado com `#` quando você abre o editor externo com `Ctrl+G`. Padrão: `false`. Aparece em `/config` como **Show last response in external editor** | `true` |

247 

248### Configurações de worktrees

249 

250Configure como `--worktree` cria e gerencia git worktrees. Use estas configurações para reduzir uso de disco e tempo de inicialização em grandes monorepos.

251 

252| Chave | Descrição | Exemplo |

253| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ |

254| `worktree.symlinkDirectories` | Diretórios para criar symlink do repositório principal em cada worktree para evitar duplicar grandes diretórios no disco. Nenhum diretório é criado symlink por padrão | `["node_modules", ".cache"]` |

255| `worktree.sparsePaths` | Diretórios para fazer checkout em cada worktree via git sparse-checkout (modo cone). Apenas os caminhos listados são escritos no disco, o que é mais rápido em grandes monorepos | `["packages/my-app", "shared/utils"]` |

256 

257Para copiar arquivos ignorados pelo git como `.env` em novos worktrees, use um arquivo [`.worktreeinclude`](/pt/worktrees#copy-gitignored-files-into-worktrees) na raiz do seu projeto em vez de uma configuração.

258 

259### Configurações de permissão

260 

261| Chaves | Descrição | Exemplo |

262| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

263| `allow` | Array de regras de permissão para permitir uso de ferramenta. Veja [Sintaxe de regra de permissão](#permission-rule-syntax) abaixo para detalhes de correspondência de padrão | `[ "Bash(git diff *)" ]` |

264| `ask` | Array de regras de permissão para pedir confirmação ao usar ferramenta. Veja [Sintaxe de regra de permissão](#permission-rule-syntax) abaixo | `[ "Bash(git push *)" ]` |

265| `deny` | Array de regras de permissão para negar uso de ferramenta. Use isto para excluir arquivos sensíveis do acesso do Claude Code. Veja [Sintaxe de regra de permissão](#permission-rule-syntax) e [Limitações de permissão Bash](/pt/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

266| `additionalDirectories` | [Diretórios de trabalho](/pt/permissions#working-directories) adicionais para acesso a arquivos. A maioria da configuração `.claude/` [não é descoberta](/pt/permissions#additional-directories-grant-file-access-not-configuration) destes diretórios | `[ "../docs/" ]` |

267| `defaultMode` | [Modo de permissão](/pt/permission-modes) padrão ao abrir Claude Code. Valores válidos: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. A flag CLI `--permission-mode` substitui esta configuração para uma única sessão | `"acceptEdits"` |

268| `disableBypassPermissionsMode` | Defina como `"disable"` para impedir que o modo `bypassPermissions` seja ativado. Isto desabilita a flag de linha de comando `--dangerously-skip-permissions`. Tipicamente colocado em [configurações gerenciadas](/pt/permissions#managed-settings) para aplicar política organizacional, mas funciona de qualquer escopo | `"disable"` |

269| `skipDangerousModePermissionPrompt` | Pular o prompt de confirmação mostrado antes de entrar no modo de permissões de bypass via `--dangerously-skip-permissions` ou `defaultMode: "bypassPermissions"`. Ignorado quando definido em configurações de projeto (`.claude/settings.json`) para evitar que repositórios não confiáveis contornem automaticamente o prompt | `true` |

270 

271### Sintaxe de regra de permissão

272 

273Regras de permissão seguem o formato `Tool` ou `Tool(specifier)`. Regras são avaliadas em ordem: regras de negação primeiro, depois ask, depois allow. A primeira regra correspondente vence.

274 

275Exemplos rápidos:

276 

277| Regra | Efeito |

278| :----------------------------- | :--------------------------------------------------- |

279| `Bash` | Corresponde a todos os comandos Bash |

280| `Bash(npm run *)` | Corresponde a comandos começando com `npm run` |

281| `Read(./.env)` | Corresponde a leitura do arquivo `.env` |

282| `WebFetch(domain:example.com)` | Corresponde a solicitações de fetch para example.com |

283 

284Para a referência completa de sintaxe de regra, incluindo comportamento de curinga, padrões específicos de ferramenta para Read, Edit, WebFetch, MCP, e regras de Agent, e limitações de segurança de padrões Bash, veja [Sintaxe de regra de permissão](/pt/permissions#permission-rule-syntax).

285 

286### Configurações de sandbox

287 

288Configure comportamento avançado de sandboxing. Sandboxing isola comandos bash do seu sistema de arquivos e rede. Veja [Sandboxing](/pt/sandboxing) para detalhes.

289 

290| Chaves | Descrição | Exemplo |

291| :------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------- |

292| `enabled` | Ativar sandboxing bash (macOS, Linux, e WSL2). Padrão: false | `true` |

293| `failIfUnavailable` | Sair com um erro na inicialização se `sandbox.enabled` é true mas o sandbox não pode iniciar (dependências faltantes ou plataforma não suportada). Quando false (padrão), um aviso é mostrado e comandos executam sem sandbox. Destinado para implantações de configurações gerenciadas que exigem sandboxing como um portão duro | `true` |

294| `autoAllowBashIfSandboxed` | Aprovar automaticamente comandos bash quando sandboxed. Padrão: true | `true` |

295| `excludedCommands` | Comandos que devem executar fora do sandbox | `["docker *"]` |

296| `allowUnsandboxedCommands` | Permitir que comandos executem fora do sandbox via parâmetro `dangerouslyDisableSandbox`. Quando definido como `false`, a saída de escape `dangerouslyDisableSandbox` é completamente desabilitada e todos os comandos devem executar sandboxed (ou estar em `excludedCommands`). Útil para políticas empresariais que exigem sandboxing rigoroso. Padrão: true | `false` |

297| `filesystem.allowWrite` | Caminhos adicionais onde comandos sandboxed podem escrever. Arrays são mesclados em todos os escopos de configuração: caminhos de usuário, projeto e gerenciados são combinados, não substituídos. Também mesclado com caminhos de regras de permissão `Edit(...)` allow. Veja [prefixos de caminho de sandbox](#sandbox-path-prefixes) abaixo. | `["/tmp/build", "~/.kube"]` |

298| `filesystem.denyWrite` | Caminhos onde comandos sandboxed não podem escrever. Arrays são mesclados em todos os escopos de configuração. Também mesclado com caminhos de regras de permissão `Edit(...)` deny. | `["/etc", "/usr/local/bin"]` |

299| `filesystem.denyRead` | Caminhos onde comandos sandboxed não podem ler. Arrays são mesclados em todos os escopos de configuração. Também mesclado com caminhos de regras de permissão `Read(...)` deny. | `["~/.aws/credentials"]` |

300| `filesystem.allowRead` | Caminhos para re-permitir leitura dentro de regiões `denyRead`. Tem precedência sobre `denyRead`. Arrays são mesclados em todos os escopos de configuração. Use isto para criar padrões de acesso de leitura apenas para workspace. | `["."]` |

301| `filesystem.allowManagedReadPathsOnly` | (Apenas configurações gerenciadas) Apenas caminhos `allowRead` de configurações gerenciadas são respeitados. `denyRead` ainda se mescla de todas as fontes. Padrão: false | `true` |

302| `network.allowUnixSockets` | (Apenas macOS) Caminhos de socket Unix acessíveis no sandbox. Ignorado no Linux e WSL2, onde o filtro seccomp não pode inspecionar caminhos de socket; use `allowAllUnixSockets` em vez disso. | `["~/.ssh/agent-socket"]` |

303| `network.allowAllUnixSockets` | Permitir todas as conexões de socket Unix no sandbox. No Linux e WSL2 esta é a única maneira de permitir sockets Unix, já que pula o filtro seccomp que de outra forma bloqueia chamadas `socket(AF_UNIX, ...)`. Padrão: false | `true` |

304| `network.allowLocalBinding` | Permitir vinculação a portas localhost (apenas macOS). Padrão: false | `true` |

305| `network.allowMachLookup` | Nomes de serviço XPC/Mach adicionais que o sandbox pode procurar (apenas macOS). Suporta um único `*` à direita para correspondência de prefixo. Necessário para ferramentas que se comunicam via XPC, como o iOS Simulator ou Playwright. | `["com.apple.coresimulator.*"]` |

306| `network.allowedDomains` | Array de domínios para permitir para tráfego de rede de saída. Suporta curingas (por exemplo, `*.example.com`). | `["github.com", "*.npmjs.org"]` |

307| `network.deniedDomains` | Array de domínios para bloquear para tráfego de rede de saída. Suporta a mesma sintaxe de curinga que `allowedDomains`. Tem precedência sobre `allowedDomains` quando ambos correspondem. Mesclado de todas as fontes de configuração independentemente de `allowManagedDomainsOnly`. | `["sensitive.cloud.example.com"]` |

308| `network.allowManagedDomainsOnly` | (Apenas configurações gerenciadas) Apenas `allowedDomains` e regras allow `WebFetch(domain:...)` de configurações gerenciadas são respeitadas. Domínios de configurações de usuário, projeto e local são ignorados. Domínios não permitidos são bloqueados automaticamente sem solicitar o usuário. Domínios negados ainda são respeitados de todas as fontes. Padrão: false | `true` |

309| `network.httpProxyPort` | Porta de proxy HTTP usada se você deseja trazer seu próprio proxy. Se não especificado, Claude executará seu próprio proxy. | `8080` |

310| `network.socksProxyPort` | Porta de proxy SOCKS5 usada se você deseja trazer seu próprio proxy. Se não especificado, Claude executará seu próprio proxy. | `8081` |

311| `enableWeakerNestedSandbox` | Ativar sandbox mais fraco para ambientes Docker sem privilégios (apenas Linux e WSL2). **Reduz segurança.** Padrão: false | `true` |

312| `enableWeakerNetworkIsolation` | (Apenas macOS) Permitir acesso ao serviço de confiança TLS do sistema (`com.apple.trustd.agent`) no sandbox. Necessário para ferramentas baseadas em Go como `gh`, `gcloud`, e `terraform` verificarem certificados TLS ao usar `httpProxyPort` com um proxy MITM e CA personalizada. **Reduz segurança** abrindo um possível caminho de exfiltração de dados. Padrão: false | `true` |

313 

314#### Prefixos de caminho de sandbox

315 

316Caminhos em `filesystem.allowWrite`, `filesystem.denyWrite`, `filesystem.denyRead`, e `filesystem.allowRead` suportam estes prefixos:

317 

318| Prefixo | Significado | Exemplo |

319| :------------------ | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |

320| `/` | Caminho absoluto da raiz do sistema de arquivos | `/tmp/build` permanece `/tmp/build` |

321| `~/` | Relativo ao diretório home | `~/.kube` se torna `$HOME/.kube` |

322| `./` ou sem prefixo | Relativo à raiz do projeto para configurações de projeto, ou a `~/.claude` para configurações de usuário | `./output` em `.claude/settings.json` resolve para `<project-root>/output` |

323 

324O prefixo mais antigo `//path` para caminhos absolutos ainda funciona. Se você usou anteriormente `/path` esperando resolução relativa ao projeto, mude para `./path`. Esta sintaxe difere de [regras de permissão Read e Edit](/pt/permissions#read-and-edit), que usam `//path` para absoluto e `/path` para relativo ao projeto. Caminhos de sistema de arquivos de sandbox usam convenções padrão: `/tmp/build` é um caminho absoluto.

325 

326**Exemplo de configuração:**

327 

328```json theme={null}

329{

330 "sandbox": {

331 "enabled": true,

332 "autoAllowBashIfSandboxed": true,

333 "excludedCommands": ["docker *"],

334 "filesystem": {

335 "allowWrite": ["/tmp/build", "~/.kube"],

336 "denyRead": ["~/.aws/credentials"]

337 },

338 "network": {

339 "allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],

340 "deniedDomains": ["uploads.github.com"],

341 "allowUnixSockets": [

342 "/var/run/docker.sock"

343 ],

344 "allowLocalBinding": true

345 }

346 }

347}

348```

349 

350**Restrições de sistema de arquivos e rede** podem ser configuradas de duas formas que são mescladas juntas:

351 

352* **Configurações `sandbox.filesystem`** (mostradas acima): Controlam caminhos no limite do sandbox de nível de SO. Estas restrições se aplicam a todos os comandos de subprocesso (por exemplo, `kubectl`, `terraform`, `npm`), não apenas às ferramentas de arquivo do Claude.

353* **Regras de permissão**: Use regras allow/deny `Edit` para controlar acesso à ferramenta de arquivo do Claude, regras deny `Read` para bloquear leituras, e regras allow/deny `WebFetch` para controlar domínios de rede. Caminhos destas regras também são mesclados na configuração do sandbox.

354 

355### Configurações de atribuição

356 

357O Claude Code adiciona atribuição a commits git e pull requests. Estes são configurados separadamente:

358 

359* Commits usam [git trailers](https://git-scm.com/docs/git-interpret-trailers) (como `Co-Authored-By`) por padrão, que podem ser personalizados ou desabilitados

360* Descrições de pull request são texto simples

361 

362| Chaves | Descrição |

363| :------- | :------------------------------------------------------------------------------------------------ |

364| `commit` | Atribuição para commits git, incluindo qualquer trailer. String vazia oculta atribuição de commit |

365| `pr` | Atribuição para descrições de pull request. String vazia oculta atribuição de pull request |

366 

367**Atribuição de commit padrão:**

368 

369```text theme={null}

370🤖 Generated with [Claude Code](https://claude.com/claude-code)

371 

372 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

373```

374 

375**Atribuição de pull request padrão:**

376 

377```text theme={null}

378🤖 Generated with [Claude Code](https://claude.com/claude-code)

379```

380 

381**Exemplo:**

382 

383```json theme={null}

384{

385 "attribution": {

386 "commit": "Generated with AI\n\nCo-Authored-By: AI <ai@example.com>",

387 "pr": ""

388 }

389}

390```

391 

392<Note>

393 A configuração `attribution` tem precedência sobre a configuração descontinuada `includeCoAuthoredBy`. Para ocultar toda atribuição, defina `commit` e `pr` como strings vazias.

394</Note>

395 

396### Configurações de sugestão de arquivo

397 

398Configure um comando personalizado para preenchimento automático de caminho de arquivo `@`. A sugestão de arquivo integrada usa travessia rápida do sistema de arquivos, mas grandes monorepos podem se beneficiar de indexação específica do projeto, como um índice de arquivo pré-construído ou ferramentas personalizadas.

399 

400```json theme={null}

401{

402 "fileSuggestion": {

403 "type": "command",

404 "command": "~/.claude/file-suggestion.sh"

405 }

406}

407```

408 

409O comando executa com as mesmas variáveis de ambiente que [hooks](/pt/hooks), incluindo `CLAUDE_PROJECT_DIR`. Recebe JSON via stdin com um campo `query`:

410 

411```json theme={null}

412{"query": "src/comp"}

413```

414 

415Produz caminhos de arquivo separados por nova linha para stdout (atualmente limitado a 15):

416 

417```text theme={null}

418src/components/Button.tsx

419src/components/Modal.tsx

420src/components/Form.tsx

421```

422 

423**Exemplo:**

424 

425```bash theme={null}

426#!/bin/bash

427query=$(cat | jq -r '.query')

428your-repo-file-index --query "$query" | head -20

429```

430 

431### Configuração de hooks

432 

433Estas configurações controlam quais hooks são permitidos executar e o que hooks HTTP podem acessar. A configuração `allowManagedHooksOnly` pode ser configurada apenas em [configurações gerenciadas](#settings-files). As listas de permissões de URL e variável de ambiente podem ser definidas em qualquer nível de configuração e se mesclam entre fontes.

434 

435**Comportamento quando `allowManagedHooksOnly` é `true`:**

436 

437* Hooks gerenciados e hooks SDK são carregados

438* Hooks de plugins força-habilitados em configurações gerenciadas `enabledPlugins` são carregados. Isto permite que administradores distribuam hooks verificados através de um marketplace de organização enquanto bloqueiam tudo mais. A confiança é concedida pelo ID completo `plugin@marketplace`, então um plugin com o mesmo nome de um marketplace diferente permanece bloqueado

439* Hooks de usuário, hooks de projeto e todos os outros hooks de plugin são bloqueados

440 

441**Restringir URLs de hook HTTP:**

442 

443Limitar quais URLs hooks HTTP podem almejar. Suporta `*` como curinga para correspondência. Quando o array é definido, hooks HTTP almejando URLs não correspondentes são silenciosamente bloqueados.

444 

445```json theme={null}

446{

447 "allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"]

448}

449```

450 

451**Restringir variáveis de ambiente de hook HTTP:**

452 

453Limitar quais nomes de variáveis de ambiente hooks HTTP podem interpolar em valores de cabeçalho. O `allowedEnvVars` efetivo de cada hook é a interseção de sua própria lista e esta configuração.

454 

455```json theme={null}

456{

457 "httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]

458}

459```

460 

461### Precedência de configurações

462 

463Configurações se aplicam em ordem de precedência. De mais alta para mais baixa:

464 

4651. **Configurações gerenciadas** ([gerenciadas pelo servidor](/pt/server-managed-settings), [políticas de nível MDM/SO](#configuration-scopes), ou [configurações gerenciadas](/pt/settings#settings-files))

466 * Políticas implantadas por TI através de entrega de servidor, perfis de configuração MDM, políticas de registro, ou arquivos de configurações gerenciadas

467 * Não podem ser substituídas por qualquer outro nível, incluindo argumentos de linha de comando

468 * Dentro do nível gerenciado, a precedência é: gerenciadas pelo servidor > políticas de nível MDM/SO > baseadas em arquivo (`managed-settings.d/*.json` + `managed-settings.json`) > registro HKCU (apenas Windows). Apenas uma fonte gerenciada é usada; fontes não se mesclam entre camadas. Dentro da camada baseada em arquivo, arquivos drop-in e o arquivo base são mesclados juntos.

469 

4702. **Argumentos de linha de comando**

471 * Substituições temporárias para uma sessão específica

472 

4733. **Configurações de projeto local** (`.claude/settings.local.json`)

474 * Configurações pessoais específicas do projeto

475 

4764. **Configurações de projeto compartilhadas** (`.claude/settings.json`)

477 * Configurações de projeto compartilhadas pela equipe no controle de origem

478 

4795. **Configurações de usuário** (`~/.claude/settings.json`)

480 * Configurações globais pessoais

481 

482Esta hierarquia garante que políticas organizacionais sejam sempre aplicadas enquanto ainda permite que equipes e indivíduos personalizem sua experiência. A mesma precedência se aplica se você executar Claude Code a partir da CLI, da [extensão VS Code](/pt/vs-code), ou de um [IDE JetBrains](/pt/jetbrains).

483 

484Por exemplo, se suas configurações de usuário permitem `Bash(npm run *)` mas as configurações compartilhadas de um projeto negam, a configuração do projeto tem precedência e o comando é bloqueado.

485 

486<Note>

487 **Configurações de array se mesclam entre escopos.** Quando a mesma configuração com valor de array (como `sandbox.filesystem.allowWrite` ou `permissions.allow`) aparece em múltiplos escopos, os arrays são **concatenados e desduplicados**, não substituídos. Isto significa que escopos de prioridade mais baixa podem adicionar entradas sem substituir aquelas definidas por escopos de prioridade mais alta, e vice-versa. Por exemplo, se configurações gerenciadas definem `allowWrite` como `["/opt/company-tools"]` e um usuário adiciona `["~/.kube"]`, ambos os caminhos são incluídos na configuração final.

488</Note>

489 

490### Verificar configurações ativas

491 

492Execute `/status` dentro do Claude Code para ver quais fontes de configuração estão ativas e de onde vêm. A saída mostra cada camada de configuração (gerenciada, usuário, projeto) junto com sua origem, como `Enterprise managed settings (remote)`, `Enterprise managed settings (plist)`, `Enterprise managed settings (HKLM)`, `Enterprise managed settings (HKCU)`, ou `Enterprise managed settings (file)`. Se um arquivo de configuração contém erros, `/status` relata o problema para que você possa corrigi-lo.

493 

494### Pontos-chave sobre o sistema de configuração

495 

496* **Arquivos de memória (`CLAUDE.md`)**: Contêm instruções e contexto que Claude carrega na inicialização

497* **Arquivos de configuração (JSON)**: Configurar permissões, variáveis de ambiente, e comportamento de ferramenta

498* **Skills**: Prompts personalizados que podem ser invocados com `/skill-name` ou carregados pelo Claude automaticamente

499* **MCP servers**: Estender Claude Code com ferramentas e integrações adicionais

500* **Precedência**: Configurações de nível mais alto (Managed) substituem as de nível mais baixo (User/Project)

501* **Herança**: Configurações são mescladas, com configurações mais específicas adicionando ou substituindo as mais amplas

502 

503### Prompt do sistema

504 

505O prompt do sistema interno do Claude Code não é publicado. Para adicionar instruções personalizadas, use arquivos `CLAUDE.md` ou a flag `--append-system-prompt`.

506 

507### Excluindo arquivos sensíveis

508 

509Para impedir que Claude Code acesse arquivos contendo informações sensíveis como chaves de API, segredos, e arquivos de ambiente, use a configuração `permissions.deny` no seu arquivo `.claude/settings.json`:

510 

511```json theme={null}

512{

513 "permissions": {

514 "deny": [

515 "Read(./.env)",

516 "Read(./.env.*)",

517 "Read(./secrets/**)",

518 "Read(./config/credentials.json)",

519 "Read(./build)"

520 ]

521 }

522}

523```

524 

525Isto substitui a configuração descontinuada `ignorePatterns`. Arquivos correspondentes a estes padrões são excluídos da descoberta de arquivo e resultados de busca, e operações de leitura nestes arquivos são negadas.

526 

527## Configuração de subagent

528 

529O Claude Code suporta subagents de IA personalizados que podem ser configurados em níveis de usuário e projeto. Estes subagents são armazenados como arquivos Markdown com frontmatter YAML:

530 

531* **Subagents de usuário**: `~/.claude/agents/` - Disponíveis em todos os seus projetos

532* **Subagents de projeto**: `.claude/agents/` - Específicos ao seu projeto e podem ser compartilhados com sua equipe

533 

534Arquivos de subagent definem assistentes de IA especializados com prompts personalizados e permissões de ferramenta. Saiba mais sobre criação e uso de subagents na [documentação de subagents](/pt/sub-agents).

535 

536## Configuração de plugin

537 

538O Claude Code suporta um sistema de plugin que permite estender funcionalidade com skills, agents, hooks, e MCP servers. Plugins são distribuídos através de marketplaces e podem ser configurados em níveis de usuário e repositório.

539 

540### Configurações de plugin

541 

542Configurações relacionadas a plugin em `settings.json`:

543 

544```json theme={null}

545{

546 "enabledPlugins": {

547 "formatter@acme-tools": true,

548 "deployer@acme-tools": true,

549 "analyzer@security-plugins": false

550 },

551 "extraKnownMarketplaces": {

552 "acme-tools": {

553 "source": "github",

554 "repo": "acme-corp/claude-plugins"

555 }

556 }

557}

558```

559 

560#### `enabledPlugins`

561 

562Controla quais plugins estão habilitados. Formato: `"plugin-name@marketplace-name": true/false`

563 

564**Escopos**:

565 

566* **Configurações de usuário** (`~/.claude/settings.json`): Preferências pessoais de plugin

567* **Configurações de projeto** (`.claude/settings.json`): Plugins específicos do projeto compartilhados com equipe

568* **Configurações locais** (`.claude/settings.local.json`): Substituições por máquina (não confirmadas)

569* **Configurações gerenciadas** (`managed-settings.json`): Substituições de política em toda a organização que bloqueiam instalação em todos os escopos e ocultam o plugin do marketplace

570 

571**Exemplo**:

572 

573```json theme={null}

574{

575 "enabledPlugins": {

576 "code-formatter@team-tools": true,

577 "deployment-tools@team-tools": true,

578 "experimental-features@personal": false

579 }

580}

581```

582 

583#### `extraKnownMarketplaces`

584 

585Define marketplaces adicionais que devem ser disponibilizados para o repositório. Tipicamente usado em configurações em nível de repositório para garantir que membros da equipe tenham acesso a fontes de plugin necessárias.

586 

587**Quando um repositório inclui `extraKnownMarketplaces`**:

588 

5891. Membros da equipe são solicitados a instalar o marketplace quando confiam na pasta

5902. Membros da equipe são então solicitados a instalar plugins daquele marketplace

5913. Usuários podem pular marketplaces ou plugins indesejados (armazenados em configurações de usuário)

5924. Instalação respeita limites de confiança e requer consentimento explícito

593 

594**Exemplo**:

595 

596```json theme={null}

597{

598 "extraKnownMarketplaces": {

599 "acme-tools": {

600 "source": {

601 "source": "github",

602 "repo": "acme-corp/claude-plugins"

603 }

604 },

605 "security-plugins": {

606 "source": {

607 "source": "git",

608 "url": "https://git.example.com/security/plugins.git"

609 }

610 }

611 }

612}

613```

614 

615**Tipos de fonte de marketplace**:

616 

617* `github`: Repositório GitHub (usa `repo`)

618* `git`: Qualquer URL git (usa `url`)

619* `directory`: Caminho do sistema de arquivos local (usa `path`, apenas para desenvolvimento)

620* `hostPattern`: Padrão regex para corresponder hosts de marketplace (usa `hostPattern`)

621* `settings`: marketplace inline declarado diretamente em settings.json sem um repositório hospedado separado (usa `name` e `plugins`)

622 

623Use `source: 'settings'` para declarar um pequeno conjunto de plugins inline sem configurar um repositório de marketplace hospedado. Plugins listados aqui devem referenciar fontes externas como GitHub ou npm. Você ainda precisa habilitar cada plugin separadamente em `enabledPlugins`.

624 

625```json theme={null}

626{

627 "extraKnownMarketplaces": {

628 "team-tools": {

629 "source": {

630 "source": "settings",

631 "name": "team-tools",

632 "plugins": [

633 {

634 "name": "code-formatter",

635 "source": {

636 "source": "github",

637 "repo": "acme-corp/code-formatter"

638 }

639 }

640 ]

641 }

642 }

643 }

644}

645```

646 

647#### `strictKnownMarketplaces`

648 

649**Apenas configurações gerenciadas**: Controla quais marketplaces de plugin os usuários podem adicionar e instalar plugins. Esta configuração pode ser configurada apenas em [configurações gerenciadas](/pt/settings#settings-files) e fornece aos administradores controle rigoroso sobre fontes de marketplace.

650 

651**Localizações de arquivo de configurações gerenciadas**:

652 

653* **macOS**: `/Library/Application Support/ClaudeCode/managed-settings.json`

654* **Linux e WSL**: `/etc/claude-code/managed-settings.json`

655* **Windows**: `C:\Program Files\ClaudeCode\managed-settings.json`

656 

657**Características principais**:

658 

659* Apenas disponível em configurações gerenciadas (`managed-settings.json`)

660* Não pode ser substituída por configurações de usuário ou projeto (precedência mais alta)

661* Aplicada ANTES de operações de rede/sistema de arquivos (fontes bloqueadas nunca executam)

662* Usa correspondência exata para especificações de fonte (incluindo `ref`, `path` para fontes git), exceto `hostPattern`, que usa correspondência regex

663 

664**Comportamento de lista de permissões**:

665 

666* `undefined` (padrão): Sem restrições - usuários podem adicionar qualquer marketplace

667* Array vazio `[]`: Bloqueio completo - usuários não podem adicionar novos marketplaces

668* Lista de fontes: Usuários podem apenas adicionar marketplaces que correspondem exatamente

669 

670**Todos os tipos de fonte suportados**:

671 

672A lista de permissões suporta múltiplos tipos de fonte de marketplace. A maioria das fontes usa correspondência exata, enquanto `hostPattern` usa correspondência regex contra o host do marketplace.

673 

6741. **Repositórios GitHub**:

675 

676```json theme={null}

677{ "source": "github", "repo": "acme-corp/approved-plugins" }

678{ "source": "github", "repo": "acme-corp/security-tools", "ref": "v2.0" }

679{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }

680```

681 

682Campos: `repo` (obrigatório), `ref` (opcional: branch/tag/SHA), `path` (opcional: subdiretório)

683 

6842. **Repositórios Git**:

685 

686```json theme={null}

687{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }

688{ "source": "git", "url": "https://bitbucket.org/acme-corp/plugins.git", "ref": "production" }

689{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }

690```

691 

692Campos: `url` (obrigatório), `ref` (opcional: branch/tag/SHA), `path` (opcional: subdiretório)

693 

6943. **Marketplaces baseados em URL**:

695 

696```json theme={null}

697{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }

698{ "source": "url", "url": "https://cdn.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }

699```

700 

701Campos: `url` (obrigatório), `headers` (opcional: cabeçalhos HTTP para acesso autenticado)

702 

703<Note>

704 Marketplaces baseados em URL apenas baixam o arquivo `marketplace.json`. Eles não baixam arquivos de plugin do servidor. Plugins em marketplaces baseados em URL devem usar fontes externas (URLs GitHub, npm, ou git) em vez de caminhos relativos. Para plugins com caminhos relativos, use um marketplace baseado em Git em vez disso. Veja [Troubleshooting](/pt/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces) para detalhes.

705</Note>

706 

7074. **Pacotes NPM**:

708 

709```json theme={null}

710{ "source": "npm", "package": "@acme-corp/claude-plugins" }

711{ "source": "npm", "package": "@acme-corp/approved-marketplace" }

712```

713 

714Campos: `package` (obrigatório, suporta pacotes com escopo)

715 

7165. **Caminhos de arquivo**:

717 

718```json theme={null}

719{ "source": "file", "path": "/usr/local/share/claude/acme-marketplace.json" }

720{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }

721```

722 

723Campos: `path` (obrigatório: caminho absoluto para arquivo marketplace.json)

724 

7256. **Caminhos de diretório**:

726 

727```json theme={null}

728{ "source": "directory", "path": "/usr/local/share/claude/acme-plugins" }

729{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }

730```

731 

732Campos: `path` (obrigatório: caminho absoluto para diretório contendo `.claude-plugin/marketplace.json`)

733 

7347. **Correspondência de padrão de host**:

735 

736```json theme={null}

737{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }

738{ "source": "hostPattern", "hostPattern": "^gitlab\\.internal\\.example\\.com$" }

739```

740 

741Campos: `hostPattern` (obrigatório: padrão regex para corresponder contra o host do marketplace)

742 

743Use correspondência de padrão de host quando você deseja permitir todos os marketplaces de um host específico sem enumerar cada repositório individualmente. Isto é útil para organizações com GitHub Enterprise interno ou servidores GitLab onde desenvolvedores criam seus próprios marketplaces.

744 

745Extração de host por tipo de fonte:

746 

747* `github`: sempre corresponde contra `github.com`

748* `git`: extrai nome de host da URL (suporta formatos HTTPS e SSH)

749* `url`: extrai nome de host da URL

750* `npm`, `file`, `directory`: não suportado para correspondência de padrão de host

751 

752**Exemplos de configuração**:

753 

754Exemplo: permitir apenas marketplaces específicos:

755 

756```json theme={null}

757{

758 "strictKnownMarketplaces": [

759 {

760 "source": "github",

761 "repo": "acme-corp/approved-plugins"

762 },

763 {

764 "source": "github",

765 "repo": "acme-corp/security-tools",

766 "ref": "v2.0"

767 },

768 {

769 "source": "url",

770 "url": "https://plugins.example.com/marketplace.json"

771 },

772 {

773 "source": "npm",

774 "package": "@acme-corp/compliance-plugins"

775 }

776 ]

777}

778```

779 

780Exemplo - Desabilitar todas as adições de marketplace:

781 

782```json theme={null}

783{

784 "strictKnownMarketplaces": []

785}

786```

787 

788Exemplo: permitir todos os marketplaces de um servidor git interno:

789 

790```json theme={null}

791{

792 "strictKnownMarketplaces": [

793 {

794 "source": "hostPattern",

795 "hostPattern": "^github\\.example\\.com$"

796 }

797 ]

798}

799```

800 

801**Requisitos de correspondência exata**:

802 

803Fontes de marketplace devem corresponder **exatamente** para que a adição de um usuário seja permitida. Para fontes baseadas em git (`github` e `git`), isto inclui todos os campos opcionais:

804 

805* O `repo` ou `url` deve corresponder exatamente

806* O campo `ref` deve corresponder exatamente (ou ambos serem indefinidos)

807* O campo `path` deve corresponder exatamente (ou ambos serem indefinidos)

808 

809Exemplos de fontes que **NÃO correspondem**:

810 

811```json theme={null}

812// Estas são DIFERENTES fontes:

813{ "source": "github", "repo": "acme-corp/plugins" }

814{ "source": "github", "repo": "acme-corp/plugins", "ref": "main" }

815 

816// Estas também são DIFERENTES:

817{ "source": "github", "repo": "acme-corp/plugins", "path": "marketplace" }

818{ "source": "github", "repo": "acme-corp/plugins" }

819```

820 

821**Comparação com `extraKnownMarketplaces`**:

822 

823| Aspecto | `strictKnownMarketplaces` | `extraKnownMarketplaces` |

824| --------------------------- | ---------------------------------------------- | ------------------------------------------------ |

825| **Propósito** | Aplicação de política organizacional | Conveniência da equipe |

826| **Arquivo de configuração** | Apenas `managed-settings.json` | Qualquer arquivo de configuração |

827| **Comportamento** | Bloqueia adições não permitidas | Auto-instala marketplaces faltantes |

828| **Quando aplicado** | Antes de operações de rede/sistema de arquivos | Após prompt de confiança do usuário |

829| **Pode ser substituído** | Não (precedência mais alta) | Sim (por configurações de precedência mais alta) |

830| **Formato de fonte** | Objeto de fonte direto | Marketplace nomeado com fonte aninhada |

831| **Caso de uso** | Conformidade, restrições de segurança | Onboarding, padronização |

832 

833**Diferença de formato**:

834 

835`strictKnownMarketplaces` usa objetos de fonte diretos:

836 

837```json theme={null}

838{

839 "strictKnownMarketplaces": [

840 { "source": "github", "repo": "acme-corp/plugins" }

841 ]

842}

843```

844 

845`extraKnownMarketplaces` requer marketplaces nomeados:

846 

847```json theme={null}

848{

849 "extraKnownMarketplaces": {

850 "acme-tools": {

851 "source": { "source": "github", "repo": "acme-corp/plugins" }

852 }

853 }

854}

855```

856 

857**Usando ambos juntos**:

858 

859`strictKnownMarketplaces` é um portão de política: controla o que os usuários podem adicionar mas não registra nenhum marketplace. Para restringir e pré-registrar um marketplace para todos os usuários, defina ambos em `managed-settings.json`:

860 

861```json theme={null}

862{

863 "strictKnownMarketplaces": [

864 { "source": "github", "repo": "acme-corp/plugins" }

865 ],

866 "extraKnownMarketplaces": {

867 "acme-tools": {

868 "source": { "source": "github", "repo": "acme-corp/plugins" }

869 }

870 }

871}

872```

873 

874Com apenas `strictKnownMarketplaces` definido, usuários ainda podem adicionar o marketplace permitido manualmente via `/plugin marketplace add`, mas não está disponível automaticamente.

875 

876**Notas importantes**:

877 

878* Restrições são verificadas ANTES de qualquer solicitação de rede ou operação de sistema de arquivos

879* Quando bloqueado, usuários veem mensagens de erro claras indicando que a fonte é bloqueada por política gerenciada

880* A restrição é aplicada em adição de marketplace e em instalação, atualização, atualização e auto-atualização de plugin. Um marketplace adicionado antes da política ser definida não pode ser usado para instalar ou atualizar plugins uma vez que sua fonte não corresponde mais à lista de permissões

881* Configurações gerenciadas têm a precedência mais alta e não podem ser substituídas

882 

883Veja [Restrições de marketplace gerenciado](/pt/plugin-marketplaces#managed-marketplace-restrictions) para documentação voltada para o usuário.

884 

885### Gerenciando plugins

886 

887Use o comando `/plugin` para gerenciar plugins interativamente:

888 

889* Procurar plugins disponíveis de marketplaces

890* Instalar/desinstalar plugins

891* Habilitar/desabilitar plugins

892* Ver detalhes de plugin (skills, agents, hooks fornecidos)

893* Adicionar/remover marketplaces

894 

895Saiba mais sobre o sistema de plugin na [documentação de plugins](/pt/plugins).

896 

897## Variáveis de ambiente

898 

899Variáveis de ambiente permitem controlar o comportamento do Claude Code sem editar arquivos de configuração. Qualquer variável também pode ser configurada em [`settings.json`](#available-settings) sob a chave `env` para aplicá-la a cada sessão ou implantá-la para sua equipe.

900 

901Veja a [referência de variáveis de ambiente](/pt/env-vars) para a lista completa.

902 

903## Ferramentas disponíveis para Claude

904 

905O Claude Code tem acesso a um conjunto de ferramentas para leitura, edição, busca, execução de comandos, e orquestração de subagents. Nomes de ferramenta são as strings exatas que você usa em regras de permissão e correspondedores de hook.

906 

907Veja a [referência de ferramentas](/pt/tools-reference) para a lista completa e detalhes de comportamento da ferramenta Bash.

908 

909## Veja também

910 

911* [Permissões](/pt/permissions): sistema de permissões, sintaxe de regra, padrões específicos de ferramenta, e políticas gerenciadas

912* [Autenticação](/pt/authentication): configurar acesso de usuário ao Claude Code

913* [Depurar sua configuração](/pt/debug-your-config): diagnosticar por que uma configuração, hook, ou servidor MCP não está tendo efeito

914* [Solucionar problemas de instalação e login](/pt/troubleshoot-install): problemas de instalação, autenticação e plataforma

setup.md +606 −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# Configuração avançada

6 

7> Requisitos do sistema, instalação específica da plataforma, gerenciamento de versão e desinstalação do Claude Code.

8 

9Esta página cobre requisitos do sistema, detalhes de instalação específicos da plataforma, atualizações e desinstalação. Para um guia passo a passo de sua primeira sessão, consulte o [guia de início rápido](/pt/quickstart). Se você nunca usou um terminal antes, consulte o [guia de terminal](/pt/terminal-guide).

10 

11## Requisitos do sistema

12 

13Claude Code é executado nas seguintes plataformas e configurações:

14 

15* **Sistema operacional**:

16 * macOS 13.0+

17 * Windows 10 1809+ ou Windows Server 2019+

18 * Ubuntu 20.04+

19 * Debian 10+

20 * Alpine Linux 3.19+

21* **Hardware**: 4 GB+ de RAM, processador x64 ou ARM64

22* **Rede**: conexão com a internet obrigatória. Consulte [configuração de rede](/pt/network-config#network-access-requirements).

23* **Shell**: Bash, Zsh, PowerShell ou CMD. Em Windows nativo, [Git for Windows](https://git-scm.com/downloads/win) é recomendado; Claude Code volta para PowerShell quando Git Bash está ausente. Configurações WSL não requerem Git for Windows.

24* **Localização**: [países suportados pela Anthropic](https://www.anthropic.com/supported-countries)

25 

26### Dependências adicionais

27 

28* **ripgrep**: geralmente incluído com Claude Code. Se a busca falhar, consulte [solução de problemas de busca e descoberta](/pt/troubleshooting#search-and-discovery-issues).

29 

30## Instalar Claude Code

31 

32<Tip>

33 Prefere uma interface gráfica? O [aplicativo de desktop](/pt/desktop-quickstart) permite que você use Claude Code sem o terminal. Baixe-o para [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) ou [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs).

34 

35 Novo no terminal? Consulte o [guia de terminal](/pt/terminal-guide) para instruções passo a passo.

36</Tip>

37 

38To install Claude Code, use one of the following methods:

39 

40<Tabs>

41 <Tab title="Native Install (Recommended)">

42 **macOS, Linux, WSL:**

43 

44 ```bash theme={null}

45 curl -fsSL https://claude.ai/install.sh | bash

46 ```

47 

48 **Windows PowerShell:**

49 

50 ```powershell theme={null}

51 irm https://claude.ai/install.ps1 | iex

52 ```

53 

54 **Windows CMD:**

55 

56 ```batch theme={null}

57 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

58 ```

59 

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

61 

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

63 

64 <Info>

65 Native installations automatically update in the background to keep you on the latest version.

66 </Info>

67 </Tab>

68 

69 <Tab title="Homebrew">

70 ```bash theme={null}

71 brew install --cask claude-code

72 ```

73 

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

75 

76 <Info>

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

78 </Info>

79 </Tab>

80 

81 <Tab title="WinGet">

82 ```powershell theme={null}

83 winget install Anthropic.ClaudeCode

84 ```

85 

86 <Info>

87 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

88 </Info>

89 </Tab>

90</Tabs>

91 

92You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

93 

94Após a conclusão da instalação, abra um terminal no projeto em que deseja trabalhar e inicie Claude Code:

95 

96```bash theme={null}

97claude

98```

99 

100Se você encontrar algum problema durante a instalação, consulte [Solucionar problemas de instalação e login](/pt/troubleshoot-install).

101 

102### Configurar no Windows

103 

104Você pode executar Claude Code nativamente no Windows ou dentro do WSL. Escolha com base em onde seus projetos estão localizados e quais recursos você precisa:

105 

106| Opção | Requer | [Sandboxing](/pt/sandboxing) | Quando usar |

107| -------------- | --------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------- |

108| Windows nativo | [Git for Windows](https://git-scm.com/downloads/win) recomendado; PowerShell usado se ausente | Não suportado | Projetos e ferramentas nativas do Windows |

109| WSL 2 | WSL 2 habilitado | Suportado | Cadeias de ferramentas Linux ou execução de comando em sandbox |

110| WSL 1 | WSL 1 habilitado | Não suportado | Se WSL 2 não estiver disponível |

111 

112**Opção 1: Windows nativo com Git Bash**

113 

114Instale [Git for Windows](https://git-scm.com/downloads/win) e execute o comando de instalação a partir do PowerShell ou CMD. Você não precisa executar como Administrador.

115 

116Se você instalar a partir do PowerShell ou CMD apenas afeta qual comando de instalação você executa. Seu prompt mostra `PS C:\Users\SeuNome>` no PowerShell e `C:\Users\SeuNome>` sem o `PS` no CMD. Se você é novo no terminal, o [guia de terminal](/pt/terminal-guide#windows) orienta cada etapa.

117 

118Após a instalação, inicie `claude` a partir do PowerShell, CMD ou Git Bash. Quando Git Bash está instalado, Claude Code o usa internamente para executar comandos independentemente de onde você o iniciou. Se Claude Code não conseguir encontrar sua instalação do Git Bash, defina o caminho em seu [arquivo settings.json](/pt/settings):

119 

120```json theme={null}

121{

122 "env": {

123 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

124 }

125}

126```

127 

128Claude Code também pode executar PowerShell nativamente no Windows. Quando Git Bash está instalado, a ferramenta PowerShell está sendo lançada progressivamente como uma opção adicional: defina `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` para aceitar ou `0` para recusar. Consulte [ferramenta PowerShell](/pt/tools-reference#powershell-tool) para configuração e limitações.

129 

130**Opção 2: WSL**

131 

132Abra sua distribuição WSL e execute o instalador Linux a partir das [instruções de instalação](#install-claude-code) acima. Você instala e inicia `claude` dentro do terminal WSL, não a partir do PowerShell ou CMD.

133 

134### Alpine Linux e distribuições baseadas em musl

135 

136O instalador nativo no Alpine e outras distribuições baseadas em musl/uClibc requer `libgcc`, `libstdc++` e `ripgrep`. Instale-os usando o gerenciador de pacotes da sua distribuição e defina `USE_BUILTIN_RIPGREP=0`.

137 

138Este exemplo instala os pacotes necessários no Alpine:

139 

140```bash theme={null}

141apk add libgcc libstdc++ ripgrep

142```

143 

144Em seguida, defina `USE_BUILTIN_RIPGREP` como `0` em seu arquivo [`settings.json`](/pt/settings#available-settings):

145 

146```json theme={null}

147{

148 "env": {

149 "USE_BUILTIN_RIPGREP": "0"

150 }

151}

152```

153 

154## Verificar sua instalação

155 

156Após a instalação, confirme que Claude Code está funcionando:

157 

158```bash theme={null}

159claude --version

160```

161 

162Se isso falhar com `command not found` ou outro erro, consulte [Solucionar problemas de instalação e login](/pt/troubleshoot-install).

163 

164Para uma verificação mais detalhada de sua instalação e configuração, execute [`claude doctor`](/pt/troubleshooting#get-more-help):

165 

166```bash theme={null}

167claude doctor

168```

169 

170## Autenticar

171 

172Claude Code requer uma conta Pro, Max, Team, Enterprise ou Console. O plano gratuito do Claude.ai não inclui acesso ao Claude Code. Você também pode usar Claude Code com um provedor de API de terceiros como [Amazon Bedrock](/pt/amazon-bedrock), [Google Vertex AI](/pt/google-vertex-ai) ou [Microsoft Foundry](/pt/microsoft-foundry).

173 

174Após a instalação, faça login executando `claude` e seguindo os prompts do navegador. Consulte [Autenticação](/pt/authentication) para todos os tipos de conta e opções de configuração de equipe.

175 

176## Atualizar Claude Code

177 

178As instalações nativas são atualizadas automaticamente em segundo plano. Você pode [configurar o canal de lançamento](#configure-release-channel) para controlar se recebe atualizações imediatamente ou em um cronograma estável com atraso, ou [desabilitar atualizações automáticas](#disable-auto-updates) completamente. As instalações do Homebrew, WinGet e [gerenciador de pacotes Linux](#install-with-linux-package-managers) requerem atualizações manuais.

179 

180### Atualizações automáticas

181 

182Claude Code verifica atualizações na inicialização e periodicamente durante a execução. As atualizações são baixadas e instaladas em segundo plano, depois entram em vigor na próxima vez que você inicia Claude Code.

183 

184<Note>

185 As instalações do Homebrew, WinGet, apt, dnf e apk não são atualizadas automaticamente. Para Homebrew, execute `brew upgrade claude-code` ou `brew upgrade claude-code@latest`, dependendo de qual cask você instalou. Para WinGet, execute `winget upgrade Anthropic.ClaudeCode`. Para gerenciadores de pacotes Linux, consulte os comandos de atualização em [Instalar com gerenciadores de pacotes Linux](#install-with-linux-package-managers).

186 

187 **Problema conhecido:** Claude Code pode notificá-lo sobre atualizações antes que a nova versão esteja disponível nesses gerenciadores de pacotes. Se uma atualização falhar, aguarde e tente novamente mais tarde.

188 

189 O Homebrew mantém versões antigas no disco após atualizações. Execute `brew cleanup` periodicamente para recuperar espaço em disco.

190</Note>

191 

192### Configurar canal de lançamento

193 

194Controle qual canal de lançamento Claude Code segue para atualizações automáticas e `claude update` com a configuração `autoUpdatesChannel`:

195 

196* `"latest"`, o padrão: receba novos recursos assim que forem lançados

197* `"stable"`: use uma versão que normalmente tem cerca de uma semana de idade, pulando lançamentos com regressões importantes

198 

199Configure isso via `/config` → **Canal de atualização automática**, ou adicione-o ao seu [arquivo settings.json](/pt/settings):

200 

201```json theme={null}

202{

203 "autoUpdatesChannel": "stable"

204}

205```

206 

207Para implantações empresariais, você pode impor um canal de lançamento consistente em toda a sua organização usando [configurações gerenciadas](/pt/permissions#managed-settings).

208 

209As instalações do Homebrew escolhem um canal pelo nome do cask em vez dessa configuração: `claude-code` rastreia estável e `claude-code@latest` rastreia mais recente.

210 

211### Fixar uma versão mínima

212 

213A configuração `minimumVersion` estabelece um piso. As atualizações automáticas em segundo plano e `claude update` recusam instalar qualquer versão abaixo desse valor, portanto mudar para o canal `"stable"` não faz downgrade se você já estiver em um build `"latest"` mais recente.

214 

215Mudar de `"latest"` para `"stable"` via `/config` solicita que você escolha ficar na versão atual ou permitir o downgrade. Escolher ficar define `minimumVersion` para essa versão. Mudar de volta para `"latest"` limpa isso.

216 

217Adicione-o ao seu [arquivo settings.json](/pt/settings) para fixar um piso explicitamente:

218 

219```json theme={null}

220{

221 "autoUpdatesChannel": "stable",

222 "minimumVersion": "2.1.100"

223}

224```

225 

226Em [configurações gerenciadas](/pt/permissions#managed-settings), isso impõe um mínimo em toda a organização que as configurações de usuário e projeto não podem substituir.

227 

228### Desabilitar atualizações automáticas

229 

230Defina `DISABLE_AUTOUPDATER` como `"1"` na chave `env` do seu arquivo [`settings.json`](/pt/settings#available-settings):

231 

232```json theme={null}

233{

234 "env": {

235 "DISABLE_AUTOUPDATER": "1"

236 }

237}

238```

239 

240`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`](/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.

241 

242### Atualizar manualmente

243 

244Para aplicar uma atualização imediatamente sem aguardar a próxima verificação em segundo plano, execute:

245 

246```bash theme={null}

247claude update

248```

249 

250## Opções avançadas de instalação

251 

252Essas opções são para fixação de versão, gerenciadores de pacotes Linux, npm e verificação da integridade do binário.

253 

254### Instalar uma versão específica

255 

256O instalador nativo aceita um número de versão específico ou um canal de lançamento (`latest` ou `stable`). O canal que você escolhe no momento da instalação se torna seu padrão para atualizações automáticas. Consulte [configurar canal de lançamento](#configure-release-channel) para mais informações.

257 

258Para instalar a versão mais recente (padrão):

259 

260<Tabs>

261 <Tab title="macOS, Linux, WSL">

262 ```bash theme={null}

263 curl -fsSL https://claude.ai/install.sh | bash

264 ```

265 </Tab>

266 

267 <Tab title="Windows PowerShell">

268 ```powershell theme={null}

269 irm https://claude.ai/install.ps1 | iex

270 ```

271 </Tab>

272 

273 <Tab title="Windows CMD">

274 ```batch theme={null}

275 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

276 ```

277 </Tab>

278</Tabs>

279 

280Para instalar a versão estável:

281 

282<Tabs>

283 <Tab title="macOS, Linux, WSL">

284 ```bash theme={null}

285 curl -fsSL https://claude.ai/install.sh | bash -s stable

286 ```

287 </Tab>

288 

289 <Tab title="Windows PowerShell">

290 ```powershell theme={null}

291 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) stable

292 ```

293 </Tab>

294 

295 <Tab title="Windows CMD">

296 ```batch theme={null}

297 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd stable && del install.cmd

298 ```

299 </Tab>

300</Tabs>

301 

302Para instalar um número de versão específico:

303 

304<Tabs>

305 <Tab title="macOS, Linux, WSL">

306 ```bash theme={null}

307 curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89

308 ```

309 </Tab>

310 

311 <Tab title="Windows PowerShell">

312 ```powershell theme={null}

313 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89

314 ```

315 </Tab>

316 

317 <Tab title="Windows CMD">

318 ```batch theme={null}

319 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd 2.1.89 && del install.cmd

320 ```

321 </Tab>

322</Tabs>

323 

324### Instalar com gerenciadores de pacotes Linux

325 

326Claude Code publica repositórios apt, dnf e apk assinados. Substitua `stable` por `latest` para o canal contínuo. As instalações do gerenciador de pacotes não são atualizadas automaticamente através do Claude Code; as atualizações chegam através do seu fluxo de trabalho de atualização do sistema normal.

327 

328Todos os repositórios são assinados com a [chave de assinatura de lançamento do Claude Code](#binary-integrity-and-code-signing). Antes de confiar na chave, verifique-a conforme descrito em cada aba.

329 

330<Tabs>

331 <Tab title="apt">

332 Para Debian e Ubuntu. Para usar o canal contínuo, altere ambas as ocorrências de `stable` na linha `deb`: o caminho da URL e o nome do suite.

333 

334 ```bash theme={null}

335 sudo install -d -m 0755 /etc/apt/keyrings

336 sudo curl -fsSL https://downloads.claude.ai/keys/claude-code.asc \

337 -o /etc/apt/keyrings/claude-code.asc

338 echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/stable stable main" \

339 | sudo tee /etc/apt/sources.list.d/claude-code.list

340 sudo apt update

341 sudo apt install claude-code

342 ```

343 

344 Verifique a impressão digital da chave GPG antes de confiar nela: `gpg --show-keys /etc/apt/keyrings/claude-code.asc` deve relatar `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`.

345 

346 Para atualizar mais tarde, execute `sudo apt update && sudo apt upgrade claude-code`.

347 </Tab>

348 

349 <Tab title="dnf">

350 Para Fedora e RHEL:

351 

352 ```bash theme={null}

353 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'

354 [claude-code]

355 name=Claude Code

356 baseurl=https://downloads.claude.ai/claude-code/rpm/stable

357 enabled=1

358 gpgcheck=1

359 gpgkey=https://downloads.claude.ai/keys/claude-code.asc

360 EOF

361 sudo dnf install claude-code

362 ```

363 

364 dnf baixa a chave na primeira instalação e solicita que você confirme a impressão digital. Verifique se ela corresponde a `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` antes de aceitar.

365 

366 Para atualizar mais tarde, execute `sudo dnf upgrade claude-code`.

367 </Tab>

368 

369 <Tab title="apk">

370 Para Alpine Linux:

371 

372 ```sh theme={null}

373 wget -O /etc/apk/keys/claude-code.rsa.pub \

374 https://downloads.claude.ai/keys/claude-code.rsa.pub

375 echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories

376 apk add claude-code

377 ```

378 

379 Verifique a chave baixada com `sha256sum /etc/apk/keys/claude-code.rsa.pub`, que deve relatar `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6`.

380 

381 Para atualizar mais tarde, execute `apk update && apk upgrade claude-code`.

382 </Tab>

383</Tabs>

384 

385### Instalar com npm

386 

387Você também pode instalar Claude Code como um pacote npm global. O pacote requer [Node.js 18 ou posterior](https://nodejs.org/en/download).

388 

389```bash theme={null}

390npm install -g @anthropic-ai/claude-code

391```

392 

393O pacote npm instala o mesmo binário nativo que o instalador autônomo. npm puxa o binário através de uma dependência opcional por plataforma como `@anthropic-ai/claude-code-darwin-arm64`, e uma etapa postinstall o vincula no lugar. O binário `claude` instalado não invoca Node em si.

394 

395As plataformas de instalação npm suportadas são `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64` e `win32-arm64`. Seu gerenciador de pacotes deve permitir dependências opcionais. Consulte [solução de problemas](/pt/troubleshoot-install#native-binary-not-found-after-npm-install) se o binário estiver faltando após a instalação.

396 

397<Warning>

398 NÃO use `sudo npm install -g` pois isso pode levar a problemas de permissão e riscos de segurança. Se você encontrar erros de permissão, consulte [solução de problemas de erros de permissão](/pt/troubleshoot-install#permission-errors-during-installation).

399</Warning>

400 

401### Integridade binária e assinatura de código

402 

403Cada lançamento publica um `manifest.json` contendo checksums SHA256 para cada binário de plataforma. O manifesto é assinado com uma chave GPG da Anthropic, portanto verificar a assinatura no manifesto verifica transitivamente cada binário que ele lista.

404 

405#### Verificar a assinatura do manifesto

406 

407As etapas 1-3 requerem um shell POSIX com `gpg` e `curl`. No Windows, execute-as no Git Bash ou WSL. A etapa 4 inclui uma opção PowerShell.

408 

409<Steps>

410 <Step title="Baixar e importar a chave pública">

411 A chave de assinatura de lançamento é publicada em uma URL fixa.

412 

413 ```bash theme={null}

414 curl -fsSL https://downloads.claude.ai/keys/claude-code.asc | gpg --import

415 ```

416 

417 Exiba a impressão digital da chave importada.

418 

419 ```bash theme={null}

420 gpg --fingerprint security@anthropic.com

421 ```

422 

423 Confirme que a saída inclui esta impressão digital:

424 

425 ```text theme={null}

426 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE

427 ```

428 </Step>

429 

430 <Step title="Baixar o manifesto e a assinatura">

431 Defina `VERSION` para o lançamento que você deseja verificar.

432 

433 ```bash theme={null}

434 REPO=https://downloads.claude.ai/claude-code-releases

435 VERSION=2.1.89

436 curl -fsSLO "$REPO/$VERSION/manifest.json"

437 curl -fsSLO "$REPO/$VERSION/manifest.json.sig"

438 ```

439 </Step>

440 

441 <Step title="Verificar a assinatura">

442 Verifique a assinatura destacada contra o manifesto.

443 

444 ```bash theme={null}

445 gpg --verify manifest.json.sig manifest.json

446 ```

447 

448 Um resultado válido relata `Good signature from "Anthropic Claude Code Release Signing <security@anthropic.com>"`.

449 

450 `gpg` também imprime `WARNING: This key is not certified with a trusted signature!` para qualquer chave recém-importada. Isso é esperado. A linha `Good signature` confirma que a verificação criptográfica passou. A comparação de impressão digital na Etapa 1 confirma que a chave em si é autêntica.

451 </Step>

452 

453 <Step title="Verificar o binário contra o manifesto">

454 Compare o checksum SHA256 do seu binário baixado com o valor listado em `platforms.<platform>.checksum` em `manifest.json`.

455 

456 <Tabs>

457 <Tab title="Linux">

458 ```bash theme={null}

459 sha256sum claude

460 ```

461 </Tab>

462 

463 <Tab title="macOS">

464 ```bash theme={null}

465 shasum -a 256 claude

466 ```

467 </Tab>

468 

469 <Tab title="Windows PowerShell">

470 ```powershell theme={null}

471 (Get-FileHash claude.exe -Algorithm SHA256).Hash.ToLower()

472 ```

473 </Tab>

474 </Tabs>

475 </Step>

476</Steps>

477 

478<Note>

479 As assinaturas de manifesto estão disponíveis para lançamentos de `2.1.89` em diante. Lançamentos anteriores publicam checksums em `manifest.json` sem uma assinatura destacada.

480</Note>

481 

482#### Assinaturas de código de plataforma

483 

484Além do manifesto assinado, os binários individuais carregam assinaturas de código nativas da plataforma onde suportado.

485 

486* **macOS**: assinado por "Anthropic PBC" e autenticado pela Apple. Verifique com `codesign --verify --verbose ./claude`.

487* **Windows**: assinado por "Anthropic, PBC". Verifique com `Get-AuthenticodeSignature .\claude.exe`.

488* **Linux**: os binários não são individualmente assinados com código. Se você baixar diretamente do bucket `claude-code-releases` ou usar o instalador nativo, verifique a integridade com a assinatura de manifesto acima. Se você instalar com [apt, dnf ou apk](#install-with-linux-package-managers), seu gerenciador de pacotes verifica assinaturas automaticamente usando a chave de assinatura do repositório.

489 

490## Desinstalar Claude Code

491 

492Para remover Claude Code, siga as instruções para seu método de instalação.

493 

494### Instalação nativa

495 

496Remova o binário Claude Code e os arquivos de versão:

497 

498<Tabs>

499 <Tab title="macOS, Linux, WSL">

500 ```bash theme={null}

501 rm -f ~/.local/bin/claude

502 rm -rf ~/.local/share/claude

503 ```

504 </Tab>

505 

506 <Tab title="Windows PowerShell">

507 ```powershell theme={null}

508 Remove-Item -Path "$env:USERPROFILE\.local\bin\claude.exe" -Force

509 Remove-Item -Path "$env:USERPROFILE\.local\share\claude" -Recurse -Force

510 ```

511 </Tab>

512</Tabs>

513 

514### Instalação do Homebrew

515 

516Remova o cask do Homebrew que você instalou. Se você instalou o cask estável:

517 

518```bash theme={null}

519brew uninstall --cask claude-code

520```

521 

522Se você instalou o cask mais recente:

523 

524```bash theme={null}

525brew uninstall --cask claude-code@latest

526```

527 

528### Instalação do WinGet

529 

530Remova o pacote WinGet:

531 

532```powershell theme={null}

533winget uninstall Anthropic.ClaudeCode

534```

535 

536### apt / dnf / apk

537 

538Remova o pacote e a configuração do repositório:

539 

540<Tabs>

541 <Tab title="apt">

542 ```bash theme={null}

543 sudo apt remove claude-code

544 sudo rm /etc/apt/sources.list.d/claude-code.list /etc/apt/keyrings/claude-code.asc

545 ```

546 </Tab>

547 

548 <Tab title="dnf">

549 ```bash theme={null}

550 sudo dnf remove claude-code

551 sudo rm /etc/yum.repos.d/claude-code.repo

552 ```

553 </Tab>

554 

555 <Tab title="apk">

556 ```sh theme={null}

557 apk del claude-code

558 sed -i '\|downloads.claude.ai/claude-code/apk|d' /etc/apk/repositories

559 rm /etc/apk/keys/claude-code.rsa.pub

560 ```

561 </Tab>

562</Tabs>

563 

564### npm

565 

566Remova o pacote npm global:

567 

568```bash theme={null}

569npm uninstall -g @anthropic-ai/claude-code

570```

571 

572### Remover arquivos de configuração

573 

574<Warning>

575 Remover arquivos de configuração excluirá todas as suas configurações, ferramentas permitidas, configurações do MCP server e histórico de sessão.

576</Warning>

577 

578A extensão VS Code, o plugin JetBrains e o aplicativo de desktop também escrevem em `~/.claude/`. Se algum deles ainda estiver instalado, o diretório será recriado na próxima vez que for executado. Para remover Claude Code completamente, desinstale a [extensão VS Code](/pt/vs-code#uninstall-the-extension), o plugin JetBrains e o aplicativo de desktop antes de excluir esses arquivos.

579 

580Para remover as configurações e dados em cache do Claude Code:

581 

582<Tabs>

583 <Tab title="macOS, Linux, WSL">

584 ```bash theme={null}

585 # Remover configurações de usuário e estado

586 rm -rf ~/.claude

587 rm ~/.claude.json

588 

589 # Remover configurações específicas do projeto (execute a partir do diretório do seu projeto)

590 rm -rf .claude

591 rm -f .mcp.json

592 ```

593 </Tab>

594 

595 <Tab title="Windows PowerShell">

596 ```powershell theme={null}

597 # Remover configurações de usuário e estado

598 Remove-Item -Path "$env:USERPROFILE\.claude" -Recurse -Force

599 Remove-Item -Path "$env:USERPROFILE\.claude.json" -Force

600 

601 # Remover configurações específicas do projeto (execute a partir do diretório do seu projeto)

602 Remove-Item -Path ".claude" -Recurse -Force

603 Remove-Item -Path ".mcp.json" -Force

604 ```

605 </Tab>

606</Tabs>

skills.md +728 −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# Estenda Claude com skills

6 

7> Crie, gerencie e compartilhe skills para estender as capacidades do Claude no Claude Code. Inclui comandos personalizados e skills agrupadas.

8 

9Skills estendem o que Claude pode fazer. Crie um arquivo `SKILL.md` com instruções, e Claude o adiciona ao seu kit de ferramentas. Claude usa skills quando relevante, ou você pode invocar uma diretamente com `/skill-name`.

10 

11Crie uma skill quando você fica colando o mesmo manual, checklist ou procedimento de múltiplas etapas no chat, ou quando uma seção de CLAUDE.md cresceu em um procedimento em vez de um fato. Diferentemente do conteúdo de CLAUDE.md, o corpo de uma skill carrega apenas quando é usado, então material de referência longo custa quase nada até você precisar dele.

12 

13<Note>

14 Para comandos integrados como `/help` e `/compact`, e skills agrupadas como `/debug` e `/simplify`, consulte a [referência de comandos](/pt/commands).

15 

16 **Comandos personalizados foram mesclados em skills.** Um arquivo em `.claude/commands/deploy.md` e uma skill em `.claude/skills/deploy/SKILL.md` ambos criam `/deploy` e funcionam da mesma forma. Seus arquivos `.claude/commands/` existentes continuam funcionando. Skills adicionam recursos opcionais: um diretório para arquivos de suporte, frontmatter para [controlar se você ou Claude invoca eles](#control-who-invokes-a-skill), e a capacidade de Claude carregá-los automaticamente quando relevante.

17</Note>

18 

19Skills do Claude Code seguem o padrão aberto [Agent Skills](https://agentskills.io), que funciona em múltiplas ferramentas de IA. Claude Code estende o padrão com recursos adicionais como [controle de invocação](#control-who-invokes-a-skill), [execução de subagent](#run-skills-in-a-subagent), e [injeção de contexto dinâmico](#inject-dynamic-context).

20 

21## Skills agrupadas

22 

23Claude Code inclui um conjunto de skills agrupadas que estão disponíveis em cada sessão, incluindo `/simplify`, `/batch`, `/debug`, `/loop`, e `/claude-api`. Diferentemente da maioria dos comandos integrados, que executam lógica fixa diretamente, skills agrupadas são baseadas em prompt: elas dão ao Claude um manual detalhado e deixam que ele orquestre o trabalho usando suas ferramentas. Você invoca elas da mesma forma que qualquer outra skill, digitando `/` seguido do nome da skill.

24 

25Skills agrupadas estão listadas junto com comandos integrados na [referência de comandos](/pt/commands), marcadas como **Skill** na coluna Propósito.

26 

27## Começando

28 

29### Crie sua primeira skill

30 

31Este exemplo cria uma skill que ensina Claude a explicar código usando diagramas visuais e analogias. Como usa frontmatter padrão, Claude pode carregá-la automaticamente quando você pergunta como algo funciona, ou você pode invocá-la diretamente com `/explain-code`.

32 

33<Steps>

34 <Step title="Crie o diretório da skill">

35 Crie um diretório para a skill em sua pasta de skills pessoais. Skills pessoais estão disponíveis em todos os seus projetos.

36 

37 ```bash theme={null}

38 mkdir -p ~/.claude/skills/explain-code

39 ```

40 </Step>

41 

42 <Step title="Escreva SKILL.md">

43 Cada skill precisa de um arquivo `SKILL.md` com duas partes: frontmatter YAML (entre marcadores `---`) que diz ao Claude quando usar a skill, e conteúdo markdown com instruções que Claude segue quando a skill é invocada. O nome do diretório se torna o `/slash-command`, e a `description` ajuda Claude a decidir quando carregá-la automaticamente.

44 

45 Crie `~/.claude/skills/explain-code/SKILL.md`:

46 

47 ```yaml theme={null}

48 ---

49 description: "Explica código com diagramas visuais e analogias. Use ao explicar como o código funciona, ensinando sobre uma base de código, ou quando o usuário pergunta 'como isso funciona?'"

50 ---

51 

52 When explaining code, always include:

53 

54 1. **Start with an analogy**: Compare the code to something from everyday life

55 2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships

56 3. **Walk through the code**: Explain step-by-step what happens

57 4. **Highlight a gotcha**: What's a common mistake or misconception?

58 

59 Keep explanations conversational. For complex concepts, use multiple analogies.

60 ```

61 </Step>

62 

63 <Step title="Teste a skill">

64 Você pode testá-la de duas formas:

65 

66 **Deixe Claude invocá-la automaticamente** perguntando algo que corresponda à descrição:

67 

68 ```text theme={null}

69 How does this code work?

70 ```

71 

72 **Ou invoque-a diretamente** com o nome da skill:

73 

74 ```text theme={null}

75 /explain-code src/auth/login.ts

76 ```

77 

78 De qualquer forma, Claude deve incluir uma analogia e diagrama ASCII em sua explicação.

79 </Step>

80</Steps>

81 

82### Onde as skills vivem

83 

84Onde você armazena uma skill determina quem pode usá-la:

85 

86| Localização | Caminho | Aplica-se a |

87| :---------- | :---------------------------------------------------------------- | :----------------------------------- |

88| Enterprise | Consulte [configurações gerenciadas](/pt/settings#settings-files) | Todos os usuários em sua organização |

89| Pessoal | `~/.claude/skills/<skill-name>/SKILL.md` | Todos os seus projetos |

90| Projeto | `.claude/skills/<skill-name>/SKILL.md` | Apenas este projeto |

91| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Onde o plugin está habilitado |

92 

93Quando skills compartilham o mesmo nome em diferentes níveis, enterprise substitui pessoal, e pessoal substitui projeto. Skills de plugin usam um namespace `plugin-name:skill-name`, então não podem conflitar com outros níveis. Se você tem arquivos em `.claude/commands/`, eles funcionam da mesma forma, mas se uma skill e um comando compartilham o mesmo nome, a skill tem precedência.

94 

95#### Detecção de mudança ao vivo

96 

97Claude Code observa diretórios de skills para mudanças de arquivo. Adicionar, editar ou remover uma skill em `~/.claude/skills/`, o projeto `.claude/skills/`, ou um `.claude/skills/` dentro de um diretório `--add-dir` entra em efeito dentro da sessão atual sem reiniciar. Criar um diretório de skills de nível superior que não existia quando a sessão começou requer reiniciar Claude Code para que o novo diretório possa ser observado.

98 

99#### Descoberta automática de diretórios aninhados

100 

101Quando você trabalha com arquivos em subdiretórios, Claude Code descobre automaticamente skills de diretórios `.claude/skills/` aninhados. Por exemplo, se você está editando um arquivo em `packages/frontend/`, Claude Code também procura por skills em `packages/frontend/.claude/skills/`. Isso suporta configurações de monorepo onde pacotes têm suas próprias skills.

102 

103Cada skill é um diretório com `SKILL.md` como ponto de entrada:

104 

105```text theme={null}

106my-skill/

107├── SKILL.md # Instruções principais (obrigatório)

108├── template.md # Template para Claude preencher

109├── examples/

110│ └── sample.md # Exemplo de saída mostrando formato esperado

111└── scripts/

112 └── validate.sh # Script que Claude pode executar

113```

114 

115O `SKILL.md` contém as instruções principais e é obrigatório. Outros arquivos são opcionais e permitem que você construa skills mais poderosas: templates para Claude preencher, exemplos de saída mostrando o formato esperado, scripts que Claude pode executar, ou documentação de referência detalhada. Referencie esses arquivos de seu `SKILL.md` para que Claude saiba o que cada arquivo contém e quando carregá-lo. Consulte [Adicione arquivos de suporte](#add-supporting-files) para mais detalhes.

116 

117<Note>

118 Arquivos em `.claude/commands/` ainda funcionam e suportam o mesmo [frontmatter](#frontmatter-reference). Skills são recomendadas já que suportam recursos adicionais como arquivos de suporte.

119</Note>

120 

121#### Skills de diretórios adicionais

122 

123O sinalizador `--add-dir` [concede acesso a arquivos](/pt/permissions#additional-directories-grant-file-access-not-configuration) em vez de descoberta de configuração, mas skills são uma exceção: `.claude/skills/` dentro de um diretório adicionado é carregado automaticamente. Consulte [Detecção de mudança ao vivo](#live-change-detection) para como edições são detectadas durante uma sessão.

124 

125Outra configuração `.claude/` como subagents, comandos e estilos de saída não é carregada de diretórios adicionais. Consulte a [tabela de exceções](/pt/permissions#additional-directories-grant-file-access-not-configuration) para a lista completa do que é e não é carregado, e as formas recomendadas de compartilhar configuração entre projetos.

126 

127<Note>

128 Arquivos CLAUDE.md de diretórios `--add-dir` não são carregados por padrão. Para carregá-los, defina `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1`. Consulte [Carregar de diretórios adicionais](/pt/memory#load-from-additional-directories).

129</Note>

130 

131## Configurar skills

132 

133Skills são configuradas através de frontmatter YAML no topo de `SKILL.md` e o conteúdo markdown que segue.

134 

135### Tipos de conteúdo de skill

136 

137Arquivos de skill podem conter qualquer instrução, mas pensar em como você quer invocá-los ajuda a guiar o que incluir:

138 

139**Conteúdo de referência** adiciona conhecimento que Claude aplica ao seu trabalho atual. Convenções, padrões, guias de estilo, conhecimento de domínio. Este conteúdo é executado inline para que Claude possa usá-lo junto com seu contexto de conversa.

140 

141```yaml theme={null}

142---

143name: api-conventions

144description: API design patterns for this codebase

145---

146 

147When writing API endpoints:

148- Use RESTful naming conventions

149- Return consistent error formats

150- Include request validation

151```

152 

153**Conteúdo de tarefa** dá ao Claude instruções passo a passo para uma ação específica, como implantações, commits ou geração de código. Estas são frequentemente ações que você quer invocar diretamente com `/skill-name` em vez de deixar Claude decidir quando executá-las. Adicione `disable-model-invocation: true` para evitar que Claude a dispare automaticamente.

154 

155```yaml theme={null}

156---

157name: deploy

158description: Deploy the application to production

159context: fork

160disable-model-invocation: true

161---

162 

163Deploy the application:

1641. Run the test suite

1652. Build the application

1663. Push to the deployment target

167```

168 

169Seu `SKILL.md` pode conter qualquer coisa, mas pensar em como você quer que a skill seja invocada (por você, por Claude, ou ambos) e onde você quer que seja executada (inline ou em um subagent) ajuda a guiar o que incluir. Para skills complexas, você também pode [adicionar arquivos de suporte](#add-supporting-files) para manter a skill principal focada.

170 

171### Referência de frontmatter

172 

173Além do conteúdo markdown, você pode configurar o comportamento da skill usando campos de frontmatter YAML entre marcadores `---` no topo de seu arquivo `SKILL.md`:

174 

175```yaml theme={null}

176---

177name: my-skill

178description: What this skill does

179disable-model-invocation: true

180allowed-tools: Read Grep

181---

182 

183Your skill instructions here...

184```

185 

186Todos os campos são opcionais. Apenas `description` é recomendado para que Claude saiba quando usar a skill.

187 

188| Campo | Obrigatório | Descrição |

189| :------------------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

190| `name` | Não | Nome de exibição para a skill. Se omitido, usa o nome do diretório. Apenas letras minúsculas, números e hífens (máximo 64 caracteres). |

191| `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 na frente: o texto combinado de `description` e `when_to_use` é truncado em 1.536 caracteres na listagem de skills para reduzir o uso de contexto. |

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

193| `argument-hint` | Não | Dica mostrada durante autocomplete para indicar argumentos esperados. Exemplo: `[issue-number]` ou `[filename] [format]`. |

194| `arguments` | Não | Argumentos posicionais nomeados para [substituição `$name`](#available-string-substitutions) no conteúdo da skill. Aceita uma string separada por espaços ou uma lista YAML. Nomes mapeiam para posições de argumento em ordem. |

195| `disable-model-invocation` | Não | Defina como `true` para evitar que Claude carregue automaticamente esta skill. Use para fluxos de trabalho que você quer disparar manualmente com `/name`. Também evita que a skill seja [pré-carregada em subagents](/pt/sub-agents#preload-skills-into-subagents). Padrão: `false`. |

196| `user-invocable` | Não | Defina como `false` para ocultar do menu `/`. Use para conhecimento de fundo que usuários não devem invocar diretamente. Padrão: `true`. |

197| `allowed-tools` | Não | Ferramentas que Claude pode usar sem pedir permissão quando esta skill está ativa. Aceita uma string separada por espaços ou uma lista YAML. |

198| `model` | Não | Modelo a usar quando esta skill está ativa. A sobrescrita se aplica pelo resto da volta atual e não é salva em configurações; o modelo de sessão retoma em seu próximo prompt. Aceita os mesmos valores que [`/model`](/pt/model-config), ou `inherit` para manter o modelo ativo. |

199| `effort` | Não | [Nível de esforço](/pt/model-config#adjust-effort-level) quando esta skill está ativa. Sobrescreve o nível de esforço da sessão. Padrão: herda da sessão. Opções: `low`, `medium`, `high`, `xhigh`, `max`; os níveis disponíveis dependem do modelo. |

200| `context` | Não | Defina como `fork` para executar em um contexto de subagent bifurcado. |

201| `agent` | Não | Qual tipo de subagent usar quando `context: fork` está definido. |

202| `hooks` | Não | Hooks com escopo para o ciclo de vida desta skill. Consulte [Hooks em skills e agents](/pt/hooks#hooks-in-skills-and-agents) para formato de configuração. |

203| `paths` | Não | Padrões glob que limitam quando esta skill é ativada. Aceita uma string separada por vírgulas ou uma lista YAML. Quando definido, Claude carrega a skill automaticamente apenas ao trabalhar com arquivos que correspondem aos padrões. Usa o mesmo formato que [regras específicas de caminho](/pt/memory#path-specific-rules). |

204| `shell` | Não | Shell a usar para `` !`command` `` e blocos ` ```! ` nesta skill. Aceita `bash` (padrão) ou `powershell`. Definir `powershell` executa comandos shell inline via PowerShell no Windows. Requer `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. |

205 

206#### Substituições de string disponíveis

207 

208Skills suportam substituição de string para valores dinâmicos no conteúdo da skill:

209 

210| Variável | Descrição |

211| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

212| `$ARGUMENTS` | Todos os argumentos passados ao invocar a skill. Se `$ARGUMENTS` não estiver presente no conteúdo, argumentos são anexados como `ARGUMENTS: <value>`. |

213| `$ARGUMENTS[N]` | Acesse um argumento específico por índice baseado em 0, como `$ARGUMENTS[0]` para o primeiro argumento. |

214| `$N` | Abreviação para `$ARGUMENTS[N]`, como `$0` para o primeiro argumento ou `$1` para o segundo. |

215| `$name` | Argumento nomeado declarado na lista de frontmatter [`arguments`](#frontmatter-reference). Nomes mapeiam para posições em ordem, então com `arguments: [issue, branch]` o placeholder `$issue` expande para o primeiro argumento e `$branch` para o segundo. |

216| `${CLAUDE_SESSION_ID}` | O ID da sessão atual. Útil para logging, criação de arquivos específicos da sessão, ou correlação de saída de skill com sessões. |

217| `${CLAUDE_EFFORT}` | O nível de esforço atual: `low`, `medium`, `high`, `xhigh`, ou `max`. Use isso para adaptar instruções de skill à configuração de esforço ativo. |

218| `${CLAUDE_SKILL_DIR}` | O diretório contendo o arquivo `SKILL.md` da skill. Para skills de plugin, este é o subdiretório da skill dentro do plugin, não a raiz do plugin. Use isso em comandos de injeção bash para referenciar scripts ou arquivos agrupados com a skill, independentemente do diretório de trabalho atual. |

219 

220Argumentos indexados usam quoting no estilo shell, então envolva valores de múltiplas palavras em aspas para passá-los como um único argumento. Por exemplo, `/my-skill "hello world" second` faz `$0` expandir para `hello world` e `$1` para `second`. O placeholder `$ARGUMENTS` sempre expande para a string de argumento completa conforme digitada.

221 

222**Exemplo usando substituições:**

223 

224```yaml theme={null}

225---

226name: session-logger

227description: Log activity for this session

228---

229 

230Log the following to logs/${CLAUDE_SESSION_ID}.log:

231 

232$ARGUMENTS

233```

234 

235### Adicione arquivos de suporte

236 

237Skills podem incluir múltiplos arquivos em seu diretório. Isso mantém `SKILL.md` focado no essencial enquanto deixa Claude acessar material de referência detalhado apenas quando necessário. Documentos de referência grandes, especificações de API, ou coleções de exemplos não precisam carregar em contexto toda vez que a skill é executada.

238 

239```text theme={null}

240my-skill/

241├── SKILL.md (obrigatório - visão geral e navegação)

242├── reference.md (documentação de API detalhada - carregada quando necessário)

243├── examples.md (exemplos de uso - carregados quando necessário)

244└── scripts/

245 └── helper.py (script utilitário - executado, não carregado)

246```

247 

248Referencie arquivos de suporte de `SKILL.md` para que Claude saiba o que cada arquivo contém e quando carregá-lo:

249 

250```markdown theme={null}

251## Additional resources

252 

253- For complete API details, see [reference.md](reference.md)

254- For usage examples, see [examples.md](examples.md)

255```

256 

257<Tip>Mantenha `SKILL.md` com menos de 500 linhas. Mova material de referência detalhado para arquivos separados.</Tip>

258 

259### Controle quem invoca uma skill

260 

261Por padrão, tanto você quanto Claude podem invocar qualquer skill. Você pode digitar `/skill-name` para invocá-la diretamente, e Claude pode carregá-la automaticamente quando relevante para sua conversa. Dois campos de frontmatter permitem que você restrinja isso:

262 

263* **`disable-model-invocation: true`**: Apenas você pode invocar a skill. Use isso para fluxos de trabalho com efeitos colaterais ou que você quer controlar o tempo, como `/commit`, `/deploy`, ou `/send-slack-message`. Você não quer que Claude decida fazer deploy porque seu código parece pronto.

264 

265* **`user-invocable: false`**: Apenas Claude pode invocar a skill. Use isso para conhecimento de fundo que não é acionável como um comando. Uma skill `legacy-system-context` explica como um sistema antigo funciona. Claude deve saber disso quando relevante, mas `/legacy-system-context` não é uma ação significativa para usuários tomarem.

266 

267Este exemplo cria uma skill de deploy que apenas você pode disparar. O campo `disable-model-invocation: true` evita que Claude a execute automaticamente:

268 

269```yaml theme={null}

270---

271name: deploy

272description: Deploy the application to production

273disable-model-invocation: true

274---

275 

276Deploy $ARGUMENTS to production:

277 

2781. Run the test suite

2792. Build the application

2803. Push to the deployment target

2814. Verify the deployment succeeded

282```

283 

284Aqui está como os dois campos afetam invocação e carregamento de contexto:

285 

286| Frontmatter | Você pode invocar | Claude pode invocar | Quando carregado em contexto |

287| :------------------------------- | :---------------- | :------------------ | :------------------------------------------------------------------- |

288| (padrão) | Sim | Sim | Descrição sempre em contexto, skill completa carrega quando invocada |

289| `disable-model-invocation: true` | Sim | Não | Descrição não em contexto, skill completa carrega quando você invoca |

290| `user-invocable: false` | Não | Sim | Descrição sempre em contexto, skill completa carrega quando invocada |

291 

292<Note>

293 Em uma sessão regular, descrições de skills são carregadas em contexto para que Claude saiba o que está disponível, mas conteúdo completo de skill apenas carrega quando invocado. [Subagents com skills pré-carregadas](/pt/sub-agents#preload-skills-into-subagents) funcionam diferentemente: o conteúdo completo da skill é injetado na inicialização.

294</Note>

295 

296### Ciclo de vida do conteúdo de skill

297 

298Quando você ou Claude invoca uma skill, o conteúdo `SKILL.md` renderizado entra na conversa como uma única mensagem e permanece lá pelo resto da sessão. Claude Code não relê o arquivo de skill em voltas posteriores, então escreva orientação que deve se aplicar durante uma tarefa como instruções permanentes em vez de etapas únicas.

299 

300[Auto-compactação](/pt/how-claude-code-works#when-context-fills-up) carrega skills invocadas para frente dentro de um orçamento de token. Quando a conversa é resumida para liberar contexto, Claude Code reanexa a invocação mais recente de cada skill após o resumo, mantendo os primeiros 5.000 tokens de cada. Skills reanexadas compartilham um orçamento combinado de 25.000 tokens. Claude Code preenche este orçamento começando da skill invocada mais recentemente, então skills mais antigas podem ser descartadas inteiramente após compactação se você invocou muitas em uma sessão.

301 

302Se uma skill parece parar de influenciar comportamento após a primeira resposta, o conteúdo geralmente ainda está presente e o modelo está escolhendo outras ferramentas ou abordagens. Fortaleça a `description` da skill e instruções para que o modelo continue preferindo-a, ou use [hooks](/pt/hooks) para impor comportamento deterministicamente. Se a skill é grande ou você invocou várias outras depois dela, re-invoque-a após compactação para restaurar o conteúdo completo.

303 

304### Pré-aprove ferramentas para uma skill

305 

306O campo `allowed-tools` concede permissão para as ferramentas listadas enquanto a skill está ativa, para que Claude possa usá-las sem solicitar sua aprovação. Ele não restringe quais ferramentas estão disponíveis: cada ferramenta permanece chamável, e suas [configurações de permissão](/pt/permissions) ainda governam ferramentas que não estão listadas.

307 

308Esta skill deixa Claude executar comandos git sem aprovação por uso sempre que você invoca:

309 

310```yaml theme={null}

311---

312name: commit

313description: Stage and commit the current changes

314disable-model-invocation: true

315allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)

316---

317```

318 

319Para bloquear uma skill de usar certas ferramentas, adicione regras de negação em suas [configurações de permissão](/pt/permissions) em vez disso.

320 

321### Passe argumentos para skills

322 

323Tanto você quanto Claude podem passar argumentos ao invocar uma skill. Argumentos estão disponíveis via placeholder `$ARGUMENTS`.

324 

325Esta skill corrige um problema do GitHub por número. O placeholder `$ARGUMENTS` é substituído por qualquer coisa que siga o nome da skill:

326 

327```yaml theme={null}

328---

329name: fix-issue

330description: Fix a GitHub issue

331disable-model-invocation: true

332---

333 

334Fix GitHub issue $ARGUMENTS following our coding standards.

335 

3361. Read the issue description

3372. Understand the requirements

3383. Implement the fix

3394. Write tests

3405. Create a commit

341```

342 

343Quando você executa `/fix-issue 123`, Claude recebe "Fix GitHub issue 123 following our coding standards..."

344 

345Se você invocar uma skill com argumentos mas a skill não incluir `$ARGUMENTS`, Claude Code anexa `ARGUMENTS: <your input>` ao final do conteúdo da skill para que Claude ainda veja o que você digitou.

346 

347Para acessar argumentos individuais por posição, use `$ARGUMENTS[N]` ou a forma mais curta `$N`:

348 

349```yaml theme={null}

350---

351name: migrate-component

352description: Migrate a component from one framework to another

353---

354 

355Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].

356Preserve all existing behavior and tests.

357```

358 

359Executar `/migrate-component SearchBar React Vue` substitui `$ARGUMENTS[0]` com `SearchBar`, `$ARGUMENTS[1]` com `React`, e `$ARGUMENTS[2]` com `Vue`. A mesma skill usando a abreviação `$N`:

360 

361```yaml theme={null}

362---

363name: migrate-component

364description: Migrate a component from one framework to another

365---

366 

367Migrate the $0 component from $1 to $2.

368Preserve all existing behavior and tests.

369```

370 

371## Padrões avançados

372 

373### Injete contexto dinâmico

374 

375A sintaxe `` !`<command>` `` executa comandos shell antes do conteúdo da skill ser enviado para Claude. A saída do comando substitui o placeholder, para que Claude receba dados reais, não o comando em si.

376 

377Esta skill resume um pull request buscando dados de PR ao vivo com o GitHub CLI. Os comandos `` !`gh pr diff` `` e outros são executados primeiro, e sua saída é inserida no prompt:

378 

379```yaml theme={null}

380---

381name: pr-summary

382description: Summarize changes in a pull request

383context: fork

384agent: Explore

385allowed-tools: Bash(gh *)

386---

387 

388## Pull request context

389- PR diff: !`gh pr diff`

390- PR comments: !`gh pr view --comments`

391- Changed files: !`gh pr diff --name-only`

392 

393## Your task

394Summarize this pull request...

395```

396 

397Quando esta skill é executada:

398 

3991. Cada `` !`<command>` `` é executado imediatamente (antes de Claude ver qualquer coisa)

4002. A saída substitui o placeholder no conteúdo da skill

4013. Claude recebe o prompt totalmente renderizado com dados reais de PR

402 

403Isto é pré-processamento, não algo que Claude executa. Claude apenas vê o resultado final.

404 

405Para comandos de múltiplas linhas, use um bloco de código cercado aberto com ` ```! ` em vez da forma inline:

406 

407````markdown theme={null}

408## Environment

409```!

410node --version

411npm --version

412git status --short

413```

414````

415 

416Para desabilitar este comportamento para skills e comandos personalizados de fontes de usuário, projeto, plugin ou [diretório adicional](#skills-from-additional-directories), defina `"disableSkillShellExecution": true` em [configurações](/pt/settings). Cada comando é substituído com `[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 [configurações gerenciadas](/pt/permissions#managed-settings), onde usuários não podem sobrescrevê-la.

417 

418<Tip>

419 Para habilitar [pensamento estendido](/pt/common-workflows#use-extended-thinking-thinking-mode) em uma skill, inclua a palavra "ultrathink" em qualquer lugar no conteúdo de sua skill.

420</Tip>

421 

422### Execute skills em um subagent

423 

424Adicione `context: fork` ao seu frontmatter quando você quer que uma skill seja executada em isolamento. O conteúdo da skill se torna o prompt que dirige o subagent. Ele não terá acesso ao seu histórico de conversa.

425 

426<Warning>

427 `context: fork` apenas faz sentido para skills com instruções explícitas. Se sua skill contém diretrizes como "use estas convenções de API" sem uma tarefa, o subagent recebe as diretrizes mas nenhum prompt acionável, e retorna sem saída significativa.

428</Warning>

429 

430Skills e [subagents](/pt/sub-agents) trabalham juntos em duas direções:

431 

432| Abordagem | Prompt do sistema | Tarefa | Também carrega |

433| :-------------------------- | :----------------------------------------- | :------------------------------ | :-------------------------------- |

434| Skill com `context: fork` | Do tipo de agent (`Explore`, `Plan`, etc.) | Conteúdo de SKILL.md | CLAUDE.md |

435| Subagent com campo `skills` | Corpo markdown do subagent | Mensagem de delegação do Claude | Skills pré-carregadas + CLAUDE.md |

436 

437Com `context: fork`, você escreve a tarefa em sua skill e escolhe um tipo de agent para executá-la. Para o inverso (definir um subagent personalizado que usa skills como material de referência), consulte [Subagents](/pt/sub-agents#preload-skills-into-subagents).

438 

439#### Exemplo: Skill de pesquisa usando agent Explore

440 

441Esta skill executa pesquisa em um agent Explore bifurcado. O conteúdo da skill se torna a tarefa, e o agent fornece ferramentas somente leitura otimizadas para exploração de codebase:

442 

443```yaml theme={null}

444---

445name: deep-research

446description: Research a topic thoroughly

447context: fork

448agent: Explore

449---

450 

451Research $ARGUMENTS thoroughly:

452 

4531. Find relevant files using Glob and Grep

4542. Read and analyze the code

4553. Summarize findings with specific file references

456```

457 

458Quando esta skill é executada:

459 

4601. Um novo contexto isolado é criado

4612. O subagent recebe o conteúdo da skill como seu prompt ("Research \$ARGUMENTS thoroughly...")

4623. O campo `agent` determina o ambiente de execução (modelo, ferramentas e permissões)

4634. Resultados são resumidos e retornados para sua conversa principal

464 

465O campo `agent` especifica qual configuração de subagent usar. As opções incluem agents integrados (`Explore`, `Plan`, `general-purpose`) ou qualquer subagent personalizado de `.claude/agents/`. Se omitido, usa `general-purpose`.

466 

467### Restrinja acesso de skill do Claude

468 

469Por padrão, Claude pode invocar qualquer skill que não tenha `disable-model-invocation: true` definido. Skills que definem `allowed-tools` concedem a Claude acesso a essas ferramentas sem aprovação por uso quando a skill está ativa. Suas [configurações de permissão](/pt/permissions) ainda governam comportamento de aprovação de linha de base para todas as outras ferramentas. Alguns comandos integrados também estão disponíveis através da ferramenta Skill, incluindo `/init`, `/review`, e `/security-review`. Outros comandos integrados como `/compact` não estão.

470 

471Três formas de controlar quais skills Claude pode invocar:

472 

473**Desabilite todas as skills** negando a ferramenta Skill em `/permissions`:

474 

475```text theme={null}

476# Add to deny rules:

477Skill

478```

479 

480**Permita ou negue skills específicas** usando [regras de permissão](/pt/permissions):

481 

482```text theme={null}

483# Allow only specific skills

484Skill(commit)

485Skill(review-pr *)

486 

487# Deny specific skills

488Skill(deploy *)

489```

490 

491Sintaxe de permissão: `Skill(name)` para correspondência exata, `Skill(name *)` para correspondência de prefixo com qualquer argumento.

492 

493**Oculte skills individuais** adicionando `disable-model-invocation: true` ao seu frontmatter. Isso remove a skill do contexto do Claude inteiramente.

494 

495<Note>

496 O campo `user-invocable` apenas controla visibilidade de menu, não acesso à ferramenta Skill. Use `disable-model-invocation: true` para bloquear invocação programática.

497</Note>

498 

499## Compartilhe skills

500 

501Skills podem ser distribuídas em diferentes escopos dependendo do seu público:

502 

503* **Skills de projeto**: Faça commit de `.claude/skills/` para controle de versão

504* **Plugins**: Crie um diretório `skills/` em seu [plugin](/pt/plugins)

505* **Gerenciado**: Implante em toda a organização através de [configurações gerenciadas](/pt/settings#settings-files)

506 

507### Gere saída visual

508 

509Skills podem agrupar e executar scripts em qualquer linguagem, dando ao Claude capacidades além do que é possível em um único prompt. Um padrão poderoso é gerar saída visual: arquivos HTML interativos que abrem em seu navegador para explorar dados, depurar ou criar relatórios.

510 

511Este exemplo cria um explorador de codebase: uma visualização de árvore interativa onde você pode expandir e recolher diretórios, ver tamanhos de arquivo em um relance, e identificar tipos de arquivo por cor.

512 

513Crie o diretório da Skill:

514 

515```bash theme={null}

516mkdir -p ~/.claude/skills/codebase-visualizer/scripts

517```

518 

519Crie `~/.claude/skills/codebase-visualizer/SKILL.md`. A descrição diz ao Claude quando ativar esta Skill, e as instruções dizem ao Claude para executar o script agrupado:

520 

521````yaml theme={null}

522---

523name: codebase-visualizer

524description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.

525allowed-tools: Bash(python *)

526---

527 

528# Codebase Visualizer

529 

530Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.

531 

532## Usage

533 

534Run the visualization script from your project root:

535 

536```bash

537python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .

538```

539 

540This creates `codebase-map.html` in the current directory and opens it in your default browser.

541 

542## What the visualization shows

543 

544- **Collapsible directories**: Click folders to expand/collapse

545- **File sizes**: Displayed next to each file

546- **Colors**: Different colors for different file types

547- **Directory totals**: Shows aggregate size of each folder

548````

549 

550Crie `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Este script varre uma árvore de diretório e gera um arquivo HTML auto-contido com:

551 

552* Uma **barra lateral de resumo** mostrando contagem de arquivos, contagem de diretórios, tamanho total e número de tipos de arquivo

553* Um **gráfico de barras** dividindo o codebase por tipo de arquivo (top 8 por tamanho)

554* Uma **árvore recolhível** onde você pode expandir e recolher diretórios, com indicadores de tipo de arquivo codificados por cor

555 

556O script requer Python mas usa apenas bibliotecas integradas, então não há pacotes para instalar:

557 

558```python expandable theme={null}

559#!/usr/bin/env python3

560"""Generate an interactive collapsible tree visualization of a codebase."""

561 

562import json

563import sys

564import webbrowser

565from pathlib import Path

566from collections import Counter

567 

568IGNORE = {'.git', 'node_modules', '__pycache__', '.venv', 'venv', 'dist', 'build'}

569 

570def scan(path: Path, stats: dict) -> dict:

571 result = {"name": path.name, "children": [], "size": 0}

572 try:

573 for item in sorted(path.iterdir()):

574 if item.name in IGNORE or item.name.startswith('.'):

575 continue

576 if item.is_file():

577 size = item.stat().st_size

578 ext = item.suffix.lower() or '(no ext)'

579 result["children"].append({"name": item.name, "size": size, "ext": ext})

580 result["size"] += size

581 stats["files"] += 1

582 stats["extensions"][ext] += 1

583 stats["ext_sizes"][ext] += size

584 elif item.is_dir():

585 stats["dirs"] += 1

586 child = scan(item, stats)

587 if child["children"]:

588 result["children"].append(child)

589 result["size"] += child["size"]

590 except PermissionError:

591 pass

592 return result

593 

594def generate_html(data: dict, stats: dict, output: Path) -> None:

595 ext_sizes = stats["ext_sizes"]

596 total_size = sum(ext_sizes.values()) or 1

597 sorted_exts = sorted(ext_sizes.items(), key=lambda x: -x[1])[:8]

598 colors = {

599 '.js': '#f7df1e', '.ts': '#3178c6', '.py': '#3776ab', '.go': '#00add8',

600 '.rs': '#dea584', '.rb': '#cc342d', '.css': '#264de4', '.html': '#e34c26',

601 '.json': '#6b7280', '.md': '#083fa1', '.yaml': '#cb171e', '.yml': '#cb171e',

602 '.mdx': '#083fa1', '.tsx': '#3178c6', '.jsx': '#61dafb', '.sh': '#4eaa25',

603 }

604 lang_bars = "".join(

605 f'<div class="bar-row"><span class="bar-label">{ext}</span>'

606 f'<div class="bar" style="width:{(size/total_size)*100}%;background:{colors.get(ext,"#6b7280")}"></div>'

607 f'<span class="bar-pct">{(size/total_size)*100:.1f}%</span></div>'

608 for ext, size in sorted_exts

609 )

610 def fmt(b):

611 if b < 1024: return f"{b} B"

612 if b < 1048576: return f"{b/1024:.1f} KB"

613 return f"{b/1048576:.1f} MB"

614 

615 html = f'''<!DOCTYPE html>

616<html><head>

617 <meta charset="utf-8"><title>Codebase Explorer</title>

618 <style>

619 body {{ font: 14px/1.5 system-ui, sans-serif; margin: 0; background: #1a1a2e; color: #eee; }}

620 .container {{ display: flex; height: 100vh; }}

621 .sidebar {{ width: 280px; background: #252542; padding: 20px; border-right: 1px solid #3d3d5c; overflow-y: auto; flex-shrink: 0; }}

622 .main {{ flex: 1; padding: 20px; overflow-y: auto; }}

623 h1 {{ margin: 0 0 10px 0; font-size: 18px; }}

624 h2 {{ margin: 20px 0 10px 0; font-size: 14px; color: #888; text-transform: uppercase; }}

625 .stat {{ display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #3d3d5c; }}

626 .stat-value {{ font-weight: bold; }}

627 .bar-row {{ display: flex; align-items: center; margin: 6px 0; }}

628 .bar-label {{ width: 55px; font-size: 12px; color: #aaa; }}

629 .bar {{ height: 18px; border-radius: 3px; }}

630 .bar-pct {{ margin-left: 8px; font-size: 12px; color: #666; }}

631 .tree {{ list-style: none; padding-left: 20px; }}

632 details {{ cursor: pointer; }}

633 summary {{ padding: 4px 8px; border-radius: 4px; }}

634 summary:hover {{ background: #2d2d44; }}

635 .folder {{ color: #ffd700; }}

636 .file {{ display: flex; align-items: center; padding: 4px 8px; border-radius: 4px; }}

637 .file:hover {{ background: #2d2d44; }}

638 .size {{ color: #888; margin-left: auto; font-size: 12px; }}

639 .dot {{ width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; }}

640 </style>

641</head><body>

642 <div class="container">

643 <div class="sidebar">

644 <h1>📊 Summary</h1>

645 <div class="stat"><span>Files</span><span class="stat-value">{stats["files"]:,}</span></div>

646 <div class="stat"><span>Directories</span><span class="stat-value">{stats["dirs"]:,}</span></div>

647 <div class="stat"><span>Total size</span><span class="stat-value">{fmt(data["size"])}</span></div>

648 <div class="stat"><span>File types</span><span class="stat-value">{len(stats["extensions"])}</span></div>

649 <h2>By file type</h2>

650 {lang_bars}

651 </div>

652 <div class="main">

653 <h1>📁 {data["name"]}</h1>

654 <ul class="tree" id="root"></ul>

655 </div>

656 </div>

657 <script>

658 const data = {json.dumps(data)};

659 const colors = {json.dumps(colors)};

660 function fmt(b) {{ if (b < 1024) return b + ' B'; if (b < 1048576) return (b/1024).toFixed(1) + ' KB'; return (b/1048576).toFixed(1) + ' MB'; }}

661 function render(node, parent) {{

662 if (node.children) {{

663 const det = document.createElement('details');

664 det.open = parent === document.getElementById('root');

665 det.innerHTML = `<summary><span class="folder">📁 ${{node.name}}</span><span class="size">${{fmt(node.size)}}</span></summary>`;

666 const ul = document.createElement('ul'); ul.className = 'tree';

667 node.children.sort((a,b) => (b.children?1:0)-(a.children?1:0) || a.name.localeCompare(b.name));

668 node.children.forEach(c => render(c, ul));

669 det.appendChild(ul);

670 const li = document.createElement('li'); li.appendChild(det); parent.appendChild(li);

671 }} else {{

672 const li = document.createElement('li'); li.className = 'file';

673 li.innerHTML = `<span class="dot" style="background:${{colors[node.ext]||'#6b7280'}}"></span>${{node.name}}<span class="size">${{fmt(node.size)}}</span>`;

674 parent.appendChild(li);

675 }}

676 }}

677 data.children.forEach(c => render(c, document.getElementById('root')));

678 </script>

679</body></html>'''

680 output.write_text(html)

681 

682if __name__ == '__main__':

683 target = Path(sys.argv[1] if len(sys.argv) > 1 else '.').resolve()

684 stats = {"files": 0, "dirs": 0, "extensions": Counter(), "ext_sizes": Counter()}

685 data = scan(target, stats)

686 out = Path('codebase-map.html')

687 generate_html(data, stats, out)

688 print(f'Generated {out.absolute()}')

689 webbrowser.open(f'file://{out.absolute()}')

690```

691 

692Para testar, abra Claude Code em qualquer projeto e peça "Visualize this codebase." Claude executa o script, gera `codebase-map.html`, e abre em seu navegador.

693 

694Este padrão funciona para qualquer saída visual: gráficos de dependência, relatórios de cobertura de testes, documentação de API, ou visualizações de esquema de banco de dados. O script agrupado faz o trabalho pesado enquanto Claude lida com orquestração.

695 

696## Solução de problemas

697 

698### Skill não dispara

699 

700Se Claude não usa sua skill quando esperado:

701 

7021. Verifique se a descrição inclui palavras-chave que usuários naturalmente diriam

7032. Verifique se a skill aparece em `What skills are available?`

7043. Tente reformular sua solicitação para corresponder mais de perto à descrição

7054. Invoque-a diretamente com `/skill-name` se a skill é invocável pelo usuário

706 

707### Skill dispara muito frequentemente

708 

709Se Claude usa sua skill quando você não quer:

710 

7111. Torne a descrição mais específica

7122. Adicione `disable-model-invocation: true` se você quer apenas invocação manual

713 

714### Descrições de skills são cortadas

715 

716Descrições de skills são carregadas em contexto para que Claude saiba o que está disponível. Todos os nomes de skills são sempre incluídos, mas se você tem muitas skills, descrições são encurtadas para caber no orçamento de caracteres, o que pode remover as palavras-chave que Claude precisa para corresponder sua solicitação. O orçamento escala dinamicamente em 1% da janela de contexto, com fallback de 8.000 caracteres.

717 

718Para aumentar o limite, defina a variável de ambiente `SLASH_COMMAND_TOOL_CHAR_BUDGET`. Ou corte descrições na fonte: coloque o caso de uso principal na frente, já que o texto combinado de cada entrada é limitado a 1.536 caracteres independentemente do orçamento.

719 

720## Recursos relacionados

721 

722* **[Depure sua configuração](/pt/debug-your-config)**: diagnostique por que uma skill não está aparecendo ou sendo acionada

723* **[Subagents](/pt/sub-agents)**: delegue tarefas para agents especializados

724* **[Plugins](/pt/plugins)**: empacote e distribua skills com outras extensões

725* **[Hooks](/pt/hooks)**: automatize fluxos de trabalho em torno de eventos de ferramentas

726* **[Memory](/pt/memory)**: gerencie arquivos CLAUDE.md para contexto persistente

727* **[Comandos](/pt/commands)**: referência para comandos integrados e skills agrupadas

728* **[Permissões](/pt/permissions)**: controle acesso a ferramentas e skills

slack.md +210 −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 Slack

6 

7> Delegue tarefas de codificação diretamente do seu espaço de trabalho Slack

8 

9Claude Code no Slack traz o poder do Claude Code diretamente para seu espaço de trabalho Slack. Quando você menciona `@Claude` com uma tarefa de codificação, Claude detecta automaticamente a intenção e cria uma sessão Claude Code na web, permitindo que você delegue trabalho de desenvolvimento sem sair de suas conversas em equipe.

10 

11Esta integração é construída no aplicativo Claude for Slack existente, mas adiciona roteamento inteligente para Claude Code na web para solicitações relacionadas a codificação.

12 

13## Casos de uso

14 

15* **Investigação e correção de bugs**: Peça ao Claude para investigar e corrigir bugs assim que forem relatados nos canais do Slack.

16* **Revisões rápidas de código e modificações**: Faça com que Claude implemente pequenos recursos ou refatore código com base no feedback da equipe.

17* **Depuração colaborativa**: Quando discussões em equipe fornecem contexto crucial (por exemplo, reproduções de erros ou relatórios de usuários), Claude pode usar essas informações para informar sua abordagem de depuração.

18* **Execução de tarefas paralelas**: Inicie tarefas de codificação no Slack enquanto continua outro trabalho, recebendo notificações quando concluído.

19 

20## Pré-requisitos

21 

22Antes de usar Claude Code no Slack, certifique-se de ter o seguinte:

23 

24| Requisito | Detalhes |

25| :----------------- | :-------------------------------------------------------------------------------- |

26| Plano Claude | Pro, Max, Team ou Enterprise com acesso a Claude Code (assentos premium) |

27| Claude Code na web | O acesso a [Claude Code na web](/pt/claude-code-on-the-web) deve estar habilitado |

28| Conta GitHub | Conectada ao Claude Code na web com pelo menos um repositório autenticado |

29| Autenticação Slack | Sua conta Slack vinculada à sua conta Claude por meio do aplicativo Claude |

30 

31## Configurando Claude Code no Slack

32 

33<Steps>

34 <Step title="Instale o aplicativo Claude no Slack">

35 Um administrador do espaço de trabalho deve instalar o aplicativo Claude no Slack App Marketplace. Visite o [Slack App Marketplace](https://slack.com/marketplace/A08SF47R6P4) e clique em "Add to Slack" para começar o processo de instalação.

36 </Step>

37 

38 <Step title="Conecte sua conta Claude">

39 Após a instalação do aplicativo, autentique sua conta Claude individual:

40 

41 1. Abra o aplicativo Claude no Slack clicando em "Claude" na seção Aplicativos

42 2. Navegue até a aba App Home

43 3. Clique em "Connect" para vincular sua conta Slack com sua conta Claude

44 4. Conclua o fluxo de autenticação em seu navegador

45 </Step>

46 

47 <Step title="Configure Claude Code na web">

48 Certifique-se de que seu Claude Code na web está devidamente configurado:

49 

50 * Visite [claude.ai/code](https://claude.ai/code) e faça login com a mesma conta que você conectou ao Slack

51 * Conecte sua conta GitHub se ainda não estiver conectada

52 * Autentique pelo menos um repositório com o qual você deseja que Claude trabalhe

53 </Step>

54 

55 <Step title="Escolha seu modo de roteamento">

56 Após conectar suas contas, configure como Claude lida com suas mensagens no Slack. Navegue até o App Home do Claude no Slack para encontrar a configuração **Routing Mode**.

57 

58 | Modo | Comportamento |

59 | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

60 | **Code only** | Claude roteia todas as @menções para sessões Claude Code. Melhor para equipes que usam Claude no Slack exclusivamente para tarefas de desenvolvimento. |

61 | **Code + Chat** | Claude analisa cada mensagem e roteia inteligentemente entre Claude Code (para tarefas de codificação) e Claude Chat (para escrita, análise e perguntas gerais). Melhor para equipes que desejam um único ponto de entrada @Claude para todos os tipos de trabalho. |

62 

63 <Note>

64 No modo Code + Chat, se Claude rotear uma mensagem para Chat, mas você queria uma sessão de codificação, você pode clicar em "Retry as Code" para criar uma sessão Claude Code. Da mesma forma, se for roteada para Code, mas você queria uma sessão Chat, você pode escolher essa opção nessa thread.

65 </Note>

66 </Step>

67</Steps>

68 

69## Como funciona

70 

71### Detecção automática

72 

73Quando você menciona @Claude em um canal ou thread do Slack, Claude analisa automaticamente sua mensagem para determinar se é uma tarefa de codificação. Se Claude detectar intenção de codificação, ele roteará sua solicitação para Claude Code na web em vez de responder como um assistente de chat regular.

74 

75Você também pode dizer explicitamente ao Claude para lidar com uma solicitação como uma tarefa de codificação, mesmo que ele não a detecte automaticamente.

76 

77<Note>

78 Claude Code no Slack funciona apenas em canais (públicos ou privados). Não funciona em mensagens diretas (DMs).

79</Note>

80 

81### Coleta de contexto

82 

83**De threads**: Quando você @menciona Claude em uma thread, ele coleta contexto de todas as mensagens nessa thread para entender a conversa completa.

84 

85**De canais**: Quando mencionado diretamente em um canal, Claude analisa mensagens recentes do canal para contexto relevante.

86 

87Este contexto ajuda Claude a entender o problema, selecionar o repositório apropriado e informar sua abordagem para a tarefa.

88 

89<Warning>

90 Quando @Claude é invocado no Slack, Claude recebe acesso ao contexto da conversa para entender melhor sua solicitação. Claude pode seguir direções de outras mensagens no contexto, portanto, os usuários devem garantir que usem Claude apenas em conversas Slack confiáveis.

91</Warning>

92 

93### Fluxo de sessão

94 

951. **Iniciação**: Você @menciona Claude com uma solicitação de codificação

962. **Detecção**: Claude analisa sua mensagem e detecta intenção de codificação

973. **Criação de sessão**: Uma nova sessão Claude Code é criada em claude.ai/code

984. **Atualizações de progresso**: Claude publica atualizações de status em sua thread do Slack conforme o trabalho progride

995. **Conclusão**: Quando concluído, Claude o @menciona com um resumo e botões de ação

1006. **Revisão**: Clique em "View Session" para ver a transcrição completa ou "Create PR" para abrir um pull request

101 

102## Elementos da interface do usuário

103 

104### App Home

105 

106A aba App Home mostra seu status de conexão e permite que você conecte ou desconecte sua conta Claude do Slack.

107 

108### Ações de mensagem

109 

110* **View Session**: Abre a sessão Claude Code completa em seu navegador, onde você pode ver todo o trabalho realizado, continuar a sessão ou fazer solicitações adicionais.

111* **Create PR**: Cria um pull request diretamente das alterações da sessão.

112* **Retry as Code**: Se Claude inicialmente responder como um assistente de chat, mas você queria uma sessão de codificação, clique neste botão para tentar novamente a solicitação como uma tarefa Claude Code.

113* **Change Repo**: Permite que você selecione um repositório diferente se Claude escolheu incorretamente.

114 

115### Seleção de repositório

116 

117Claude seleciona automaticamente um repositório com base no contexto de sua conversa no Slack. Se vários repositórios pudessem se aplicar, Claude pode exibir um dropdown permitindo que você escolha o correto.

118 

119## Acesso e permissões

120 

121### Acesso no nível do usuário

122 

123| Tipo de Acesso | Requisito |

124| :-------------------- | :-------------------------------------------------------------------- |

125| Sessões Claude Code | Cada usuário executa sessões em sua própria conta Claude |

126| Uso e Limites de Taxa | As sessões contam contra os limites do plano do usuário individual |

127| Acesso ao Repositório | Os usuários só podem acessar repositórios que conectaram pessoalmente |

128| Histórico de Sessão | As sessões aparecem no seu histórico Claude Code em claude.ai/code |

129 

130### Permissões de administrador do espaço de trabalho

131 

132Os administradores do espaço de trabalho Slack controlam se o aplicativo Claude pode ser instalado no espaço de trabalho. Os usuários individuais então se autenticam com suas próprias contas Claude para usar a integração.

133 

134## O que é acessível onde

135 

136**No Slack**: Você verá atualizações de status, resumos de conclusão e botões de ação. A transcrição completa é preservada e sempre acessível.

137 

138**Na web**: A sessão Claude Code completa com histórico de conversa completo, todas as alterações de código, operações de arquivo e a capacidade de continuar a sessão ou criar pull requests.

139 

140## Melhores práticas

141 

142### Escrevendo solicitações eficazes

143 

144* **Seja específico**: Inclua nomes de arquivos, nomes de funções ou mensagens de erro quando relevante.

145* **Forneça contexto**: Mencione o repositório ou projeto se não estiver claro na conversa.

146* **Defina o sucesso**: Explique como "feito" se parece—Claude deve escrever testes? Atualizar documentação? Criar um PR?

147* **Use threads**: Responda em threads ao discutir bugs ou recursos para que Claude possa reunir o contexto completo.

148 

149### Quando usar Slack vs. web

150 

151**Use Slack quando**: O contexto já existe em uma discussão do Slack, você quer iniciar uma tarefa de forma assíncrona ou está colaborando com colegas de equipe que precisam de visibilidade.

152 

153**Use a web diretamente quando**: Você precisa fazer upload de arquivos, quer interação em tempo real durante o desenvolvimento ou está trabalhando em tarefas mais longas e complexas.

154 

155## Solução de problemas

156 

157### Sessões não iniciando

158 

1591. Verifique se sua conta Claude está conectada no App Home do Claude

1602. Verifique se você tem acesso a Claude Code na web habilitado

1613. Certifique-se de ter pelo menos um repositório GitHub conectado ao Claude Code

162 

163### Repositório não aparecendo

164 

1651. Conecte o repositório em Claude Code na web em [claude.ai/code](https://claude.ai/code)

1662. Verifique suas permissões do GitHub para esse repositório

1673. Tente desconectar e reconectar sua conta GitHub

168 

169### Repositório errado selecionado

170 

1711. Clique no botão "Change Repo" para selecionar um repositório diferente

1722. Inclua o nome do repositório em sua solicitação para seleção mais precisa

173 

174### Erros de autenticação

175 

1761. Desconecte e reconecte sua conta Claude no App Home

1772. Certifique-se de estar conectado à conta Claude correta em seu navegador

1783. Verifique se seu plano Claude inclui acesso a Claude Code

179 

180### Expiração de sessão

181 

1821. As sessões permanecem acessíveis no seu histórico Claude Code na web

1832. Você pode continuar ou fazer referência a sessões passadas em [claude.ai/code](https://claude.ai/code)

184 

185## Limitações atuais

186 

187* **Apenas GitHub**: Atualmente suporta repositórios no GitHub.

188* **Um PR por vez**: Cada sessão pode criar um pull request.

189* **Limites de taxa se aplicam**: As sessões usam os limites de taxa do plano Claude individual.

190* **Acesso à web necessário**: Os usuários devem ter acesso a Claude Code na web; aqueles sem ele receberão apenas respostas de chat Claude padrão.

191 

192## Recursos relacionados

193 

194<CardGroup>

195 <Card title="Claude Code na web" icon="globe" href="/pt/claude-code-on-the-web">

196 Saiba mais sobre Claude Code na web

197 </Card>

198 

199 <Card title="Claude for Slack" icon="slack" href="https://claude.com/claude-and-slack">

200 Documentação geral do Claude for Slack

201 </Card>

202 

203 <Card title="Slack App Marketplace" icon="store" href="https://slack.com/marketplace/A08SF47R6P4">

204 Instale o aplicativo Claude no Slack Marketplace

205 </Card>

206 

207 <Card title="Claude Help Center" icon="circle-question" href="https://support.claude.com">

208 Obtenha suporte adicional

209 </Card>

210</CardGroup>

statusline.md +1062 −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# Personalize sua linha de status

6 

7> Configure uma barra de status personalizada para monitorar o uso da janela de contexto, custos e status do git no Claude Code

8 

9A linha de status é uma barra personalizável na parte inferior do Claude Code que executa qualquer script de shell que você configurar. Ela recebe dados de sessão JSON em stdin e exibe tudo o que seu script imprime, oferecendo uma visualização persistente e rápida do uso de contexto, custos, status do git ou qualquer outra coisa que você queira rastrear.

10 

11As linhas de status são úteis quando você:

12 

13* Quer monitorar o uso da janela de contexto enquanto trabalha

14* Precisa rastrear custos de sessão

15* Trabalha em várias sessões e precisa distingui-las

16* Quer que a ramificação git e o status estejam sempre visíveis

17 

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

19 

20<Frame>

21 <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" />

22</Frame>

23 

24Esta página orienta você sobre [configurar uma linha de status básica](#set-up-a-status-line), explica [como os dados fluem](#how-status-lines-work) do Claude Code para seu script, lista [todos os campos que você pode exibir](#available-data) e fornece [exemplos prontos para usar](#examples) para padrões comuns como status do git, rastreamento de custos e barras de progresso.

25 

26## Configurar uma linha de status

27 

28Use o [comando `/statusline`](#use-the-statusline-command) para fazer com que o Claude Code gere um script para você, ou [crie manualmente um script](#manually-configure-a-status-line) e adicione-o às suas configurações.

29 

30### Use o comando /statusline

31 

32O comando `/statusline` aceita instruções em linguagem natural descrevendo o que você quer exibir. O Claude Code gera um arquivo de script em `~/.claude/` e atualiza suas configurações automaticamente:

33 

34```text theme={null}

35/statusline show model name and context percentage with a progress bar

36```

37 

38### Configure manualmente uma linha de status

39 

40Adicione um campo `statusLine` às suas configurações de usuário (`~/.claude/settings.json`, onde `~` é seu diretório inicial) ou [configurações de projeto](/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).

41 

42```json theme={null}

43{

44 "statusLine": {

45 "type": "command",

46 "command": "~/.claude/statusline.sh",

47 "padding": 2

48 }

49}

50```

51 

52O campo `command` é executado em um shell, então você também pode usar comandos inline em vez de um arquivo de script. Este exemplo usa `jq` para analisar a entrada JSON e exibir o nome do modelo e a porcentagem de contexto:

53 

54```json theme={null}

55{

56 "statusLine": {

57 "type": "command",

58 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'"

59 }

60}

61```

62 

63O campo `padding` opcional adiciona espaçamento horizontal extra (em caracteres) ao conteúdo da linha de status. O padrão é `0`. Este preenchimento é além do espaçamento integrado da interface, então controla o recuo relativo em vez da distância absoluta da borda do terminal.

64 

65O campo `refreshInterval` opcional executa novamente seu comando a cada N segundos além das [atualizações orientadas por eventos](#how-status-lines-work). O mínimo é `1`. Defina isto quando sua linha de status exibir dados baseados em tempo, como um relógio, ou quando subagentes em segundo plano alterarem o estado do git enquanto a sessão principal está ociosa. Deixe sem definir para executar apenas em eventos.

66 

67O campo `hideVimModeIndicator` opcional suprime o texto integrado `-- INSERT --` abaixo do prompt. Defina isto como `true` quando seu script renderizar [`vim.mode`](#available-data) em si, para que o modo não seja exibido duas vezes.

68 

69### Desabilitar a linha de status

70 

71Execute `/statusline` e peça para remover ou limpar sua linha de status (por exemplo, `/statusline delete`, `/statusline clear`, `/statusline remove it`). Você também pode excluir manualmente o campo `statusLine` do seu settings.json.

72 

73## Construir uma linha de status passo a passo

74 

75Este passo a passo mostra o que está acontecendo nos bastidores criando manualmente uma linha de status que exibe o modelo atual, diretório de trabalho e porcentagem de uso da janela de contexto.

76 

77<Note>Executar [`/statusline`](#use-the-statusline-command) com uma descrição do que você quer configura tudo isso automaticamente para você.</Note>

78 

79Estes exemplos usam scripts Bash, que funcionam no macOS e Linux. No Windows, consulte [Configuração do Windows](#windows-configuration) para exemplos de PowerShell e Git Bash.

80 

81<Frame>

82 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-quickstart.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=696445e59ca0059213250651ad23db6b" alt="Uma linha de status mostrando nome do modelo, diretório e porcentagem de contexto" width="726" height="164" data-path="images/statusline-quickstart.png" />

83</Frame>

84 

85<Steps>

86 <Step title="Crie um script que leia JSON e imprima a saída">

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

88 

89 Salve isto em `~/.claude/statusline.sh` (onde `~` é seu diretório inicial, como `/Users/username` no macOS ou `/home/username` no Linux):

90 

91 ```bash theme={null}

92 #!/bin/bash

93 # Read JSON data that Claude Code sends to stdin

94 input=$(cat)

95 

96 # Extract fields using jq

97 MODEL=$(echo "$input" | jq -r '.model.display_name')

98 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

99 # The "// 0" provides a fallback if the field is null

100 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

101 

102 # Output the status line - ${DIR##*/} extracts just the folder name

103 echo "[$MODEL] 📁 ${DIR##*/} | ${PCT}% context"

104 ```

105 </Step>

106 

107 <Step title="Torne-o executável">

108 Marque o script como executável para que seu shell possa executá-lo:

109 

110 ```bash theme={null}

111 chmod +x ~/.claude/statusline.sh

112 ```

113 </Step>

114 

115 <Step title="Adicione às configurações">

116 Diga ao Claude Code para executar seu script como a linha de status. Adicione esta configuração a `~/.claude/settings.json`, que define `type` como `"command"` (significando "execute este comando de shell") e aponta `command` para seu script:

117 

118 ```json theme={null}

119 {

120 "statusLine": {

121 "type": "command",

122 "command": "~/.claude/statusline.sh"

123 }

124 }

125 ```

126 

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

128 </Step>

129</Steps>

130 

131## Como as linhas de status funcionam

132 

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

134 

135**Quando é atualizado**

136 

137Seu script é executado após cada nova mensagem do assistente, 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.

138 

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

140 

141**O que seu script pode exibir**

142 

143* **Múltiplas linhas**: cada instrução `echo` ou `print` é exibida como uma linha separada. Consulte o [exemplo de múltiplas linhas](#display-multiple-lines).

144* **Cores**: use [códigos de escape ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) como `\033[32m` para verde (o terminal deve suportá-los). Consulte o [exemplo de status do git](#git-status-with-colors).

145* **Links**: use [sequências de escape OSC 8](https://en.wikipedia.org/wiki/ANSI_escape_code#OSC) para tornar o texto clicável (Cmd+clique no macOS, Ctrl+clique no Windows/Linux). Requer um terminal que suporte hiperlinks como iTerm2, Kitty ou WezTerm. Consulte o [exemplo de links clicáveis](#clickable-links).

146 

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

148 

149## Dados disponíveis

150 

151O Claude Code envia os seguintes campos JSON para seu script via stdin:

152 

153| Campo | Descrição |

154| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

155| `model.id`, `model.display_name` | Identificador do modelo atual e nome de exibição |

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

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

158| `workspace.added_dirs` | Diretórios adicionais adicionados via `/add-dir` ou `--add-dir`. Array vazio se nenhum foi adicionado |

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

160| `cost.total_cost_usd` | Custo total estimado da sessão em USD, calculado no lado do cliente. Pode diferir de sua fatura real |

161| `cost.total_duration_ms` | Tempo total decorrido desde o início da sessão, em milissegundos |

162| `cost.total_api_duration_ms` | Tempo total gasto aguardando respostas de API em milissegundos |

163| `cost.total_lines_added`, `cost.total_lines_removed` | Linhas de código alteradas |

164| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Contagens de tokens cumulativas em toda a sessão |

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

166| `context_window.used_percentage` | Porcentagem pré-calculada da janela de contexto usada |

167| `context_window.remaining_percentage` | Porcentagem pré-calculada da janela de contexto restante |

168| `context_window.current_usage` | Contagens de tokens da última chamada de API, descritas em [campos de janela de contexto](#context-window-fields) |

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

170| `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. Ausente quando o modelo atual não suporta o parâmetro de esforço |

171| `thinking.enabled` | Se o pensamento estendido está habilitado para a sessão |

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

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

174| `session_id` | Identificador único de sessão |

175| `session_name` | Nome de sessão personalizado definido com a flag `--name` ou `/rename`. Ausente se nenhum nome personalizado foi definido |

176| `transcript_path` | Caminho para o arquivo de transcrição de conversa |

177| `version` | Versão do Claude Code |

178| `output_style.name` | Nome do estilo de saída atual |

179| `vim.mode` | Modo vim atual (`NORMAL`, `INSERT`, `VISUAL` ou `VISUAL LINE`) quando [modo vim](/pt/interactive-mode#vim-editor-mode) está habilitado |

180| `agent.name` | Nome do agente ao executar com a flag `--agent` ou configurações de agente configuradas |

181| `worktree.name` | Nome da worktree ativa. Presente apenas durante sessões `--worktree` |

182| `worktree.path` | Caminho absoluto para o diretório da worktree |

183| `worktree.branch` | Nome da ramificação git para a worktree (por exemplo, `"worktree-my-feature"`). Ausente para worktrees baseadas em hook |

184| `worktree.original_cwd` | O diretório em que o Claude estava antes de entrar na worktree |

185| `worktree.original_branch` | Ramificação git verificada antes de entrar na worktree. Ausente para worktrees baseadas em hook |

186 

187<Accordion title="Esquema JSON completo">

188 Seu comando de linha de status recebe esta estrutura JSON via stdin:

189 

190 ```json theme={null}

191 {

192 "cwd": "/current/working/directory",

193 "session_id": "abc123...",

194 "session_name": "my-session",

195 "transcript_path": "/path/to/transcript.jsonl",

196 "model": {

197 "id": "claude-opus-4-7",

198 "display_name": "Opus"

199 },

200 "workspace": {

201 "current_dir": "/current/working/directory",

202 "project_dir": "/original/project/directory",

203 "added_dirs": [],

204 "git_worktree": "feature-xyz"

205 },

206 "version": "2.1.90",

207 "output_style": {

208 "name": "default"

209 },

210 "cost": {

211 "total_cost_usd": 0.01234,

212 "total_duration_ms": 45000,

213 "total_api_duration_ms": 2300,

214 "total_lines_added": 156,

215 "total_lines_removed": 23

216 },

217 "context_window": {

218 "total_input_tokens": 15234,

219 "total_output_tokens": 4521,

220 "context_window_size": 200000,

221 "used_percentage": 8,

222 "remaining_percentage": 92,

223 "current_usage": {

224 "input_tokens": 8500,

225 "output_tokens": 1200,

226 "cache_creation_input_tokens": 5000,

227 "cache_read_input_tokens": 2000

228 }

229 },

230 "exceeds_200k_tokens": false,

231 "effort": {

232 "level": "high"

233 },

234 "thinking": {

235 "enabled": true

236 },

237 "rate_limits": {

238 "five_hour": {

239 "used_percentage": 23.5,

240 "resets_at": 1738425600

241 },

242 "seven_day": {

243 "used_percentage": 41.2,

244 "resets_at": 1738857600

245 }

246 },

247 "vim": {

248 "mode": "NORMAL"

249 },

250 "agent": {

251 "name": "security-reviewer"

252 },

253 "worktree": {

254 "name": "my-feature",

255 "path": "/path/to/.claude/worktrees/my-feature",

256 "branch": "worktree-my-feature",

257 "original_cwd": "/path/to/project",

258 "original_branch": "main"

259 }

260 }

261 ```

262 

263 **Campos que podem estar ausentes** (não presentes em JSON):

264 

265 * `session_name`: aparece apenas quando um nome personalizado foi definido com `--name` ou `/rename`

266 * `workspace.git_worktree`: aparece apenas quando o diretório atual está dentro de uma git worktree vinculada

267 * `effort`: aparece apenas quando o modelo atual suporta o parâmetro de esforço de raciocínio

268 * `vim`: aparece apenas quando o modo vim está habilitado

269 * `agent`: aparece apenas ao executar com a flag `--agent` ou configurações de agente configuradas

270 * `worktree`: aparece apenas durante sessões `--worktree`. Quando presente, `branch` e `original_branch` também podem estar ausentes para worktrees baseadas em hook

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

272 

273 **Campos que podem ser `null`**:

274 

275 * `context_window.current_usage`: `null` antes da primeira chamada de API em uma sessão

276 * `context_window.used_percentage`, `context_window.remaining_percentage`: podem ser `null` no início da sessão

277 

278 Trate campos ausentes com acesso condicional e valores nulos com padrões de fallback em seus scripts.

279</Accordion>

280 

281### Campos de janela de contexto

282 

283O objeto `context_window` fornece duas maneiras de rastrear o uso de contexto:

284 

285* **Totais cumulativos** (`total_input_tokens`, `total_output_tokens`): soma de todos os tokens em toda a sessão, útil para rastrear o consumo total

286* **Uso atual** (`current_usage`): contagens de tokens da chamada de API mais recente, use isto para porcentagem de contexto precisa, pois reflete o estado real do contexto

287 

288O objeto `current_usage` contém:

289 

290* `input_tokens`: tokens de entrada no contexto atual

291* `output_tokens`: tokens de saída gerados

292* `cache_creation_input_tokens`: tokens escritos no cache

293* `cache_read_input_tokens`: tokens lidos do cache

294 

295O campo `used_percentage` é calculado apenas a partir de tokens de entrada: `input_tokens + cache_creation_input_tokens + cache_read_input_tokens`. Ele não inclui `output_tokens`.

296 

297Se você calcular a porcentagem de contexto manualmente a partir de `current_usage`, use a mesma fórmula apenas de entrada para corresponder a `used_percentage`.

298 

299O objeto `current_usage` é `null` antes da primeira chamada de API em uma sessão.

300 

301## Exemplos

302 

303Estes exemplos mostram padrões comuns de linha de status. Para usar qualquer exemplo:

304 

3051. Salve o script em um arquivo como `~/.claude/statusline.sh` (ou `.py`/`.js`)

3062. Torne-o executável: `chmod +x ~/.claude/statusline.sh`

3073. Adicione o caminho às suas [configurações](#manually-configure-a-status-line)

308 

309Os exemplos de Bash usam [`jq`](https://jqlang.github.io/jq/) para analisar JSON. Python e Node.js têm análise JSON integrada.

310 

311### Uso da janela de contexto

312 

313Exiba o modelo atual e o uso da janela de contexto com uma barra de progresso visual. Cada script lê JSON de stdin, extrai o campo `used_percentage` e constrói uma barra de 10 caracteres onde blocos preenchidos (▓) representam o uso:

314 

315<Frame>

316 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-context-window-usage.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=15b58ab3602f036939145dde3165c6f7" alt="Uma linha de status mostrando nome do modelo e uma barra de progresso com porcentagem" width="448" height="152" data-path="images/statusline-context-window-usage.png" />

317</Frame>

318 

319<CodeGroup>

320 ```bash Bash theme={null}

321 #!/bin/bash

322 # Read all of stdin into a variable

323 input=$(cat)

324 

325 # Extract fields with jq, "// 0" provides fallback for null

326 MODEL=$(echo "$input" | jq -r '.model.display_name')

327 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

328 

329 # Build progress bar: printf -v creates a run of spaces, then

330 # ${var// /▓} replaces each space with a block character

331 BAR_WIDTH=10

332 FILLED=$((PCT * BAR_WIDTH / 100))

333 EMPTY=$((BAR_WIDTH - FILLED))

334 BAR=""

335 [ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /▓}"

336 [ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /░}"

337 

338 echo "[$MODEL] $BAR $PCT%"

339 ```

340 

341 ```python Python theme={null}

342 #!/usr/bin/env python3

343 import json, sys

344 

345 # json.load reads and parses stdin in one step

346 data = json.load(sys.stdin)

347 model = data['model']['display_name']

348 # "or 0" handles null values

349 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

350 

351 # String multiplication builds the bar

352 filled = pct * 10 // 100

353 bar = '▓' * filled + '░' * (10 - filled)

354 

355 print(f"[{model}] {bar} {pct}%")

356 ```

357 

358 ```javascript Node.js theme={null}

359 #!/usr/bin/env node

360 // Node.js reads stdin asynchronously with events

361 let input = '';

362 process.stdin.on('data', chunk => input += chunk);

363 process.stdin.on('end', () => {

364 const data = JSON.parse(input);

365 const model = data.model.display_name;

366 // Optional chaining (?.) safely handles null fields

367 const pct = Math.floor(data.context_window?.used_percentage || 0);

368 

369 // String.repeat() builds the bar

370 const filled = Math.floor(pct * 10 / 100);

371 const bar = '▓'.repeat(filled) + '░'.repeat(10 - filled);

372 

373 console.log(`[${model}] ${bar} ${pct}%`);

374 });

375 ```

376</CodeGroup>

377 

378### Status do git com cores

379 

380Mostre a ramificação git com indicadores codificados por cores para arquivos preparados e modificados. Este script usa [códigos de escape ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) para cores de terminal: `\033[32m` é verde, `\033[33m` é amarelo e `\033[0m` redefine para padrão.

381 

382<Frame>

383 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-git-context.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e656f34f90d1d9a1d0e220988914345f" alt="Uma linha de status mostrando modelo, diretório, ramificação git e indicadores coloridos para arquivos preparados e modificados" width="742" height="178" data-path="images/statusline-git-context.png" />

384</Frame>

385 

386Cada script verifica se o diretório atual é um repositório git, conta arquivos preparados e modificados e exibe indicadores codificados por cores:

387 

388<CodeGroup>

389 ```bash Bash theme={null}

390 #!/bin/bash

391 input=$(cat)

392 

393 MODEL=$(echo "$input" | jq -r '.model.display_name')

394 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

395 

396 GREEN='\033[32m'

397 YELLOW='\033[33m'

398 RESET='\033[0m'

399 

400 if git rev-parse --git-dir > /dev/null 2>&1; then

401 BRANCH=$(git branch --show-current 2>/dev/null)

402 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

403 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

404 

405 GIT_STATUS=""

406 [ "$STAGED" -gt 0 ] && GIT_STATUS="${GREEN}+${STAGED}${RESET}"

407 [ "$MODIFIED" -gt 0 ] && GIT_STATUS="${GIT_STATUS}${YELLOW}~${MODIFIED}${RESET}"

408 

409 echo -e "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH $GIT_STATUS"

410 else

411 echo "[$MODEL] 📁 ${DIR##*/}"

412 fi

413 ```

414 

415 ```python Python theme={null}

416 #!/usr/bin/env python3

417 import json, sys, subprocess, os

418 

419 data = json.load(sys.stdin)

420 model = data['model']['display_name']

421 directory = os.path.basename(data['workspace']['current_dir'])

422 

423 GREEN, YELLOW, RESET = '\033[32m', '\033[33m', '\033[0m'

424 

425 try:

426 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

427 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

428 staged_output = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

429 modified_output = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

430 staged = len(staged_output.split('\n')) if staged_output else 0

431 modified = len(modified_output.split('\n')) if modified_output else 0

432 

433 git_status = f"{GREEN}+{staged}{RESET}" if staged else ""

434 git_status += f"{YELLOW}~{modified}{RESET}" if modified else ""

435 

436 print(f"[{model}] 📁 {directory} | 🌿 {branch} {git_status}")

437 except:

438 print(f"[{model}] 📁 {directory}")

439 ```

440 

441 ```javascript Node.js theme={null}

442 #!/usr/bin/env node

443 const { execSync } = require('child_process');

444 const path = require('path');

445 

446 let input = '';

447 process.stdin.on('data', chunk => input += chunk);

448 process.stdin.on('end', () => {

449 const data = JSON.parse(input);

450 const model = data.model.display_name;

451 const dir = path.basename(data.workspace.current_dir);

452 

453 const GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RESET = '\x1b[0m';

454 

455 try {

456 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

457 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

458 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

459 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

460 

461 let gitStatus = staged ? `${GREEN}+${staged}${RESET}` : '';

462 gitStatus += modified ? `${YELLOW}~${modified}${RESET}` : '';

463 

464 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} ${gitStatus}`);

465 } catch {

466 console.log(`[${model}] 📁 ${dir}`);

467 }

468 });

469 ```

470</CodeGroup>

471 

472### Rastreamento de custo e duração

473 

474Rastreie os custos de API e o tempo decorrido da sua sessão. O campo `cost.total_cost_usd` acumula o custo estimado de todas as chamadas de API na sessão atual. O campo `cost.total_duration_ms` mede o tempo total decorrido desde o início da sessão, enquanto `cost.total_api_duration_ms` rastreia apenas o tempo gasto aguardando respostas de API.

475 

476Cada script formata o custo como moeda e converte milissegundos em minutos e segundos:

477 

478<Frame>

479 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-cost-tracking.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e3444a51fe6f3440c134bd5f1f08ad29" alt="Uma linha de status mostrando nome do modelo, custo da sessão e duração" width="588" height="180" data-path="images/statusline-cost-tracking.png" />

480</Frame>

481 

482<CodeGroup>

483 ```bash Bash theme={null}

484 #!/bin/bash

485 input=$(cat)

486 

487 MODEL=$(echo "$input" | jq -r '.model.display_name')

488 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

489 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

490 

491 COST_FMT=$(printf '$%.2f' "$COST")

492 DURATION_SEC=$((DURATION_MS / 1000))

493 MINS=$((DURATION_SEC / 60))

494 SECS=$((DURATION_SEC % 60))

495 

496 echo "[$MODEL] 💰 $COST_FMT | ⏱️ ${MINS}m ${SECS}s"

497 ```

498 

499 ```python Python theme={null}

500 #!/usr/bin/env python3

501 import json, sys

502 

503 data = json.load(sys.stdin)

504 model = data['model']['display_name']

505 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

506 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

507 

508 duration_sec = duration_ms // 1000

509 mins, secs = duration_sec // 60, duration_sec % 60

510 

511 print(f"[{model}] 💰 ${cost:.2f} | ⏱️ {mins}m {secs}s")

512 ```

513 

514 ```javascript Node.js theme={null}

515 #!/usr/bin/env node

516 let input = '';

517 process.stdin.on('data', chunk => input += chunk);

518 process.stdin.on('end', () => {

519 const data = JSON.parse(input);

520 const model = data.model.display_name;

521 const cost = data.cost?.total_cost_usd || 0;

522 const durationMs = data.cost?.total_duration_ms || 0;

523 

524 const durationSec = Math.floor(durationMs / 1000);

525 const mins = Math.floor(durationSec / 60);

526 const secs = durationSec % 60;

527 

528 console.log(`[${model}] 💰 $${cost.toFixed(2)} | ⏱️ ${mins}m ${secs}s`);

529 });

530 ```

531</CodeGroup>

532 

533### Exibir múltiplas linhas

534 

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

536 

537<Frame>

538 <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" />

539</Frame>

540 

541Este exemplo combina várias técnicas: cores baseadas em limite (verde abaixo de 70%, amarelo 70-89%, vermelho 90%+), uma barra de progresso e informações de ramificação git. Cada instrução `print` ou `echo` cria uma linha separada:

542 

543<CodeGroup>

544 ```bash Bash theme={null}

545 #!/bin/bash

546 input=$(cat)

547 

548 MODEL=$(echo "$input" | jq -r '.model.display_name')

549 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

550 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

551 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

552 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

553 

554 CYAN='\033[36m'; GREEN='\033[32m'; YELLOW='\033[33m'; RED='\033[31m'; RESET='\033[0m'

555 

556 # Pick bar color based on context usage

557 if [ "$PCT" -ge 90 ]; then BAR_COLOR="$RED"

558 elif [ "$PCT" -ge 70 ]; then BAR_COLOR="$YELLOW"

559 else BAR_COLOR="$GREEN"; fi

560 

561 FILLED=$((PCT / 10)); EMPTY=$((10 - FILLED))

562 printf -v FILL "%${FILLED}s"; printf -v PAD "%${EMPTY}s"

563 BAR="${FILL// /█}${PAD// /░}"

564 

565 MINS=$((DURATION_MS / 60000)); SECS=$(((DURATION_MS % 60000) / 1000))

566 

567 BRANCH=""

568 git rev-parse --git-dir > /dev/null 2>&1 && BRANCH=" | 🌿 $(git branch --show-current 2>/dev/null)"

569 

570 echo -e "${CYAN}[$MODEL]${RESET} 📁 ${DIR##*/}$BRANCH"

571 COST_FMT=$(printf '$%.2f' "$COST")

572 echo -e "${BAR_COLOR}${BAR}${RESET} ${PCT}% | ${YELLOW}${COST_FMT}${RESET} | ⏱️ ${MINS}m ${SECS}s"

573 ```

574 

575 ```python Python theme={null}

576 #!/usr/bin/env python3

577 import json, sys, subprocess, os

578 

579 data = json.load(sys.stdin)

580 model = data['model']['display_name']

581 directory = os.path.basename(data['workspace']['current_dir'])

582 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

583 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

584 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

585 

586 CYAN, GREEN, YELLOW, RED, RESET = '\033[36m', '\033[32m', '\033[33m', '\033[31m', '\033[0m'

587 

588 bar_color = RED if pct >= 90 else YELLOW if pct >= 70 else GREEN

589 filled = pct // 10

590 bar = '█' * filled + '░' * (10 - filled)

591 

592 mins, secs = duration_ms // 60000, (duration_ms % 60000) // 1000

593 

594 try:

595 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True, stderr=subprocess.DEVNULL).strip()

596 branch = f" | 🌿 {branch}" if branch else ""

597 except:

598 branch = ""

599 

600 print(f"{CYAN}[{model}]{RESET} 📁 {directory}{branch}")

601 print(f"{bar_color}{bar}{RESET} {pct}% | {YELLOW}${cost:.2f}{RESET} | ⏱️ {mins}m {secs}s")

602 ```

603 

604 ```javascript Node.js theme={null}

605 #!/usr/bin/env node

606 const { execSync } = require('child_process');

607 const path = require('path');

608 

609 let input = '';

610 process.stdin.on('data', chunk => input += chunk);

611 process.stdin.on('end', () => {

612 const data = JSON.parse(input);

613 const model = data.model.display_name;

614 const dir = path.basename(data.workspace.current_dir);

615 const cost = data.cost?.total_cost_usd || 0;

616 const pct = Math.floor(data.context_window?.used_percentage || 0);

617 const durationMs = data.cost?.total_duration_ms || 0;

618 

619 const CYAN = '\x1b[36m', GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RED = '\x1b[31m', RESET = '\x1b[0m';

620 

621 const barColor = pct >= 90 ? RED : pct >= 70 ? YELLOW : GREEN;

622 const filled = Math.floor(pct / 10);

623 const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);

624 

625 const mins = Math.floor(durationMs / 60000);

626 const secs = Math.floor((durationMs % 60000) / 1000);

627 

628 let branch = '';

629 try {

630 branch = execSync('git branch --show-current', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

631 branch = branch ? ` | 🌿 ${branch}` : '';

632 } catch {}

633 

634 console.log(`${CYAN}[${model}]${RESET} 📁 ${dir}${branch}`);

635 console.log(`${barColor}${bar}${RESET} ${pct}% | ${YELLOW}$${cost.toFixed(2)}${RESET} | ⏱️ ${mins}m ${secs}s`);

636 });

637 ```

638</CodeGroup>

639 

640### Links clicáveis

641 

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

643 

644<Frame>

645 <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" />

646</Frame>

647 

648Cada script obtém a URL remota do git, converte o formato SSH para HTTPS e envolve o nome do repositório em códigos de escape OSC 8. A versão Bash usa `printf '%b'` que interpreta escapes de barra invertida de forma mais confiável que `echo -e` em diferentes shells:

649 

650<CodeGroup>

651 ```bash Bash theme={null}

652 #!/bin/bash

653 input=$(cat)

654 

655 MODEL=$(echo "$input" | jq -r '.model.display_name')

656 

657 # Convert git SSH URL to HTTPS

658 REMOTE=$(git remote get-url origin 2>/dev/null | sed 's/git@github.com:/https:\/\/github.com\//' | sed 's/\.git$//')

659 

660 if [ -n "$REMOTE" ]; then

661 REPO_NAME=$(basename "$REMOTE")

662 # OSC 8 format: \e]8;;URL\a then TEXT then \e]8;;\a

663 # printf %b interprets escape sequences reliably across shells

664 printf '%b' "[$MODEL] 🔗 \e]8;;${REMOTE}\a${REPO_NAME}\e]8;;\a\n"

665 else

666 echo "[$MODEL]"

667 fi

668 ```

669 

670 ```python Python theme={null}

671 #!/usr/bin/env python3

672 import json, sys, subprocess, re, os

673 

674 data = json.load(sys.stdin)

675 model = data['model']['display_name']

676 

677 # Get git remote URL

678 try:

679 remote = subprocess.check_output(

680 ['git', 'remote', 'get-url', 'origin'],

681 stderr=subprocess.DEVNULL, text=True

682 ).strip()

683 # Convert SSH to HTTPS format

684 remote = re.sub(r'^git@github\.com:', 'https://github.com/', remote)

685 remote = re.sub(r'\.git$', '', remote)

686 repo_name = os.path.basename(remote)

687 # OSC 8 escape sequences

688 link = f"\033]8;;{remote}\a{repo_name}\033]8;;\a"

689 print(f"[{model}] 🔗 {link}")

690 except:

691 print(f"[{model}]")

692 ```

693 

694 ```javascript Node.js theme={null}

695 #!/usr/bin/env node

696 const { execSync } = require('child_process');

697 const path = require('path');

698 

699 let input = '';

700 process.stdin.on('data', chunk => input += chunk);

701 process.stdin.on('end', () => {

702 const data = JSON.parse(input);

703 const model = data.model.display_name;

704 

705 try {

706 let remote = execSync('git remote get-url origin', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

707 // Convert SSH to HTTPS format

708 remote = remote.replace(/^git@github\.com:/, 'https://github.com/').replace(/\.git$/, '');

709 const repoName = path.basename(remote);

710 // OSC 8 escape sequences

711 const link = `\x1b]8;;${remote}\x07${repoName}\x1b]8;;\x07`;

712 console.log(`[${model}] 🔗 ${link}`);

713 } catch {

714 console.log(`[${model}]`);

715 }

716 });

717 ```

718</CodeGroup>

719 

720### Uso de limite de taxa

721 

722Exiba 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).

723 

724Este campo está presente apenas para assinantes Claude.ai (Pro/Max) após a primeira resposta de API. Cada script trata o campo ausente graciosamente:

725 

726<CodeGroup>

727 ```bash Bash theme={null}

728 #!/bin/bash

729 input=$(cat)

730 

731 MODEL=$(echo "$input" | jq -r '.model.display_name')

732 # "// empty" produces no output when rate_limits is absent

733 FIVE_H=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')

734 WEEK=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty')

735 

736 LIMITS=""

737 [ -n "$FIVE_H" ] && LIMITS="5h: $(printf '%.0f' "$FIVE_H")%"

738 [ -n "$WEEK" ] && LIMITS="${LIMITS:+$LIMITS }7d: $(printf '%.0f' "$WEEK")%"

739 

740 [ -n "$LIMITS" ] && echo "[$MODEL] | $LIMITS" || echo "[$MODEL]"

741 ```

742 

743 ```python Python theme={null}

744 #!/usr/bin/env python3

745 import json, sys

746 

747 data = json.load(sys.stdin)

748 model = data['model']['display_name']

749 

750 parts = []

751 rate = data.get('rate_limits', {})

752 five_h = rate.get('five_hour', {}).get('used_percentage')

753 week = rate.get('seven_day', {}).get('used_percentage')

754 

755 if five_h is not None:

756 parts.append(f"5h: {five_h:.0f}%")

757 if week is not None:

758 parts.append(f"7d: {week:.0f}%")

759 

760 if parts:

761 print(f"[{model}] | {' '.join(parts)}")

762 else:

763 print(f"[{model}]")

764 ```

765 

766 ```javascript Node.js theme={null}

767 #!/usr/bin/env node

768 let input = '';

769 process.stdin.on('data', chunk => input += chunk);

770 process.stdin.on('end', () => {

771 const data = JSON.parse(input);

772 const model = data.model.display_name;

773 

774 const parts = [];

775 const fiveH = data.rate_limits?.five_hour?.used_percentage;

776 const week = data.rate_limits?.seven_day?.used_percentage;

777 

778 if (fiveH != null) parts.push(`5h: ${Math.round(fiveH)}%`);

779 if (week != null) parts.push(`7d: ${Math.round(week)}%`);

780 

781 console.log(parts.length ? `[${model}] | ${parts.join(' ')}` : `[${model}]`);

782 });

783 ```

784</CodeGroup>

785 

786### Cache de operações caras

787 

788Seu script de linha de status é executado frequentemente durante sessões ativas. Comandos como `git status` ou `git diff` podem ser lentos, especialmente em repositórios grandes. Este exemplo armazena em cache informações do git em um arquivo temporário e apenas as atualiza a cada 5 segundos.

789 

790O nome do arquivo de cache precisa ser estável em invocações de linha de status dentro de uma sessão, mas único em sessões para que sessões simultâneas em repositórios diferentes não leiam o estado git em cache uma da outra. Identificadores baseados em processo como `$$`, `os.getpid()` ou `process.pid` mudam a cada invocação e derrotam o cache. Use o `session_id` da entrada JSON em vez disso: é estável para a vida útil de uma sessão e único por sessão.

791 

792Cada script verifica se o arquivo de cache está ausente ou mais antigo que 5 segundos antes de executar comandos git:

793 

794<CodeGroup>

795 ```bash Bash theme={null}

796 #!/bin/bash

797 input=$(cat)

798 

799 MODEL=$(echo "$input" | jq -r '.model.display_name')

800 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

801 SESSION_ID=$(echo "$input" | jq -r '.session_id')

802 

803 CACHE_FILE="/tmp/statusline-git-cache-$SESSION_ID"

804 CACHE_MAX_AGE=5 # seconds

805 

806 cache_is_stale() {

807 [ ! -f "$CACHE_FILE" ] || \

808 # stat -f %m is macOS, stat -c %Y is Linux

809 [ $(($(date +%s) - $(stat -f %m "$CACHE_FILE" 2>/dev/null || stat -c %Y "$CACHE_FILE" 2>/dev/null || echo 0))) -gt $CACHE_MAX_AGE ]

810 }

811 

812 if cache_is_stale; then

813 if git rev-parse --git-dir > /dev/null 2>&1; then

814 BRANCH=$(git branch --show-current 2>/dev/null)

815 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

816 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

817 echo "$BRANCH|$STAGED|$MODIFIED" > "$CACHE_FILE"

818 else

819 echo "||" > "$CACHE_FILE"

820 fi

821 fi

822 

823 IFS='|' read -r BRANCH STAGED MODIFIED < "$CACHE_FILE"

824 

825 if [ -n "$BRANCH" ]; then

826 echo "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH +$STAGED ~$MODIFIED"

827 else

828 echo "[$MODEL] 📁 ${DIR##*/}"

829 fi

830 ```

831 

832 ```python Python theme={null}

833 #!/usr/bin/env python3

834 import json, sys, subprocess, os, time

835 

836 data = json.load(sys.stdin)

837 model = data['model']['display_name']

838 directory = os.path.basename(data['workspace']['current_dir'])

839 session_id = data['session_id']

840 

841 CACHE_FILE = f"/tmp/statusline-git-cache-{session_id}"

842 CACHE_MAX_AGE = 5 # seconds

843 

844 def cache_is_stale():

845 if not os.path.exists(CACHE_FILE):

846 return True

847 return time.time() - os.path.getmtime(CACHE_FILE) > CACHE_MAX_AGE

848 

849 if cache_is_stale():

850 try:

851 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

852 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

853 staged = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

854 modified = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

855 staged_count = len(staged.split('\n')) if staged else 0

856 modified_count = len(modified.split('\n')) if modified else 0

857 with open(CACHE_FILE, 'w') as f:

858 f.write(f"{branch}|{staged_count}|{modified_count}")

859 except:

860 with open(CACHE_FILE, 'w') as f:

861 f.write("||")

862 

863 with open(CACHE_FILE) as f:

864 branch, staged, modified = f.read().strip().split('|')

865 

866 if branch:

867 print(f"[{model}] 📁 {directory} | 🌿 {branch} +{staged} ~{modified}")

868 else:

869 print(f"[{model}] 📁 {directory}")

870 ```

871 

872 ```javascript Node.js theme={null}

873 #!/usr/bin/env node

874 const { execSync } = require('child_process');

875 const fs = require('fs');

876 const path = require('path');

877 

878 let input = '';

879 process.stdin.on('data', chunk => input += chunk);

880 process.stdin.on('end', () => {

881 const data = JSON.parse(input);

882 const model = data.model.display_name;

883 const dir = path.basename(data.workspace.current_dir);

884 const sessionId = data.session_id;

885 

886 const CACHE_FILE = `/tmp/statusline-git-cache-${sessionId}`;

887 const CACHE_MAX_AGE = 5; // seconds

888 

889 const cacheIsStale = () => {

890 if (!fs.existsSync(CACHE_FILE)) return true;

891 return (Date.now() / 1000) - fs.statSync(CACHE_FILE).mtimeMs / 1000 > CACHE_MAX_AGE;

892 };

893 

894 if (cacheIsStale()) {

895 try {

896 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

897 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

898 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

899 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

900 fs.writeFileSync(CACHE_FILE, `${branch}|${staged}|${modified}`);

901 } catch {

902 fs.writeFileSync(CACHE_FILE, '||');

903 }

904 }

905 

906 const [branch, staged, modified] = fs.readFileSync(CACHE_FILE, 'utf8').trim().split('|');

907 

908 if (branch) {

909 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} +${staged} ~${modified}`);

910 } else {

911 console.log(`[${model}] 📁 ${dir}`);

912 }

913 });

914 ```

915</CodeGroup>

916 

917### Configuração do Windows

918 

919No Windows, o Claude Code executa comandos de linha de status através do Git Bash quando o Git Bash está instalado, ou através do PowerShell quando o Git Bash está ausente. Para executar um script PowerShell como sua linha de status, invoque-o via `powershell`; isso funciona a partir de qualquer shell:

920 

921<CodeGroup>

922 ```json settings.json theme={null}

923 {

924 "statusLine": {

925 "type": "command",

926 "command": "powershell -NoProfile -File C:/Users/username/.claude/statusline.ps1"

927 }

928 }

929 ```

930 

931 ```powershell statusline.ps1 theme={null}

932 $input_json = $input | Out-String | ConvertFrom-Json

933 $cwd = $input_json.cwd

934 $model = $input_json.model.display_name

935 $used = $input_json.context_window.used_percentage

936 $dirname = Split-Path $cwd -Leaf

937 

938 if ($used) {

939 Write-Host "$dirname [$model] ctx: $used%"

940 } else {

941 Write-Host "$dirname [$model]"

942 }

943 ```

944</CodeGroup>

945 

946Ou execute um script Bash diretamente quando o Git Bash está instalado:

947 

948<CodeGroup>

949 ```json settings.json theme={null}

950 {

951 "statusLine": {

952 "type": "command",

953 "command": "~/.claude/statusline.sh"

954 }

955 }

956 ```

957 

958 ```bash statusline.sh theme={null}

959 #!/usr/bin/env bash

960 input=$(cat)

961 cwd=$(echo "$input" | grep -o '"cwd":"[^"]*"' | cut -d'"' -f4)

962 model=$(echo "$input" | grep -o '"display_name":"[^"]*"' | cut -d'"' -f4)

963 dirname="${cwd##*[/\\]}"

964 echo "$dirname [$model]"

965 ```

966</CodeGroup>

967 

968## Linhas de status de subagente

969 

970A configuração `subagentStatusLine` renderiza um corpo de linha personalizado para cada [subagente](/pt/sub-agents) mostrado no painel de agente abaixo do prompt. Use-a para substituir a linha padrão `name · description · token count` pela sua própria formatação.

971 

972```json theme={null}

973{

974 "subagentStatusLine": {

975 "type": "command",

976 "command": "~/.claude/subagent-statusline.sh"

977 }

978}

979```

980 

981O 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](/pt/hooks#common-input-fields) mais `columns` (a largura de linha utilizável) e um array `tasks`, onde cada tarefa tem `id`, `name`, `type`, `status`, `description`, `label`, `startTime`, `tokenCount`, `tokenSamples` e `cwd`.

982 

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

984 

985Os 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`](/pt/plugins-reference#standard-plugin-layout).

986 

987## Dicas

988 

989* **Teste com entrada simulada**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

990* **Mantenha a saída curta**: a barra de status tem largura limitada, então saída longa pode ser truncada ou quebrada de forma estranha

991* **Cache de operações lentas**: seu script é executado frequentemente durante sessões ativas, então comandos como `git status` podem causar atraso. Consulte o [exemplo de cache](#cache-expensive-operations) para saber como lidar com isso.

992 

993Projetos comunitários como [ccstatusline](https://github.com/sirmalloc/ccstatusline) e [starship-claude](https://github.com/martinemde/starship-claude) fornecem configurações pré-construídas com temas e recursos adicionais.

994 

995## Solução de problemas

996 

997**Linha de status não aparecendo**

998 

999* Verifique se seu script é executável: `chmod +x ~/.claude/statusline.sh`

1000* Verifique se seu script produz saída para stdout, não stderr

1001* Execute seu script manualmente para verificar se produz saída

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

1003* 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

1004* Peça ao Claude para ler seu arquivo de configurações e executar o comando `statusLine` diretamente para descobrir erros

1005 

1006**Linha de status mostra `--` ou valores vazios**

1007 

1008* Os campos podem ser `null` antes da primeira resposta de API ser concluída

1009* Trate valores nulos em seu script com fallbacks como `// 0` em jq

1010* Reinicie o Claude Code se os valores permanecerem vazios após várias mensagens

1011 

1012**Porcentagem de contexto mostra valores inesperados**

1013 

1014* Use `used_percentage` para estado de contexto preciso em vez de totais cumulativos

1015* `total_input_tokens` e `total_output_tokens` são cumulativos em toda a sessão e podem exceder o tamanho da janela de contexto

1016* A porcentagem de contexto pode diferir da saída `/context` devido a quando cada uma é calculada

1017 

1018**Links OSC 8 não clicáveis**

1019 

1020* Verifique se seu terminal suporta hiperlinks OSC 8 (iTerm2, Kitty, WezTerm)

1021 

1022* Terminal.app não suporta links clicáveis

1023 

1024* 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:

1025 

1026 ```bash theme={null}

1027 FORCE_HYPERLINK=1 claude

1028 ```

1029 

1030 No PowerShell, defina a variável na sessão atual primeiro:

1031 

1032 ```powershell theme={null}

1033 $env:FORCE_HYPERLINK = "1"; claude

1034 ```

1035 

1036* Sessões SSH e tmux podem remover sequências OSC dependendo da configuração

1037 

1038* Se sequências de escape aparecerem como texto literal como `\e]8;;`, use `printf '%b'` em vez de `echo -e` para manipulação de escape mais confiável

1039 

1040**Falhas de exibição com sequências de escape**

1041 

1042* Sequências de escape complexas (cores ANSI, links OSC 8) podem ocasionalmente causar saída corrompida se se sobrepuserem com outras atualizações da interface

1043* Se você vir texto corrompido, tente simplificar seu script para saída de texto simples

1044* Linhas de status de múltiplas linhas com códigos de escape são mais propensas a problemas de renderização do que texto simples de linha única

1045 

1046**Confiança do espaço de trabalho necessária**

1047 

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

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

1050 

1051**Erros de script ou travamentos**

1052 

1053* Scripts que saem com códigos diferentes de zero ou não produzem saída fazem a linha de status ficar em branco

1054* Scripts lentos bloqueiam a linha de status de atualizar até que sejam concluídos. Mantenha scripts rápidos para evitar saída obsoleta.

1055* Se uma nova atualização for acionada enquanto um script lento está em execução, o script em andamento é cancelado

1056* Teste seu script independentemente com entrada simulada antes de configurá-lo

1057 

1058**Notificações compartilham a linha de status**

1059 

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

1061* Habilitar modo verbose adiciona um contador de tokens a esta área

1062* Em terminais estreitos, essas notificações podem truncar sua saída de linha de status

sub-agents.md +1011 −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# Criar subagentes personalizados

6 

7> Crie e use subagentes de IA especializados no Claude Code para fluxos de trabalho específicos de tarefas e gerenciamento de contexto aprimorado.

8 

9Subagentes são assistentes de IA especializados que lidam com tipos específicos de tarefas. Use um quando uma tarefa secundária inundaria sua conversa principal com resultados de pesquisa, logs ou conteúdos de arquivo que você não referenciará novamente: o subagente faz esse trabalho em seu próprio contexto e retorna apenas o resumo. Defina um subagente personalizado quando você continua gerando o mesmo tipo de worker com as mesmas instruções.

10 

11Cada subagente é executado em sua própria janela de contexto com um prompt de sistema personalizado, acesso a ferramentas específicas e permissões independentes. Quando Claude encontra uma tarefa que corresponde à descrição de um subagente, ele delega para esse subagente, que funciona independentemente e retorna resultados. Para ver a economia de contexto na prática, a [visualização da janela de contexto](/pt/context-window) apresenta uma sessão onde um subagente lida com pesquisa em sua própria janela separada.

12 

13<Note>

14 Se você precisa de múltiplos agentes trabalhando em paralelo e se comunicando entre si, consulte [equipes de agentes](/pt/agent-teams) em vez disso. Subagentes funcionam dentro de uma única sessão; equipes de agentes coordenam entre sessões separadas.

15</Note>

16 

17Subagentes ajudam você a:

18 

19* **Preservar contexto** mantendo exploração e implementação fora de sua conversa principal

20* **Aplicar restrições** limitando quais ferramentas um subagente pode usar

21* **Reutilizar configurações** entre projetos com subagentes no nível do usuário

22* **Especializar comportamento** com prompts de sistema focados para domínios específicos

23* **Controlar custos** roteando tarefas para modelos mais rápidos e baratos como Haiku

24 

25Claude usa a descrição de cada subagente para decidir quando delegar tarefas. Quando você cria um subagente, escreva uma descrição clara para que Claude saiba quando usá-lo.

26 

27Claude Code inclui vários subagentes integrados como **Explore**, **Plan** e **general-purpose**. Você também pode criar subagentes personalizados para lidar com tarefas específicas. Esta página cobre:

28 

29* [Subagentes integrados](#built-in-subagents)

30* [Como criar o seu próprio](#quickstart-create-your-first-subagent)

31* [Opções de configuração completas](#configure-subagents)

32* [Padrões para trabalhar com subagentes](#work-with-subagents)

33* [Subagentes bifurcados](#fork-the-current-conversation)

34* [Subagentes de exemplo](#example-subagents)

35 

36## Subagentes integrados

37 

38Claude Code inclui subagentes integrados que Claude usa automaticamente quando apropriado. Cada um herda as permissões da conversa pai com restrições de ferramentas adicionais.

39 

40<Tabs>

41 <Tab title="Explore">

42 Um agente rápido e somente leitura otimizado para pesquisar e analisar bases de código.

43 

44 * **Model**: Haiku (rápido, baixa latência)

45 * **Tools**: Ferramentas somente leitura (acesso negado a ferramentas Write e Edit)

46 * **Purpose**: Descoberta de arquivos, pesquisa de código, exploração de base de código

47 

48 Claude delega para Explore quando precisa pesquisar ou entender uma base de código sem fazer alterações. Isso mantém os resultados da exploração fora do contexto da sua conversa principal.

49 

50 Ao invocar Explore, Claude especifica um nível de minuciosidade: **quick** para buscas direcionadas, **medium** para exploração equilibrada, ou **very thorough** para análise abrangente.

51 </Tab>

52 

53 <Tab title="Plan">

54 Um agente de pesquisa usado durante [plan mode](/pt/common-workflows#use-plan-mode-for-safe-code-analysis) para reunir contexto antes de apresentar um plano.

55 

56 * **Model**: Herda da conversa principal

57 * **Tools**: Ferramentas somente leitura (acesso negado a ferramentas Write e Edit)

58 * **Purpose**: Pesquisa de base de código para planejamento

59 

60 Quando você está em plan mode e Claude precisa entender sua base de código, ele delega a pesquisa para o subagente Plan. Isso evita aninhamento infinito (subagentes não podem gerar outros subagentes) enquanto ainda reúne o contexto necessário.

61 </Tab>

62 

63 <Tab title="General-purpose">

64 Um agente capaz para tarefas complexas e multi-etapas que requerem exploração e ação.

65 

66 * **Model**: Herda da conversa principal

67 * **Tools**: Todas as ferramentas

68 * **Purpose**: Pesquisa complexa, operações multi-etapas, modificações de código

69 

70 Claude delega para general-purpose quando a tarefa requer exploração e modificação, raciocínio complexo para interpretar resultados, ou múltiplas etapas dependentes.

71 </Tab>

72 

73 <Tab title="Other">

74 Claude Code inclui agentes auxiliares adicionais para tarefas específicas. Estes são normalmente invocados automaticamente, então você não precisa usá-los diretamente.

75 

76 | Agent | Model | When Claude uses it |

77 | :---------------- | :----- | :-------------------------------------------------------------------- |

78 | statusline-setup | Sonnet | Quando você executa `/statusline` para configurar sua linha de status |

79 | Claude Code Guide | Haiku | Quando você faz perguntas sobre recursos do Claude Code |

80 </Tab>

81</Tabs>

82 

83Além desses subagentes integrados, você pode criar os seus próprios com prompts personalizados, restrições de ferramentas, modos de permissão, hooks e skills. As seções a seguir mostram como começar e personalizar subagentes.

84 

85## Quickstart: criar seu primeiro subagente

86 

87Subagentes são definidos em arquivos Markdown com frontmatter YAML. Você pode [criá-los manualmente](#write-subagent-files) ou usar o comando `/agents`.

88 

89Este passo a passo o guia através da criação de um subagente no nível do usuário com o comando `/agents`. O subagente revisa código e sugere melhorias para a base de código.

90 

91<Steps>

92 <Step title="Abrir a interface de subagentes">

93 No Claude Code, execute:

94 

95 ```text theme={null}

96 /agents

97 ```

98 </Step>

99 

100 <Step title="Escolher um local">

101 Mude para a aba **Library**, selecione **Create new agent**, depois escolha **Personal**. Isso salva o subagente em `~/.claude/agents/` para que esteja disponível em todos os seus projetos.

102 </Step>

103 

104 <Step title="Gerar com Claude">

105 Selecione **Generate with Claude**. Quando solicitado, descreva o subagente:

106 

107 ```text theme={null}

108 A code improvement agent that scans files and suggests improvements

109 for readability, performance, and best practices. It should explain

110 each issue, show the current code, and provide an improved version.

111 ```

112 

113 Claude gera o identificador, descrição e prompt de sistema para você.

114 </Step>

115 

116 <Step title="Selecionar ferramentas">

117 Para um revisor somente leitura, desselecione tudo exceto **Read-only tools**. Se você manter todas as ferramentas selecionadas, o subagente herda todas as ferramentas disponíveis para a conversa principal.

118 </Step>

119 

120 <Step title="Selecionar modelo">

121 Escolha qual modelo o subagente usa. Para este agente de exemplo, selecione **Sonnet**, que equilibra capacidade e velocidade para analisar padrões de código.

122 </Step>

123 

124 <Step title="Escolher uma cor">

125 Escolha uma cor de fundo para o subagente. Isso ajuda você a identificar qual subagente está sendo executado na interface do usuário.

126 </Step>

127 

128 <Step title="Configurar memória">

129 Selecione **User scope** para dar ao subagente um [diretório de memória persistente](#enable-persistent-memory) em `~/.claude/agent-memory/`. O subagente usa isso para acumular insights entre conversas, como padrões de base de código e problemas recorrentes. Selecione **None** se você não quiser que o subagente persista aprendizados.

130 </Step>

131 

132 <Step title="Salvar e testar">

133 Revise o resumo de configuração. Pressione `s` ou `Enter` para salvar, ou pressione `e` para salvar e editar o arquivo em seu editor. O subagente está disponível imediatamente. Teste-o:

134 

135 ```text theme={null}

136 Use the code-improver agent to suggest improvements in this project

137 ```

138 

139 Claude delega para seu novo subagente, que verifica a base de código e retorna sugestões de melhoria.

140 </Step>

141</Steps>

142 

143Agora você tem um subagente que pode usar em qualquer projeto em sua máquina para analisar bases de código e sugerir melhorias.

144 

145Você também pode criar subagentes manualmente como arquivos Markdown, defini-los via flags CLI, ou distribuí-los através de plugins. As seções a seguir cobrem todas as opções de configuração.

146 

147## Configurar subagentes

148 

149### Usar o comando /agents

150 

151O comando `/agents` abre uma interface com abas para gerenciar subagentes. A aba **Running** mostra subagentes ao vivo e permite que você os abra ou pare. A aba **Library** permite que você:

152 

153* Visualize todos os subagentes disponíveis (integrados, usuário, projeto e plugin)

154* Crie novos subagentes com configuração guiada ou geração por Claude

155* Edite configuração de subagente existente e acesso a ferramentas

156* Delete subagentes personalizados

157* Veja quais subagentes estão ativos quando duplicatas existem

158 

159Esta é a forma recomendada de criar e gerenciar subagentes. Para criação manual ou automação, você também pode adicionar arquivos de subagente diretamente.

160 

161Para listar todos os subagentes configurados da linha de comando sem iniciar uma sessão interativa, execute `claude agents`. Isso mostra agentes agrupados por fonte e indica quais são substituídos por definições de prioridade mais alta.

162 

163### Escolher o escopo do subagente

164 

165Subagentes são arquivos Markdown com frontmatter YAML. Armazene-os em locais diferentes dependendo do escopo. Quando múltiplos subagentes compartilham o mesmo nome, o local de prioridade mais alta vence.

166 

167| Location | Scope | Priority | How to create |

168| :--------------------------- | :---------------------- | :---------- | :-------------------------------------------- |

169| Managed settings | Organization-wide | 1 (highest) | Deployed via [managed settings](/pt/settings) |

170| `--agents` CLI flag | Current session | 2 | Pass JSON when launching Claude Code |

171| `.claude/agents/` | Current project | 3 | Interactive or manual |

172| `~/.claude/agents/` | All your projects | 4 | Interactive or manual |

173| Plugin's `agents/` directory | Where plugin is enabled | 5 (lowest) | Installed with [plugins](/pt/plugins) |

174 

175**Subagentes de projeto** (`.claude/agents/`) são ideais para subagentes específicos de uma base de código. Verifique-os no controle de versão para que sua equipe possa usá-los e melhorá-los colaborativamente.

176 

177Subagentes de projeto são descobertos caminhando para cima a partir do diretório de trabalho atual. Diretórios adicionados com `--add-dir` [concedem apenas acesso a arquivos](/pt/permissions#additional-directories-grant-file-access-not-configuration) e não são verificados para subagentes. Para compartilhar subagentes entre projetos, use `~/.claude/agents/` ou um [plugin](/pt/plugins).

178 

179**Subagentes de usuário** (`~/.claude/agents/`) são subagentes pessoais disponíveis em todos os seus projetos.

180 

181**Subagentes definidos por CLI** são passados como JSON ao iniciar Claude Code. Eles existem apenas para essa sessão e não são salvos em disco, tornando-os úteis para testes rápidos ou scripts de automação. Você pode definir múltiplos subagentes em uma única chamada `--agents`:

182 

183```bash theme={null}

184claude --agents '{

185 "code-reviewer": {

186 "description": "Expert code reviewer. Use proactively after code changes.",

187 "prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",

188 "tools": ["Read", "Grep", "Glob", "Bash"],

189 "model": "sonnet"

190 },

191 "debugger": {

192 "description": "Debugging specialist for errors and test failures.",

193 "prompt": "You are an expert debugger. Analyze errors, identify root causes, and provide fixes."

194 }

195}'

196```

197 

198O flag `--agents` aceita JSON com os mesmos campos de [frontmatter](#supported-frontmatter-fields) que subagentes baseados em arquivo: `description`, `prompt`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `isolation` e `color`. Use `prompt` para o prompt de sistema, equivalente ao corpo markdown em subagentes baseados em arquivo.

199 

200**Subagentes gerenciados** são implantados por administradores da organização. Coloque arquivos markdown em `.claude/agents/` dentro do [diretório de configurações gerenciadas](/pt/settings#settings-files), usando o mesmo formato de frontmatter que subagentes de projeto e usuário. Definições gerenciadas têm precedência sobre subagentes de projeto e usuário com o mesmo nome.

201 

202**Subagentes de plugin** vêm de [plugins](/pt/plugins) que você instalou. Eles aparecem em `/agents` junto com seus subagentes personalizados. Veja a [referência de componentes de plugin](/pt/plugins-reference#agents) para detalhes sobre como criar subagentes de plugin.

203 

204<Note>

205 Por razões de segurança, subagentes de plugin não suportam os campos de frontmatter `hooks`, `mcpServers` ou `permissionMode`. Estes campos são ignorados ao carregar agentes de um plugin. Se você precisar deles, copie o arquivo do agente para `.claude/agents/` ou `~/.claude/agents/`. Você também pode adicionar regras a [`permissions.allow`](/pt/settings#permission-settings) em `settings.json` ou `settings.local.json`, mas estas regras se aplicam a toda a sessão, não apenas ao subagente do plugin.

206</Note>

207 

208Definições de subagente de qualquer um desses escopos também estão disponíveis para [equipes de agentes](/pt/agent-teams#use-subagent-definitions-for-teammates): ao gerar um colega de trabalho, você pode referenciar um tipo de subagente e o colega de trabalho usa suas `tools` e `model`, com o corpo da definição anexado ao prompt de sistema do colega de trabalho como instruções adicionais. Veja [equipes de agentes](/pt/agent-teams#use-subagent-definitions-for-teammates) para quais campos de frontmatter se aplicam nesse caminho.

209 

210### Escrever arquivos de subagente

211 

212Arquivos de subagente usam frontmatter YAML para configuração, seguido pelo prompt de sistema em Markdown:

213 

214<Note>

215 Subagentes são carregados no início da sessão. Se você criar um subagente adicionando manualmente um arquivo, reinicie sua sessão ou use `/agents` para carregá-lo imediatamente.

216</Note>

217 

218```markdown theme={null}

219---

220name: code-reviewer

221description: Reviews code for quality and best practices

222tools: Read, Glob, Grep

223model: sonnet

224---

225 

226You are a code reviewer. When invoked, analyze the code and provide

227specific, actionable feedback on quality, security, and best practices.

228```

229 

230O frontmatter define os metadados e configuração do subagente. O corpo se torna o prompt de sistema que guia o comportamento do subagente. Subagentes recebem apenas este prompt de sistema (mais detalhes básicos de ambiente como diretório de trabalho), não o prompt de sistema completo do Claude Code.

231 

232Um subagente começa no diretório de trabalho atual da conversa principal. Dentro de um subagente, comandos `cd` não persistem entre chamadas de ferramentas Bash ou PowerShell e não afetam o diretório de trabalho da conversa principal. Para dar ao subagente uma cópia isolada do repositório em vez disso, defina [`isolation: worktree`](#supported-frontmatter-fields).

233 

234#### Campos de frontmatter suportados

235 

236Os seguintes campos podem ser usados no frontmatter YAML. Apenas `name` e `description` são obrigatórios.

237 

238| Field | Required | Description |

239| :---------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

240| `name` | Yes | Identificador único usando letras minúsculas e hífens |

241| `description` | Yes | Quando Claude deve delegar para este subagente |

242| `tools` | No | [Ferramentas](#available-tools) que o subagente pode usar. Herda todas as ferramentas se omitido |

243| `disallowedTools` | No | Ferramentas a negar, removidas da lista herdada ou especificada |

244| `model` | No | [Modelo](#choose-a-model) a usar: `sonnet`, `opus`, `haiku`, um ID de modelo completo (por exemplo, `claude-opus-4-7`), ou `inherit`. Padrão: `inherit` |

245| `permissionMode` | No | [Modo de permissão](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, ou `plan`. Ignorado para [subagentes de plugin](#choose-the-subagent-scope) |

246| `maxTurns` | No | Número máximo de turnos de agente antes do subagente parar |

247| `skills` | No | [Skills](/pt/skills) a carregar no contexto do subagente na inicialização. O conteúdo completo da skill é injetado, não apenas disponibilizado para invocação. Subagentes não herdam skills da conversa pai |

248| `mcpServers` | No | [MCP servers](/pt/mcp) disponíveis para este subagente. Cada entrada é um nome de servidor referenciando um servidor já configurado (por exemplo, `"slack"`) ou uma definição inline com o nome do servidor como chave e uma [configuração completa de MCP server](/pt/mcp#installing-mcp-servers) como valor. Ignorado para [subagentes de plugin](#choose-the-subagent-scope) |

249| `hooks` | No | [Lifecycle hooks](#define-hooks-for-subagents) com escopo para este subagente. Ignorado para [subagentes de plugin](#choose-the-subagent-scope) |

250| `memory` | No | [Escopo de memória persistente](#enable-persistent-memory): `user`, `project`, ou `local`. Habilita aprendizado entre sessões |

251| `background` | No | Defina como `true` para sempre executar este subagente como uma [tarefa em background](#run-subagents-in-foreground-or-background). Padrão: `false` |

252| `effort` | No | Nível de esforço quando este subagente está ativo. Sobrescreve o nível de esforço da sessão. Padrão: herda da sessão. Opções: `low`, `medium`, `high`, `xhigh`, `max`; os níveis disponíveis dependem do modelo |

253| `isolation` | No | Defina como `worktree` para executar o subagente em um [git worktree](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) temporário, dando-lhe uma cópia isolada do repositório. O worktree é automaticamente limpo se o subagente não fizer alterações |

254| `color` | No | Cor de exibição para o subagente na lista de tarefas e transcrição. Aceita `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, ou `cyan` |

255| `initialPrompt` | No | Auto-enviado como o primeiro turno do usuário quando este agente é executado como o agente da sessão principal (via `--agent` ou a configuração `agent`). [Comandos](/pt/commands) e [skills](/pt/skills) são processados. Preposto a qualquer prompt fornecido pelo usuário |

256 

257### Escolher um modelo

258 

259O campo `model` controla qual [modelo de IA](/pt/model-config) o subagente usa:

260 

261* **Alias de modelo**: Use um dos aliases disponíveis: `sonnet`, `opus`, ou `haiku`

262* **ID de modelo completo**: Use um ID de modelo completo como `claude-opus-4-7` ou `claude-sonnet-4-6`. Aceita os mesmos valores que o flag `--model`

263* **inherit**: Use o mesmo modelo que a conversa principal

264* **Omitido**: Se não especificado, padrão é `inherit` (usa o mesmo modelo que a conversa principal)

265 

266Quando Claude invoca um subagente, ele também pode passar um parâmetro `model` para essa invocação específica. Claude Code resolve o modelo do subagente nesta ordem:

267 

2681. A variável de ambiente [`CLAUDE_CODE_SUBAGENT_MODEL`](/pt/model-config#environment-variables), se definida

2692. O parâmetro `model` por invocação

2703. O frontmatter `model` da definição do subagente

2714. O modelo da conversa principal

272 

273### Controlar capacidades do subagente

274 

275Você pode controlar o que subagentes podem fazer através de acesso a ferramentas, modos de permissão e regras condicionais.

276 

277#### Ferramentas disponíveis

278 

279Subagentes podem usar qualquer uma das [ferramentas internas](/pt/tools-reference) do Claude Code. Por padrão, subagentes herdam todas as ferramentas da conversa principal, incluindo ferramentas MCP.

280 

281Para restringir ferramentas, use o campo `tools` (lista de permissões) ou campo `disallowedTools` (lista de negação). Este exemplo usa `tools` para permitir exclusivamente Read, Grep, Glob e Bash. O subagente não pode editar arquivos, escrever arquivos ou usar qualquer ferramenta MCP:

282 

283```yaml theme={null}

284---

285name: safe-researcher

286description: Research agent with restricted capabilities

287tools: Read, Grep, Glob, Bash

288---

289```

290 

291Este exemplo usa `disallowedTools` para herdar todas as ferramentas da conversa principal exceto Write e Edit. O subagente mantém Bash, ferramentas MCP e tudo mais:

292 

293```yaml theme={null}

294---

295name: no-writes

296description: Inherits every tool except file writes

297disallowedTools: Write, Edit

298---

299```

300 

301Se ambos forem definidos, `disallowedTools` é aplicado primeiro, depois `tools` é resolvido contra o pool restante. Uma ferramenta listada em ambos é removida.

302 

303#### Restringir quais subagentes podem ser gerados

304 

305Quando um agente é executado como thread principal com `claude --agent`, ele pode gerar subagentes usando a ferramenta Agent. Para restringir quais tipos de subagente ele pode gerar, use a sintaxe `Agent(agent_type)` no campo `tools`.

306 

307<Note>Na versão 2.1.63, a ferramenta Task foi renomeada para Agent. Referências existentes de `Task(...)` em configurações e definições de agente ainda funcionam como aliases.</Note>

308 

309```yaml theme={null}

310---

311name: coordinator

312description: Coordinates work across specialized agents

313tools: Agent(worker, researcher), Read, Bash

314---

315```

316 

317Esta é uma lista de permissões: apenas os subagentes `worker` e `researcher` podem ser gerados. Se o agente tentar gerar qualquer outro tipo, a solicitação falha e o agente vê apenas os tipos permitidos em seu prompt. Para bloquear agentes específicos enquanto permite todos os outros, use [`permissions.deny`](#disable-specific-subagents) em vez disso.

318 

319Para permitir gerar qualquer subagente sem restrições, use `Agent` sem parênteses:

320 

321```yaml theme={null}

322tools: Agent, Read, Bash

323```

324 

325Se `Agent` for omitido da lista `tools` inteiramente, o agente não pode gerar nenhum subagente. Esta restrição se aplica apenas a agentes executados como thread principal com `claude --agent`. Subagentes não podem gerar outros subagentes, então `Agent(agent_type)` não tem efeito em definições de subagente.

326 

327#### Escopo de MCP servers para um subagente

328 

329Use o campo `mcpServers` para dar a um subagente acesso a [MCP](/pt/mcp) servers que não estão disponíveis na conversa principal. Servidores inline definidos aqui são conectados quando o subagente inicia e desconectados quando termina. Referências de string compartilham a conexão da sessão pai.

330 

331<Note>

332 O campo `mcpServers` se aplica em ambos os contextos onde um arquivo de agente pode ser executado:

333 

334 * Como um subagente, gerado através da ferramenta Agent ou uma @-menção

335 * Como a sessão principal, iniciada com [`--agent`](#invoke-subagents-explicitly) ou a configuração `agent`

336 

337 Quando o agente é a sessão principal, definições de servidor inline se conectam na inicialização junto com servidores de [`.mcp.json`](/pt/mcp) e arquivos de configurações.

338</Note>

339 

340Cada entrada na lista é uma definição de servidor inline ou uma string referenciando um MCP server já configurado em sua sessão:

341 

342```yaml theme={null}

343---

344name: browser-tester

345description: Tests features in a real browser using Playwright

346mcpServers:

347 # Inline definition: scoped to this subagent only

348 - playwright:

349 type: stdio

350 command: npx

351 args: ["-y", "@playwright/mcp@latest"]

352 # Reference by name: reuses an already-configured server

353 - github

354---

355 

356Use the Playwright tools to navigate, screenshot, and interact with pages.

357```

358 

359Definições inline usam o mesmo schema que entradas de servidor `.mcp.json` (`stdio`, `http`, `sse`, `ws`), com chave pelo nome do servidor.

360 

361Para manter um MCP server fora da conversa principal inteiramente e evitar que suas descrições de ferramentas consumam contexto lá, defina-o inline aqui em vez de em `.mcp.json`. O subagente obtém as ferramentas; a conversa pai não.

362 

363#### Modos de permissão

364 

365O campo `permissionMode` controla como o subagente lida com prompts de permissão. Subagentes herdam o contexto de permissão da conversa principal e podem sobrescrever o modo, exceto quando o modo pai tem precedência conforme descrito abaixo.

366 

367| Mode | Behavior |

368| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------- |

369| `default` | Verificação de permissão padrão com prompts |

370| `acceptEdits` | Auto-aceitar edições de arquivo e comandos comuns do sistema de arquivos para caminhos no diretório de trabalho ou `additionalDirectories` |

371| `auto` | [Auto mode](/pt/permission-modes#eliminate-prompts-with-auto-mode): um classificador de IA avalia cada chamada de ferramenta |

372| `dontAsk` | Auto-negar prompts de permissão (ferramentas explicitamente permitidas ainda funcionam) |

373| `bypassPermissions` | Pular prompts de permissão |

374| `plan` | Plan mode (exploração somente leitura) |

375 

376<Warning>

377 Use `bypassPermissions` com cuidado. Ele pula prompts de permissão, permitindo que o subagente execute operações sem aprovação, incluindo escritas em `.git`, `.claude`, `.vscode`, `.idea` e `.husky`. Remoções de diretório raiz e home como `rm -rf /` ainda solicitam como um disjuntor de circuito. Veja [modos de permissão](/pt/permission-modes#skip-all-checks-with-bypasspermissions-mode) para detalhes.

378</Warning>

379 

380Se o pai usar `bypassPermissions` ou `acceptEdits`, isso tem precedência e não pode ser sobrescrito. Se o pai usar [auto mode](/pt/permission-modes#eliminate-prompts-with-auto-mode), o subagente herda auto mode 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.

381 

382#### Pré-carregar skills em subagentes

383 

384Use o campo `skills` para injetar conteúdo de skill no contexto de um subagente na inicialização. Isso dá ao subagente conhecimento de domínio sem exigir que ele descubra e carregue skills durante a execução.

385 

386```yaml theme={null}

387---

388name: api-developer

389description: Implement API endpoints following team conventions

390skills:

391 - api-conventions

392 - error-handling-patterns

393---

394 

395Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

396```

397 

398O conteúdo completo de cada skill é injetado no contexto do subagente, não apenas disponibilizado para invocação. Subagentes não herdam skills da conversa pai; você deve listá-las explicitamente.

399 

400Você não pode pré-carregar skills que definem [`disable-model-invocation: true`](/pt/skills#control-who-invokes-a-skill), já que pré-carregar extrai do mesmo conjunto de skills que Claude pode invocar. Se uma skill listada estiver faltando ou desabilitada, Claude Code a ignora e registra um aviso no log de debug.

401 

402<Note>

403 Isto é o inverso de [executar uma skill em um subagente](/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.

404</Note>

405 

406#### Habilitar memória persistente

407 

408O campo `memory` dá ao subagente um diretório persistente que sobrevive entre conversas. O subagente usa este diretório para construir conhecimento ao longo do tempo, como padrões de base de código, insights de debugging e decisões arquiteturais.

409 

410```yaml theme={null}

411---

412name: code-reviewer

413description: Reviews code for quality and best practices

414memory: user

415---

416 

417You are a code reviewer. As you review code, update your agent memory with

418patterns, conventions, and recurring issues you discover.

419```

420 

421Escolha um escopo baseado em quão amplamente a memória deve se aplicar:

422 

423| Scope | Location | Use when |

424| :-------- | :-------------------------------------------- | :---------------------------------------------------------------------------------------------------- |

425| `user` | `~/.claude/agent-memory/<name-of-agent>/` | o subagente deve lembrar aprendizados entre todos os projetos |

426| `project` | `.claude/agent-memory/<name-of-agent>/` | o conhecimento do subagente é específico do projeto e compartilhável via controle de versão |

427| `local` | `.claude/agent-memory-local/<name-of-agent>/` | o conhecimento do subagente é específico do projeto mas não deve ser verificado no controle de versão |

428 

429Quando memória está habilitada:

430 

431* O prompt de sistema do subagente inclui instruções para ler e escrever no diretório de memória.

432* O prompt de sistema do subagente também inclui as primeiras 200 linhas ou 25KB de `MEMORY.md` no diretório de memória, o que for menor, com instruções para curar `MEMORY.md` se exceder esse limite.

433* Ferramentas Read, Write e Edit são automaticamente habilitadas para que o subagente possa gerenciar seus arquivos de memória.

434 

435##### Dicas de memória persistente

436 

437* `project` é o escopo padrão recomendado. Ele torna o conhecimento do subagente compartilhável via controle de versão. Use `user` quando o conhecimento do subagente é amplamente aplicável entre projetos, ou `local` quando o conhecimento não deve ser verificado no controle de versão.

438* Peça ao subagente para consultar sua memória antes de começar o trabalho: "Review this PR, and check your memory for patterns you've seen before."

439* Peça ao subagente para atualizar sua memória após completar uma tarefa: "Now that you're done, save what you learned to your memory." Ao longo do tempo, isso constrói uma base de conhecimento que torna o subagente mais eficaz.

440* Inclua instruções de memória diretamente no arquivo markdown do subagente para que ele mantenha proativamente sua própria base de conhecimento:

441 

442 ```markdown theme={null}

443 Update your agent memory as you discover codepaths, patterns, library

444 locations, and key architectural decisions. This builds up institutional

445 knowledge across conversations. Write concise notes about what you found

446 and where.

447 ```

448 

449#### Regras condicionais com hooks

450 

451Para controle mais dinâmico sobre uso de ferramentas, use hooks `PreToolUse` para validar operações antes de serem executadas. Isso é útil quando você precisa permitir algumas operações de uma ferramenta enquanto bloqueia outras.

452 

453Este exemplo cria um subagente que apenas permite consultas de banco de dados somente leitura. O hook `PreToolUse` executa o script especificado em `command` antes de cada comando Bash ser executado:

454 

455```yaml theme={null}

456---

457name: db-reader

458description: Execute read-only database queries

459tools: Bash

460hooks:

461 PreToolUse:

462 - matcher: "Bash"

463 hooks:

464 - type: command

465 command: "./scripts/validate-readonly-query.sh"

466---

467```

468 

469Claude Code [passa entrada de hook como JSON](/pt/hooks#pretooluse-input) via stdin para comandos de hook. O script de validação lê este JSON, extrai o comando Bash e [sai com código 2](/pt/hooks#exit-code-2-behavior-per-event) para bloquear operações de escrita:

470 

471```bash theme={null}

472#!/bin/bash

473# ./scripts/validate-readonly-query.sh

474 

475INPUT=$(cat)

476COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

477 

478# Block SQL write operations (case-insensitive)

479if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE)\b' > /dev/null; then

480 echo "Blocked: Only SELECT queries are allowed" >&2

481 exit 2

482fi

483 

484exit 0

485```

486 

487Veja [Hook input](/pt/hooks#pretooluse-input) para o schema de entrada completo e [exit codes](/pt/hooks#exit-code-output) para como códigos de saída afetam o comportamento.

488 

489#### Desabilitar subagentes específicos

490 

491Você pode impedir que Claude use subagentes específicos adicionando-os ao array `deny` em suas [configurações](/pt/settings#permission-settings). Use o formato `Agent(subagent-name)` onde `subagent-name` corresponde ao campo name do subagente.

492 

493```json theme={null}

494{

495 "permissions": {

496 "deny": ["Agent(Explore)", "Agent(my-custom-agent)"]

497 }

498}

499```

500 

501Isso funciona para subagentes integrados e personalizados. Você também pode usar o flag CLI `--disallowedTools`:

502 

503```bash theme={null}

504claude --disallowedTools "Agent(Explore)"

505```

506 

507Veja [documentação de Permissões](/pt/permissions#tool-specific-permission-rules) para mais detalhes sobre regras de permissão.

508 

509### Definir hooks para subagentes

510 

511Subagentes podem definir [hooks](/pt/hooks) que são executados durante o ciclo de vida do subagente. Existem duas formas de configurar hooks:

512 

5131. **No frontmatter do subagente**: Defina hooks que são executados apenas enquanto esse subagente específico está ativo

5142. **Em `settings.json`**: Defina hooks que são executados na sessão principal quando subagentes iniciam ou param

515 

516#### Hooks no frontmatter do subagente

517 

518Defina hooks diretamente no arquivo markdown do subagente. Estes hooks são executados apenas enquanto esse subagente específico está ativo e são limpos quando termina.

519 

520<Note>

521 Hooks de frontmatter disparam quando o agente é gerado como um subagente através da ferramenta Agent ou uma @-menção, e quando o agente é executado como a sessão principal via [`--agent`](#invoke-subagents-explicitly) ou a configuração `agent`. No caso de sessão principal, eles são executados junto com qualquer hook definido em [`settings.json`](/pt/hooks).

522</Note>

523 

524Todos os [eventos de hook](/pt/hooks#hook-events) são suportados. Os eventos mais comuns para subagentes são:

525 

526| Event | Matcher input | When it fires |

527| :------------ | :----------------- | :------------------------------------------------------------------------------- |

528| `PreToolUse` | Nome da ferramenta | Antes do subagente usar uma ferramenta |

529| `PostToolUse` | Nome da ferramenta | Depois do subagente usar uma ferramenta |

530| `Stop` | (nenhum) | Quando o subagente termina (convertido para `SubagentStop` em tempo de execução) |

531 

532Este exemplo valida comandos Bash com o hook `PreToolUse` e executa um linter após edições de arquivo com `PostToolUse`:

533 

534```yaml theme={null}

535---

536name: code-reviewer

537description: Review code changes with automatic linting

538hooks:

539 PreToolUse:

540 - matcher: "Bash"

541 hooks:

542 - type: command

543 command: "./scripts/validate-command.sh $TOOL_INPUT"

544 PostToolUse:

545 - matcher: "Edit|Write"

546 hooks:

547 - type: command

548 command: "./scripts/run-linter.sh"

549---

550```

551 

552Quando o agente é invocado como um subagente, hooks `Stop` no frontmatter são automaticamente convertidos para eventos `SubagentStop`.

553 

554#### Hooks no nível do projeto para eventos de subagente

555 

556Configure hooks em `settings.json` que respondem a eventos de ciclo de vida de subagente na sessão principal.

557 

558| Event | Matcher input | When it fires |

559| :-------------- | :--------------------- | :------------------------------------ |

560| `SubagentStart` | Nome do tipo de agente | Quando um subagente começa a execução |

561| `SubagentStop` | Nome do tipo de agente | Quando um subagente completa |

562 

563Ambos os eventos suportam matchers para direcionar tipos de agente específicos por nome. Este exemplo executa um script de configuração apenas quando o subagente `db-agent` inicia, e um script de limpeza quando qualquer subagente para:

564 

565```json theme={null}

566{

567 "hooks": {

568 "SubagentStart": [

569 {

570 "matcher": "db-agent",

571 "hooks": [

572 { "type": "command", "command": "./scripts/setup-db-connection.sh" }

573 ]

574 }

575 ],

576 "SubagentStop": [

577 {

578 "hooks": [

579 { "type": "command", "command": "./scripts/cleanup-db-connection.sh" }

580 ]

581 }

582 ]

583 }

584}

585```

586 

587Veja [Hooks](/pt/hooks) para o formato de configuração de hook completo.

588 

589## Trabalhar com subagentes

590 

591### Entender delegação automática

592 

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

594 

595### Invocar subagentes explicitamente

596 

597Quando 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:

598 

599* **Linguagem natural**: nomeie o subagente em seu prompt; Claude decide se deve delegar

600* **@-mention**: garante que o subagente seja executado para uma tarefa

601* **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`

602 

603Para linguagem natural, não há sintaxe especial. Nomeie o subagente e Claude normalmente delega:

604 

605```text theme={null}

606Use the test-runner subagent to fix failing tests

607Have the code-reviewer subagent look at my recent changes

608```

609 

610**@-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:

611 

612```text theme={null}

613@"code-reviewer (agent)" look at the auth changes

614```

615 

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

617 

618Subagentes fornecidos por um [plugin](/pt/plugins) habilitado aparecem no typeahead como `<plugin-name>:<agent-name>`. Subagentes em background nomeados atualmente em execução na sessão também aparecem no typeahead, mostrando seu status ao lado do nome. Você também pode digitar a menção manualmente sem usar o picker: `@agent-<name>` para subagentes locais, ou `@agent-<plugin-name>:<agent-name>` para subagentes de plugin.

619 

620**Execute toda a sessão como um subagente.** Passe [`--agent <name>`](/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:

621 

622```bash theme={null}

623claude --agent code-reviewer

624```

625 

626O prompt de sistema do subagente substitui completamente o prompt de sistema padrão do Claude Code, da mesma forma que [`--system-prompt`](/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.

627 

628Isso funciona com subagentes integrados e personalizados, e a escolha persiste quando você retoma a sessão.

629 

630Para um subagente fornecido por plugin, passe o nome com escopo: `claude --agent <plugin-name>:<agent-name>`.

631 

632Para torná-lo o padrão para cada sessão em um projeto, defina `agent` em `.claude/settings.json`:

633 

634```json theme={null}

635{

636 "agent": "code-reviewer"

637}

638```

639 

640O flag CLI sobrescreve a configuração se ambos estiverem presentes.

641 

642### Executar subagentes em foreground ou background

643 

644Subagentes podem ser executados em foreground (bloqueante) ou background (concorrente):

645 

646* **Subagentes em foreground** bloqueiam a conversa principal até completar. Prompts de permissão e perguntas de esclarecimento (como [`AskUserQuestion`](/pt/tools-reference)) são passados para você.

647* **Subagentes em background** são executados concorrentemente enquanto você continua trabalhando. Antes de iniciar, Claude Code solicita quaisquer permissões de ferramentas que o subagente precisará, garantindo que ele tenha as aprovações necessárias antecipadamente. Uma vez em execução, o subagente herda essas permissões e auto-nega qualquer coisa não pré-aprovada. Se um subagente em background precisa fazer perguntas de esclarecimento, essa chamada de ferramenta falha mas o subagente continua.

648 

649Se um subagente em background falha devido a permissões ausentes, você pode iniciar um novo subagente em foreground com a mesma tarefa para tentar novamente com prompts interativos.

650 

651Claude decide se deve executar subagentes em foreground ou background baseado na tarefa. Você também pode:

652 

653* Pedir a Claude para "run this in the background"

654* Pressionar **Ctrl+B** para colocar uma tarefa em background

655 

656Para desabilitar toda a funcionalidade de tarefa em background, defina a variável de ambiente `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` para `1`. Veja [Variáveis de ambiente](/pt/env-vars).

657 

658Quando [fork mode](#fork-the-current-conversation) está habilitado, cada spawn de subagente é executado em background independentemente do campo `background`. Forks ainda exibem prompts de permissão em seu terminal conforme ocorrem em vez de pré-aprovar; subagentes nomeados seguem o fluxo de pré-aprovação acima.

659 

660### Padrões comuns

661 

662#### Isolar operações de alto volume

663 

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

665 

666```text theme={null}

667Use a subagent to run the test suite and report only the failing tests with their error messages

668```

669 

670#### Executar pesquisa em paralelo

671 

672Para investigações independentes, gere múltiplos subagentes para trabalhar simultaneamente:

673 

674```text theme={null}

675Research the authentication, database, and API modules in parallel using separate subagents

676```

677 

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

679 

680<Warning>

681 Quando subagentes completam, seus resultados retornam para sua conversa principal. Executar muitos subagentes que cada um retorna resultados detalhados pode consumir contexto significativo.

682</Warning>

683 

684Para tarefas que precisam de paralelismo sustentado ou excedem sua janela de contexto, [equipes de agentes](/pt/agent-teams) dão a cada worker seu próprio contexto independente.

685 

686#### Encadear subagentes

687 

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

689 

690```text theme={null}

691Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

692```

693 

694### Escolher entre subagentes e conversa principal

695 

696Use a **conversa principal** quando:

697 

698* A tarefa precisa de frequente ida e volta ou refinamento iterativo

699* Múltiplas fases compartilham contexto significativo (planejamento → implementação → testes)

700* Você está fazendo uma mudança rápida e direcionada

701* Latência importa. Subagentes começam do zero e podem precisar de tempo para reunir contexto

702 

703Use **subagentes** quando:

704 

705* A tarefa produz saída verbosa que você não precisa em seu contexto principal

706* Você quer aplicar restrições de ferramentas específicas ou permissões

707* O trabalho é auto-contido e pode retornar um resumo

708 

709Considere [Skills](/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.

710 

711Para uma pergunta rápida sobre algo já em sua conversa, use [`/btw`](/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.

712 

713<Note>

714 Subagentes não podem gerar outros subagentes. Se seu fluxo de trabalho requer delegação aninhada, use [Skills](/pt/skills) ou [encadeie subagentes](#chain-subagents) da conversa principal.

715</Note>

716 

717### Gerenciar contexto de subagente

718 

719#### Retomar subagentes

720 

721Cada invocação de subagente cria uma nova instância com contexto fresco. Para continuar o trabalho de um subagente existente em vez de começar do zero, peça a Claude para retomá-lo.

722 

723Subagentes retomados retêm seu histórico de conversa completo, incluindo todas as chamadas de ferramentas anteriores, resultados e raciocínio. O subagente continua exatamente de onde parou em vez de começar do zero.

724 

725Quando um subagente completa, Claude recebe seu ID de agente. Claude usa a ferramenta `SendMessage` com o ID do agente como campo `to` para retomá-lo. A ferramenta `SendMessage` está disponível apenas quando [equipes de agentes](/pt/agent-teams) estão habilitadas via `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

726 

727Para retomar um subagente, peça a Claude para continuar o trabalho anterior:

728 

729```text theme={null}

730Use the code-reviewer subagent to review the authentication module

731[Agent completes]

732 

733Continue that code review and now analyze the authorization logic

734[Claude resumes the subagent with full context from previous conversation]

735```

736 

737Se um subagente parado recebe um `SendMessage`, ele auto-retoma em background sem exigir uma nova invocação de `Agent`.

738 

739Você 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`.

740 

741Transcrições de subagente persistem independentemente da conversa principal:

742 

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

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

745* **Limpeza automática**: Transcrições são limpas baseado na configuração `cleanupPeriodDays` (padrão: 30 dias).

746 

747#### Auto-compactação

748 

749Subagentes suportam compactação automática usando a mesma lógica que a conversa principal. Por padrão, auto-compactação é acionada em aproximadamente 95% de capacidade. Para acionar compactação mais cedo, defina `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` para uma porcentagem mais baixa (por exemplo, `50`). Veja [variáveis de ambiente](/pt/env-vars) para detalhes.

750 

751Eventos de compactação são registrados em arquivos de transcrição de subagente:

752 

753```json theme={null}

754{

755 "type": "system",

756 "subtype": "compact_boundary",

757 "compactMetadata": {

758 "trigger": "auto",

759 "preTokens": 167189

760 }

761}

762```

763 

764O valor `preTokens` mostra quantos tokens foram usados antes da compactação ocorrer.

765 

766## Bifurcar a conversa atual

767 

768<Note>

769 Subagentes bifurcados são experimentais e requerem Claude Code v2.1.117 ou posterior. O comportamento e a configuração podem mudar em versões futuras. Habilite-os definindo a variável de ambiente [`CLAUDE_CODE_FORK_SUBAGENT`](/pt/env-vars) para `1`. A variável é respeitada em modo interativo e via SDK ou `claude -p`.

770</Note>

771 

772Uma bifurcação é um subagente que herda toda a conversa até agora em vez de começar do zero. Isso remove o isolamento de entrada que subagentes de outra forma fornecem: uma bifurcação vê o mesmo prompt de sistema, ferramentas, modelo e histórico de mensagens que a sessão principal, para que você possa entregar uma tarefa secundária sem re-explicar a situação. As chamadas de ferramentas da bifurcação ainda ficam fora de sua conversa e apenas seu resultado final volta, para que sua janela de contexto principal permaneça limpa. Use uma bifurcação quando um subagente nomeado precisaria de muito contexto para ser útil, ou quando você quer tentar várias abordagens em paralelo a partir do mesmo ponto de partida.

773 

774Habilitar fork mode muda Claude Code de três formas:

775 

776* Claude gera uma bifurcação sempre que usaria o subagente [general-purpose](#built-in-subagents). Subagentes nomeados como Explore ainda geram como antes.

777* Cada spawn de subagente é executado em [background](#run-subagents-in-foreground-or-background), seja uma bifurcação ou um subagente nomeado. Defina `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` para `1` para manter spawns síncronos.

778* O comando `/fork` gera uma bifurcação em vez de agir como um alias para [`/branch`](/pt/commands).

779 

780Você pode iniciar uma bifurcação você mesmo com `/fork` seguido de uma diretiva. Claude Code nomeia a bifurcação a partir das primeiras palavras da diretiva. O exemplo a seguir bifurca a conversa para rascunhar casos de teste enquanto você continua com a implementação na sessão principal:

781 

782```text theme={null}

783/fork draft unit tests for the parser changes so far

784```

785 

786A bifurcação aparece em um painel abaixo do seu prompt e é executada em background enquanto você continua trabalhando. Quando termina, seu resultado chega como uma mensagem em sua conversa principal. A próxima seção cobre os controles do painel para observar e orientar bifurcações enquanto são executadas.

787 

788### Observar e orientar bifurcações em execução

789 

790Bifurcações em execução aparecem em um painel abaixo da entrada de prompt, com uma linha para a sessão principal e uma para cada bifurcação. Use estas teclas para interagir com o painel:

791 

792| Key | Action |

793| :-------- | :--------------------------------------------------------------------------------- |

794| `↑` / `↓` | Mover entre linhas |

795| `Enter` | Abrir a transcrição da bifurcação selecionada e enviar mensagens de acompanhamento |

796| `x` | Descartar uma bifurcação terminada ou parar uma em execução |

797| `Esc` | Retornar foco para a entrada de prompt |

798 

799### Como bifurcações diferem de subagentes nomeados

800 

801Uma bifurcação herda tudo que a sessão principal tem no momento em que é gerada. Um subagente nomeado começa a partir de sua própria definição.

802 

803| | Bifurcação | Subagente nomeado |

804| :---------------------- | :----------------------------------- | :--------------------------------------------------------------------------------------------------- |

805| Context | Histórico de conversa completo | Contexto fresco com o prompt que você passa |

806| System prompt and tools | Mesmo que a sessão principal | Da [definição file](#write-subagent-files) do subagente |

807| Model | Mesmo que a sessão principal | Do campo `model` do subagente |

808| Permissions | Prompts aparecem em seu terminal | [Pré-aprovados](#run-subagents-in-foreground-or-background) antes do lançamento, depois auto-negados |

809| Prompt cache | Compartilhado com a sessão principal | Cache separado |

810 

811Porque o prompt de sistema de uma bifurcação e as definições de ferramentas são idênticas ao pai, sua primeira solicitação reutiliza o cache de prompt do pai. Isso torna bifurcação mais barata do que gerar um subagente fresco para tarefas que precisam do mesmo contexto.

812 

813Quando Claude gera uma bifurcação através da ferramenta Agent, ele pode passar `isolation: "worktree"` para que as edições de arquivo da bifurcação sejam escritas em um git worktree separado em vez de seu checkout.

814 

815### Limitações

816 

817Definir `CLAUDE_CODE_FORK_SUBAGENT=1` habilita fork mode em sessões interativas, [modo não-interativo](/pt/headless) e o Agent SDK. Uma bifurcação não pode gerar bifurcações adicionais.

818 

819## Subagentes de exemplo

820 

821Estes exemplos demonstram padrões eficazes para construir subagentes. Use-os como pontos de partida, ou gere uma versão personalizada com Claude.

822 

823<Tip>

824 **Melhores práticas:**

825 

826 * **Projete subagentes focados:** cada subagente deve se destacar em uma tarefa específica

827 * **Escreva descrições detalhadas:** Claude usa a descrição para decidir quando delegar

828 * **Limite acesso a ferramentas:** conceda apenas permissões necessárias para segurança e foco

829 * **Verifique no controle de versão:** compartilhe subagentes de projeto com sua equipe

830</Tip>

831 

832### Revisor de código

833 

834Um subagente somente leitura que revisa código sem modificá-lo. Este exemplo mostra como projetar um subagente focado com acesso limitado a ferramentas (sem Edit ou Write) e um prompt detalhado que especifica exatamente o que procurar e como formatar a saída.

835 

836```markdown theme={null}

837---

838name: code-reviewer

839description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.

840tools: Read, Grep, Glob, Bash

841model: inherit

842---

843 

844You are a senior code reviewer ensuring high standards of code quality and security.

845 

846When invoked:

8471. Run git diff to see recent changes

8482. Focus on modified files

8493. Begin review immediately

850 

851Review checklist:

852- Code is clear and readable

853- Functions and variables are well-named

854- No duplicated code

855- Proper error handling

856- No exposed secrets or API keys

857- Input validation implemented

858- Good test coverage

859- Performance considerations addressed

860 

861Provide feedback organized by priority:

862- Critical issues (must fix)

863- Warnings (should fix)

864- Suggestions (consider improving)

865 

866Include specific examples of how to fix issues.

867```

868 

869### Debugger

870 

871Um subagente que pode analisar e corrigir problemas. Diferentemente do revisor de código, este inclui Edit porque corrigir bugs requer modificar código. O prompt fornece um fluxo de trabalho claro de diagnóstico para verificação.

872 

873```markdown theme={null}

874---

875name: debugger

876description: Debugging specialist for errors, test failures, and unexpected behavior. Use proactively when encountering any issues.

877tools: Read, Edit, Bash, Grep, Glob

878---

879 

880You are an expert debugger specializing in root cause analysis.

881 

882When invoked:

8831. Capture error message and stack trace

8842. Identify reproduction steps

8853. Isolate the failure location

8864. Implement minimal fix

8875. Verify solution works

888 

889Debugging process:

890- Analyze error messages and logs

891- Check recent code changes

892- Form and test hypotheses

893- Add strategic debug logging

894- Inspect variable states

895 

896For each issue, provide:

897- Root cause explanation

898- Evidence supporting the diagnosis

899- Specific code fix

900- Testing approach

901- Prevention recommendations

902 

903Focus on fixing the underlying issue, not the symptoms.

904```

905 

906### Cientista de dados

907 

908Um subagente específico de domínio para trabalho de análise de dados. Este exemplo mostra como criar subagentes para fluxos de trabalho especializados fora de tarefas de codificação típicas. Ele explicitamente define `model: sonnet` para análise mais capaz.

909 

910```markdown theme={null}

911---

912name: data-scientist

913description: Data analysis expert for SQL queries, BigQuery operations, and data insights. Use proactively for data analysis tasks and queries.

914tools: Bash, Read, Write

915model: sonnet

916---

917 

918You are a data scientist specializing in SQL and BigQuery analysis.

919 

920When invoked:

9211. Understand the data analysis requirement

9222. Write efficient SQL queries

9233. Use BigQuery command line tools (bq) when appropriate

9244. Analyze and summarize results

9255. Present findings clearly

926 

927Key practices:

928- Write optimized SQL queries with proper filters

929- Use appropriate aggregations and joins

930- Include comments explaining complex logic

931- Format results for readability

932- Provide data-driven recommendations

933 

934For each analysis:

935- Explain the query approach

936- Document any assumptions

937- Highlight key findings

938- Suggest next steps based on data

939 

940Always ensure queries are efficient and cost-effective.

941```

942 

943### Validador de consulta de banco de dados

944 

945Um subagente que permite acesso Bash mas valida comandos para permitir apenas consultas SQL somente leitura. Este exemplo mostra como usar hooks `PreToolUse` para validação condicional quando você precisa de controle mais fino do que o campo `tools` fornece.

946 

947```markdown theme={null}

948---

949name: db-reader

950description: Execute read-only database queries. Use when analyzing data or generating reports.

951tools: Bash

952hooks:

953 PreToolUse:

954 - matcher: "Bash"

955 hooks:

956 - type: command

957 command: "./scripts/validate-readonly-query.sh"

958---

959 

960You are a database analyst with read-only access. Execute SELECT queries to answer questions about the data.

961 

962When asked to analyze data:

9631. Identify which tables contain the relevant data

9642. Write efficient SELECT queries with appropriate filters

9653. Present results clearly with context

966 

967You cannot modify data. If asked to INSERT, UPDATE, DELETE, or modify schema, explain that you only have read access.

968```

969 

970Claude Code [passa entrada de hook como JSON](/pt/hooks#pretooluse-input) via stdin para comandos de hook. O script de validação lê este JSON, extrai o comando sendo executado e o verifica contra uma lista de operações de escrita SQL. Se uma operação de escrita é detectada, o script [sai com código 2](/pt/hooks#exit-code-2-behavior-per-event) para bloquear execução e retorna uma mensagem de erro para Claude via stderr.

971 

972Crie o script de validação em qualquer lugar em seu projeto. O caminho deve corresponder ao campo `command` em sua configuração de hook:

973 

974```bash theme={null}

975#!/bin/bash

976# Blocks SQL write operations, allows SELECT queries

977 

978# Read JSON input from stdin

979INPUT=$(cat)

980 

981# Extract the command field from tool_input using jq

982COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

983 

984if [ -z "$COMMAND" ]; then

985 exit 0

986fi

987 

988# Block write operations (case-insensitive)

989if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE|REPLACE|MERGE)\b' > /dev/null; then

990 echo "Blocked: Write operations not allowed. Use SELECT queries only." >&2

991 exit 2

992fi

993 

994exit 0

995```

996 

997Torne o script executável:

998 

999```bash theme={null}

1000chmod +x ./scripts/validate-readonly-query.sh

1001```

1002 

1003O hook recebe JSON via stdin com o comando Bash em `tool_input.command`. Código de saída 2 bloqueia a operação e alimenta a mensagem de erro de volta para Claude. Veja [Hooks](/pt/hooks#exit-code-output) para detalhes sobre códigos de saída e [Hook input](/pt/hooks#pretooluse-input) para o schema de entrada completo.

1004 

1005## Próximos passos

1006 

1007Agora que você entende subagentes, explore estes recursos relacionados:

1008 

1009* [Distribuir subagentes com plugins](/pt/plugins) para compartilhar subagentes entre equipes ou projetos

1010* [Executar Claude Code programaticamente](/pt/headless) com o Agent SDK para CI/CD e automação

1011* [Usar MCP servers](/pt/mcp) para dar aos subagentes acesso a ferramentas e dados externos

terminal-config.md +307 −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# Configure seu terminal para Claude Code

6 

7> Corrija Shift+Enter para quebras de linha, obtenha um sinal sonoro do terminal quando Claude terminar, configure tmux, corresponda o tema de cores e ative o modo Vim na CLI do Claude Code.

8 

9Claude Code funciona em qualquer terminal sem configuração. Esta página é para quando algo específico não está se comportando da forma que você espera. Encontre seu sintoma abaixo. Se tudo já se sente certo, você não precisa desta página.

10 

11* [Shift+Enter envia em vez de inserir uma quebra de linha](#enter-multiline-prompts)

12* [Atalhos da tecla Option não funcionam no macOS](#enable-option-key-shortcuts-on-macos)

13* [Sem som ou alerta quando Claude termina](#get-a-terminal-bell-or-notification)

14* [Você executa Claude Code dentro do tmux](#configure-tmux)

15* [A exibição pisca ou a rolagem volta para cima](#switch-to-fullscreen-rendering)

16* [Você quer teclas Vim no prompt](#edit-prompts-with-vim-keybindings)

17 

18Esta página é sobre fazer seu terminal enviar os sinais corretos para Claude Code. Para alterar quais teclas Claude Code responde, consulte [atalhos de teclado](/pt/keybindings) em vez disso.

19 

20## Inserir prompts multilinhas

21 

22Pressionar Enter envia sua mensagem. Para adicionar uma quebra de linha sem enviar, pressione Ctrl+J, ou digite `\` e depois pressione Enter. Ambos funcionam em todos os terminais sem configuração.

23 

24Na maioria dos terminais você também pode pressionar Shift+Enter, mas o suporte varia por emulador de terminal:

25 

26| Terminal | Shift+Enter para quebra de linha |

27| :----------------------------------------------------------------------------- | :--------------------------------------------- |

28| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal | Funciona sem configuração |

29| VS Code, Cursor, Windsurf, Alacritty, Zed | Execute `/terminal-setup` uma vez |

30| Windows Terminal, gnome-terminal, JetBrains IDEs como PyCharm e Android Studio | Não disponível; use Ctrl+J ou `\` depois Enter |

31 

32Para VS Code, Cursor, Windsurf, Alacritty e Zed, `/terminal-setup` escreve Shift+Enter e outros atalhos de teclado no arquivo de configuração do terminal. Em VS Code, Cursor e Windsurf, também define `terminal.integrated.mouseWheelScrollSensitivity` nas configurações do editor para rolagem mais suave no [modo de tela cheia](/pt/fullscreen). As vinculações e configurações existentes são mantidas no lugar; se você vir uma mensagem como `VSCode terminal Shift+Enter key binding already configured`, nenhuma alteração foi feita. Execute `/terminal-setup` diretamente no terminal do host em vez de dentro do tmux ou screen, pois ele precisa escrever na configuração do terminal do host.

33 

34Se você estiver executando dentro do tmux, Shift+Enter também requer a [configuração do tmux abaixo](#configure-tmux) mesmo quando o terminal externo a suporta.

35 

36Para vincular quebra de linha a uma tecla diferente, ou para trocar o comportamento para que Enter insira uma quebra de linha e Shift+Enter envie, mapeie as ações `chat:newline` e `chat:submit` em seu [arquivo de atalhos de teclado](/pt/keybindings).

37 

38## Ativar atalhos de tecla Option no macOS

39 

40Alguns atalhos do Claude Code usam a tecla Option, como Option+Enter para uma quebra de linha ou Option+P para trocar modelos. No macOS, a maioria dos terminais não envia Option como um modificador por padrão, então esses atalhos não funcionam até que você o ative. A configuração do terminal para isso geralmente é rotulada como "Use Option as Meta Key"; Meta é o nome histórico do Unix para a tecla agora rotulada como Option ou Alt.

41 

42<Tabs>

43 <Tab title="Apple Terminal">

44 Abra Configurações → Perfis → Teclado e marque "Use Option as Meta Key".

45 

46 Se você aceitou o prompt de primeira execução do Claude Code que oferecia "Option+Enter para quebras de linha e sino visual", isso já foi feito. Esse prompt executa `/terminal-setup` para você, que ativa Option como Meta e muda o sino de áudio para um flash de tela visual em seu perfil do Apple Terminal.

47 </Tab>

48 

49 <Tab title="iTerm2">

50 Abra Configurações → Perfis → Teclas → Geral e defina a tecla Option Esquerda e a tecla Option Direita como "Esc+".

51 

52 Executar `/terminal-setup` no iTerm2 ativa "Applications in terminal may access clipboard" em Configurações → Geral → Seleção para que o comando `/copy` possa escrever na sua área de transferência do sistema. O comando detecta iTerm2 mesmo quando executado dentro do tmux. Reinicie o iTerm2 para que a alteração tenha efeito.

53 </Tab>

54 

55 <Tab title="VS Code">

56 Adicione `"terminal.integrated.macOptionIsMeta": true` às suas configurações do VS Code.

57 </Tab>

58</Tabs>

59 

60Para Ghostty, Kitty e outros terminais, procure por uma configuração Option-as-Alt ou Option-as-Meta no arquivo de configuração do terminal.

61 

62## Obtenha um sino de terminal ou notificação

63 

64Quando Claude termina uma tarefa ou pausa para um prompt de permissão, ele dispara um evento de notificação. Exibir isso como um sino de terminal ou notificação de desktop permite que você mude para outro trabalho enquanto uma tarefa longa é executada.

65 

66Por padrão, Claude Code envia uma notificação de desktop apenas em Ghostty, Kitty e iTerm2. Em outros terminais, defina [`preferredNotifChannel`](/pt/settings#available-settings) como `"terminal_bell"` para tocar o sino do terminal, ou configure um [hook de Notificação](#play-a-sound-with-a-notification-hook) para um som personalizado ou comando.

67 

68A notificação de desktop chega à sua máquina local via SSH, portanto uma sessão remota ainda pode alertá-lo. Ghostty e Kitty a encaminham para seu centro de notificações do SO sem configuração adicional. iTerm2 requer que você ative o encaminhamento:

69 

70<Steps>

71 <Step title="Abra as configurações de notificação do iTerm2">

72 Vá para Configurações → Perfis → Terminal.

73 </Step>

74 

75 <Step title="Ative alertas">

76 Marque "Notification Center Alerts", depois clique em "Filter Alerts" e ative "Send escape sequence-generated alerts".

77 </Step>

78</Steps>

79 

80Se as notificações ainda não aparecerem, confirme que seu aplicativo de terminal tem permissão de notificação nas configurações do seu SO, e se você estiver executando dentro do tmux, [ative passthrough](#configure-tmux).

81 

82### Play a sound with a Notification hook

83 

84Em qualquer terminal você pode configurar um [hook de Notificação](/pt/hooks-guide#get-notified-when-claude-needs-input) para reproduzir um som ou executar um comando personalizado quando Claude precisar de sua atenção. Hooks são executados junto com a notificação de desktop em vez de substituí-la, portanto terminais que não recebem uma notificação de desktop, como Warp ou o terminal integrado do VS Code, podem usar um hook ou definir `preferredNotifChannel` como `"terminal_bell"` em vez disso.

85 

86O exemplo abaixo reproduz um som do sistema no macOS. O guia vinculado tem comandos de notificação de desktop para macOS, Linux e Windows.

87 

88```json ~/.claude/settings.json theme={null}

89{

90 "hooks": {

91 "Notification": [

92 {

93 "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]

94 }

95 ]

96 }

97}

98```

99 

100## Configure tmux

101 

102Quando Claude Code é executado dentro do tmux, duas coisas quebram por padrão: Shift+Enter envia em vez de inserir uma quebra de linha, e notificações de desktop e a [barra de progresso](/pt/settings#available-settings) nunca chegam ao terminal externo. Adicione estas linhas a `~/.tmux.conf`, depois execute `tmux source-file ~/.tmux.conf` para aplicá-las ao servidor em execução:

103 

104```bash ~/.tmux.conf theme={null}

105set -g allow-passthrough on

106set -s extended-keys on

107set -as terminal-features 'xterm*:extkeys'

108```

109 

110A linha `allow-passthrough` permite que notificações e atualizações de progresso cheguem ao iTerm2, Ghostty ou Kitty em vez de serem engolidas pelo tmux. As linhas `extended-keys` permitem que tmux distinga Shift+Enter de Enter simples para que o atalho de quebra de linha funcione.

111 

112## Corresponder ao tema de cores

113 

114Use o comando `/theme`, ou o seletor de tema em `/config`, para escolher um tema do Claude Code que corresponda ao seu terminal. Selecionar a opção auto detecta o fundo claro ou escuro do seu terminal, para que o tema siga as mudanças de aparência do SO sempre que seu terminal fizer. Claude Code não controla o esquema de cores do próprio terminal, que é definido pela aplicação de terminal.

115 

116Para personalizar o que aparece na parte inferior da interface, configure uma [linha de status personalizada](/pt/statusline) que mostra o modelo atual, diretório de trabalho, branch do git ou outro contexto.

117 

118### Criar um tema personalizado

119 

120<Note>

121 Temas personalizados requerem Claude Code v2.1.118 ou posterior.

122</Note>

123 

124Além dos presets integrados, `/theme` lista todos os temas personalizados que você definiu e quaisquer temas contribuídos por [plugins](/pt/plugins-reference#themes) instalados. Selecione **Novo tema personalizado…** no final da lista para criar um interativamente: você nomeia o tema e depois escolhe tokens de cor individuais para substituir. Pressione `Ctrl+E` enquanto um tema personalizado está destacado para editá-lo.

125 

126Cada tema personalizado é um arquivo JSON em `~/.claude/themes/`. O nome do arquivo sem a extensão `.json` é o slug do tema, e selecionar o tema armazena `custom:<slug>` como sua preferência de tema. O arquivo tem três campos opcionais:

127 

128| Campo | Tipo | Descrição |

129| :---------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------- |

130| `name` | string | Rótulo de exibição mostrado em `/theme`. Padrão é o slug do nome do arquivo |

131| `base` | string | Preset integrado do qual o tema começa: `dark`, `light`, `dark-daltonized`, `light-daltonized`, `dark-ansi`, ou `light-ansi`. Padrão é `dark` |

132| `overrides` | object | Mapa de nomes de tokens de cor para valores de cor. Tokens não listados aqui caem através do preset base |

133 

134Valores de cor aceitam `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)`, ou `ansi:<name>` onde `<name>` é um dos 16 nomes de cores ANSI padrão como `red` ou `cyanBright`. Tokens desconhecidos e valores de cor inválidos são ignorados, portanto um erro de digitação não pode quebrar a renderização.

135 

136O exemplo a seguir define um tema que mantém o preset escuro, mas recolore o acento do prompt, o texto de erro e o texto de sucesso:

137 

138```json ~/.claude/themes/dracula.json theme={null}

139{

140 "name": "Dracula",

141 "base": "dark",

142 "overrides": {

143 "claude": "#bd93f9",

144 "error": "#ff5555",

145 "success": "#50fa7b"

146 }

147}

148```

149 

150Claude Code monitora `~/.claude/themes/` e recarrega quando um arquivo muda, portanto edições feitas no seu editor se aplicam a uma sessão em execução sem necessidade de reinicialização.

151 

152A referência abaixo cobre os tokens que você pode definir em `overrides`. O editor interativo em `/theme` mostra os mesmos tokens com uma visualização ao vivo, além de alguns acentos de propósito único, como cores de tela de integração, que são omitidas aqui.

153 

154<Accordion title="Referência de tokens de cor">

155 O exemplo a seguir combina tokens de vários dos grupos abaixo: o acento da marca, a borda do modo de plano, os fundos de diff e o fundo da mensagem em tela cheia.

156 

157 ```json ~/.claude/themes/midnight.json theme={null}

158 {

159 "name": "Midnight",

160 "base": "dark",

161 "overrides": {

162 "claude": "#a78bfa",

163 "planMode": "#38bdf8",

164 "diffAdded": "#14532d",

165 "diffRemoved": "#7f1d1d",

166 "userMessageBackground": "#1e1b4b"

167 }

168 }

169 ```

170 

171 #### Cores de texto e acento

172 

173 Controle o acento da marca primária e as tonalidades de texto em primeiro plano usadas em toda a interface.

174 

175 | Token | Controla |

176 | :------------ | :----------------------------------------------------------------------- |

177 | `claude` | Acento da marca primária, usado para o spinner e rótulo do assistente |

178 | `text` | Texto em primeiro plano padrão |

179 | `inverseText` | Texto desenhado sobre um fundo colorido, como badges de status |

180 | `inactive` | Texto secundário como dicas, timestamps e itens desabilitados |

181 | `subtle` | Bordas fracas e texto secundário de-enfatizado |

182 | `suggestion` | Sugestões de preenchimento automático e destaque de seleção em seletores |

183 | `permission` | Bordas de diálogo, incluindo prompts de permissão e seletores |

184 | `remember` | Indicadores de memória e `CLAUDE.md` |

185 

186 #### Cores de status

187 

188 Sinalize estados de sucesso, falha e aviso em mensagens e indicadores.

189 

190 | Token | Controla |

191 | :-------- | :-------------------------------------------------- |

192 | `success` | Mensagens de sucesso e verificações aprovadas |

193 | `error` | Mensagens de erro e falhas |

194 | `warning` | Avisos, mensagens de cautela e a borda do modo auto |

195 | `merged` | Status de pull request mesclado |

196 

197 #### Caixa de entrada e indicadores de modo

198 

199 Defina a cor da borda da caixa de entrada e o acento mostrado enquanto um modo de permissão ou indicador está ativo.

200 

201 | Token | Controla |

202 | :------------- | :-------------------------------------------------------- |

203 | `promptBorder` | Borda da caixa de entrada no modo de permissão padrão |

204 | `planMode` | Acento e borda do modo de plano |

205 | `autoAccept` | Acento e borda do modo aceitar-edições |

206 | `bashBorder` | Borda da caixa de entrada ao inserir um comando shell `!` |

207 | `ide` | Indicador de conexão IDE |

208 | `fastMode` | Indicador de modo rápido |

209 

210 #### Renderização de diff

211 

212 Colora código adicionado e removido em edições e revisões de arquivo.

213 

214 | Token | Controla |

215 | :------------------ | :---------------------------------------------------------- |

216 | `diffAdded` | Fundo de linhas adicionadas |

217 | `diffRemoved` | Fundo de linhas removidas |

218 | `diffAddedDimmed` | Fundo de contexto inalterado perto de linhas adicionadas |

219 | `diffRemovedDimmed` | Fundo de contexto inalterado perto de linhas removidas |

220 | `diffAddedWord` | Destaque em nível de palavra dentro de uma linha adicionada |

221 | `diffRemovedWord` | Destaque em nível de palavra dentro de uma linha removida |

222 

223 #### Modo tela cheia

224 

225 Aplique apenas no [modo de renderização em tela cheia](/pt/fullscreen), onde as mensagens têm um preenchimento de fundo.

226 

227 | Token | Controla |

228 | :--------------------------- | :---------------------------------------------------------------------- |

229 | `userMessageBackground` | Fundo atrás de suas mensagens na transcrição |

230 | `userMessageBackgroundHover` | Fundo atrás de uma mensagem enquanto pairada ou expandida |

231 | `messageActionsBackground` | Fundo atrás da mensagem selecionada quando a barra de ações está aberta |

232 | `bashMessageBackgroundColor` | Fundo atrás de entradas de comando shell `!` na transcrição |

233 | `memoryBackgroundColor` | Fundo atrás de entradas de memória `#` na transcrição |

234 | `selectionBg` | Fundo do texto selecionado com o mouse |

235 

236 #### Medidor de uso e rótulos de alto-falante

237 

238 Ajuste a barra mostrada na visualização `/usage` e os rótulos que distinguem suas mensagens das de Claude.

239 

240 | Token | Controla |

241 | :----------------- | :------------------------------------------------ |

242 | `rate_limit_fill` | Porção preenchida do medidor de uso |

243 | `rate_limit_empty` | Porção não preenchida do medidor de uso |

244 | `briefLabelYou` | Cor do rótulo `You` em suas mensagens |

245 | `briefLabelClaude` | Cor do rótulo `Claude` em mensagens do assistente |

246 

247 #### Variantes de shimmer e cores de subagentes

248 

249 Vários tokens têm uma variante de shimmer emparelhada que fornece a cor mais clara usada no gradiente animado do spinner. Substitua o shimmer junto com seu token base se a animação parecer incompatível.

250 

251 * `claude` e `claudeShimmer`

252 * `warning` e `warningShimmer`

253 * `permission` e `permissionShimmer`

254 * `promptBorder` e `promptBorderShimmer`

255 * `inactive` e `inactiveShimmer`

256 * `fastMode` e `fastModeShimmer`

257 

258 Cada [subagente](/pt/sub-agents) e tarefa paralela é mostrado em uma das oito cores nomeadas para que você possa diferenciá-los na transcrição. Os nomes dos tokens seguem o padrão `<color>_FOR_SUBAGENTS_ONLY`, onde `<color>` é `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, ou `cyan`. Substitua estes para alterar a aparência de cada cor nomeada. Por exemplo, um subagente com `color: blue` em sua definição é desenhado usando o valor `blue_FOR_SUBAGENTS_ONLY`.

259 

260 As palavras-chave [`ultrathink`](/pt/model-config#use-ultrathink-for-one-off-deep-reasoning) e [`ultraplan`](/pt/ultraplan) na entrada do prompt são renderizadas com um gradiente arco-íris de sete cores. Os nomes dos tokens seguem o padrão `rainbow_<color>` e `rainbow_<color>_shimmer`, onde `<color>` é `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, ou `violet`.

261</Accordion>

262 

263## Switch to fullscreen rendering

264 

265Se a exibição piscar ou a posição de rolagem pular enquanto Claude está trabalhando, mude para o [modo de renderização em tela cheia](/pt/fullscreen). Ele desenha em uma tela separada que o terminal reserva para aplicativos em tela cheia em vez de anexar ao seu scrollback normal, o que mantém o uso de memória plano e adiciona suporte a mouse para rolagem e seleção. Neste modo você rola com o mouse ou PageUp dentro do Claude Code em vez de com o scrollback nativo do seu terminal; consulte a [página de tela cheia](/pt/fullscreen#search-and-review-the-conversation) para saber como pesquisar e copiar.

266 

267Execute `/tui fullscreen` para mudar na sessão atual com sua conversa intacta. Para torná-lo o padrão, defina a variável de ambiente `CLAUDE_CODE_NO_FLICKER` antes de iniciar Claude Code:

268 

269<CodeGroup>

270 ```bash Bash and Zsh theme={null}

271 CLAUDE_CODE_NO_FLICKER=1 claude

272 ```

273 

274 ```powershell PowerShell theme={null}

275 $env:CLAUDE_CODE_NO_FLICKER = "1"; claude

276 ```

277 

278 ```json ~/.claude/settings.json theme={null}

279 {

280 "env": {

281 "CLAUDE_CODE_NO_FLICKER": "1"

282 }

283 }

284 ```

285</CodeGroup>

286 

287## Paste large content

288 

289Quando você cola mais de 10.000 caracteres no prompt, Claude Code reduz a entrada para um placeholder `[Pasted text]` para que a caixa de entrada permaneça utilizável. O conteúdo completo ainda é enviado para Claude quando você envia.

290 

291O terminal integrado do VS Code pode descartar caracteres de colagens muito grandes antes de chegarem ao Claude Code, então prefira fluxos de trabalho baseados em arquivo lá. Para entradas muito grandes, como arquivos inteiros ou logs longos, escreva o conteúdo em um arquivo e peça ao Claude para lê-lo em vez de colar. Isso mantém a transcrição da conversa legível e permite que Claude referencie o arquivo por caminho em turnos posteriores.

292 

293## Editar prompts com atalhos de teclado Vim

294 

295Claude Code inclui um modo de edição estilo Vim para a entrada do prompt. Ative-o através de `/config` → Editor mode, ou definindo [`editorMode`](/pt/settings#available-settings) como `"vim"` em `~/.claude/settings.json`. Defina Editor mode de volta para `normal` para desativá-lo.

296 

297O modo Vim suporta um subconjunto de motions de modo NORMAL e VISUAL e operadores, como navegação `hjkl`, seleção `v`/`V`, e `d`/`c`/`y` com objetos de texto. Consulte a [referência do modo editor Vim](/pt/interactive-mode#vim-editor-mode) para a tabela de teclas completa. Motions de Vim não são remapeáveis através do arquivo de atalhos de teclado.

298 

299Pressionar Enter ainda envia seu prompt no modo INSERT, diferentemente do Vim padrão. Use `o` ou `O` no modo NORMAL, ou Ctrl+J, para inserir uma quebra de linha em vez disso.

300 

301## Related resources

302 

303* [Interactive mode](/pt/interactive-mode): referência completa de atalhos de teclado e a tabela de teclas Vim

304* [Keybindings](/pt/keybindings): remapeie qualquer atalho do Claude Code, incluindo Enter e Shift+Enter

305* [Fullscreen rendering](/pt/fullscreen): detalhes sobre rolagem, pesquisa e cópia no modo tela cheia

306* [Hooks guide](/pt/hooks-guide): mais exemplos de hook de Notificação para Linux e Windows

307* [Troubleshooting](/pt/troubleshooting): correções para problemas fora da configuração do terminal

third-party-integrations.md +262 −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# Visão geral da implantação empresarial

6 

7> Saiba como Claude Code pode se integrar com vários serviços de terceiros e infraestrutura para atender aos requisitos de implantação empresarial.

8 

9As organizações podem implantar Claude Code através da Anthropic diretamente ou através de um provedor de nuvem. Esta página ajuda você a escolher a configuração correta.

10 

11## Comparar opções de implantação

12 

13Para a maioria das organizações, Claude for Teams ou Claude for Enterprise oferece a melhor experiência. Os membros da equipe obtêm acesso tanto a Claude Code quanto a Claude na web com uma única assinatura, faturamento centralizado e nenhuma configuração de infraestrutura necessária.

14 

15**Claude for Teams** é de autoatendimento e inclui recursos de colaboração, ferramentas de administração e gerenciamento de faturamento. Melhor para equipes menores que precisam começar rapidamente.

16 

17**Claude for Enterprise** adiciona SSO e captura de domínio, permissões baseadas em funções, acesso à API de conformidade e configurações de política gerenciada para implantar configurações de Claude Code em toda a organização. Melhor para organizações maiores com requisitos de segurança e conformidade.

18 

19Saiba mais sobre [planos de equipe](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) e [planos empresariais](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan).

20 

21Se sua organização tem requisitos de infraestrutura específicos, compare as opções abaixo:

22 

23<table>

24 <thead>

25 <tr>

26 <th>Recurso</th>

27 <th>Claude for Teams/Enterprise</th>

28 <th>Anthropic Console</th>

29 <th>Amazon Bedrock</th>

30 <th>Google Vertex AI</th>

31 <th>Microsoft Foundry</th>

32 </tr>

33 </thead>

34 

35 <tbody>

36 <tr>

37 <td>Melhor para</td>

38 <td>Maioria das organizações (recomendado)</td>

39 <td>Desenvolvedores individuais</td>

40 <td>Implantações nativas da AWS</td>

41 <td>Implantações nativas do GCP</td>

42 <td>Implantações nativas do Azure</td>

43 </tr>

44 

45 <tr>

46 <td>Faturamento</td>

47 <td><strong>Teams:</strong> \$150/assento (Premium) com PAYG disponível<br /><strong>Enterprise:</strong> <a href="https://claude.com/contact-sales?utm_source=claude_code&utm_medium=docs&utm_content=third_party_enterprise">Entre em contato com vendas</a></td>

48 <td>PAYG</td>

49 <td>PAYG através da AWS</td>

50 <td>PAYG através do GCP</td>

51 <td>PAYG através do Azure</td>

52 </tr>

53 

54 <tr>

55 <td>Regiões</td>

56 <td>[Países](https://www.anthropic.com/supported-countries) suportados</td>

57 <td>[Países](https://www.anthropic.com/supported-countries) suportados</td>

58 <td>Múltiplas [regiões](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) da AWS</td>

59 <td>Múltiplas [regiões](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) do GCP</td>

60 <td>Múltiplas [regiões](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/) do Azure</td>

61 </tr>

62 

63 <tr>

64 <td>Prompt caching</td>

65 <td>Ativado por padrão</td>

66 <td>Ativado por padrão</td>

67 <td>Ativado por padrão</td>

68 <td>Ativado por padrão</td>

69 <td>Ativado por padrão</td>

70 </tr>

71 

72 <tr>

73 <td>Autenticação</td>

74 <td>Claude.ai SSO ou email</td>

75 <td>Chave de API</td>

76 <td>Chave de API ou credenciais da AWS</td>

77 <td>Credenciais do GCP</td>

78 <td>Chave de API ou Microsoft Entra ID</td>

79 </tr>

80 

81 <tr>

82 <td>Rastreamento de custos</td>

83 <td>Painel de uso</td>

84 <td>Painel de uso</td>

85 <td>AWS Cost Explorer</td>

86 <td>Faturamento do GCP</td>

87 <td>Gerenciamento de custos do Azure</td>

88 </tr>

89 

90 <tr>

91 <td>Inclui Claude na web</td>

92 <td>Sim</td>

93 <td>Não</td>

94 <td>Não</td>

95 <td>Não</td>

96 <td>Não</td>

97 </tr>

98 

99 <tr>

100 <td>Recursos empresariais</td>

101 <td>Gerenciamento de equipe, SSO, monitoramento de uso</td>

102 <td>Nenhum</td>

103 <td>Políticas de IAM, CloudTrail</td>

104 <td>Funções de IAM, Cloud Audit Logs</td>

105 <td>Políticas de RBAC, Azure Monitor</td>

106 </tr>

107 </tbody>

108</table>

109 

110Selecione uma opção de implantação para visualizar as instruções de configuração:

111 

112* [Claude for Teams ou Enterprise](/pt/authentication#claude-for-teams-or-enterprise)

113* [Anthropic Console](/pt/authentication#claude-console-authentication)

114* [Amazon Bedrock](/pt/amazon-bedrock)

115* [Google Vertex AI](/pt/google-vertex-ai)

116* [Microsoft Foundry](/pt/microsoft-foundry)

117 

118## Configurar proxies e gateways

119 

120A maioria das organizações pode usar um provedor de nuvem diretamente sem configuração adicional. No entanto, você pode precisar configurar um proxy corporativo ou gateway LLM se sua organização tiver requisitos específicos de rede ou gerenciamento. Estas são configurações diferentes que podem ser usadas juntas:

121 

122* **Proxy corporativo**: Roteia o tráfego através de um proxy HTTP/HTTPS. Use isto se sua organização exigir que todo o tráfego de saída passe por um servidor proxy para monitoramento de segurança, conformidade ou aplicação de política de rede. Configure com as variáveis de ambiente `HTTPS_PROXY` ou `HTTP_PROXY`. Saiba mais em [Configuração de rede empresarial](/pt/network-config).

123* **Gateway LLM**: Um serviço que fica entre Claude Code e o provedor de nuvem para lidar com autenticação e roteamento. Use isto se você precisar de rastreamento de uso centralizado entre equipes, limitação de taxa personalizada ou orçamentos, ou gerenciamento de autenticação centralizado. Configure com as variáveis de ambiente `ANTHROPIC_BASE_URL`, `ANTHROPIC_BEDROCK_BASE_URL`, ou `ANTHROPIC_VERTEX_BASE_URL`. Saiba mais em [Configuração de gateway LLM](/pt/llm-gateway).

124 

125Os exemplos a seguir mostram as variáveis de ambiente a definir no seu shell ou perfil de shell (`.bashrc`, `.zshrc`). Veja [Configurações](/pt/settings) para outros métodos de configuração.

126 

127### Amazon Bedrock

128 

129<Tabs>

130 <Tab title="Proxy corporativo">

131 Rotear o tráfego do Bedrock através do seu proxy corporativo definindo as seguintes [variáveis de ambiente](/pt/env-vars):

132 

133 ```bash theme={null}

134 # Ativar Bedrock

135 export CLAUDE_CODE_USE_BEDROCK=1

136 export AWS_REGION=us-east-1

137 

138 # Configurar proxy corporativo

139 export HTTPS_PROXY='https://proxy.example.com:8080'

140 ```

141 </Tab>

142 

143 <Tab title="Gateway LLM">

144 Rotear o tráfego do Bedrock através do seu gateway LLM definindo as seguintes [variáveis de ambiente](/pt/env-vars):

145 

146 ```bash theme={null}

147 # Ativar Bedrock

148 export CLAUDE_CODE_USE_BEDROCK=1

149 

150 # Configurar gateway LLM

151 export ANTHROPIC_BEDROCK_BASE_URL='https://your-llm-gateway.com/bedrock'

152 export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1 # Se o gateway lidar com autenticação da AWS

153 ```

154 </Tab>

155</Tabs>

156 

157### Microsoft Foundry

158 

159<Tabs>

160 <Tab title="Proxy corporativo">

161 Rotear o tráfego do Foundry através do seu proxy corporativo definindo as seguintes [variáveis de ambiente](/pt/env-vars):

162 

163 ```bash theme={null}

164 # Ativar Microsoft Foundry

165 export CLAUDE_CODE_USE_FOUNDRY=1

166 export ANTHROPIC_FOUNDRY_RESOURCE=your-resource

167 export ANTHROPIC_FOUNDRY_API_KEY=your-api-key # Ou omitir para autenticação Entra ID

168 

169 # Configurar proxy corporativo

170 export HTTPS_PROXY='https://proxy.example.com:8080'

171 ```

172 </Tab>

173 

174 <Tab title="Gateway LLM">

175 Rotear o tráfego do Foundry através do seu gateway LLM definindo as seguintes [variáveis de ambiente](/pt/env-vars):

176 

177 ```bash theme={null}

178 # Ativar Microsoft Foundry

179 export CLAUDE_CODE_USE_FOUNDRY=1

180 

181 # Configurar gateway LLM

182 export ANTHROPIC_FOUNDRY_BASE_URL='https://your-llm-gateway.com'

183 export CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1 # Se o gateway lidar com autenticação do Azure

184 ```

185 </Tab>

186</Tabs>

187 

188### Google Vertex AI

189 

190<Tabs>

191 <Tab title="Proxy corporativo">

192 Rotear o tráfego do Vertex AI através do seu proxy corporativo definindo as seguintes [variáveis de ambiente](/pt/env-vars):

193 

194 ```bash theme={null}

195 # Ativar Vertex

196 export CLAUDE_CODE_USE_VERTEX=1

197 export CLOUD_ML_REGION=us-east5

198 export ANTHROPIC_VERTEX_PROJECT_ID=your-project-id

199 

200 # Configurar proxy corporativo

201 export HTTPS_PROXY='https://proxy.example.com:8080'

202 ```

203 </Tab>

204 

205 <Tab title="Gateway LLM">

206 Rotear o tráfego do Vertex AI através do seu gateway LLM definindo as seguintes [variáveis de ambiente](/pt/env-vars):

207 

208 ```bash theme={null}

209 # Ativar Vertex

210 export CLAUDE_CODE_USE_VERTEX=1

211 

212 # Configurar gateway LLM

213 export ANTHROPIC_VERTEX_BASE_URL='https://your-llm-gateway.com/vertex'

214 export CLAUDE_CODE_SKIP_VERTEX_AUTH=1 # Se o gateway lidar com autenticação do GCP

215 ```

216 </Tab>

217</Tabs>

218 

219<Tip>

220 Use `/status` em Claude Code para verificar se a configuração do seu proxy e gateway foi aplicada corretamente.

221</Tip>

222 

223## Melhores práticas para organizações

224 

225### Investir em documentação e memória

226 

227Recomendamos 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:

228 

229* **Em toda a organização**: Implante em diretórios do sistema como `/Library/Application Support/ClaudeCode/CLAUDE.md` (macOS) para padrões em toda a empresa

230* **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

231 

232Saiba mais em [Memória e arquivos CLAUDE.md](/pt/memory).

233 

234### Simplificar a implantação

235 

236Se você tiver um ambiente de desenvolvimento personalizado, descobrimos que criar uma maneira "com um clique" de instalar Claude Code é fundamental para aumentar a adoção em toda uma organização.

237 

238### Começar com uso orientado

239 

240Incentive novos usuários a experimentar Claude Code para perguntas sobre a base de código, ou em correções de bugs menores ou solicitações de recursos. Peça a Claude Code para fazer um plano. Verifique as sugestões de Claude e forneça feedback se estiver fora do caminho. Com o tempo, conforme os usuários entendem melhor esse novo paradigma, eles serão mais eficazes em permitir que Claude Code funcione de forma mais autônoma.

241 

242### Fixar versões de modelo para provedores de nuvem

243 

244Se você implantar através de [Bedrock](/pt/amazon-bedrock), [Vertex AI](/pt/google-vertex-ai), ou [Foundry](/pt/microsoft-foundry), fixe versões de modelo específicas usando `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, e `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Sem fixação, os aliases de Claude Code resolvem para a versão mais recente, o que pode quebrar usuários quando a Anthropic lança um novo modelo que ainda não está ativado em sua conta. Veja [Configuração de modelo](/pt/model-config#pin-models-for-third-party-deployments) para detalhes.

245 

246### Configurar políticas de segurança

247 

248As equipes de segurança podem configurar permissões gerenciadas para o que Claude Code é e não é permitido fazer, o que não pode ser substituído pela configuração local. [Saiba mais](/pt/security).

249 

250### Aproveitar MCP para integrações

251 

252MCP é uma ótima maneira de dar a Claude Code mais informações, como conectar a sistemas de gerenciamento de tickets ou logs de erro. Recomendamos que uma equipe central configure servidores MCP e verifique uma configuração `.mcp.json` na base de código para que todos os usuários se beneficiem. [Saiba mais](/pt/mcp).

253 

254Na Anthropic, confiamos em Claude Code para potencializar o desenvolvimento em todas as bases de código da Anthropic. Esperamos que você aproveite usar Claude Code tanto quanto nós.

255 

256## Próximas etapas

257 

258Depois de escolher uma opção de implantação e configurar o acesso para sua equipe:

259 

2601. **Implante em sua equipe**: Compartilhe instruções de instalação e peça aos membros da equipe para [instalar Claude Code](/pt/setup) e autenticar com suas credenciais.

2612. **Configurar configuração compartilhada**: Crie um [arquivo CLAUDE.md](/pt/memory) em seus repositórios para ajudar Claude Code a compreender sua base de código e padrões de codificação.

2623. **Configurar permissões**: Revise [configurações de segurança](/pt/security) para definir o que Claude Code pode e não pode fazer em seu ambiente.

tools-reference.md +148 −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# Referência de ferramentas

6 

7> Referência completa para as ferramentas que Claude Code pode usar, incluindo requisitos de permissão.

8 

9Claude Code tem acesso a um conjunto de ferramentas integradas que o ajudam a entender e modificar sua base de código. Os nomes das ferramentas são as strings exatas que você usa em [regras de permissão](/pt/permissions#tool-specific-permission-rules), [listas de ferramentas de subagent](/pt/sub-agents) e [correspondências de hooks](/pt/hooks). Para desabilitar uma ferramenta completamente, adicione seu nome ao array `deny` em suas [configurações de permissão](/pt/permissions#tool-specific-permission-rules).

10 

11Para adicionar ferramentas personalizadas, conecte um [servidor MCP](/pt/mcp). Para estender Claude com fluxos de trabalho baseados em prompts reutilizáveis, escreva uma [skill](/pt/skills), que é executada através da ferramenta `Skill` existente em vez de adicionar uma nova entrada de ferramenta.

12 

13| Ferramenta | Descrição | Permissão Necessária |

14| :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

15| `Agent` | Cria um [subagent](/pt/sub-agents) com sua própria janela de contexto para lidar com uma tarefa | Não |

16| `AskUserQuestion` | Faz perguntas de múltipla escolha para coletar requisitos ou esclarecer ambiguidades | Não |

17| `Bash` | Executa comandos de shell em seu ambiente. Veja [comportamento da ferramenta Bash](#bash-tool-behavior) | Sim |

18| `CronCreate` | Agenda uma solicitação recorrente ou única dentro da sessão atual. As tarefas têm escopo de sessão e são restauradas em `--resume` ou `--continue` se não expiradas. Veja [tarefas agendadas](/pt/scheduled-tasks) | Não |

19| `CronDelete` | Cancela uma tarefa agendada por ID | Não |

20| `CronList` | Lista todas as tarefas agendadas na sessão | Não |

21| `Edit` | Faz edições direcionadas em arquivos específicos | Sim |

22| `EnterPlanMode` | Muda para Plan Mode para projetar uma abordagem antes de codificar | Não |

23| `EnterWorktree` | Cria um [git worktree](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolado e muda para ele. Passe um `path` para mudar para um worktree existente do repositório atual em vez de criar um novo. Não disponível para subagents | Não |

24| `ExitPlanMode` | Apresenta um plano para aprovação e sai do Plan Mode | Sim |

25| `ExitWorktree` | Sai de uma sessão de worktree e retorna ao diretório original. Não disponível para subagents | Não |

26| `Glob` | Encontra arquivos com base em correspondência de padrões | Não |

27| `Grep` | Pesquisa padrões no conteúdo de arquivos | Não |

28| `ListMcpResourcesTool` | Lista recursos expostos por [servidores MCP](/pt/mcp) conectados | Não |

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

30| `Monitor` | Executa um comando em segundo plano e alimenta cada linha de saída de volta para Claude, para que ele possa reagir a entradas de log, mudanças de arquivo ou status consultado no meio da conversa. Veja [ferramenta Monitor](#monitor-tool) | Sim |

31| `NotebookEdit` | Modifica células de notebook Jupyter | Sim |

32| `PowerShell` | Executa comandos PowerShell nativamente. Veja [ferramenta PowerShell](#powershell-tool) para disponibilidade | Sim |

33| `Read` | Lê o conteúdo de arquivos | Não |

34| `ReadMcpResourceTool` | Lê um recurso MCP específico por URI | Não |

35| `SendMessage` | Envia uma mensagem para um [membro da equipe de agentes](/pt/agent-teams), ou [retoma um subagent](/pt/sub-agents#resume-subagents) por seu ID de agente. Subagents parados retomam automaticamente em segundo plano. Disponível apenas quando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` está definido | Não |

36| `Skill` | Executa uma [skill](/pt/skills#control-who-invokes-a-skill) dentro da conversa principal | Sim |

37| `TaskCreate` | Cria uma nova tarefa na lista de tarefas | Não |

38| `TaskGet` | Recupera detalhes completos para uma tarefa específica | Não |

39| `TaskList` | Lista todas as tarefas com seu status atual | Não |

40| `TaskOutput` | (Descontinuado) Recupera saída de uma tarefa em segundo plano. Prefira `Read` no caminho do arquivo de saída da tarefa | Não |

41| `TaskStop` | Mata uma tarefa em segundo plano em execução por ID | Não |

42| `TaskUpdate` | Atualiza status da tarefa, dependências, detalhes ou deleta tarefas | Não |

43| `TeamCreate` | Cria uma [equipe de agentes](/pt/agent-teams) com múltiplos membros. Disponível apenas quando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` está definido | Não |

44| `TeamDelete` | Dissolve uma equipe de agentes e limpa processos de membros. Disponível apenas quando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` está definido | Não |

45| `TodoWrite` | Gerencia a lista de verificação de tarefas da sessão. Disponível em modo não interativo e no [Agent SDK](/pt/headless); sessões interativas usam TaskCreate, TaskGet, TaskList e TaskUpdate em vez disso | Não |

46| `ToolSearch` | Pesquisa e carrega ferramentas diferidas quando [pesquisa de ferramentas](/pt/mcp#scale-with-mcp-tool-search) está ativada | Não |

47| `WebFetch` | Busca conteúdo de uma URL especificada | Sim |

48| `WebSearch` | Realiza pesquisas na web | Sim |

49| `Write` | Cria ou sobrescreve arquivos | Sim |

50 

51As regras de permissão podem ser configuradas usando `/permissions` ou em [configurações de permissão](/pt/settings#available-settings). Veja também [Regras de permissão específicas da ferramenta](/pt/permissions#tool-specific-permission-rules).

52 

53## Comportamento da ferramenta Bash

54 

55A ferramenta Bash executa cada comando em um processo separado com o seguinte comportamento de persistência:

56 

57* 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 um [diretório de trabalho adicional](/pt/permissions#working-directories) que você adicionou com `--add-dir`, `/add-dir` ou `additionalDirectories` nas configurações. Sessões de subagent nunca mantêm mudanças de diretório de trabalho.

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

59 * Para desabilitar esse carregamento para que cada comando Bash comece no diretório do projeto, defina `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

60* As variáveis de ambiente não persistem. Um `export` em um comando não estará disponível no próximo.

61 

62Ative seu virtualenv ou ambiente conda antes de iniciar Claude Code. Para fazer as variáveis de ambiente persistirem entre comandos Bash, defina [`CLAUDE_ENV_FILE`](/pt/env-vars) para um script de shell antes de iniciar Claude Code, ou use um [hook SessionStart](/pt/hooks#persist-environment-variables) para preenchê-lo dinamicamente.

63 

64## Comportamento da ferramenta LSP

65 

66A ferramenta LSP fornece a Claude inteligência de código de um servidor de linguagem em execução. Após cada edição de arquivo, ela relata automaticamente erros de tipo e avisos para que Claude possa corrigir problemas sem uma etapa de compilação separada. Claude também pode chamá-la diretamente para navegar no código:

67 

68* Ir para a definição de um símbolo

69* Encontrar todas as referências a um símbolo

70* Obter informações de tipo em uma posição

71* Listar símbolos em um arquivo ou workspace

72* Encontrar implementações de uma interface

73* Rastrear hierarquias de chamadas

74 

75A ferramenta fica inativa até que você instale um [plugin de inteligência de código](/pt/discover-plugins#code-intelligence) para sua linguagem. O plugin agrupa a configuração do servidor de linguagem, e você instala o binário do servidor separadamente.

76 

77## Ferramenta Monitor

78 

79<Note>

80 A ferramenta Monitor requer Claude Code v2.1.98 ou posterior.

81</Note>

82 

83A ferramenta Monitor permite que Claude observe algo em segundo plano e reaja quando muda, sem pausar a conversa. Peça a Claude para:

84 

85* Acompanhar um arquivo de log e sinalizar erros conforme aparecem

86* Consultar um PR ou trabalho de CI e relatar quando seu status muda

87* Observar um diretório para mudanças de arquivo

88* Rastrear saída de qualquer script de longa duração que você apontar

89 

90Claude escreve um pequeno script para a observação, o executa em segundo plano e recebe cada linha de saída conforme chega. Você continua trabalhando na mesma sessão e Claude intervém quando um evento chega. Pare um monitor pedindo a Claude para cancelá-lo ou encerrando a sessão.

91 

92Monitor usa as mesmas [regras de permissão que Bash](/pt/permissions#tool-specific-permission-rules), portanto os padrões `allow` e `deny` que você definiu para Bash se aplicam aqui também. Não está disponível no Amazon Bedrock, Google Vertex AI ou Microsoft Foundry. Também não está disponível quando `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está definido.

93 

94Plugins podem declarar monitores que iniciam automaticamente quando o plugin está ativo, em vez de pedir a Claude para iniciá-los. Veja [monitores de plugin](/pt/plugins-reference#monitors).

95 

96## Ferramenta PowerShell

97 

98A ferramenta PowerShell permite que Claude execute comandos PowerShell nativamente. No Windows, isso significa que os comandos são executados no PowerShell em vez de serem roteados através do Git Bash. No Windows sem Git Bash, a ferramenta é ativada automaticamente. No Windows com Git Bash instalado, a ferramenta está sendo lançada progressivamente. No Linux, macOS e WSL, a ferramenta é opcional.

99 

100### Ativar a ferramenta PowerShell

101 

102Defina `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` em seu ambiente ou em `settings.json`:

103 

104```json theme={null}

105{

106 "env": {

107 "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"

108 }

109}

110```

111 

112No Windows, defina a variável como `0` para desativar o lançamento. No Linux, macOS e WSL, a ferramenta requer PowerShell 7 ou posterior: instale `pwsh` e certifique-se de que está em seu `PATH`.

113 

114No Windows, Claude Code detecta automaticamente `pwsh.exe` para PowerShell 7+ com fallback para `powershell.exe` para PowerShell 5.1. Quando a ferramenta está ativada, Claude trata PowerShell como o shell primário. A ferramenta Bash permanece disponível para scripts POSIX quando Git Bash está instalado.

115 

116### Seleção de shell em configurações, hooks e skills

117 

118Três configurações adicionais controlam onde PowerShell é usado:

119 

120* `"defaultShell": "powershell"` em [`settings.json`](/pt/settings#available-settings): roteia comandos `!` interativos através do PowerShell. Requer que a ferramenta PowerShell esteja ativada.

121* `"shell": "powershell"` em [hooks de comando](/pt/hooks#command-hook-fields) individuais: executa esse hook em PowerShell. Hooks geram PowerShell diretamente, portanto isso funciona independentemente de `CLAUDE_CODE_USE_POWERSHELL_TOOL`.

122* `shell: powershell` em [frontmatter de skill](/pt/skills#frontmatter-reference): executa blocos `` !`command` `` em PowerShell. Requer que a ferramenta PowerShell esteja ativada.

123 

124O mesmo comportamento de redefinição de diretório de trabalho da sessão principal descrito na seção da ferramenta Bash se aplica aos comandos PowerShell, incluindo a variável de ambiente `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

125 

126### Limitações da visualização

127 

128A ferramenta PowerShell tem as seguintes limitações conhecidas durante a visualização:

129 

130* Perfis do PowerShell não são carregados

131* No Windows, sandboxing não é suportado

132 

133## Verificar quais ferramentas estão disponíveis

134 

135Seu conjunto exato de ferramentas depende do seu provedor, plataforma e configurações. Para verificar o que está carregado em uma sessão em execução, pergunte a Claude diretamente:

136 

137```text theme={null}

138What tools do you have access to?

139```

140 

141Claude fornece um resumo conversacional. Para nomes exatos de ferramentas MCP, execute `/mcp`.

142 

143## Veja também

144 

145* [Servidores MCP](/pt/mcp): adicione ferramentas personalizadas conectando servidores externos

146* [Permissões](/pt/permissions): sistema de permissões, sintaxe de regras e padrões específicos de ferramentas

147* [Subagents](/pt/sub-agents): configure o acesso a ferramentas para subagents

148* [Hooks](/pt/hooks-guide): execute comandos personalizados antes ou depois da execução da ferramenta

troubleshoot-install.md +803 −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 de instalação e login

6 

7> Corrija erros de comando não encontrado, PATH, permissão, rede e autenticação ao instalar ou fazer login no Claude Code.

8 

9Se a instalação falhar ou você não conseguir fazer login, encontre seu erro abaixo. Para problemas de tempo de execução após o Claude Code estar funcionando, consulte [Troubleshooting](/pt/troubleshooting). Para problemas de configuração, como configurações não sendo aplicadas ou hooks não disparando, consulte [Debug your configuration](/pt/debug-your-config).

10 

11## Encontre seu erro

12 

13Corresponda a mensagem de erro ou sintoma que você está vendo a uma solução:

14 

15| O que você vê | Solução |

16| :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ |

17| `command not found: claude` ou `'claude' is not recognized` | [Corrija seu PATH](#command-not-found-claude-after-installation) |

18| `syntax error near unexpected token '<'` | [O script de instalação retorna HTML](#install-script-returns-html-instead-of-a-shell-script) |

19| `curl: (56) Failure writing output to destination` | [Verifique a conectividade ou use um instalador alternativo](#curl-56-failure-writing-output-to-destination) |

20| `Killed` durante a instalação no Linux | [Adicione espaço de troca para servidores com pouca memória](#install-killed-on-low-memory-linux-servers) |

21| `TLS connect error` ou `SSL/TLS secure channel` | [Atualize os certificados CA](#tls-or-ssl-connection-errors) |

22| `Failed to fetch version` ou não consegue alcançar o servidor de download | [Verifique as configurações de rede e proxy](#check-network-connectivity) |

23| `irm is not recognized` ou `&& is not valid` | [Use o comando correto para seu shell](#wrong-install-command-on-windows) |

24| `'bash' is not recognized as the name of a cmdlet` | [Use o comando do instalador do Windows](#wrong-install-command-on-windows) |

25| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [Instale um shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |

26| `Claude Code does not support 32-bit Windows` | [Abra o Windows PowerShell, não a entrada x86](#claude-code-does-not-support-32-bit-windows) |

27| `The process cannot access the file ... because it is being used by another process` | [Limpe a pasta de downloads e tente novamente](#the-process-cannot-access-the-file-during-windows-install) |

28| `Error loading shared library` | [Variante binária incorreta para seu sistema](#linux-musl-or-glibc-binary-mismatch) |

29| `Illegal instruction` | [Incompatibilidade de arquitetura ou conjunto de instruções da CPU](#illegal-instruction) |

30| `cannot execute binary file: Exec format error` em WSL | [Regressão de binário nativo WSL1](#exec-format-error-on-wsl1) |

31| O instalador PowerShell é concluído mas `claude` não é encontrado ou mostra uma versão antiga | [Reinicie seu terminal e verifique PATH](#verify-your-path) |

32| `dyld: cannot load`, `dyld: Symbol not found`, ou `Abort trap` no macOS | [Incompatibilidade binária](#dyld-cannot-load-on-macos) |

33| `Invoke-Expression: Missing argument in parameter list` | [O script de instalação retorna HTML](#install-script-returns-html-instead-of-a-shell-script) |

34| `App unavailable in region` | Claude Code não está disponível em seu país. Consulte [países suportados](https://www.anthropic.com/supported-countries). |

35| `unable to get local issuer certificate` | [Configure certificados CA corporativos](#tls-or-ssl-connection-errors) |

36| `OAuth error` ou `403 Forbidden` | [Corrija a autenticação](#login-and-authentication) |

37| `Could not load the default credentials` ou `Could not load credentials from any providers` | [Credenciais do Bedrock, Vertex ou Foundry](#bedrock-vertex-or-foundry-credentials-not-loading) |

38| `ChainedTokenCredential authentication failed` ou `CredentialUnavailableError` | [Credenciais do Bedrock, Vertex ou Foundry](#bedrock-vertex-or-foundry-credentials-not-loading) |

39| `API Error: 500`, `529 Overloaded`, `429`, ou outros erros 4xx e 5xx não listados acima | Consulte a [referência de erros](/pt/errors) |

40 

41Se seu problema não estiver listado, trabalhe através das verificações de diagnóstico abaixo para estreitar a causa.

42 

43<Tip>

44 Se você preferir pular o terminal completamente, o [Claude Code Desktop app](/pt/desktop-quickstart) permite que você instale e use Claude Code através de uma interface gráfica. Baixe-o para [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) ou [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) e comece a codificar sem nenhuma configuração de linha de comando.

45</Tip>

46 

47## Execute verificações de diagnóstico

48 

49### Verifique a conectividade de rede

50 

51O instalador baixa de `downloads.claude.ai`. Verifique se você consegue alcançá-lo:

52 

53```bash theme={null}

54curl -sI https://downloads.claude.ai/claude-code-releases/latest

55```

56 

57Uma linha `HTTP/2 200` significa que você alcançou o servidor. Se você vir nenhuma saída, `Could not resolve host`, ou um tempo limite de conexão, sua rede está bloqueando a conexão. Causas comuns:

58 

59* Firewalls corporativos ou proxies bloqueando `downloads.claude.ai`

60* Restrições de rede regional: tente uma VPN ou rede alternativa

61* Problemas de TLS/SSL: atualize os certificados CA do seu sistema, ou verifique se `HTTPS_PROXY` está configurado

62 

63Se você estiver atrás de um proxy corporativo, defina `HTTPS_PROXY` e `HTTP_PROXY` para o endereço do seu proxy antes de instalar. Peça à sua equipe de TI pela URL do proxy se você não souber, ou verifique as configurações de proxy do seu navegador.

64 

65Este exemplo define ambas as variáveis de proxy e executa o instalador através do seu proxy:

66 

67<Tabs>

68 <Tab title="macOS/Linux">

69 ```bash theme={null}

70 export HTTP_PROXY=http://proxy.example.com:8080

71 export HTTPS_PROXY=http://proxy.example.com:8080

72 curl -fsSL https://claude.ai/install.sh | bash

73 ```

74 </Tab>

75 

76 <Tab title="Windows PowerShell">

77 ```powershell theme={null}

78 $env:HTTP_PROXY = 'http://proxy.example.com:8080'

79 $env:HTTPS_PROXY = 'http://proxy.example.com:8080'

80 irm https://claude.ai/install.ps1 | iex

81 ```

82 </Tab>

83</Tabs>

84 

85### Verifique seu PATH

86 

87Se a instalação foi bem-sucedida mas você recebe um erro `command not found` ou `not recognized` ao executar `claude`, o diretório de instalação não está em seu PATH. Seu shell procura por programas em diretórios listados em PATH, e o instalador coloca `claude` em `~/.local/bin/claude` no macOS/Linux ou `%USERPROFILE%\.local\bin\claude.exe` no Windows.

88 

89Verifique se o diretório de instalação está em seu PATH listando suas entradas de PATH e filtrando por `local/bin`:

90 

91<Tabs>

92 <Tab title="macOS/Linux">

93 ```bash theme={null}

94 echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"

95 ```

96 

97 Se isso imprimir `/Users/you/.local/bin` ou `/home/you/.local/bin`, o diretório está em seu PATH e você pode pular para [Verifique se há instalações conflitantes](#check-for-conflicting-installations). Se não houver saída, adicione-o à sua configuração de shell.

98 

99 Para Zsh, o padrão no macOS:

100 

101 ```bash theme={null}

102 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc

103 source ~/.zshrc

104 ```

105 

106 Para Bash, o padrão na maioria das distribuições Linux:

107 

108 ```bash theme={null}

109 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

110 source ~/.bashrc

111 ```

112 

113 Alternativamente, feche e reabra seu terminal.

114 

115 Para outros shells como fish ou Nushell, adicione `~/.local/bin` ao seu PATH usando a sintaxe de configuração do seu próprio shell, depois reinicie seu terminal.

116 

117 Verifique se a correção funcionou:

118 

119 ```bash theme={null}

120 claude --version

121 ```

122 </Tab>

123 

124 <Tab title="Windows PowerShell">

125 ```powershell theme={null}

126 $env:PATH -split ';' | Select-String '\.local\\bin'

127 ```

128 

129 Se não houver saída, adicione o diretório de instalação ao seu User PATH:

130 

131 ```powershell theme={null}

132 $currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')

133 [Environment]::SetEnvironmentVariable('PATH', "$currentPath;$env:USERPROFILE\.local\bin", 'User')

134 ```

135 

136 Reinicie seu terminal para que a alteração tenha efeito.

137 

138 Verifique se a correção funcionou:

139 

140 ```powershell theme={null}

141 claude --version

142 ```

143 </Tab>

144 

145 <Tab title="Windows CMD">

146 ```batch theme={null}

147 echo %PATH% | findstr /i "local\bin"

148 ```

149 

150 Se não houver saída, abra Configurações do Sistema, vá para Variáveis de Ambiente e adicione `%USERPROFILE%\.local\bin` à sua variável User PATH. Reinicie seu terminal.

151 

152 Verifique se a correção funcionou:

153 

154 ```batch theme={null}

155 claude --version

156 ```

157 </Tab>

158</Tabs>

159 

160### Verifique se há instalações conflitantes

161 

162Múltiplas instalações do Claude Code podem causar incompatibilidades de versão ou comportamento inesperado. Verifique o que está instalado:

163 

164<Tabs>

165 <Tab title="macOS/Linux">

166 Liste todos os binários `claude` encontrados em seu PATH:

167 

168 ```bash theme={null}

169 which -a claude

170 ```

171 

172 Se isso não imprimir nada, nenhum `claude` está em seu PATH ainda. Volte para [Verifique seu PATH](#verify-your-path).

173 

174 Verifique os três locais de onde um binário `claude` pode vir. `~/.local/bin/claude` é o instalador nativo, `~/.claude/local/` é uma instalação npm local legada criada por versões antigas do Claude Code, e a lista npm global mostra uma instalação `-g`:

175 

176 ```bash theme={null}

177 ls -la ~/.local/bin/claude

178 ```

179 

180 ```bash theme={null}

181 ls -la ~/.claude/local/

182 ```

183 

184 ```bash theme={null}

185 npm -g ls @anthropic-ai/claude-code 2>/dev/null

186 ```

187 </Tab>

188 

189 <Tab title="Windows PowerShell">

190 Liste todos os binários `claude` encontrados em seu PATH:

191 

192 ```powershell theme={null}

193 where.exe claude

194 ```

195 

196 Verifique se o instalador nativo colocou um binário:

197 

198 ```powershell theme={null}

199 Test-Path "$env:USERPROFILE\.local\bin\claude.exe"

200 ```

201 </Tab>

202</Tabs>

203 

204Se você encontrar múltiplas instalações, mantenha apenas uma. A instalação nativa em `~/.local/bin/claude` no macOS/Linux ou `%USERPROFILE%\.local\bin\claude.exe` no Windows é recomendada. Remova as extras:

205 

206Desinstale uma instalação npm global:

207 

208```bash theme={null}

209npm uninstall -g @anthropic-ai/claude-code

210```

211 

212Remova a instalação npm local legada:

213 

214```bash theme={null}

215rm -rf ~/.claude/local

216```

217 

218No Windows, use PowerShell:

219 

220```powershell theme={null}

221Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\local"

222```

223 

224Remova uma instalação Homebrew no macOS. Se você instalou o cask `claude-code@latest`, substitua esse nome:

225 

226```bash theme={null}

227brew uninstall --cask claude-code

228```

229 

230Remova uma instalação WinGet no Windows:

231 

232```powershell theme={null}

233winget uninstall Anthropic.ClaudeCode

234```

235 

236### Verifique permissões de diretório

237 

238O instalador precisa de acesso de escrita a `~/.local/bin/` e `~/.claude/` no macOS e Linux. No Windows, o local de instalação está sob `%USERPROFILE%`, que é gravável pelo seu usuário por padrão, então esta seção raramente se aplica lá.

239 

240Verifique se os diretórios são graváveis:

241 

242```bash theme={null}

243test -w ~/.local/bin && echo "writable" || echo "not writable"

244test -w ~/.claude && echo "writable" || echo "not writable"

245```

246 

247Se algum diretório não for gravável, crie o diretório de instalação e defina seu usuário como proprietário:

248 

249```bash theme={null}

250sudo mkdir -p ~/.local/bin

251sudo chown -R $(whoami) ~/.local

252```

253 

254### Verifique se o binário funciona

255 

256Se `claude --version` imprime uma versão mas `claude` falha ou trava na inicialização, execute estas verificações para estreitar a causa. Se `claude --version` disser comando não encontrado, vá para [Verifique seu PATH](#verify-your-path) primeiro; os comandos abaixo assumem que `claude` está em seu PATH.

257 

258Confirme que o binário existe e é executável:

259 

260```bash theme={null}

261ls -la "$(command -v claude)"

262```

263 

264No Windows, use PowerShell:

265 

266```powershell theme={null}

267Get-Command claude | Select-Object Source

268```

269 

270No Linux, verifique se há bibliotecas compartilhadas ausentes. Se `ldd` mostrar bibliotecas ausentes, você pode precisar instalar pacotes do sistema. No Alpine Linux e outras distribuições baseadas em musl, consulte [Alpine Linux setup](/pt/setup#alpine-linux-and-musl-based-distributions).

271 

272```bash theme={null}

273ldd "$(command -v claude)" | grep "not found"

274```

275 

276Confirme que o binário pode executar:

277 

278```bash theme={null}

279claude --version

280```

281 

282## Problemas comuns de instalação

283 

284Estes são os problemas de instalação mais frequentemente encontrados e suas soluções.

285 

286### Install script returns HTML instead of a shell script

287 

288Ao executar o comando de instalação, você pode ver um destes erros:

289 

290```text theme={null}

291bash: line 1: syntax error near unexpected token `<'

292bash: line 1: `<!DOCTYPE html>'

293```

294 

295No PowerShell, o mesmo problema aparece como:

296 

297```text theme={null}

298Invoke-Expression: Missing argument in parameter list.

299```

300 

301Isso significa que a URL de instalação retornou uma página HTML em vez do script de instalação. Se a página HTML disser "App unavailable in region," Claude Code não está disponível em seu país. Consulte [supported countries](https://www.anthropic.com/supported-countries).

302 

303Caso contrário, isso pode acontecer devido a problemas de rede, roteamento regional ou uma interrupção temporária do serviço.

304 

305**Soluções:**

306 

3071. **Use um método de instalação alternativo**:

308 

309 No macOS, instale via Homebrew:

310 

311 ```bash theme={null}

312 brew install --cask claude-code

313 ```

314 

315 No Windows, instale via WinGet:

316 

317 ```powershell theme={null}

318 winget install Anthropic.ClaudeCode

319 ```

320 

3212. **Tente novamente após alguns minutos**: o problema é frequentemente temporário. Aguarde e tente o comando original novamente.

322 

323### `command not found: claude` after installation

324 

325A instalação foi concluída mas `claude` não funciona. O erro exato varia por plataforma:

326 

327| Plataforma | Mensagem de erro |

328| :---------- | :--------------------------------------------------------------------- |

329| macOS | `zsh: command not found: claude` |

330| Linux | `bash: claude: command not found` |

331| Windows CMD | `'claude' is not recognized as an internal or external command` |

332| PowerShell | `claude : The term 'claude' is not recognized as the name of a cmdlet` |

333 

334Isso significa que o diretório de instalação não está no caminho de pesquisa do seu shell. Consulte [Verify your PATH](#verify-your-path) para a correção em cada plataforma.

335 

336### `curl: (56) Failure writing output to destination`

337 

338O comando `curl ... | bash` baixa o script e o encanua para Bash para execução. Este erro significa que a conexão foi interrompida antes do script terminar de baixar. As causas comuns incluem interrupções de rede, o download sendo bloqueado no meio do caminho ou limites de recursos do sistema.

339 

340**Soluções:**

341 

3421. **Verifique a estabilidade da rede**: Os binários do Claude Code são hospedados em `downloads.claude.ai`. Teste se você consegue alcançá-lo:

343 ```bash theme={null}

344 curl -sI https://downloads.claude.ai/claude-code-releases/latest

345 ```

346 Uma linha `HTTP/2 200` significa que você alcançou o servidor e a falha original foi provavelmente intermitente; tente novamente o comando de instalação. Se você vir `Could not resolve host` ou um tempo limite de conexão, sua rede está bloqueando o download.

347 

3482. **Tente um método de instalação alternativo**:

349 

350 No macOS:

351 

352 ```bash theme={null}

353 brew install --cask claude-code

354 ```

355 

356 No Windows:

357 

358 ```powershell theme={null}

359 winget install Anthropic.ClaudeCode

360 ```

361 

362### TLS or SSL connection errors

363 

364Erros como `curl: (35) TLS connect error`, `schannel: next InitializeSecurityContext failed`, ou `Could not establish trust relationship for the SSL/TLS secure channel` do PowerShell indicam falhas de handshake TLS.

365 

366**Soluções:**

367 

3681. **Atualize seus certificados CA do sistema**:

369 

370 No Ubuntu/Debian:

371 

372 ```bash theme={null}

373 sudo apt-get update && sudo apt-get install ca-certificates

374 ```

375 

376 No macOS, o curl do sistema usa o armazenamento de confiança do Keychain; atualizar o macOS em si atualiza os certificados raiz.

377 

3782. **No Windows, ative TLS 1.2** no PowerShell antes de executar o instalador:

379 ```powershell theme={null}

380 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

381 irm https://claude.ai/install.ps1 | iex

382 ```

383 

3843. **Verifique se há interferência de proxy ou firewall**: proxies corporativos que realizam inspeção TLS podem causar esses erros, incluindo `unable to get local issuer certificate` e `SELF_SIGNED_CERT_IN_CHAIN`. Para a etapa de instalação, aponte curl para seu pacote CA corporativo com `--cacert`:

385 ```bash theme={null}

386 curl --cacert /path/to/corporate-ca.pem -fsSL https://claude.ai/install.sh | bash

387 ```

388 Para o Claude Code em si uma vez instalado, defina `NODE_EXTRA_CA_CERTS` para que as solicitações de API confiem no mesmo pacote:

389 ```bash theme={null}

390 export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem

391 ```

392 Peça à sua equipe de TI pelo arquivo de certificado se você não tiver. Você também pode tentar em uma conexão direta para confirmar que o proxy é a causa.

393 

3944. **No Windows, ignore verificações de revogação de certificado** se você vir `CRYPT_E_NO_REVOCATION_CHECK (0x80092012)` ou `CRYPT_E_REVOCATION_OFFLINE (0x80092013)`. Estes significam que curl alcançou o servidor mas sua rede bloqueia a pesquisa de revogação de certificado, o que é comum atrás de firewalls corporativos. Adicione `--ssl-revoke-best-effort` ao comando de instalação:

395 ```batch theme={null}

396 curl --ssl-revoke-best-effort -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

397 ```

398 Alternativamente, instale com `winget install Anthropic.ClaudeCode`, que evita curl completamente.

399 

400### `Failed to fetch version from downloads.claude.ai`

401 

402O instalador não conseguiu alcançar o servidor de download. Isso normalmente significa que `downloads.claude.ai` está bloqueado em sua rede.

403 

404**Soluções:**

405 

4061. **Teste a conectividade diretamente**:

407 ```bash theme={null}

408 curl -sI https://downloads.claude.ai/claude-code-releases/latest

409 ```

410 

4112. **Se atrás de um proxy**, defina `HTTPS_PROXY` para que o instalador possa rotear através dele. Consulte [proxy configuration](/pt/network-config#proxy-configuration) para detalhes.

412 ```bash theme={null}

413 export HTTPS_PROXY=http://proxy.example.com:8080

414 curl -fsSL https://claude.ai/install.sh | bash

415 ```

416 

4173. **Se em uma rede restrita**, tente uma rede diferente ou VPN, ou use um método de instalação alternativo:

418 

419 No macOS:

420 

421 ```bash theme={null}

422 brew install --cask claude-code

423 ```

424 

425 No Windows:

426 

427 ```powershell theme={null}

428 winget install Anthropic.ClaudeCode

429 ```

430 

431### Wrong install command on Windows

432 

433Se você vir `'irm' is not recognized`, `The token '&&' is not valid`, ou `'bash' is not recognized as the name of a cmdlet`, você copiou o comando de instalação para um shell ou sistema operacional diferente.

434 

435* **`irm` não reconhecido**: você está em CMD, não PowerShell. Você tem duas opções:

436 

437 Abra PowerShell procurando por "PowerShell" no menu Iniciar e execute o comando de instalação original:

438 

439 ```powershell theme={null}

440 irm https://claude.ai/install.ps1 | iex

441 ```

442 

443 Ou fique em CMD e use o instalador CMD em vez disso:

444 

445 ```batch theme={null}

446 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

447 ```

448 

449* **`&&` não válido**: você está em PowerShell mas executou o comando do instalador CMD. Use o instalador PowerShell:

450 ```powershell theme={null}

451 irm https://claude.ai/install.ps1 | iex

452 ```

453 

454* **`bash` não reconhecido**: você executou o instalador macOS/Linux no Windows. Use o instalador PowerShell em vez disso:

455 ```powershell theme={null}

456 irm https://claude.ai/install.ps1 | iex

457 ```

458 

459### `The process cannot access the file` during Windows install

460 

461Se o instalador PowerShell falhar com `Failed to download binary: The process cannot access the file ... because it is being used by another process`, o instalador não conseguiu escrever em `%USERPROFILE%\.claude\downloads`. Isso geralmente significa que uma tentativa de instalação anterior ainda está em execução, ou o software antivírus está verificando um binário parcialmente baixado nessa pasta.

462 

463Feche qualquer outra janela do PowerShell executando o instalador e aguarde as verificações de antivírus liberarem o arquivo. Depois delete a pasta de downloads e execute o instalador novamente:

464 

465```powershell theme={null}

466Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\downloads"

467irm https://claude.ai/install.ps1 | iex

468```

469 

470### Install killed on low-memory Linux servers

471 

472Se você vir `Killed` durante a instalação em um VPS ou instância em nuvem:

473 

474```text theme={null}

475Setting up Claude Code...

476Installing Claude Code native build latest...

477bash: line 142: 34803 Killed "$binary_path" install ${TARGET:+"$TARGET"}

478```

479 

480O assassino OOM do Linux encerrou o processo porque o sistema ficou sem memória. Claude Code requer pelo menos 4 GB de RAM disponível.

481 

482**Soluções:**

483 

4841. **Adicione espaço de swap** se seu servidor tiver RAM limitada. Swap usa espaço em disco como memória de overflow, permitindo que a instalação seja concluída mesmo com RAM física baixa.

485 

486 Crie um arquivo de swap de 2 GB e ative-o:

487 

488 ```bash theme={null}

489 sudo fallocate -l 2G /swapfile

490 sudo chmod 600 /swapfile

491 sudo mkswap /swapfile

492 sudo swapon /swapfile

493 ```

494 

495 Depois tente a instalação novamente:

496 

497 ```bash theme={null}

498 curl -fsSL https://claude.ai/install.sh | bash

499 ```

500 

5012. **Feche outros processos** para liberar memória antes de instalar.

502 

5033. **Use uma instância maior** se possível. Claude Code requer pelo menos 4 GB de RAM.

504 

505### Install hangs in Docker

506 

507Ao instalar Claude Code em um contêiner Docker, instalar como root em `/` pode causar travamentos.

508 

509**Soluções:**

510 

5111. **Defina um diretório de trabalho** antes de executar o instalador. Quando executado de `/`, o instalador verifica todo o sistema de arquivos, o que causa uso excessivo de memória. Definir `WORKDIR` limita a verificação a um pequeno diretório:

512 ```dockerfile theme={null}

513 WORKDIR /tmp

514 RUN curl -fsSL https://claude.ai/install.sh | bash

515 ```

516 

5172. **Aumente os limites de memória do Docker** se usar Docker Desktop:

518 ```bash theme={null}

519 docker build --memory=4g .

520 ```

521 

522### Claude Desktop overrides the `claude` command on Windows

523 

524Se você instalou uma versão mais antiga do Claude Desktop, ele pode registrar um `Claude.exe` no diretório `WindowsApps` que tem prioridade de PATH sobre Claude Code CLI. Executar `claude` abre o aplicativo Desktop em vez do CLI.

525 

526Atualize Claude Desktop para a versão mais recente para corrigir este problema.

527 

528### Claude Code on Windows requires either Git for Windows (for bash) or PowerShell

529 

530Claude Code no Windows nativo precisa de pelo menos um shell: [Git for Windows](https://git-scm.com/downloads/win) para Bash, ou PowerShell. Quando nenhum é encontrado, este erro aparece na inicialização. Se apenas PowerShell for encontrado, Claude Code usa a ferramenta PowerShell em vez de Bash.

531 

532**Se nenhum estiver instalado**, instale um:

533 

534* Git for Windows: baixe de [git-scm.com/downloads/win](https://git-scm.com/downloads/win). Durante a configuração, selecione "Add to PATH." Reinicie seu terminal após instalar.

535* PowerShell 7: baixe de [aka.ms/powershell](https://aka.ms/powershell).

536 

537**Se Git já estiver instalado** mas Claude Code não conseguir encontrá-lo, defina o caminho em seu [settings.json file](/pt/settings):

538 

539```json theme={null}

540{

541 "env": {

542 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

543 }

544}

545```

546 

547Se seu Git estiver instalado em outro lugar, encontre o caminho executando `where.exe git` no PowerShell e use o caminho `bin\bash.exe` desse diretório.

548 

549### Claude Code does not support 32-bit Windows

550 

551O Windows inclui duas entradas do PowerShell no menu Iniciar: `Windows PowerShell` e `Windows PowerShell (x86)`. A entrada x86 é executada como um processo de 32 bits e dispara este erro mesmo em uma máquina de 64 bits. Para verificar qual caso você está, execute isto na mesma janela que produziu o erro:

552 

553```powershell theme={null}

554[Environment]::Is64BitOperatingSystem

555```

556 

557Se isso imprimir `True`, seu sistema operacional está bem. Feche a janela, abra `Windows PowerShell` sem o sufixo x86 e execute o comando de instalação novamente.

558 

559Se isso imprimir `False`, você está em uma edição de 32 bits do Windows. Claude Code requer um sistema operacional de 64 bits. Consulte os [system requirements](/pt/setup#system-requirements).

560 

561### Linux musl or glibc binary mismatch

562 

563Se você vir erros sobre bibliotecas compartilhadas ausentes como `libstdc++.so.6` ou `libgcc_s.so.1` após a instalação, o instalador pode ter baixado a variante binária errada para seu sistema.

564 

565```text theme={null}

566Error loading shared library libstdc++.so.6: No such file or directory

567```

568 

569Isso pode acontecer em sistemas baseados em glibc que têm pacotes de compilação cruzada musl instalados, fazendo o instalador detectar incorretamente o sistema como musl.

570 

571**Soluções:**

572 

5731. **Verifique qual libc seu sistema usa**:

574 ```bash theme={null}

575 ldd --version 2>&1 | head -1

576 ```

577 A saída mencionando `GNU libc` ou `GLIBC` significa glibc. A saída mencionando `musl` significa musl.

578 

5792. **Se você estiver em glibc mas recebeu o binário musl**, remova a instalação e reinstale. Você também pode baixar manualmente o binário correto usando o manifesto em `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`. Abra um [GitHub issue](https://github.com/anthropics/claude-code/issues) com a saída de `ldd --version` e `ls /lib/libc.musl*`.

580 

5813. **Se você estiver realmente em musl**, como Alpine Linux, instale os pacotes necessários:

582 ```bash theme={null}

583 apk add libgcc libstdc++ ripgrep

584 ```

585 

586### `Illegal instruction`

587 

588Se executar `claude` ou o instalador imprimir `Illegal instruction`, o binário nativo usa instruções de CPU que seu processador não suporta. Existem duas causas distintas.

589 

590**Incompatibilidade de arquitetura.** O instalador baixou o binário errado, por exemplo x86 em um servidor ARM. Verifique com `uname -m` no macOS ou Linux, ou `$env:PROCESSOR_ARCHITECTURE` no PowerShell. Se o resultado não corresponder ao binário que você recebeu, [abra um GitHub issue](https://github.com/anthropics/claude-code/issues) com a saída.

591 

592**Conjunto de instruções AVX ausente.** Se sua arquitetura estiver correta mas você ainda vir `Illegal instruction`, seu CPU provavelmente não tem AVX ou outra instrução que o binário requer. Isso afeta aproximadamente processadores Intel e AMD anteriores a 2013, e máquinas virtuais onde o hipervisor não passa AVX para o convidado.

593 

594Em um VPS ou VM, execute `grep -m1 -ow avx /proc/cpuinfo`; um resultado vazio significa que AVX não está disponível para o convidado.

595 

596Não há solução alternativa de binário nativo; acompanhe [issue #50384](https://github.com/anthropics/claude-code/issues/50384) para status e inclua seu modelo de CPU de `grep -m1 "model name" /proc/cpuinfo` no Linux ou `sysctl -n machdep.cpu.brand_string` no macOS ao relatar.

597 

598Métodos de instalação alternativos baixam o mesmo binário nativo e não resolverão nenhuma das causas.

599 

600### `dyld: cannot load` on macOS

601 

602Se você vir `dyld: cannot load`, `dyld: Symbol not found`, ou `Abort trap: 6` durante a instalação, o binário é incompatível com sua versão ou hardware do macOS.

603 

604```text theme={null}

605dyld: cannot load 'claude-2.1.42-darwin-x64' (load command 0x80000034 is unknown)

606Abort trap: 6

607```

608 

609Um erro `Symbol not found` que referencia `libicucore` também indica que sua versão do macOS é mais antiga do que o binário suporta:

610 

611```text theme={null}

612dyld: Symbol not found: _ubrk_clone

613 Referenced from: claude-darwin-x64 (which was built for Mac OS X 13.0)

614 Expected in: /usr/lib/libicucore.A.dylib

615```

616 

617**Soluções:**

618 

6191. **Verifique sua versão do macOS**: Claude Code requer macOS 13.0 ou posterior. Abra o menu Apple e selecione About This Mac para verificar sua versão.

620 

6212. **Atualize o macOS** se você estiver em uma versão mais antiga. O binário usa comandos de carregamento e bibliotecas do sistema que versões mais antigas do macOS não suportam. Métodos de instalação alternativos como Homebrew baixam o mesmo binário e não resolverão este erro.

622 

623### `Exec format error` on WSL1

624 

625Se executar `claude` em WSL imprimir `cannot execute binary file: Exec format error`, você está em WSL1 e atingindo uma regressão de binário nativo conhecida rastreada em [issue #38788](https://github.com/anthropics/claude-code/issues/38788). Os cabeçalhos do programa do binário mudaram de uma forma que o carregador do WSL1 não consegue lidar.

626 

627A correção mais limpa é converter sua distribuição para WSL2 do PowerShell:

628 

629```powershell theme={null}

630wsl --set-version <DistroName> 2

631```

632 

633Se você precisar ficar em WSL1, invoque o binário através do vinculador dinâmico. Adicione esta função a `~/.bashrc` dentro do WSL, substituindo o caminho se seu diretório inicial for diferente:

634 

635```bash theme={null}

636claude() {

637 /lib64/ld-linux-x86-64.so.2 "$(readlink -f "$HOME/.local/bin/claude")" "$@"

638}

639```

640 

641Depois execute `source ~/.bashrc` e tente novamente `claude`.

642 

643### npm install errors in WSL

644 

645Estes problemas se aplicam se você instalou Claude Code com `npm install -g` dentro do WSL. Se você usou o [native installer](/pt/setup), pule esta seção.

646 

647**Problemas de detecção de SO ou plataforma.** Se npm relatar uma incompatibilidade de plataforma durante a instalação, WSL provavelmente está pegando o `npm` do Windows. Execute `npm config set os linux` primeiro, depois instale com `npm install -g @anthropic-ai/claude-code --force`. Não use `sudo`.

648 

649**`exec: node: not found` ao executar `claude`.** Seu ambiente WSL provavelmente está usando a instalação do Windows do Node.js. Confirme com `which npm` e `which node`: caminhos começando com `/mnt/c/` são binários do Windows, enquanto caminhos Linux começam com `/usr/`. Para corrigir isso, instale Node via gerenciador de pacotes da sua distribuição Linux ou via [`nvm`](https://github.com/nvm-sh/nvm).

650 

651**Conflitos de versão nvm.** Se você tiver nvm instalado tanto em WSL quanto em Windows, alternar versões do Node em WSL pode quebrar porque WSL importa o PATH do Windows por padrão e o nvm do Windows tem prioridade. A causa mais comum é que nvm não está carregado em seu shell. Adicione o carregador nvm a `~/.bashrc` ou `~/.zshrc`:

652 

653```bash theme={null}

654export NVM_DIR="$HOME/.nvm"

655[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

656[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

657```

658 

659Ou carregue-o em sua sessão atual:

660 

661```bash theme={null}

662source ~/.nvm/nvm.sh

663```

664 

665Se nvm está carregado mas caminhos do Windows ainda têm prioridade, coloque explicitamente seu caminho do Node Linux:

666 

667```bash theme={null}

668export PATH="$HOME/.nvm/versions/node/$(node -v)/bin:$PATH"

669```

670 

671<Warning>

672 Evite desabilitar a importação de PATH do Windows via `appendWindowsPath = false` pois isso quebra a capacidade de chamar executáveis do Windows do WSL. Da mesma forma, evite desinstalar Node.js do Windows se você o usa para desenvolvimento do Windows.

673</Warning>

674 

675### Permission errors during installation

676 

677Se o instalador nativo falhar com erros de permissão, o diretório de destino pode não ser gravável. Consulte [Check directory permissions](#check-directory-permissions).

678 

679Se você instalou anteriormente com npm e está atingindo erros de permissão específicos do npm, mude para o instalador nativo:

680 

681```bash theme={null}

682curl -fsSL https://claude.ai/install.sh | bash

683```

684 

685### Native binary not found after npm install

686 

687O pacote npm `@anthropic-ai/claude-code` puxa o binário nativo através de uma dependência opcional por plataforma como `@anthropic-ai/claude-code-darwin-arm64`. Se executar `claude` após a instalação imprimir `Could not find native binary package "@anthropic-ai/claude-code-<platform>"`, verifique as seguintes causas:

688 

689* **Dependências opcionais estão desabilitadas.** Remova `--omit=optional` do seu comando npm install, `--no-optional` do pnpm, ou `--ignore-optional` do yarn, e verifique que `.npmrc` não define `optional=false`. Depois reinstale. O binário nativo é entregue apenas como uma dependência opcional, então não há fallback JavaScript se for ignorado.

690* **Plataforma não suportada.** Binários pré-compilados são publicados para `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64` e `win32-arm64`. Claude Code não envia um binário para outras plataformas; consulte os [system requirements](/pt/setup#system-requirements).

691* **Espelho npm corporativo está faltando os pacotes de plataforma.** Certifique-se de que seu registro espelha todos os oito pacotes `@anthropic-ai/claude-code-*` de plataforma além do pacote meta.

692 

693Instalar com `--ignore-scripts` não dispara este erro. A etapa de pós-instalação que vincula o binário no lugar é ignorada, então Claude Code volta a um wrapper que localiza e gera o binário de plataforma em cada inicialização. Isso funciona mas inicia mais lentamente; reinstale com scripts habilitados para execução direta.

694 

695## Login e autenticação

696 

697Estas seções abordam falhas de login, erros OAuth e problemas de token.

698 

699### Redefinir seu login

700 

701Quando o login falha e a causa não é óbvia, uma re-autenticação limpa resolve a maioria dos casos:

702 

7031. Execute `/logout` para sair completamente

7042. Feche Claude Code

7053. Reinicie com `claude` e complete o processo de autenticação novamente

706 

707Se o navegador não abrir automaticamente durante o login, pressione `c` para copiar a URL OAuth para sua área de transferência e depois cole-a em um navegador manualmente. Isso também funciona quando a URL se estende por várias linhas em um terminal estreito ou SSH e não pode ser clicada diretamente.

708 

709### OAuth error: Invalid code

710 

711Se você vir `OAuth error: Invalid code. Please make sure the full code was copied`, o código de login expirou ou foi truncado durante cópia e cola.

712 

713**Soluções:**

714 

715* Pressione Enter para tentar novamente e complete o login rapidamente após o navegador abrir

716* Digite `c` para copiar a URL completa se o navegador não abrir automaticamente

717* Se usar uma sessão remota/SSH, o navegador pode abrir na máquina errada. Copie a URL exibida no terminal e abra-a em seu navegador local em vez disso.

718 

719### 403 Forbidden after login

720 

721Se você vir `API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}` após fazer login:

722 

723* **Usuários Claude Pro/Max**: verifique se sua assinatura está ativa em [claude.ai/settings](https://claude.ai/settings)

724* **Usuários do Anthropic Console**: confirme que sua conta tem a função "Claude Code" ou "Developer". Os administradores atribuem isso no Anthropic Console em Settings → Members.

725* **Atrás de um proxy**: proxies corporativos podem interferir com solicitações de API. Consulte [network configuration](/pt/network-config) para configuração de proxy.

726 

727### This organization has been disabled with an active subscription

728 

729Se você vir `API Error: 400 ... "This organization has been disabled"` apesar de ter uma assinatura Claude ativa, uma variável de ambiente `ANTHROPIC_API_KEY` está substituindo sua assinatura. Isso comumente acontece quando uma chave de API antiga de um empregador anterior ou projeto ainda está definida em seu perfil de shell.

730 

731Quando `ANTHROPIC_API_KEY` está presente e você a aprovou, Claude Code usa essa chave em vez das credenciais OAuth da sua assinatura. Em modo não interativo com a flag `-p`, a chave é sempre usada quando presente. Consulte [authentication precedence](/pt/authentication#authentication-precedence) para a ordem de resolução completa.

732 

733Para usar sua assinatura em vez disso, desdefina a variável de ambiente e remova-a do seu perfil de shell:

734 

735```bash theme={null}

736unset ANTHROPIC_API_KEY

737claude

738```

739 

740Verifique `~/.zshrc`, `~/.bashrc` ou `~/.profile` para linhas `export ANTHROPIC_API_KEY=...` e remova-as para tornar a alteração permanente. No Windows, verifique seu perfil PowerShell em `$PROFILE` e suas variáveis de ambiente do usuário para `ANTHROPIC_API_KEY`. Execute `/status` dentro do Claude Code para confirmar qual método de autenticação está ativo.

741 

742### OAuth login fails in WSL2, SSH, or containers

743 

744Quando Claude Code é executado em WSL2, em uma máquina remota via SSH ou dentro de um container, o navegador geralmente abre em um host diferente e seu redirecionamento não consegue alcançar o servidor de callback local do Claude Code. Depois que você faz login, o navegador mostra um código de login em vez de redirecionar automaticamente. Cole esse código no terminal no prompt `Paste code here if prompted` para completar o login.

745 

746Se o navegador não abrir nada do WSL2, defina a variável de ambiente `BROWSER` para o caminho do seu navegador do Windows:

747 

748```bash theme={null}

749export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

750claude

751```

752 

753Alternativamente, pressione `c` no prompt de login interativo para copiar a URL OAuth, ou copie a URL que `claude auth login` imprime, e abra-a em um navegador em sua máquina local.

754 

755Se colar o código no prompt interativo não fizer nada, o atalho de cola do seu terminal provavelmente não está alcançando o campo de entrada. Tente o atalho de cola alternativo do seu terminal, frequentemente clique direito ou Shift+Insert no Windows Terminal, ou use `claude auth login` em vez disso, que lê o código colado da entrada padrão:

756 

757```bash theme={null}

758claude auth login

759```

760 

761Este fallback também se aplica no Windows nativo ou qualquer terminal onde colar no prompt interativo falha.

762 

763### Not logged in or token expired

764 

765Se Claude Code solicitar que você faça login novamente após uma sessão, seu token OAuth pode ter expirado.

766 

767Execute `/login` para re-autenticar. Se isso acontecer frequentemente, verifique se seu relógio do sistema está preciso, pois a validação de token depende de timestamps corretos.

768 

769No macOS, o login também pode falhar quando o Keychain está bloqueado ou sua senha está fora de sincronização com sua senha de conta, o que impede Claude Code de salvar credenciais. Execute `claude doctor` para verificar o acesso ao Keychain. Para desbloquear o Keychain manualmente, execute `security unlock-keychain ~/Library/Keychains/login.keychain-db`. Se desbloquear não ajudar, abra Keychain Access, selecione o keychain `login` e escolha Edit > Change Password for Keychain "login" para ressincronizá-lo com sua senha de conta.

770 

771### Bedrock, Vertex, or Foundry credentials not loading

772 

773Se você configurou Claude Code para usar um provedor de nuvem e vê `Could not load credentials from any providers` no Bedrock, `Could not load the default credentials` no Vertex, ou `ChainedTokenCredential authentication failed` no Foundry, seu CLI do provedor de nuvem provavelmente não está autenticado no shell atual.

774 

775Para Bedrock, confirme que suas credenciais AWS são válidas:

776 

777```bash theme={null}

778aws sts get-caller-identity

779```

780 

781Para Vertex AI, confirme que `ANTHROPIC_VERTEX_PROJECT_ID` e `CLOUD_ML_REGION` estão definidos em seu shell, depois defina credenciais padrão de aplicativo:

782 

783```bash theme={null}

784gcloud auth application-default login

785```

786 

787Para Microsoft Foundry, confirme que `ANTHROPIC_FOUNDRY_API_KEY` está definido, ou faça login com a CLI do Azure para que a cadeia de credenciais padrão possa encontrar sua conta:

788 

789```bash theme={null}

790az login

791```

792 

793Se as credenciais funcionam em seu terminal mas não na extensão VS Code ou JetBrains, o processo IDE provavelmente não herdou seu ambiente de shell. Defina as variáveis de ambiente do provedor nas configurações do próprio IDE, ou inicie o IDE a partir de um terminal onde elas já estão exportadas.

794 

795Consulte [Amazon Bedrock](/pt/amazon-bedrock), [Google Vertex AI](/pt/google-vertex-ai), ou [Microsoft Foundry](/pt/microsoft-foundry) para configuração completa do provedor.

796 

797## Still stuck

798 

799Se nenhum dos itens acima resolver seu problema:

800 

8011. Verifique o [GitHub repository](https://github.com/anthropics/claude-code/issues) para problemas conhecidos, ou abra um novo com seu sistema operacional, o comando de instalação que você executou e a saída de erro completa

8022. Se `claude --version` funciona mas algo mais está errado, execute `claude doctor` para um relatório de diagnóstico automatizado

8033. Se você conseguir iniciar uma sessão, use `/feedback` dentro do Claude Code para relatar o problema

troubleshooting.md +121 −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# Troubleshooting

6 

7> Corrija o alto uso de CPU ou memória, travamentos, thrashing de auto-compact e problemas de pesquisa no Claude Code, e encontre a página correta para outros problemas.

8 

9Esta página cobre problemas de desempenho, estabilidade e pesquisa uma vez que Claude Code está em execução. Para outros problemas, comece com a página que corresponde ao local onde você está preso:

10 

11| Sintoma | Ir para |

12| :-------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |

13| `command not found`, falha na instalação, problemas de PATH, `EACCES`, erros de TLS | [Troubleshoot installation and login](/pt/troubleshoot-install) |

14| Loops de login, erros OAuth, `403 Forbidden`, "organization disabled", credenciais Bedrock/Vertex/Foundry | [Troubleshoot installation and login](/pt/troubleshoot-install#login-and-authentication) |

15| Configurações não aplicadas, hooks não disparando, servidores MCP não carregando | [Debug your configuration](/pt/debug-your-config) |

16| `API Error: 5xx`, `529 Overloaded`, `429`, erros de validação de solicitação | [Error reference](/pt/errors) |

17| `model not found` ou `you may not have access to it` | [Error reference](/pt/errors#theres-an-issue-with-the-selected-model) |

18| Extensão VS Code não conectando ou detectando Claude | [VS Code integration](/pt/vs-code#fix-common-issues) |

19| Plugin JetBrains ou IDE não detectado | [JetBrains integration](/pt/jetbrains#troubleshooting) |

20| Alto uso de CPU ou memória, respostas lentas, travamentos, pesquisa não encontrando arquivos | [Performance and stability](#performance-and-stability) abaixo |

21 

22Se você não tem certeza qual se aplica, execute `/doctor` dentro do Claude Code para uma verificação automatizada de sua instalação, configurações, servidores MCP e uso de contexto. Se `claude` não iniciar completamente, execute `claude doctor` do seu shell em vez disso.

23 

24## Performance and stability

25 

26Essas seções cobrem problemas relacionados ao uso de recursos, responsividade e comportamento de pesquisa.

27 

28### Alto uso de CPU ou memória

29 

30Claude Code é projetado para funcionar com a maioria dos ambientes de desenvolvimento, mas pode consumir recursos significativos ao processar grandes bases de código. Se você está experimentando problemas de desempenho:

31 

321. Use `/compact` regularmente para reduzir o tamanho do contexto

332. Feche e reinicie Claude Code entre tarefas principais

343. Considere adicionar grandes diretórios de compilação ao seu arquivo `.gitignore`

35 

36Se o uso de memória permanecer alto após essas etapas, execute `/heapdump` para escrever um snapshot de heap JavaScript e um detalhamento de memória para `~/Desktop`. No Linux sem uma pasta Desktop, os arquivos são escritos em seu diretório home.

37 

38O detalhamento mostra resident set size, JS heap, array buffers e memória nativa não contabilizada, o que ajuda a identificar se o crescimento está em objetos JavaScript ou em código nativo. Para inspecionar retentores, abra o arquivo `.heapsnapshot` no Chrome DevTools em Memory → Load. Anexe ambos os arquivos ao relatar um problema de memória no [GitHub](https://github.com/anthropics/claude-code/issues).

39 

40### Auto-compactação para com erro de thrashing

41 

42Se você vir `Autocompact is thrashing: the context refilled to the limit...`, a compactação automática foi bem-sucedida mas um arquivo ou saída de ferramenta imediatamente refilled a janela de contexto várias vezes seguidas. Claude Code para de tentar novamente para evitar desperdiçar chamadas de API em um loop que não está fazendo progresso.

43 

44Para recuperar:

45 

461. Peça ao Claude para ler o arquivo oversized em pedaços menores, como um intervalo de linha específico ou função, em vez do arquivo inteiro

472. Execute `/compact` com um foco que descarta a saída grande, por exemplo `/compact keep only the plan and the diff`

483. Mova o trabalho de arquivo grande para um [subagent](/pt/sub-agents) para que ele execute em uma janela de contexto separada

494. Execute `/clear` se a conversa anterior não for mais necessária

50 

51### Comando trava ou congela

52 

53Se Claude Code parece não responsivo:

54 

551. Pressione Ctrl+C para tentar cancelar a operação atual

562. Se não responsivo, você pode precisar fechar o terminal e reiniciar

57 

58Reiniciar não perde sua conversa. Execute `claude --resume` no mesmo diretório para retomar a sessão.

59 

60### Problemas de pesquisa e descoberta

61 

62Se a ferramenta Search, menções `@file`, agentes personalizados ou skills personalizados não estão encontrando arquivos, o binário `ripgrep` incluído pode não ser executado em seu sistema. Instale o pacote `ripgrep` da sua plataforma e diga ao Claude Code para usá-lo em vez disso:

63 

64<Tabs>

65 <Tab title="macOS">

66 ```bash theme={null}

67 brew install ripgrep

68 ```

69 </Tab>

70 

71 <Tab title="Ubuntu/Debian">

72 ```bash theme={null}

73 sudo apt install ripgrep

74 ```

75 </Tab>

76 

77 <Tab title="Alpine">

78 ```bash theme={null}

79 apk add ripgrep

80 ```

81 </Tab>

82 

83 <Tab title="Arch">

84 ```bash theme={null}

85 pacman -S ripgrep

86 ```

87 </Tab>

88 

89 <Tab title="Windows">

90 ```powershell theme={null}

91 winget install BurntSushi.ripgrep.MSVC

92 ```

93 </Tab>

94</Tabs>

95 

96Depois defina `USE_BUILTIN_RIPGREP=0` em seu [environment](/pt/env-vars).

97 

98### Resultados de pesquisa lentos ou incompletos em WSL

99 

100Penalidades de desempenho de leitura de disco ao [trabalhar entre sistemas de arquivos em WSL](https://learn.microsoft.com/en-us/windows/wsl/filesystems) podem resultar em menos correspondências do que o esperado ao usar Claude Code em WSL. A pesquisa ainda funciona, mas retorna menos resultados do que em um sistema de arquivos nativo.

101 

102<Note>

103 `/doctor` mostrará Search como OK neste caso.

104</Note>

105 

106**Soluções:**

107 

1081. **Envie pesquisas mais específicas**: reduza o número de arquivos pesquisados especificando diretórios ou tipos de arquivo: "Search for JWT validation logic in the auth-service package" ou "Find use of md5 hash in JS files".

109 

1102. **Mova o projeto para o sistema de arquivos Linux**: se possível, certifique-se de que seu projeto está localizado no sistema de arquivos Linux (`/home/`) em vez do sistema de arquivos do Windows (`/mnt/c/`).

111 

1123. **Use Windows nativo em vez disso**: considere executar Claude Code nativamente no Windows em vez de através de WSL, para melhor desempenho do sistema de arquivos.

113 

114## Get more help

115 

116Se você está experimentando problemas não cobertos aqui:

117 

1181. Execute `/doctor` para verificar a saúde da instalação, validade das configurações, configuração de MCP e uso de contexto em uma única passagem

1192. Use o comando `/feedback` dentro do Claude Code para relatar problemas diretamente à Anthropic

1203. Verifique o [repositório GitHub](https://github.com/anthropics/claude-code) para problemas conhecidos

1214. Pergunte ao Claude diretamente sobre suas capacidades e recursos. Claude tem acesso integrado à sua documentação.

ultraplan.md +84 −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# Planejar na nuvem com ultraplan

6 

7> Inicie um plano a partir da sua CLI, elabore-o no Claude Code na web e execute-o remotamente ou de volta no seu terminal

8 

9<Note>

10 Ultraplan está em visualização de pesquisa e requer Claude Code v2.1.91 ou posterior. O comportamento e as capacidades podem mudar com base no feedback.

11</Note>

12 

13Ultraplan entrega uma tarefa de planejamento da sua CLI local para uma sessão de [Claude Code na web](/pt/claude-code-on-the-web) em execução no [modo de plano](/pt/permission-modes#analyze-before-you-edit-with-plan-mode). Claude elabora o plano na nuvem enquanto você continua trabalhando no seu terminal. Quando o plano estiver pronto, você o abre no seu navegador para comentar em seções específicas, solicitar revisões e escolher onde executá-lo.

14 

15Isso é útil quando você deseja uma superfície de revisão mais rica do que a oferecida pelo terminal:

16 

17* **Feedback direcionado**: comente em seções individuais do plano em vez de responder ao todo

18* **Elaboração sem intervenção**: o plano é gerado remotamente, então seu terminal fica livre para outro trabalho

19* **Execução flexível**: aprove o plano para ser executado na web e abra uma solicitação de pull, ou envie-o de volta para seu terminal

20 

21Ultraplan requer uma conta de [Claude Code na web](/pt/claude-code-on-the-web) e um repositório GitHub. Como é executado na infraestrutura de nuvem da Anthropic, não está disponível ao usar Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry. A sessão na nuvem é executada no [ambiente de nuvem](/pt/claude-code-on-the-web#the-cloud-environment) padrão da sua conta. Se você ainda não tiver um ambiente de nuvem, o ultraplan cria um automaticamente quando é iniciado pela primeira vez.

22 

23## Iniciar ultraplan a partir da CLI

24 

25A partir da sua sessão CLI local, você pode iniciar o ultraplan de três maneiras:

26 

27* **Comando**: execute `/ultraplan` seguido do seu prompt

28* **Palavra-chave**: inclua a palavra `ultraplan` em qualquer lugar em um prompt normal

29* **A partir de um plano local**: quando Claude termina um plano local e mostra a caixa de diálogo de aprovação, escolha **Não, refinar com Ultraplan no Claude Code na web** para enviar o rascunho para a nuvem para iteração adicional

30 

31Por exemplo, para planejar uma migração de serviço com o comando:

32 

33```

34/ultraplan migrate the auth service from sessions to JWTs

35```

36 

37Os caminhos de comando e palavra-chave abrem uma caixa de diálogo de confirmação antes de iniciar. O caminho do plano local ignora essa caixa de diálogo porque essa seleção já serve como confirmação. Se [Remote Control](/pt/remote-control) estiver ativo, ele se desconecta quando o ultraplan é iniciado porque ambos os recursos ocupam a interface claude.ai/code e apenas um pode estar conectado por vez.

38 

39Após o lançamento da sessão na nuvem, o prompt de entrada da sua CLI mostra um indicador de status enquanto a sessão remota funciona:

40 

41| Status | Significado |

42| :----------------------------- | :------------------------------------------------------------------------------ |

43| `◇ ultraplan` | Claude está pesquisando sua base de código e elaborando o plano |

44| `◇ ultraplan needs your input` | Claude tem uma pergunta de esclarecimento; abra o link da sessão para responder |

45| `◆ ultraplan ready` | O plano está pronto para revisão no seu navegador |

46 

47Execute `/tasks` e selecione a entrada ultraplan para abrir uma visualização de detalhes com o link da sessão, atividade do agente e uma ação **Stop ultraplan**. Parar arquiva a sessão na nuvem e limpa o indicador; nada é salvo no seu terminal.

48 

49## Revisar e revisar o plano no seu navegador

50 

51Quando o status muda para `◆ ultraplan ready`, abra o link da sessão para visualizar o plano em claude.ai. O plano aparece em uma visualização de revisão dedicada:

52 

53* **Comentários inline**: destaque qualquer passagem e deixe um comentário para Claude abordar

54* **Reações com emoji**: reaja a uma seção para sinalizar aprovação ou preocupação sem escrever um comentário completo

55* **Barra lateral de estrutura de tópicos**: pule entre seções do plano

56 

57Quando você pede a Claude para abordar seus comentários, ela revisa o plano e apresenta um rascunho atualizado. Você pode iterar quantas vezes forem necessárias antes de escolher onde executar.

58 

59## Escolha onde executar

60 

61Quando o plano parecer correto, você escolhe no navegador se Claude o implementa na mesma sessão na nuvem ou o envia de volta para seu terminal em espera.

62 

63### Executar na web

64 

65Selecione **Approve Claude's plan and start coding** no seu navegador para que Claude o implemente na mesma sessão Claude Code na web. Seu terminal mostra uma confirmação, o indicador de status é limpo e o trabalho continua na nuvem. Quando a implementação terminar, [revise a diferença](/pt/claude-code-on-the-web#review-changes) e crie uma solicitação de pull a partir da interface web.

66 

67### Enviar o plano de volta para seu terminal

68 

69Selecione **Approve plan and teleport back to terminal** no seu navegador para implementar o plano localmente com acesso total ao seu ambiente. Esta opção aparece quando a sessão foi iniciada a partir da sua CLI e o terminal ainda está pesquisando. A sessão web é arquivada para que não continue funcionando em paralelo.

70 

71Seu terminal mostra o plano em uma caixa de diálogo intitulada **Ultraplan approved** com três opções:

72 

73* **Implement here**: injete o plano em sua conversa atual e continue de onde parou

74* **Start new session**: limpe a conversa atual e comece do zero com apenas o plano como contexto

75* **Cancel**: salve o plano em um arquivo sem executá-lo; Claude imprime o caminho do arquivo para que você possa retornar a ele mais tarde

76 

77Se você iniciar uma nova sessão, Claude imprime um comando `claude --resume` no topo para que você possa retornar à sua conversa anterior mais tarde.

78 

79## Recursos relacionados

80 

81* [Claude Code na web](/pt/claude-code-on-the-web): a infraestrutura de nuvem em que o ultraplan é executado

82* [Modo de plano](/pt/permission-modes#analyze-before-you-edit-with-plan-mode): como o planejamento funciona em uma sessão local

83* [Encontrar bugs com ultrareview](/pt/ultrareview): a contrapartida de revisão de código do ultraplan para detectar problemas antes da mesclagem

84* [Remote Control](/pt/remote-control): use a interface claude.ai/code com uma sessão em execução em sua própria máquina

ultrareview.md +108 −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# Encontre bugs com ultrareview

6 

7> Execute uma revisão de código profunda e multi-agente na nuvem com /ultrareview para encontrar e verificar bugs antes de fazer merge.

8 

9<Note>

10 Ultrareview é um recurso de visualização de pesquisa disponível no Claude Code v2.1.86 e posterior. O recurso, preços e disponibilidade podem mudar com base no feedback.

11</Note>

12 

13Ultrareview é uma revisão de código profunda que é executada no Claude Code na infraestrutura web. Quando você executa `/ultrareview`, Claude Code inicia uma frota de agentes revisores em um sandbox remoto para encontrar bugs em sua branch ou pull request.

14 

15Comparado a um `/review` local, ultrareview oferece:

16 

17* **Sinal mais alto**: cada descoberta relatada é reproduzida e verificada independentemente, portanto os resultados se concentram em bugs reais em vez de sugestões de estilo

18* **Cobertura mais ampla**: muitos agentes revisores exploram a mudança em paralelo, o que expõe problemas que uma revisão de passagem única pode perder

19* **Sem uso de recursos locais**: a revisão é executada inteiramente em um sandbox remoto, portanto seu terminal permanece livre para outro trabalho enquanto é executada

20 

21Ultrareview requer autenticação com uma conta Claude.ai porque é executado no Claude Code na infraestrutura web. Se você está conectado apenas com uma chave de API, execute `/login` e autentique-se com Claude.ai primeiro. Ultrareview não está disponível ao usar Claude Code com Amazon Bedrock, Google Cloud Vertex AI ou Microsoft Foundry, e não está disponível para organizações que habilitaram Zero Data Retention.

22 

23## Execute ultrareview a partir da CLI

24 

25Inicie uma revisão de qualquer repositório git no Claude Code CLI.

26 

27```text theme={null}

28/ultrareview

29```

30 

31Sem argumentos, ultrareview revisa o diff entre sua branch atual e a branch padrão, incluindo quaisquer mudanças não confirmadas e preparadas em sua árvore de trabalho. Claude Code agrupa o estado do repositório e o carrega em um sandbox remoto para a revisão.

32 

33Para revisar uma pull request do GitHub, passe o número da PR.

34 

35```text theme={null}

36/ultrareview 1234

37```

38 

39No modo PR, o sandbox remoto clona a pull request diretamente do GitHub em vez de agrupar sua árvore de trabalho local. O modo PR requer um remote `github.com` no repositório.

40 

41<Tip>

42 Se seu repositório for muito grande para agrupar, Claude Code o solicita a usar o modo PR. Envie sua branch e abra uma PR de rascunho, depois execute `/ultrareview <PR-number>`.

43</Tip>

44 

45Antes de iniciar, Claude Code mostra um diálogo de confirmação com o escopo da revisão (incluindo a contagem de arquivos e linhas ao revisar uma branch), suas execuções gratuitas restantes e o custo estimado. Depois que você confirmar, a revisão continua em segundo plano e você pode continuar usando sua sessão. O comando é executado apenas quando você o invoca com `/ultrareview`; Claude não inicia um ultrareview por conta própria.

46 

47## Preços e execuções gratuitas

48 

49Ultrareview é um recurso premium que é cobrado contra o uso extra em vez do uso incluído em seu plano.

50 

51| Plano | Execuções gratuitas incluídas | Após execuções gratuitas |

52| ----------------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |

53| Pro | 3 execuções gratuitas até 5 de maio de 2026 | cobrado como [uso extra](https://support.claude.com/pt/articles/12429409-extra-usage-for-paid-claude-plans) |

54| Max | 3 execuções gratuitas até 5 de maio de 2026 | cobrado como [uso extra](https://support.claude.com/pt/articles/12429409-extra-usage-for-paid-claude-plans) |

55| Team e Enterprise | nenhuma | cobrado como [uso extra](https://support.claude.com/pt/articles/12429409-extra-usage-for-paid-claude-plans) |

56 

57Os assinantes Pro e Max recebem três execuções ultrareview gratuitas para experimentar o recurso. Essas três execuções são uma alocação única por conta, não são renovadas e expiram em 5 de maio de 2026. Depois de usar todas as três, ou após o período de execução gratuita terminar, cada revisão é cobrada para uso extra e normalmente custa \$5 a \$20 dependendo do tamanho da mudança. Uma execução é contada assim que a sessão remota é iniciada, portanto uma revisão que você interrompe no início ou que falha em ser concluída ainda usa uma execução gratuita. Para uma revisão paga, o uso extra é cobrado apenas pela parte que foi executada.

58 

59Como ultrareview sempre é cobrado como uso extra fora das execuções gratuitas, sua conta ou organização deve ter o uso extra habilitado antes de poder iniciar uma revisão paga. Se o uso extra não estiver habilitado, Claude Code bloqueia o lançamento e o vincula às configurações de faturamento onde você pode ativá-lo. Você também pode executar `/extra-usage` para verificar ou alterar sua configuração atual.

60 

61## Acompanhe uma revisão em execução

62 

63Uma revisão normalmente leva 5 a 10 minutos. A revisão é executada como uma tarefa em segundo plano, portanto você pode continuar trabalhando em sua sessão, iniciar outros comandos ou fechar o terminal completamente.

64 

65Use `/tasks` para ver revisões em execução e concluídas, abrir a visualização de detalhes de uma revisão ou parar uma revisão em andamento. Parar uma revisão arquiva a sessão na nuvem e as descobertas parciais não são retornadas. Quando a revisão termina, as descobertas verificadas aparecem como uma notificação em sua sessão. Cada descoberta inclui a localização do arquivo e uma explicação do problema para que você possa pedir ao Claude para corrigi-lo diretamente.

66 

67## Execute ultrareview de forma não interativa

68 

69Use o subcomando `claude ultrareview` para iniciar um ultrareview a partir de CI ou um script sem uma sessão interativa. O subcomando inicia a mesma revisão que `/ultrareview`, bloqueia até que a revisão remota termine, imprime as descobertas para stdout e sai com código 0 em caso de sucesso ou 1 em caso de falha.

70 

71```bash theme={null}

72claude ultrareview

73claude ultrareview 1234

74claude ultrareview origin/main

75```

76 

77Sem argumentos, o subcomando revisa o diff entre sua branch atual e a branch padrão. Passe um número de PR para revisar uma pull request, ou passe uma branch base para revisar o diff em relação a essa branch. Invocar o subcomando conta como consentimento para o aviso de faturamento e termos que o comando interativo mostra.

78 

79As mensagens de progresso e a URL da sessão ao vivo vão para stderr para que stdout permaneça analisável. Use esses sinalizadores para controlar a saída e o tempo limite:

80 

81| Sinalizador | Descrição |

82| --------------------- | ------------------------------------------------------------------------ |

83| `--json` | Imprima a carga útil bruta `bugs.json` em vez das descobertas formatadas |

84| `--timeout <minutes>` | Minutos máximos para aguardar a conclusão da revisão. Padrão é 30 |

85 

86Executar `claude ultrareview` requer a mesma autenticação e configuração de uso extra que `/ultrareview`. O subcomando sai com código 0 quando a revisão é concluída com ou sem descobertas, código 1 quando a revisão falha ao iniciar, a sessão remota apresenta erro ou o tempo limite decorre, e código 130 quando interrompido com Ctrl-C. A revisão remota continua em execução se você interromper o subcomando; siga a URL da sessão impressa em stderr para observá-la no navegador.

87 

88Para revisões automáticas em pull requests do GitHub, [Code Review](/pt/code-review) integra-se diretamente com seu repositório e publica descobertas como comentários inline de PR sem uma etapa de CLI.

89 

90## Como ultrareview se compara a /review

91 

92Ambos os comandos revisam código, mas visam diferentes estágios do seu fluxo de trabalho.

93 

94| | `/review` | `/ultrareview` |

95| ------------ | -------------------------------- | --------------------------------------------------------------------------------- |

96| Execuções | localmente em sua sessão | remotamente em um sandbox na nuvem |

97| Profundidade | revisão de passagem única | frota multi-agente com verificação independente |

98| Duração | segundos a alguns minutos | aproximadamente 5 a 10 minutos |

99| Custo | conta para uso normal | execuções gratuitas, depois aproximadamente \$5 a \$20 por revisão como uso extra |

100| Melhor para | feedback rápido durante iteração | confiança pré-merge em mudanças substanciais |

101 

102Use `/review` para feedback rápido enquanto trabalha. Use `/ultrareview` antes de fazer merge de uma mudança substancial quando você quer uma passagem mais profunda que capture problemas que uma revisão única pode perder.

103 

104## Recursos relacionados

105 

106* [Claude Code na web](/pt/claude-code-on-the-web): aprenda como funcionam as sessões remotas e os sandboxes na nuvem

107* [Planeje mudanças complexas com ultraplan](/pt/ultraplan): a contrapartida de planejamento para ultrareview para trabalho de design antecipado

108* [Gerencie custos efetivamente](/pt/costs): acompanhe o uso e defina limites de gastos

voice-dictation.md +191 −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# Ditado por voz

6 

7> Fale seus prompts no Claude Code CLI com ditado por voz com manutenção ou toque para gravar.

8 

9Fale seus prompts em vez de digitá-los no Claude Code CLI. Sua fala é transcrita em tempo real na entrada do prompt, para que você possa misturar voz e digitação na mesma mensagem. Ative o ditado com `/voice`, depois mantenha uma tecla pressionada enquanto fala ou toque uma vez para começar e novamente para enviar.

10 

11<Note>

12 O ditado por voz requer Claude Code v2.1.69 ou posterior. O modo de toque requer v2.1.116 ou posterior. Verifique sua versão com `claude --version`.

13</Note>

14 

15## Requisitos

16 

17O ditado por voz transmite seu áudio gravado para os servidores da Anthropic para transcrição. O áudio não é processado localmente. O serviço de fala para texto está disponível apenas quando você se autentica com uma conta Claude.ai e não está disponível quando Claude Code está configurado para usar uma chave API da Anthropic diretamente, Amazon Bedrock, Google Vertex AI ou Microsoft Foundry. A transcrição não consome mensagens Claude ou tokens e não conta para os limites mostrados em `/usage`. Consulte [data usage](/pt/data-usage) para saber como a Anthropic lida com seus dados.

18 

19O ditado por voz também precisa de acesso local ao microfone, portanto não funciona em ambientes remotos como [Claude Code na web](/pt/claude-code-on-the-web) ou sessões SSH. No WSL, o ditado por voz requer WSLg para acesso de áudio, que está incluído no WSL2 no Windows 11. No Windows 10 ou WSL1, execute Claude Code no Windows nativo.

20 

21A gravação de áudio usa um módulo nativo integrado no macOS, Linux e Windows. No Linux, se o módulo nativo não conseguir carregar, Claude Code volta para `arecord` do ALSA utils ou `rec` do SoX. Se nenhum estiver disponível, `/voice` imprime um comando de instalação para seu gerenciador de pacotes.

22 

23A [extensão VS Code](/pt/vs-code) do Claude Code também suporta ditado por voz com o mesmo requisito de conta Claude.ai. Não está disponível em sessões VS Code Remote, incluindo SSH, Dev Containers e Codespaces, porque o microfone está em sua máquina local e a extensão é executada no host remoto.

24 

25## Ativar ditado por voz

26 

27Execute `/voice` para ativar o ditado. Na primeira vez que você o ativa, Claude Code executa uma verificação de microfone. No macOS, isso dispara o prompt de permissão de microfone do sistema para seu terminal se nunca foi concedido.

28 

29```

30/voice

31Voice mode enabled (hold). Hold Space to record. Dictation language: en (/config to change).

32```

33 

34`/voice` aceita um argumento de modo opcional:

35 

36| Comando | Efeito |

37| :------------ | :-------------------------------------------------- |

38| `/voice` | Alternar ativado ou desativado, manter o modo atual |

39| `/voice hold` | Ativar no [modo de manutenção](#hold-to-record) |

40| `/voice tap` | Ativar no [modo de toque](#tap-to-record-and-send) |

41| `/voice off` | Desativar |

42 

43O ditado por voz persiste entre sessões. Defina-o diretamente em seu [arquivo de configurações do usuário](/pt/settings) em vez de executar `/voice`:

44 

45```json theme={null}

46{

47 "voice": {

48 "enabled": true,

49 "mode": "tap"

50 }

51}

52```

53 

54Enquanto o ditado por voz está ativado, o rodapé de entrada mostra uma dica `hold Space to speak` quando o prompt está vazio. O texto da dica é o mesmo em ambos os modos e não aparece se você tiver um [status line personalizado](/pt/statusline) configurado.

55 

56A transcrição é ajustada para vocabulário de codificação em ambos os modos. Termos de desenvolvimento comuns como `regex`, `OAuth`, `JSON` e `localhost` são reconhecidos corretamente, e o nome do seu projeto atual e o nome da ramificação git são adicionados automaticamente como dicas de reconhecimento.

57 

58## Hold to record

59 

60O modo de manutenção é push-to-talk: a gravação é executada enquanto você mantém a tecla pressionada e para quando você a solta. Este é o modo padrão.

61 

62Mantenha `Space` pressionado para começar a gravar. Claude Code detecta uma tecla mantida observando eventos rápidos de repetição de tecla do seu terminal, portanto há um breve aquecimento antes da gravação começar. O rodapé mostra `keep holding…` durante o aquecimento e depois muda para uma forma de onda ao vivo quando a gravação está ativa.

63 

64Os primeiros caracteres de repetição de tecla digitam na entrada durante o aquecimento e são removidos automaticamente quando a gravação é ativada. Um único toque em `Space` ainda digita um espaço, pois a detecção de manutenção só é acionada na repetição rápida.

65 

66<Tip>

67 Para pular o aquecimento, mude para [modo de toque](#tap-to-record-and-send) com `/voice tap`, ou [revinculação a uma combinação de modificador](#rebind-the-dictation-key) como `meta+k`. Combinações de modificadores começam a gravar no primeiro pressionamento de tecla.

68</Tip>

69 

70Sua fala aparece no prompt conforme você fala, atenuada até que a transcrição seja finalizada. Solte `Space` para parar de gravar e finalizar o texto. A transcrição é inserida na posição do seu cursor e o cursor permanece no final do texto inserido, para que você possa misturar digitação e ditado em qualquer ordem. Mantenha `Space` pressionado novamente para anexar outra gravação, ou mova o cursor primeiro para inserir fala em outro lugar no prompt:

71 

72```

73> refactor the auth middleware to ▮

74 # hold Space, speak "use the new token validation helper"

75> refactor the auth middleware to use the new token validation helper▮

76```

77 

78Por padrão, soltar a tecla insere a transcrição e aguarda você pressionar `Enter`. Defina `"autoSubmit": true` no objeto de configurações `voice` para enviar o prompt automaticamente quando você soltar a tecla, desde que a transcrição tenha pelo menos três palavras.

79 

80## Tap to record and send

81 

82O modo de toque alterna a gravação com um único pressionamento de tecla: toque uma vez para começar, fale e depois toque novamente para enviar o prompt. Não há aquecimento e você não precisa manter a tecla pressionada.

83 

84Ative o modo de toque com `/voice tap`. Com a entrada do prompt vazia, toque em `Space` para começar a gravar. O rodapé mostra uma forma de onda ao vivo durante a gravação. Toque em `Space` novamente para parar. Claude Code insere a transcrição e envia o prompt automaticamente quando a transcrição tem pelo menos três palavras. Transcrições mais curtas são inseridas mas não enviadas, portanto um toque acidental não envia uma palavra isolada.

85 

86O primeiro toque só começa a gravar quando a entrada do prompt está vazia, para que você ainda possa digitar espaços normalmente enquanto compõe uma mensagem. O segundo toque para a gravação independentemente do conteúdo da entrada. A gravação também para automaticamente após 15 segundos de silêncio ou dois minutos no total.

87 

88## Alterar o idioma do ditado

89 

90O ditado por voz usa a mesma [configuração `language`](/pt/settings) que controla o idioma de resposta do Claude. Se essa configuração estiver vazia, o ditado usa o padrão em inglês. Na extensão VS Code, se `language` estiver vazio, o ditado usa a configuração `accessibility.voice.speechLanguage` do VS Code antes de usar o padrão em inglês.

91 

92<Accordion title="Idiomas de ditado suportados">

93 | Idioma | Código |

94 | :---------- | :----- |

95 | Tcheco | `cs` |

96 | Dinamarquês | `da` |

97 | Holandês | `nl` |

98 | Inglês | `en` |

99 | Francês | `fr` |

100 | Alemão | `de` |

101 | Grego | `el` |

102 | Hindi | `hi` |

103 | Indonésio | `id` |

104 | Italiano | `it` |

105 | Japonês | `ja` |

106 | Coreano | `ko` |

107 | Norueguês | `no` |

108 | Polonês | `pl` |

109 | Português | `pt` |

110 | Russo | `ru` |

111 | Espanhol | `es` |

112 | Sueco | `sv` |

113 | Turco | `tr` |

114 | Ucraniano | `uk` |

115</Accordion>

116 

117Defina o idioma em `/config` ou diretamente nas configurações. Você pode usar o [código de idioma BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) ou o nome do idioma:

118 

119```json theme={null}

120{

121 "language": "japanese"

122}

123```

124 

125Se sua configuração `language` não estiver na lista de suporte, `/voice` avisa você ao ativar e volta para inglês para ditado. As respostas de texto do Claude não são afetadas por esse fallback.

126 

127## Revinculação da tecla de ditado

128 

129A tecla de ditado está vinculada a `voice:pushToTalk` no contexto `Chat` e usa como padrão `Space`. A mesma vinculação controla os modos de manutenção e toque. Revinculação em [`~/.claude/keybindings.json`](/pt/keybindings):

130 

131```json theme={null}

132{

133 "bindings": [

134 {

135 "context": "Chat",

136 "bindings": {

137 "meta+k": "voice:pushToTalk",

138 "space": null

139 }

140 }

141 ]

142}

143```

144 

145Definir `"space": null` remove a vinculação padrão. Omita-o se quiser ambas as teclas ativas.

146 

147No modo de manutenção, evite vincular uma tecla de letra simples como `v` pois a detecção de manutenção depende da repetição de tecla e a letra digita no prompt durante o aquecimento. Use `Space`, ou use uma combinação de modificador como `meta+k` para começar a gravar no primeiro pressionamento de tecla sem aquecimento. O modo de toque não tem aquecimento, portanto qualquer tecla funciona.

148 

149Algumas teclas não são entregues a aplicativos de terminal e não podem ser vinculadas. Por exemplo, `Caps Lock` mostra um erro se você tentar vinculá-la. Consulte [customize keyboard shortcuts](/pt/keybindings) para a sintaxe completa de vinculação de teclado e a lista de atalhos reservados.

150 

151## Troubleshooting

152 

153Problemas comuns quando o ditado por voz não é ativado ou não grava:

154 

155* **`Voice mode requires a Claude.ai account`**: você está autenticado com uma chave API ou um provedor de terceiros. Execute `/login` para entrar com uma conta Claude.ai.

156* **`Microphone access is denied`**: conceda permissão de microfone ao seu terminal nas configurações do sistema. No macOS, vá para Configurações do Sistema → Privacidade e Segurança → Microfone e ative seu aplicativo de terminal, depois execute `/voice` novamente. No Windows, vá para Configurações → Privacidade e segurança → Microfone e ative o acesso ao microfone para aplicativos de desktop, depois execute `/voice` novamente. Se seu terminal não estiver listado nas configurações de Microfone do macOS, consulte [Terminal not listed in macOS Microphone settings](#terminal-not-listed-in-macos-microphone-settings).

157* **`No audio recording tool found` no Linux**: o módulo de áudio nativo não conseguiu carregar e nenhum fallback está instalado. Instale SoX com o comando mostrado na mensagem de erro, por exemplo `sudo apt-get install sox`.

158* **Nada acontece ao manter `Space` pressionado no modo de manutenção**: observe a entrada do prompt enquanto você mantém. Se espaços continuarem se acumulando, o ditado por voz provavelmente está desativado; execute `/voice hold` para ativá-lo. Se apenas um ou dois espaços aparecerem e depois nada, o ditado por voz está ativado mas a detecção de manutenção não está sendo acionada. A detecção de manutenção requer que seu terminal envie eventos de repetição de tecla, portanto não pode detectar uma tecla mantida se a repetição de tecla estiver desativada no nível do SO. Mude para o modo de toque com `/voice tap` para evitar o requisito de repetição de tecla.

159* **Tocar `Space` digita um espaço em vez de gravar no modo de toque**: o primeiro toque só começa a gravar quando a entrada do prompt está vazia. Limpe a entrada primeiro, ou verifique se você está no modo de toque executando `/voice tap`.

160* **`No audio detected from microphone`**: a gravação começou mas capturou silêncio. Confirme que o dispositivo de entrada correto está definido como padrão do sistema e que seu nível de entrada não está mudo ou próximo a zero. No Windows, abra Configurações → Sistema → Som → Entrada e selecione seu microfone. No macOS, abra Configurações do Sistema → Som → Entrada.

161* **`No speech detected`**: o áudio chegou ao serviço de transcrição mas nenhuma palavra foi reconhecida. Fale mais perto do microfone, reduza o ruído de fundo e confirme que seu [idioma de ditado](#change-the-dictation-language) corresponde ao idioma que você está falando.

162* **A transcrição está distorcida ou no idioma errado**: o ditado usa o padrão em inglês. Se você estiver ditando em outro idioma, defina-o em `/config` primeiro. Consulte [Change the dictation language](#change-the-dictation-language).

163 

164### Terminal not listed in macOS Microphone settings

165 

166Se seu aplicativo de terminal não aparecer em Configurações do Sistema → Privacidade e Segurança → Microfone, não há alternância que você possa ativar. Redefina o estado de permissão para seu terminal para que a próxima execução de `/voice` dispare um novo prompt de permissão do macOS.

167 

168<Steps>

169 <Step title="Redefinir a permissão de microfone para seu terminal">

170 Execute `tccutil reset Microphone <bundle-id>`, substituindo `<bundle-id>` pelo identificador do seu terminal: `com.apple.Terminal` para o Terminal integrado, ou `com.googlecode.iterm2` para iTerm2. Para outros terminais, procure o identificador com `osascript -e 'id of app "AppName"'`.

171 

172 <Warning>

173 Você pode executar `tccutil reset Microphone` sem um ID de pacote, mas revoga o acesso ao microfone de todos os aplicativos no seu Mac, incluindo aplicativos como Zoom ou Slack. Cada aplicativo precisará solicitar acesso novamente no próximo uso, portanto não execute durante uma chamada ativa.

174 </Warning>

175 </Step>

176 

177 <Step title="Sair e relançar seu terminal">

178 O macOS não solicitará novamente um processo que já está em execução. Saia do aplicativo de terminal com Cmd+Q, não apenas feche suas janelas, depois abra-o novamente.

179 </Step>

180 

181 <Step title="Disparar um novo prompt">

182 Inicie Claude Code e execute `/voice`. O macOS solicita acesso ao microfone; permita.

183 </Step>

184</Steps>

185 

186## Veja também

187 

188* [Customize keyboard shortcuts](/pt/keybindings): revinculação `voice:pushToTalk` e outras ações de teclado CLI

189* [Configure settings](/pt/settings): referência completa para `voice`, `language` e outras chaves de configurações

190* [Interactive mode](/pt/interactive-mode): atalhos de teclado, modos de entrada e controles de sessão

191* [Commands](/pt/commands): referência para `/voice`, `/config` e todos os outros comandos

vs-code.md +511 −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# Use Claude Code in VS Code

6 

7> Instale e configure a extensão Claude Code para VS Code. Obtenha assistência de codificação com IA com diffs inline, @-mentions, revisão de planos e atalhos de teclado.

8 

9<img src="https://mintcdn.com/claude-code/-YhHHmtSxwr7W8gy/images/vs-code-extension-interface.jpg?fit=max&auto=format&n=-YhHHmtSxwr7W8gy&q=85&s=300652d5678c63905e6b0ea9e50835f8" alt="Editor VS Code com o painel de extensão Claude Code aberto no lado direito, mostrando uma conversa com Claude" width="2500" height="1155" data-path="images/vs-code-extension-interface.jpg" />

10 

11A extensão VS Code fornece uma interface gráfica nativa para Claude Code, integrada diretamente ao seu IDE. Esta é a forma recomendada de usar Claude Code no VS Code.

12 

13Com a extensão, você pode revisar e editar os planos do Claude antes de aceitá-los, aceitar automaticamente edições conforme são feitas, @-mencionar arquivos com intervalos de linhas específicas da sua seleção, acessar o histórico de conversas e abrir múltiplas conversas em abas separadas ou janelas.

14 

15## Pré-requisitos

16 

17Antes de instalar, certifique-se de que você tem:

18 

19* VS Code 1.98.0 ou superior

20* Uma conta Anthropic (você fará login quando abrir a extensão pela primeira vez). Se você estiver usando um provedor de terceiros como Amazon Bedrock ou Google Vertex AI, consulte [Use third-party providers](#use-third-party-providers) em vez disso.

21 

22<Tip>

23 A extensão inclui a CLI (interface de linha de comando), que você pode acessar do terminal integrado do VS Code para recursos avançados. Consulte [VS Code extension vs. Claude Code CLI](#vs-code-extension-vs-claude-code-cli) para detalhes.

24</Tip>

25 

26## Instale a extensão

27 

28Clique no link do seu IDE para instalar diretamente:

29 

30* [Install for VS Code](vscode:extension/anthropic.claude-code)

31* [Install for Cursor](cursor:extension/anthropic.claude-code)

32 

33Ou no VS Code, pressione `Cmd+Shift+X` (Mac) ou `Ctrl+Shift+X` (Windows/Linux) para abrir a visualização de Extensões, procure por "Claude Code" e clique em **Install**.

34 

35<Note>Se a extensão não aparecer após a instalação, reinicie o VS Code ou execute "Developer: Reload Window" na Paleta de Comandos.</Note>

36 

37## Comece

38 

39Depois de instalada, você pode começar a usar Claude Code através da interface VS Code:

40 

41<Steps>

42 <Step title="Abra o painel Claude Code">

43 Em todo o VS Code, o ícone Spark indica Claude Code: <img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/vs-code-spark-icon.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=3ca45e00deadec8c8f4b4f807da94505" alt="Spark icon" style={{display: "inline", height: "0.85em", verticalAlign: "middle"}} width="16" height="16" data-path="images/vs-code-spark-icon.svg" />

44 

45 A forma mais rápida de abrir Claude é clicar no ícone Spark na **Editor Toolbar** (canto superior direito do editor). O ícone só aparece quando você tem um arquivo aberto.

46 

47 <img src="https://mintcdn.com/claude-code/mfM-EyoZGnQv8JTc/images/vs-code-editor-icon.png?fit=max&auto=format&n=mfM-EyoZGnQv8JTc&q=85&s=eb4540325d94664c51776dbbfec4cf02" alt="Editor VS Code mostrando o ícone Spark na Editor Toolbar" width="2796" height="734" data-path="images/vs-code-editor-icon.png" />

48 

49 Outras formas de abrir Claude Code:

50 

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

52 * **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"

53 * **Status Bar**: clique em **✱ Claude Code** no canto inferior direito da janela. Isso funciona mesmo quando nenhum arquivo está aberto.

54 

55 Você pode arrastar o painel Claude para reposicioná-lo em qualquer lugar do VS Code. Consulte [Customize your workflow](#customize-your-workflow) para detalhes.

56 </Step>

57 

58 <Step title="Faça login">

59 A primeira vez que você abre o painel, uma tela de login aparece. Clique em **Sign in** e complete a autorização no seu navegador.

60 

61 Se você vir **Not logged in · Please run /login** mais tarde, a extensão reabre a tela de login automaticamente. Se não aparecer, recarregue a janela na Paleta de Comandos com **Developer: Reload Window**.

62 

63 Se você tem `ANTHROPIC_API_KEY` definida no seu shell mas ainda vê o prompt de login, VS Code pode não ter herdado seu ambiente de shell. Inicie VS Code de um terminal com `code .` para que ele herde suas variáveis de ambiente, ou faça login com sua conta Claude em vez disso.

64 

65 Depois que você faz login, uma lista de verificação **Learn Claude Code** aparece. Trabalhe em cada item clicando em **Show me**, ou descarte-a com o X. Para reabri-la mais tarde, desmarque **Hide Onboarding** nas configurações do VS Code em Extensions → Claude Code.

66 </Step>

67 

68 <Step title="Envie um prompt">

69 Peça ao Claude para ajudar com seu código ou arquivos, seja explicando como algo funciona, depurando um problema ou fazendo alterações.

70 

71 <Tip>Claude vê automaticamente seu texto selecionado. Pressione `Option+K` (Mac) / `Alt+K` (Windows/Linux) para também inserir uma referência @-mention (como `@file.ts#5-10`) em seu prompt.</Tip>

72 

73 Aqui está um exemplo de pergunta sobre uma linha específica em um arquivo:

74 

75 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-send-prompt.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=ede3ed8d8d5f940e01c5de636d009cfd" alt="Editor VS Code com as linhas 2-3 selecionadas em um arquivo Python, e o painel Claude Code mostrando uma pergunta sobre essas linhas com uma referência @-mention" width="3288" height="1876" data-path="images/vs-code-send-prompt.png" />

76 </Step>

77 

78 <Step title="Revise as alterações">

79 Quando Claude quer editar um arquivo, ele mostra uma comparação lado a lado do original e das alterações propostas, depois pede permissão. Você pode aceitar, rejeitar ou dizer ao Claude o que fazer em vez disso. Se você editar o conteúdo proposto diretamente na visualização de diff antes de aceitar, Claude é informado de que você o modificou para que não assuma que o arquivo corresponde à sua proposta original.

80 

81 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-edits.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=e005f9b41c541c5c7c59c082f7c4841c" alt="VS Code mostrando um diff das alterações propostas por Claude com um prompt de permissão perguntando se deve fazer a edição" width="3292" height="1876" data-path="images/vs-code-edits.png" />

82 </Step>

83</Steps>

84 

85Para mais ideias sobre o que você pode fazer com Claude Code, consulte [Common workflows](/pt/common-workflows).

86 

87<Tip>

88 Execute "Claude Code: Open Walkthrough" na Paleta de Comandos para um tour guiado dos conceitos básicos.

89</Tip>

90 

91## Use a caixa de prompt

92 

93A caixa de prompt suporta vários recursos:

94 

95* **Permission modes**: clique no indicador de modo na parte inferior da caixa de prompt para alternar modos. No modo normal, Claude pede permissão antes de cada ação. Em Plan Mode, Claude descreve o que fará e aguarda aprovação antes de fazer alterações. VS Code abre automaticamente o plano como um documento markdown completo onde você pode adicionar comentários inline para fornecer feedback antes de Claude começar. Em modo auto-accept, Claude faz edições sem perguntar. Defina o padrão nas configurações do VS Code em `claudeCode.initialPermissionMode`.

96* **Command menu**: clique em `/` ou digite `/` para abrir o menu de comandos. As opções incluem anexar arquivos, alternar modelos, alternar pensamento estendido, visualizar uso de plano (`/usage`) e iniciar uma sessão de [Remote Control](/pt/remote-control) (`/remote-control`). A seção Customize fornece acesso a MCP servers, hooks, memory, permissions e plugins. Itens com um ícone de terminal abrem no terminal integrado.

97* **Context indicator**: a caixa de prompt mostra quanto da context window do Claude você está usando. Claude compacta automaticamente quando necessário, ou você pode executar `/compact` manualmente.

98* **Extended thinking**: permite que Claude gaste mais tempo raciocinando sobre problemas complexos. Alterne-o via menu de comandos (`/`). O raciocínio do Claude aparece na conversa como blocos recolhidos: clique em um bloco para lê-lo, ou pressione `Ctrl+O` para expandir ou recolher cada bloco de pensamento na sessão. Consulte [Extended thinking](/pt/common-workflows#use-extended-thinking-thinking-mode) para detalhes.

99* **Multi-line input**: pressione `Shift+Enter` para adicionar uma nova linha sem enviar. Isso também funciona na entrada de texto livre "Other" de diálogos de pergunta.

100 

101### Reference files and folders

102 

103Use @-mentions para dar ao Claude contexto sobre arquivos ou pastas específicas. Quando você digita `@` seguido de um nome de arquivo ou pasta, Claude lê esse conteúdo e pode responder perguntas sobre ele ou fazer alterações nele. Claude Code suporta fuzzy matching, então você pode digitar nomes parciais para encontrar o que precisa:

104 

105```text theme={null}

106> Explain the logic in @auth (fuzzy matches auth.js, AuthService.ts, etc.)

107> What's in @src/components/ (include a trailing slash for folders)

108```

109 

110Para PDFs grandes, você pode pedir ao Claude para ler páginas específicas em vez do arquivo inteiro: uma única página, um intervalo como páginas 1-10, ou um intervalo aberto como página 3 em diante.

111 

112Quando você seleciona texto no editor, Claude pode ver seu código destacado automaticamente. O rodapé da caixa de prompt mostra quantas linhas estão selecionadas. Pressione `Option+K` (Mac) / `Alt+K` (Windows/Linux) para inserir um @-mention com o caminho do arquivo e números de linha (por exemplo, `@app.ts#5-10`). Clique no indicador de seleção para alternar se Claude pode ver seu texto destacado - o ícone de barra de olho significa que a seleção está oculta do Claude.

113 

114Você também pode manter `Shift` pressionado enquanto arrasta arquivos para a caixa de prompt para adicioná-los como anexos. Clique no X em qualquer anexo para removê-lo do contexto.

115 

116### Resume past conversations

117 

118Clique no botão **Session history** na parte superior do painel Claude Code para acessar seu histórico de conversas. Você pode pesquisar por palavra-chave ou navegar por tempo (Today, Yesterday, Last 7 days, etc.). Clique em qualquer conversa para retomá-la com o histórico completo de mensagens. Novas sessões recebem títulos gerados por IA com base em sua primeira mensagem. Passe o mouse sobre uma sessão para revelar ações de renomear e remover: renomeie para dar um título descritivo, ou remova para deletá-la da lista. Para mais sobre retomar sessões, consulte [Common workflows](/pt/common-workflows#resume-previous-conversations).

119 

120### Resume remote sessions from Claude.ai

121 

122Se você usar [Claude Code on the web](/pt/claude-code-on-the-web), você pode retomar essas sessões remotas diretamente no VS Code. Isso requer fazer login com **Claude.ai Subscription**, não Anthropic Console.

123 

124<Steps>

125 <Step title="Open session history">

126 Clique no botão **Session history** na parte superior do painel Claude Code.

127 </Step>

128 

129 <Step title="Select the Remote tab">

130 O diálogo mostra duas abas: Local e Remote. Clique em **Remote** para ver sessões do claude.ai.

131 </Step>

132 

133 <Step title="Select a session to resume">

134 Navegue ou pesquise suas sessões remotas. Clique em qualquer sessão para baixá-la e continuar a conversa localmente.

135 </Step>

136</Steps>

137 

138<Note>

139 Apenas sessões web iniciadas com um repositório GitHub aparecem na aba Remote. Retomar carrega o histórico de conversas localmente; as alterações não são sincronizadas de volta para claude.ai.

140</Note>

141 

142## Customize your workflow

143 

144Depois que você estiver funcionando, você pode reposicionar o painel Claude, executar múltiplas sessões ou alternar para modo terminal.

145 

146### Choose where Claude lives

147 

148Você pode arrastar o painel Claude para reposicioná-lo em qualquer lugar do VS Code. Pegue a aba ou barra de título do painel e arraste para:

149 

150* **Secondary sidebar**: o lado direito da janela. Mantém Claude visível enquanto você codifica.

151* **Primary sidebar**: a barra lateral esquerda com ícones para Explorer, Search, etc.

152* **Editor area**: abre Claude como uma aba ao lado de seus arquivos. Útil para tarefas secundárias.

153 

154<Tip>

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

156</Tip>

157 

158### Run multiple conversations

159 

160Use **Open in New Tab** ou **Open in New Window** na Paleta de Comandos para iniciar conversas adicionais. Cada conversa mantém seu próprio histórico e contexto, permitindo que você trabalhe em diferentes tarefas em paralelo.

161 

162Ao usar abas, um pequeno ponto colorido no ícone spark indica status: azul significa que uma solicitação de permissão está pendente, laranja significa que Claude terminou enquanto a aba estava oculta.

163 

164### Switch to terminal mode

165 

166Por padrão, a extensão abre um painel de chat gráfico. Se você preferir a interface estilo CLI, abra a [Use Terminal setting](vscode://settings/claudeCode.useTerminal) e marque a caixa.

167 

168Você também pode abrir as configurações do VS Code (`Cmd+,` no Mac ou `Ctrl+,` no Windows/Linux), ir para Extensions → Claude Code e marcar **Use Terminal**.

169 

170## Manage plugins

171 

172A extensão VS Code inclui uma interface gráfica para instalar e gerenciar [plugins](/pt/plugins). Digite `/plugins` na caixa de prompt para abrir a interface **Manage plugins**.

173 

174### Install plugins

175 

176O diálogo de plugin mostra duas abas: **Plugins** e **Marketplaces**.

177 

178Na aba Plugins:

179 

180* **Installed plugins** aparecem no topo com switches de alternância para habilitá-los ou desabilitá-los

181* **Available plugins** de seus marketplaces configurados aparecem abaixo

182* Pesquise para filtrar plugins por nome ou descrição

183* Clique em **Install** em qualquer plugin disponível

184 

185Quando você instala um plugin, escolha o escopo de instalação:

186 

187* **Install for you**: disponível em todos os seus projetos (escopo de usuário)

188* **Install for this project**: compartilhado com colaboradores do projeto (escopo de projeto)

189* **Install locally**: apenas para você, apenas neste repositório (escopo local)

190 

191### Manage marketplaces

192 

193Alterne para a aba **Marketplaces** para adicionar ou remover fontes de plugin:

194 

195* Digite um repositório GitHub, URL ou caminho local para adicionar um novo marketplace

196* Clique no ícone de atualização para atualizar a lista de plugins de um marketplace

197* Clique no ícone de lixeira para remover um marketplace

198 

199Depois de fazer alterações, um banner o solicita a reiniciar Claude Code para aplicar as atualizações.

200 

201<Note>

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

203</Note>

204 

205Para mais sobre o sistema de plugins, consulte [Plugins](/pt/plugins) e [Plugin marketplaces](/pt/plugin-marketplaces).

206 

207## Automate browser tasks with Chrome

208 

209Conecte Claude ao seu navegador Chrome para testar aplicativos web, depurar com logs de console e automatizar fluxos de trabalho do navegador sem sair do VS Code. Isso requer a [Claude in Chrome extension](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) versão 1.0.36 ou superior.

210 

211Digite `@browser` na caixa de prompt seguido do que você quer que Claude faça:

212 

213```text theme={null}

214@browser go to localhost:3000 and check the console for errors

215```

216 

217Você também pode abrir o menu de anexos para selecionar ferramentas específicas do navegador como abrir uma nova aba ou ler conteúdo da página.

218 

219Claude abre novas abas para tarefas do navegador e compartilha o estado de login do seu navegador, então pode acessar qualquer site em que você já esteja conectado.

220 

221Para instruções de configuração, a lista completa de capacidades e solução de problemas, consulte [Use Claude Code with Chrome](/pt/chrome).

222 

223## Comandos e atalhos de teclado do VS Code

224 

225Abra a Paleta de Comandos (`Cmd+Shift+P` no Mac ou `Ctrl+Shift+P` no Windows/Linux) e digite "Claude Code" para ver todos os comandos VS Code disponíveis para a extensão Claude Code.

226 

227Alguns atalhos dependem de qual painel está "focused" (recebendo entrada de teclado). Quando seu cursor está em um arquivo de código, o editor está focado. Quando seu cursor está na caixa de prompt do Claude, Claude está focado. Use `Cmd+Esc` / `Ctrl+Esc` para alternar entre eles.

228 

229<Note>

230 Estes são comandos VS Code para controlar a extensão. Nem todos os comandos Claude Code integrados estão disponíveis na extensão. Consulte [VS Code extension vs. Claude Code CLI](#vs-code-extension-vs-claude-code-cli) para detalhes.

231</Note>

232 

233| Command | Shortcut | Description |

234| -------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |

235| Focus Input | `Cmd+Esc` (Mac) / `Ctrl+Esc` (Windows/Linux) | Alterne o foco entre editor e Claude |

236| Open in Side Bar | - | Abra Claude na barra lateral esquerda |

237| Open in Terminal | - | Abra Claude em modo terminal |

238| Open in New Tab | `Cmd+Shift+Esc` (Mac) / `Ctrl+Shift+Esc` (Windows/Linux) | Abra uma nova conversa como uma aba de editor |

239| Open in New Window | - | Abra uma nova conversa em uma janela separada |

240| New Conversation | `Cmd+N` (Mac) / `Ctrl+N` (Windows/Linux) | Inicie uma nova conversa. Requer que Claude esteja focado e `enableNewConversationShortcut` definido como `true` |

241| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Insira uma referência ao arquivo atual e seleção (requer que o editor esteja focado) |

242| Show Logs | - | Visualize logs de depuração da extensão |

243| Logout | - | Saia de sua conta Anthropic |

244 

245### Inicie uma aba VS Code a partir de outras ferramentas

246 

247A extensão registra um manipulador de URI em `vscode://anthropic.claude-code/open`. Use-o para abrir uma nova aba Claude Code a partir de suas próprias ferramentas: um alias de shell, um bookmarklet de navegador ou qualquer script que possa abrir uma URL. Se VS Code não estiver já em execução, abrir a URL o inicia primeiro. Se VS Code já estiver em execução, a URL abre na janela que está atualmente focada.

248 

249Invoque o manipulador com o abridor de URL do seu sistema operacional.

250 

251<Tabs>

252 <Tab title="macOS">

253 ```bash theme={null}

254 open "vscode://anthropic.claude-code/open"

255 ```

256 </Tab>

257 

258 <Tab title="Linux">

259 ```bash theme={null}

260 xdg-open "vscode://anthropic.claude-code/open"

261 ```

262 </Tab>

263 

264 <Tab title="Windows">

265 No PowerShell:

266 

267 ```powershell theme={null}

268 Start-Process "vscode://anthropic.claude-code/open"

269 ```

270 

271 No `cmd.exe`, `start` trata seu primeiro argumento entre aspas como um título de janela, então passe um título vazio antes da URL:

272 

273 ```cmd theme={null}

274 start "" "vscode://anthropic.claude-code/open"

275 ```

276 </Tab>

277</Tabs>

278 

279O manipulador aceita dois parâmetros de consulta opcionais:

280 

281| Parameter | Description |

282| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

283| `prompt` | Texto para pré-preenchimento na caixa de prompt. Deve ser codificado em URL. O prompt é pré-preenchido mas não enviado automaticamente. |

284| `session` | Um ID de sessão para retomar em vez de iniciar uma nova conversa. A sessão deve pertencer ao espaço de trabalho atualmente aberto no VS Code. Se a sessão não for encontrada, uma conversa nova é iniciada em vez disso. Se a sessão já estiver aberta em uma aba, essa aba é focada. Para capturar um ID de sessão programaticamente, consulte [Continue conversations](/pt/headless#continue-conversations). |

285 

286Por exemplo, para abrir uma aba pré-preenchida com "review my changes":

287 

288```text theme={null}

289vscode://anthropic.claude-code/open?prompt=review%20my%20changes

290```

291 

292Para iniciar uma sessão de terminal em vez de uma aba VS Code, use o manipulador `claude-cli://` da CLI. Consulte [Launch sessions from links](/pt/deep-links).

293 

294## Configure settings

295 

296A extensão tem dois tipos de configurações:

297 

298* **Extension settings** no VS Code: controlam o comportamento da extensão dentro do VS Code. Abra com `Cmd+,` (Mac) ou `Ctrl+,` (Windows/Linux), depois vá para Extensions → Claude Code. Você também pode digitar `/` e selecionar **General Config** para abrir as configurações.

299* **Claude Code settings** em `~/.claude/settings.json`: compartilhadas entre a extensão e CLI. Use para comandos permitidos, variáveis de ambiente, hooks e MCP servers. Consulte [Settings](/pt/settings) para detalhes.

300 

301<Tip>

302 Adicione `"$schema": "https://json.schemastore.org/claude-code-settings.json"` ao seu `settings.json` para obter autocomplete e validação inline para todas as configurações disponíveis diretamente no VS Code.

303</Tip>

304 

305### Extension settings

306 

307| Setting | Default | Description |

308| --------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

309| `useTerminal` | `false` | Inicie Claude em modo terminal em vez de painel gráfico |

310| `initialPermissionMode` | `default` | Controla prompts de aprovação para novas conversas: `default`, `plan`, `acceptEdits` ou `bypassPermissions`. Consulte [permission modes](/pt/permission-modes). |

311| `preferredLocation` | `panel` | Onde Claude abre: `sidebar` (direita) ou `panel` (nova aba) |

312| `autosave` | `true` | Auto-salve arquivos antes de Claude lê-los ou escrevê-los |

313| `useCtrlEnterToSend` | `false` | Use Ctrl/Cmd+Enter em vez de Enter para enviar prompts |

314| `enableNewConversationShortcut` | `false` | Habilite Cmd/Ctrl+N para iniciar uma nova conversa |

315| `hideOnboarding` | `false` | Oculte a lista de verificação de onboarding (ícone de chapéu de formatura) |

316| `respectGitIgnore` | `true` | Exclua padrões .gitignore de pesquisas de arquivo |

317| `usePythonEnvironment` | `true` | Ative o ambiente Python do espaço de trabalho ao executar Claude. Requer a extensão Python. |

318| `environmentVariables` | `[]` | Defina variáveis de ambiente para o processo Claude. Use configurações Claude Code em vez disso para configuração compartilhada. |

319| `disableLoginPrompt` | `false` | Pule prompts de autenticação (para configurações de provedor de terceiros) |

320| `allowDangerouslySkipPermissions` | `false` | Adiciona [Auto mode](/pt/permission-modes#eliminate-prompts-with-auto-mode) e Bypass permissions ao seletor de modo. Auto mode tem [requisitos de plano, admin, modelo e provedor](/pt/permission-modes#eliminate-prompts-with-auto-mode), então pode permanecer indisponível mesmo com este toggle ativado. Use Bypass permissions apenas em sandboxes sem acesso à internet. |

321| `claudeProcessWrapper` | - | Caminho executável usado para iniciar o processo Claude |

322 

323## VS Code extension vs. Claude Code CLI

324 

325Claude Code está disponível tanto como uma extensão VS Code (painel gráfico) quanto como uma CLI (interface de linha de comando no terminal). Alguns recursos estão disponíveis apenas na CLI. Se você precisar de um recurso apenas da CLI, execute `claude` no terminal integrado do VS Code.

326 

327| Feature | CLI | VS Code Extension |

328| ------------------- | ------------------- | -------------------------------------------------------------------------------------------------- |

329| Commands and skills | [All](/pt/commands) | Subset (digite `/` para ver disponíveis) |

330| MCP server config | Yes | Partial (adicione servidores via CLI; gerencie servidores existentes com `/mcp` no painel de chat) |

331| Checkpoints | Yes | Yes |

332| `!` bash shortcut | Yes | No |

333| Tab completion | Yes | No |

334 

335### Rewind with checkpoints

336 

337A extensão VS Code suporta checkpoints, que rastreiam edições de arquivo do Claude e permitem que você retroceda para um estado anterior. Passe o mouse sobre qualquer mensagem para revelar o botão de retrocesso, depois escolha entre três opções:

338 

339* **Fork conversation from here**: inicie um novo ramo de conversa a partir desta mensagem mantendo todas as alterações de código intactas

340* **Rewind code to here**: reverta alterações de arquivo de volta a este ponto na conversa mantendo o histórico completo de conversas

341* **Fork conversation and rewind code**: inicie um novo ramo de conversa e reverta alterações de arquivo para este ponto

342 

343Para detalhes completos sobre como checkpoints funcionam e suas limitações, consulte [Checkpointing](/pt/checkpointing).

344 

345### Run CLI in VS Code

346 

347Para usar a CLI enquanto permanece no VS Code, abra o terminal integrado (`` Ctrl+` `` no Windows/Linux ou `` Cmd+` `` no Mac) e execute `claude`. A CLI se integra automaticamente ao seu IDE para recursos como visualização de diff e compartilhamento de diagnósticos.

348 

349Se usar um terminal externo, execute `/ide` dentro de Claude Code para conectá-lo ao VS Code.

350 

351### Switch between extension and CLI

352 

353A extensão e CLI compartilham o mesmo histórico de conversas. Para continuar uma conversa de extensão na CLI, execute `claude --resume` no terminal. Isso abre um seletor interativo onde você pode pesquisar e selecionar sua conversa.

354 

355### Include terminal output in prompts

356 

357Referencie a saída do terminal em seus prompts usando `@terminal:name` onde `name` é o título do terminal. Isso permite que Claude veja a saída do comando, mensagens de erro ou logs sem copiar e colar.

358 

359### Monitor background processes

360 

361Quando Claude executa comandos de longa duração, a extensão mostra progresso na barra de status. No entanto, a visibilidade para tarefas em segundo plano é limitada em comparação com a CLI. Para melhor visibilidade, peça ao Claude para exibir o comando para que você possa executá-lo no terminal integrado do VS Code.

362 

363### Connect to external tools with MCP

364 

365MCP (Model Context Protocol) servers dão ao Claude acesso a ferramentas externas, bancos de dados e APIs.

366 

367Para adicionar um MCP server, abra o terminal integrado (`` Ctrl+` `` ou `` Cmd+` ``) e execute `claude mcp add`. O exemplo abaixo adiciona o MCP server remoto do GitHub, que autentica com um [personal access token](https://github.com/settings/personal-access-tokens) passado como um cabeçalho:

368 

369```bash theme={null}

370claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

371 --header "Authorization: Bearer YOUR_GITHUB_PAT"

372```

373 

374Uma vez configurado, peça ao Claude para usar as ferramentas (por exemplo, "Review PR #456").

375 

376Para gerenciar MCP servers sem sair do VS Code, digite `/mcp` no painel de chat. O diálogo de gerenciamento de MCP permite que você habilite ou desabilite servidores, reconecte a um servidor e gerencie autenticação OAuth. Consulte a [MCP documentation](/pt/mcp) para servidores disponíveis.

377 

378## Work with git

379 

380Claude Code se integra com git para ajudar com fluxos de trabalho de controle de versão diretamente no VS Code. Peça ao Claude para fazer commit de alterações, criar pull requests ou trabalhar em branches.

381 

382### Create commits and pull requests

383 

384Claude pode preparar alterações, escrever mensagens de commit e criar pull requests com base em seu trabalho:

385 

386```text theme={null}

387> commit my changes with a descriptive message

388> create a pr for this feature

389> summarize the changes I've made to the auth module

390```

391 

392Ao criar pull requests, Claude gera descrições com base nas alterações de código reais e pode adicionar contexto sobre testes ou decisões de implementação.

393 

394### Use git worktrees for parallel tasks

395 

396Use a flag `--worktree` (`-w`) para iniciar Claude em um worktree isolado com seus próprios arquivos e branch:

397 

398```bash theme={null}

399claude --worktree feature-auth

400```

401 

402Cada worktree mantém estado de arquivo independente enquanto compartilha histórico git. Isso evita que instâncias do Claude interfiram uma com a outra ao trabalhar em diferentes tarefas. Para mais detalhes, consulte [Run parallel sessions with Git worktrees](/pt/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees).

403 

404## Use third-party providers

405 

406Por padrão, Claude Code se conecta diretamente à API da Anthropic. Se sua organização usa Amazon Bedrock, Google Vertex AI ou Microsoft Foundry para acessar Claude, configure a extensão para usar seu provedor em vez disso:

407 

408<Steps>

409 <Step title="Disable login prompt">

410 Abra a [Disable Login Prompt setting](vscode://settings/claudeCode.disableLoginPrompt) e marque a caixa.

411 

412 Você também pode abrir as configurações do VS Code (`Cmd+,` no Mac ou `Ctrl+,` no Windows/Linux), pesquisar por "Claude Code login" e marcar **Disable Login Prompt**.

413 </Step>

414 

415 <Step title="Configure your provider">

416 Siga o guia de configuração para seu provedor:

417 

418 * [Claude Code on Amazon Bedrock](/pt/amazon-bedrock)

419 * [Claude Code on Google Vertex AI](/pt/google-vertex-ai)

420 * [Claude Code on Microsoft Foundry](/pt/microsoft-foundry)

421 

422 Estes guias cobrem a configuração de seu provedor em `~/.claude/settings.json`, o que garante que suas configurações sejam compartilhadas entre a extensão VS Code e a CLI.

423 </Step>

424</Steps>

425 

426## Security and privacy

427 

428Seu código permanece privado. Claude Code processa seu código para fornecer assistência, mas não o usa para treinar modelos. Para detalhes sobre manipulação de dados e como desativar o logging, consulte [Data and privacy](/pt/data-usage).

429 

430Com permissões de auto-edição habilitadas, Claude Code pode modificar arquivos de configuração do VS Code (como `settings.json` ou `tasks.json`) que o VS Code pode executar automaticamente. Para reduzir o risco ao trabalhar com código não confiável:

431 

432* Habilite [VS Code Restricted Mode](https://code.visualstudio.com/docs/editor/workspace-trust#_restricted-mode) para espaços de trabalho não confiáveis

433* Use modo de aprovação manual em vez de auto-accept para edições

434* Revise as alterações cuidadosamente antes de aceitá-las

435 

436### The built-in IDE MCP server

437 

438Quando a extensão está ativa, ela executa um servidor MCP local ao qual a CLI se conecta automaticamente. É assim que a CLI abre diffs no visualizador de diff nativo do VS Code, lê sua seleção atual para `@`-mentions e — quando você está trabalhando em um notebook Jupyter — pede ao VS Code para executar células.

439 

440O servidor é nomeado `ide` e está oculto de `/mcp` porque não há nada para configurar. Se sua organização usa um hook `PreToolUse` para criar uma lista de permissões de ferramentas MCP, porém, você precisará saber que ele existe.

441 

442**Transport and authentication.** O servidor se vincula a `127.0.0.1` em uma porta alta aleatória e não é acessível de outras máquinas. Cada ativação de extensão gera um token de autenticação aleatório novo que a CLI deve apresentar para se conectar. O token é escrito em um arquivo de lock em `~/.claude/ide/` com permissões `0600` em um diretório `0700`, então apenas o usuário executando VS Code pode lê-lo.

443 

444**Tools exposed to the model.** O servidor hospeda uma dúzia de ferramentas, mas apenas duas são visíveis para o modelo. O resto é RPC interno que a CLI usa para sua própria UI — abrindo diffs, lendo seleções, salvando arquivos — e são filtrados antes da lista de ferramentas chegar ao Claude.

445 

446| Tool name (as seen by hooks) | What it does | Writes? |

447| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------- |

448| `mcp__ide__getDiagnostics` | Retorna diagnósticos do language-server — os erros e avisos no painel Problems do VS Code. Opcionalmente escopo para um arquivo. | No |

449| `mcp__ide__executeCode` | Executa código Python no kernel do notebook Jupyter ativo. Consulte fluxo de confirmação abaixo. | Yes |

450 

451**Jupyter execution always asks first.** `mcp__ide__executeCode` não pode executar nada silenciosamente. Em cada chamada, o código é inserido como uma nova célula no final do notebook ativo, VS Code a rola para a vista, e um Quick Pick nativo pergunta se você quer **Execute** ou **Cancel**. Cancelar — ou descartar o seletor com `Esc` — retorna um erro ao Claude e nada é executado. A ferramenta também se recusa completamente quando não há um notebook ativo, quando a extensão Jupyter (`ms-toolsai.jupyter`) não está instalada, ou quando o kernel não é Python.

452 

453<Note>

454 A confirmação do Quick Pick é separada dos hooks `PreToolUse`. Uma entrada de lista de permissões para `mcp__ide__executeCode` permite que Claude *proponha* executar uma célula; o Quick Pick dentro do VS Code é o que permite que ele *realmente* execute.

455</Note>

456 

457<a id="troubleshooting" />

458 

459## Fix common issues

460 

461### Extension won't install

462 

463* Certifique-se de que você tem uma versão compatível do VS Code (1.98.0 ou posterior)

464* Verifique se o VS Code tem permissão para instalar extensões

465* Tente instalar diretamente do [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code)

466 

467### Spark icon not visible

468 

469O ícone Spark aparece na **Editor Toolbar** (canto superior direito do editor) quando você tem um arquivo aberto. Se você não o vir:

470 

4711. **Open a file**: O ícone requer um arquivo aberto. Ter apenas uma pasta aberta não é suficiente.

4722. **Check VS Code version**: Requer 1.98.0 ou superior (Help → About)

4733. **Restart VS Code**: Execute "Developer: Reload Window" na Paleta de Comandos

4744. **Disable conflicting extensions**: Desabilite temporariamente outras extensões de IA (Cline, Continue, etc.)

4755. **Check workspace trust**: A extensão não funciona em Restricted Mode

476 

477Alternativamente, clique em "✱ Claude Code" na **Status Bar** (canto inferior direito). Isso funciona mesmo sem um arquivo aberto. Você também pode usar a **Command Palette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) e digitar "Claude Code".

478 

479### Claude Code never responds

480 

481Se Claude Code não está respondendo aos seus prompts:

482 

4831. **Check your internet connection**: Certifique-se de que você tem uma conexão de internet estável

4842. **Start a new conversation**: Tente iniciar uma nova conversa para ver se o problema persiste

4853. **Try the CLI**: Execute `claude` do terminal para ver se você obtém mensagens de erro mais detalhadas

486 

487Se os problemas persistirem, [file an issue on GitHub](https://github.com/anthropics/claude-code/issues) com detalhes sobre o erro.

488 

489## Uninstall the extension

490 

491Para desinstalar a extensão Claude Code:

492 

4931. Abra a visualização de Extensões (`Cmd+Shift+X` no Mac ou `Ctrl+Shift+X` no Windows/Linux)

4942. Pesquise por "Claude Code"

4953. Clique em **Uninstall**

496 

497Para também remover dados de extensão e redefinir todas as configurações:

498 

499```bash theme={null}

500rm -rf ~/.vscode/globalStorage/anthropic.claude-code

501```

502 

503Para ajuda adicional, consulte o [troubleshooting guide](/pt/troubleshooting).

504 

505## Next steps

506 

507Agora que você tem Claude Code configurado no VS Code:

508 

509* [Explore common workflows](/pt/common-workflows) para aproveitar ao máximo Claude Code

510* [Set up MCP servers](/pt/mcp) para estender as capacidades do Claude com ferramentas externas. Adicione servidores usando a CLI, depois gerencie-os com `/mcp` no painel de chat.

511* [Configure Claude Code settings](/pt/settings) para personalizar comandos permitidos, hooks e muito mais. Essas configurações são compartilhadas entre a extensão e CLI.

web-quickstart.md +220 −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# Comece com Claude Code na web

6 

7> Execute Claude Code na nuvem a partir do seu navegador ou telefone. Conecte um repositório GitHub, envie uma tarefa e revise o PR sem configuração local.

8 

9<Note>

10 Claude Code na web 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.

11</Note>

12 

13Claude Code na web é executado em infraestrutura de nuvem gerenciada pela Anthropic em vez de sua máquina. Envie tarefas de [claude.ai/code](https://claude.ai/code) no seu navegador ou no aplicativo móvel Claude.

14 

15Você precisará de um repositório GitHub para [começar](#connect-github-and-create-an-environment). Claude o clona em uma máquina virtual isolada, faz alterações e envia uma branch para você revisar. As sessões persistem entre dispositivos, portanto uma tarefa que você inicia no seu laptop está pronta para revisar no seu telefone mais tarde.

16 

17Claude Code na web funciona bem para:

18 

19* **Tarefas paralelas**: execute várias tarefas independentes ao mesmo tempo, cada uma em sua própria sessão e branch, sem gerenciar múltiplas worktrees

20* **Repositórios que você não tem localmente**: Claude clona o repositório novo a cada sessão, então você não precisa tê-lo verificado

21* **Tarefas que não precisam de direcionamento frequente**: envie uma tarefa bem definida, faça outra coisa e revise o resultado quando Claude terminar

22* **Perguntas sobre código e exploração**: entenda uma base de código ou rastreie como um recurso é implementado sem um checkout local

23 

24Para trabalho que precisa de sua configuração local, ferramentas ou ambiente, executar Claude Code localmente ou usar [Remote Control](/pt/remote-control) é mais adequado.

25 

26## Como as sessões são executadas

27 

28Quando você envia uma tarefa:

29 

301. **Clone e prepare**: seu repositório é clonado para uma VM gerenciada pela Anthropic, e seu [script de configuração](/pt/claude-code-on-the-web#setup-scripts) é executado se configurado.

312. **Configure a rede**: o acesso à internet é definido com base no [nível de acesso](/pt/claude-code-on-the-web#access-levels) do seu ambiente.

323. **Trabalhe**: Claude analisa código, faz alterações, executa testes e verifica seu trabalho. Você pode assistir e direcionar durante todo o processo, ou se afastar e voltar quando terminar.

334. **Envie a branch**: quando Claude atinge um ponto de parada, ele envia sua branch para o GitHub. Você revisa o diff, deixa comentários inline, cria um PR ou envia outra mensagem para continuar.

34 

35A sessão não fecha quando a branch é enviada. A criação de PR e edições adicionais acontecem dentro da mesma conversa.

36 

37## Compare as maneiras de executar Claude Code

38 

39Claude Code se comporta da mesma forma em todos os lugares. O que muda é onde o código é executado e se sua configuração local está disponível. O aplicativo Desktop oferece sessões locais e em nuvem, portanto suas respostas abaixo dependem de qual você escolher:

40 

41| | Na web | Remote Control | Terminal CLI | Aplicativo Desktop |

42| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- | :------------------ | :----------------------------- |

43| **O código é executado em** | VM de nuvem Anthropic | Sua máquina | Sua máquina | Sua máquina ou VM de nuvem |

44| **Você conversa de** | claude.ai ou aplicativo móvel | claude.ai ou aplicativo móvel | Seu terminal | A interface do Desktop |

45| **Usa sua configuração local** | Não, apenas repositório | Sim | Sim | Sim para local, não para nuvem |

46| **Requer GitHub** | Sim, ou [agrupe um repositório local](/pt/claude-code-on-the-web#send-local-repositories-without-github) via `--remote` | Não | Não | Apenas para sessões em nuvem |

47| **Continua funcionando se você desconectar** | Sim | Enquanto o terminal permanecer aberto | Não | Depende do tipo de sessão |

48| **[Modos de permissão](/pt/permission-modes)** | Aceitar edições automaticamente, Plan | Perguntar, Aceitar edições automaticamente, Plan | Todos os modos | Depende do tipo de sessão |

49| **Acesso à rede** | Configurável por ambiente | Rede da sua máquina | Rede da sua máquina | Depende do tipo de sessão |

50 

51Consulte a documentação do [quickstart do terminal](/pt/quickstart), [aplicativo Desktop](/pt/desktop) ou [Remote Control](/pt/remote-control) para configurá-los.

52 

53## Conecte GitHub e crie um ambiente

54 

55A configuração é um processo único. Se você já usa a CLI do GitHub, você pode [fazer isso do seu terminal](#connect-from-your-terminal) em vez do navegador.

56 

57<Steps>

58 <Step title="Visite claude.ai/code">

59 Vá para [claude.ai/code](https://claude.ai/code) e faça login com sua conta Anthropic.

60 </Step>

61 

62 <Step title="Instale o aplicativo Claude GitHub">

63 Após fazer login, claude.ai/code solicita que você conecte o GitHub. Siga o prompt para instalar o aplicativo Claude GitHub e conceder acesso aos seus repositórios. As sessões em nuvem funcionam com repositórios GitHub existentes, portanto para iniciar um novo projeto, [crie um repositório vazio no GitHub](https://github.com/new) primeiro.

64 </Step>

65 

66 <Step title="Crie seu ambiente">

67 Após conectar o GitHub, você será solicitado a criar um ambiente de nuvem. O ambiente controla qual acesso à rede Claude tem durante as sessões e o que é executado quando uma nova sessão é criada. Consulte [Ferramentas instaladas](/pt/claude-code-on-the-web#installed-tools) para ver o que está disponível sem nenhuma configuração.

68 

69 O formulário tem estes campos:

70 

71 * **Nome**: um rótulo de exibição. Útil quando você tem múltiplos ambientes para diferentes projetos ou níveis de acesso.

72 * **Acesso à rede**: controla o que a sessão pode alcançar na internet. O padrão, `Trusted`, permite conexões com [registros de pacotes comuns](/pt/claude-code-on-the-web#default-allowed-domains) como npm, PyPI e RubyGems enquanto bloqueia o acesso geral à internet.

73 * **Variáveis de ambiente**: variáveis opcionais disponíveis em cada sessão, em formato `.env`. Não coloque valores entre aspas, pois as aspas são armazenadas como parte do valor. Estas são visíveis para qualquer pessoa que possa editar este ambiente.

74 * **Script de configuração**: um script Bash opcional que é executado antes do Claude Code ser iniciado. Use-o para instalar ferramentas do sistema que a VM de nuvem não inclui, como `apt install -y gh`. O resultado é [armazenado em cache](/pt/claude-code-on-the-web#environment-caching), portanto o script não é executado novamente a cada sessão. Consulte [Scripts de configuração](/pt/claude-code-on-the-web#setup-scripts) para exemplos e dicas de depuração.

75 

76 Para um primeiro projeto, deixe os padrões e clique em **Criar ambiente**. Você pode [editá-lo depois ou criar ambientes adicionais](/pt/claude-code-on-the-web#configure-your-environment) para diferentes projetos.

77 </Step>

78</Steps>

79 

80### Conecte do seu terminal

81 

82Se 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](/pt/quickstart). `/web-setup` lê seu token `gh` local, vincula-o à sua conta Claude e cria um ambiente de nuvem padrão se você não tiver um.

83 

84<Note>

85 Organizações com [Zero Data Retention](/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, `/web-setup` abre o fluxo de integração do navegador.

86</Note>

87 

88<Steps>

89 <Step title="Autentique com a CLI do GitHub">

90 No seu shell, autentique a CLI do GitHub se você ainda não o fez:

91 

92 ```bash theme={null}

93 gh auth login

94 ```

95 </Step>

96 

97 <Step title="Faça login no Claude">

98 Na CLI do Claude Code, execute `/login` para fazer login com sua conta claude.ai. Pule esta etapa se você já estiver conectado.

99 </Step>

100 

101 <Step title="Execute /web-setup">

102 Na CLI do Claude Code, execute:

103 

104 ```text theme={null}

105 /web-setup

106 ```

107 

108 Isso sincroniza seu token `gh` com sua conta Claude. Se você ainda não tiver um ambiente de nuvem, `/web-setup` cria um com acesso à rede Trusted e sem script de configuração. Você pode [editar o ambiente ou adicionar variáveis](/pt/claude-code-on-the-web#configure-your-environment) depois. Após `/web-setup` ser concluído, você pode iniciar sessões em nuvem do seu terminal com [`--remote`](/pt/claude-code-on-the-web#from-terminal-to-web) ou configurar tarefas recorrentes com [`/schedule`](/pt/routines).

109 </Step>

110</Steps>

111 

112## Inicie uma tarefa

113 

114Com GitHub conectado e um ambiente criado, você está pronto para enviar tarefas.

115 

116<Steps>

117 <Step title="Selecione um repositório e branch">

118 De [claude.ai/code](https://claude.ai/code) ou da aba Code no aplicativo móvel Claude, clique no seletor de repositório abaixo da caixa de entrada e escolha um repositório para Claude trabalhar. Cada repositório mostra um seletor de branch. Altere-o para iniciar Claude a partir de uma branch de recurso em vez da padrão. Você pode adicionar múltiplos repositórios para trabalhar entre eles em uma sessão.

119 </Step>

120 

121 <Step title="Escolha um modo de permissão">

122 O dropdown de modo ao lado da entrada padrão é **Aceitar edições automaticamente**, onde Claude faz alterações e envia uma branch sem parar para aprovação. Mude para **Plan mode** se você quiser que Claude proponha uma abordagem e aguarde seu aval antes de editar arquivos. As sessões em nuvem não oferecem permissões Ask, modo Auto ou permissões Bypass. Consulte [Modos de permissão](/pt/permission-modes) para a lista completa.

123 </Step>

124 

125 <Step title="Descreva a tarefa e envie">

126 Digite uma descrição do que você quer e pressione Enter. Seja específico:

127 

128 * Nomeie o arquivo ou função: "Adicione um README com instruções de configuração" ou "Corrija o teste de autenticação falhando em `tests/test_auth.py`" é melhor que "corrigir testes"

129 * Cole a saída de erro se você tiver

130 * Descreva o comportamento esperado, não apenas o sintoma

131 

132 Claude clona os repositórios, executa seu script de configuração se configurado e começa a trabalhar. Cada tarefa recebe sua própria sessão e sua própria branch, portanto você não precisa esperar uma terminar antes de iniciar outra.

133 </Step>

134</Steps>

135 

136## Pré-preenchimento de sessões

137 

138Você pode pré-preencher o prompt, repositórios e ambiente para uma nova sessão adicionando parâmetros de consulta à URL [claude.ai/code](https://claude.ai/code). Use isso para construir integrações como um botão no seu rastreador de problemas que abre Claude Code com a descrição do problema como prompt.

139 

140| Parâmetro | Descrição |

141| :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

142| `prompt` | Texto do prompt para pré-preencher na caixa de entrada. O alias `q` também é aceito. |

143| `prompt_url` | URL para buscar o texto do prompt, para prompts muito longos para incorporar em uma string de consulta. A URL deve permitir solicitações de origem cruzada. Ignorado quando `prompt` também está definido. |

144| `repositories` | Lista separada por vírgula de slugs `owner/repo` para pré-selecionar. O alias `repo` também é aceito. |

145| `environment` | Nome ou ID do [ambiente](#connect-github-and-create-an-environment) para pré-selecionar. |

146 

147Codifique cada valor em URL. O exemplo abaixo abre o formulário com um prompt e um repositório já selecionados:

148 

149```text theme={null}

150https://claude.ai/code?prompt=Fix%20the%20login%20bug&repositories=acme/webapp

151```

152 

153## Revise e itere

154 

155Quando Claude terminar, revise as alterações, deixe feedback em linhas específicas e continue até que o diff pareça correto.

156 

157<Steps>

158 <Step title="Abra a visualização de diff">

159 Um indicador de diff mostra linhas adicionadas e removidas em toda a sessão, por exemplo `+42 -18`. Selecione-o para abrir a visualização de diff, com uma lista de arquivos à esquerda e alterações à direita.

160 </Step>

161 

162 <Step title="Deixe comentários inline">

163 Selecione qualquer linha no diff, digite seu feedback e pressione Enter. Os comentários se acumulam até você enviar sua próxima mensagem, então são agrupados com ela. Claude vê "em `src/auth.ts:47`, não capture o erro aqui" ao lado de sua instrução principal, portanto você não precisa descrever onde está o problema.

164 </Step>

165 

166 <Step title="Crie um pull request">

167 Quando o diff parecer correto, selecione **Criar PR** no topo da visualização de diff. Você pode abri-lo como um PR completo, um rascunho ou ir para a página de composição do GitHub com um título e descrição gerados.

168 </Step>

169 

170 <Step title="Continue iterando após o PR">

171 A sessão permanece ativa após o PR ser criado. Cole a saída de falha de CI ou comentários do revisor no chat e peça a Claude para resolvê-los. Para ter Claude monitorar o PR automaticamente, consulte [Auto-fix pull requests](/pt/claude-code-on-the-web#auto-fix-pull-requests).

172 </Step>

173</Steps>

174 

175## Solucione problemas de configuração

176 

177### Nenhum repositório aparece após conectar GitHub

178 

179O aplicativo Claude GitHub precisa de acesso explícito a cada repositório que você deseja usar. Em github.com, abra **Configurações → Aplicativos → Claude → Configurar** e verifique se seu repositório está listado em **Acesso ao repositório**. Repositórios privados precisam da mesma autorização que os públicos.

180 

181### A página mostra apenas um botão de login do GitHub

182 

183As 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](/pt/remote-control) para executar Claude Code em sua própria máquina e monitorá-lo na web.

184 

185### "Não disponível para a organização selecionada"

186 

187Organizações Enterprise podem precisar que um administrador habilite Claude Code na web. Entre em contato com sua equipe de conta Anthropic.

188 

189### `/web-setup` retorna "Comando desconhecido"

190 

191`/web-setup` é executado dentro da CLI do Claude Code, não no seu shell. Inicie `claude` primeiro, depois digite `/web-setup` no prompt.

192 

193Se você digitou dentro do Claude Code e ainda vê o erro, sua CLI é mais antiga que v2.1.80 ou você está autenticado com uma chave de API ou provedor de terceiros em vez de uma assinatura claude.ai. Execute `claude update`, depois `/login` para fazer login com sua conta claude.ai.

194 

195### "Não foi possível criar um ambiente de nuvem" ou "Nenhum ambiente de nuvem disponível" ao usar `--remote` ou ultraplan

196 

197Os 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. {/* max-version: 2.1.100 */}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 para criar um manualmente, ou visite [claude.ai/code](https://claude.ai/code) e siga a etapa **Crie seu ambiente** acima.

198 

199### Script de configuração falhou

200 

201O script de configuração saiu com um status diferente de zero, o que bloqueia o início da sessão. Causas comuns:

202 

203* Uma instalação de pacote falhou porque o registro não está no seu [nível de acesso à rede](/pt/claude-code-on-the-web#access-levels). `Trusted` cobre a maioria dos gerenciadores de pacotes; `None` bloqueia todos.

204* O script faz referência a um arquivo ou caminho que não existe em um clone novo.

205* Um comando que funciona localmente precisa de uma invocação diferente no Ubuntu.

206 

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

208 

209### A sessão continua funcionando após fechar a aba

210 

211Isso é 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](/pt/claude-code-on-the-web#archive-sessions) para ocultá-la de sua lista, ou [deletá-la](/pt/claude-code-on-the-web#delete-sessions) para removê-la permanentemente.

212 

213## Próximos passos

214 

215Agora que você pode enviar e revisar tarefas, estas páginas cobrem o que vem a seguir: iniciar sessões em nuvem do seu terminal, agendar trabalho recorrente e dar instruções permanentes a Claude.

216 

217* [Use Claude Code na web](/pt/claude-code-on-the-web): a referência completa, incluindo teletransporte de sessões para seu terminal, scripts de configuração, variáveis de ambiente e configuração de rede

218* [Routines](/pt/routines): automatize trabalho em um cronograma, via chamada de API ou em resposta a eventos do GitHub

219* [CLAUDE.md](/pt/memory): dê a Claude instruções persistentes e contexto que carregam no início de cada sessão

220* Instale o aplicativo móvel 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) para monitorar sessões do seu telefone. Da CLI do Claude Code, `/mobile` mostra um código QR.

whats-new.md +49 −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# Novidades

6 

7> Um resumo semanal de recursos notáveis do Claude Code, com trechos de código, demonstrações e contexto sobre por que são importantes.

8 

9O resumo semanal para desenvolvedores destaca os recursos com maior probabilidade de mudar a forma como você trabalha. Cada entrada inclui código executável, uma breve demonstração e um link para a documentação completa. Para cada correção de bug e melhoria menor, consulte o [changelog](/pt/changelog).

10 

11<Update label="Week 17" description="20–24 de abril de 2026" tags={["v2.1.114–v2.1.119"]}>

12 **`/ultrareview`** abre como uma visualização pública de pesquisa: uma frota de agentes de caça a bugs é executada na nuvem e os resultados chegam automaticamente ao seu CLI ou Desktop.

13 

14 Também esta semana: **session recap** mostra o que aconteceu enquanto um terminal estava desfocado; **custom themes** permite que você crie e implante paletas de cores de `/theme` ou de um plugin; e **Claude Code na web** recebe um redesign com uma nova barra lateral de sessões e layout de arrastar e soltar.

15 

16 [Leia o resumo da Week 17 →](/pt/whats-new/2026-w17)

17</Update>

18 

19<Update label="Week 16" description="13–17 de abril de 2026" tags={["v2.1.105–v2.1.113"]}>

20 **Claude Opus 4.7** chega como o novo padrão no Max e Team Premium, com um novo nível de esforço `xhigh` que é a configuração recomendada para a maioria do trabalho de codificação e um controle deslizante `/effort` interativo para ajustá-lo.

21 

22 Também esta semana: **Routines** no Claude Code na web disparam agentes de nuvem templados a partir de um cronograma, evento do GitHub ou chamada de API; `/ultrareview` executa revisão de código multi-agente paralela na nuvem; `/usage` mostra o que está impulsionando seus limites; e o CLI passa para binários nativos.

23 

24 [Leia o resumo da Week 16 →](/pt/whats-new/2026-w16)

25</Update>

26 

27<Update label="Week 15" description="6–10 de abril de 2026" tags={["v2.1.92–v2.1.101"]}>

28 **Ultraplan** entra em visualização antecipada: elabore um plano na nuvem a partir do seu CLI, revise e comente sobre ele em um editor da web, depois execute-o remotamente ou puxe-o de volta para o local. A primeira execução agora cria automaticamente um ambiente de nuvem para você.

29 

30 Também esta semana: a ferramenta **Monitor** transmite eventos de fundo para a conversa para que Claude possa monitorar logs e reagir em tempo real, `/loop` auto-avança quando você omite o intervalo, `/team-onboarding` empacota sua configuração em um guia reproduzível, e `/autofix-pr` ativa a correção automática de PR a partir do seu terminal.

31 

32 [Leia o resumo da Week 15 →](/pt/whats-new/2026-w15)

33</Update>

34 

35<Update label="Week 14" description="30 de março – 3 de abril de 2026" tags={["v2.1.86–v2.1.91"]}>

36 **Computer use** chega ao CLI em visualização de pesquisa: Claude pode abrir aplicativos nativos, clicar pela interface do usuário e verificar alterações a partir do seu terminal. Melhor para fechar o loop em coisas que apenas uma GUI pode verificar.

37 

38 Também esta semana: lições interativas `/powerup`, renderização de tela alternativa sem cintilação, uma substituição de tamanho de resultado MCP por ferramenta até 500K, e executáveis de plugin no `PATH` da ferramenta Bash.

39 

40 [Leia o resumo da Week 14 →](/pt/whats-new/2026-w14)

41</Update>

42 

43<Update label="Week 13" description="23–27 de março de 2026" tags={["v2.1.83–v2.1.85"]}>

44 **Auto mode** chega em visualização de pesquisa: um classificador lida com seus prompts de permissão para que ações seguras sejam executadas sem interrupção e as arriscadas sejam bloqueadas. O meio termo entre aprovar tudo e `--dangerously-skip-permissions`.

45 

46 Também esta semana: computer use no aplicativo Desktop, PR auto-fix na Web, busca de transcrição com `/`, uma ferramenta PowerShell nativa para Windows, e hooks `if` condicionais.

47 

48 [Leia o resumo da Week 13 →](/pt/whats-new/2026-w13)

49</Update>

whats-new/2026-w16.md +135 −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 16 · 13–17 de abril de 2026

6 

7> Claude Opus 4.7 com o novo nível de esforço xhigh, Routines no Claude Code na web, /ultrareview revisão de código na nuvem, um /usage breakdown que mostra o que está impulsionando seus limites, e binários nativos substituindo o JavaScript agrupado.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/pt/docs/changelog#2-1-105">v2.1.105 → v2.1.113</a></span>

11 <span>5 recursos · 13–17 de abril</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Opus 4.7</span>

17 <span className="digest-feature-pill">novo modelo</span>

18 </div>

19 

20 <p className="digest-feature-lede">O modelo de codificação mais forte da Anthropic agora é o padrão no Max e Team Premium, e está disponível em qualquer outro lugar a partir de <code>/model</code>. Ele adiciona um novo nível de esforço <code>xhigh</code> que fica entre <code>high</code> e <code>max</code>: melhores resultados para a maioria das tarefas de codificação e agentes, aplicado como padrão na primeira vez que você muda para 4.7. <code>/effort</code> agora abre um controle deslizante interativo com setas quando você o chama sem argumentos, para que você possa equilibrar inteligência contra velocidade sem precisar lembrar dos nomes dos níveis.</p>

21 

22 <p className="digest-feature-try">Mude o modelo e o esforço em uma única ação:</p>

23 

24 ```text Claude Code theme={null}

25 > /model opus

26 > /effort xhigh

27 ```

28 

29 <a className="digest-feature-link" href="/pt/docs/model-config#adjust-effort-level">Configuração de modelo: níveis de esforço</a>

30</div>

31 

32<div className="digest-feature">

33 <div className="digest-feature-header">

34 <span className="digest-feature-title">Routines</span>

35 <span className="digest-feature-pill">web</span>

36 </div>

37 

38 <p className="digest-feature-lede">Agentes em nuvem com modelo que são acionados em um cronograma, um evento do GitHub ou uma chamada de API. Defina uma routine uma vez no Claude Code na web com um prompt, os repositórios que ela pode tocar e os conectores que precisa, depois deixe PR-opened, release-published ou seu próprio webhook acioná-la sem sua máquina estar em execução. O seletor de gatilho agora cobre eventos do GitHub com filtros opcionais e fornece a cada routine um endpoint <code>/fire</code> com token para sistemas externos.</p>

39 

40 <Frame>

41 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/routines.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=2ba818ea9280c549511cb48b9b4d1dc5" alt="Criando uma routine no Claude Code na web com gatilhos de cronograma, evento do GitHub e API" width="1440" height="810" data-path="images/whats-new/routines.png" />

42 </Frame>

43 

44 <p className="digest-feature-try">Crie uma a partir da interface web, ou estruture a partir do seu terminal:</p>

45 

46 ```text Claude Code theme={null}

47 > /schedule daily PR review at 9am

48 ```

49 

50 <a className="digest-feature-link" href="/pt/docs/routines">Guia de Routines</a>

51</div>

52 

53<div className="digest-feature">

54 <div className="digest-feature-header">

55 <span className="digest-feature-title">/usage breakdown</span>

56 <span className="digest-feature-pill">CLI</span>

57 </div>

58 

59 <p className="digest-feature-lede">Mais visibilidade sobre para onde vai seu uso do Claude Code. <code>/usage</code> agora mostra o que está impulsionando seus limites: sessões paralelas, subagentes, cache misses e contexto longo, cada um com uma porcentagem das suas últimas 24 horas e uma dica para otimizá-lo. Pressione <code>d</code> ou <code>w</code> para alternar entre visualizações de dia e semana.</p>

60 

61 <Frame>

62 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/usage.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=792a4b43cbef4e2931974831f076bca6" alt="O comando /usage mostrando um detalhamento do que está contribuindo para o uso de limites" width="1204" height="1182" data-path="images/whats-new/usage.png" />

63 </Frame>

64 

65 <p className="digest-feature-try">Execute a qualquer momento:</p>

66 

67 ```text Claude Code theme={null}

68 > /usage

69 ```

70 

71 <a className="digest-feature-link" href="/pt/docs/commands">Referência de comandos</a>

72</div>

73 

74<div className="digest-feature">

75 <div className="digest-feature-header">

76 <span className="digest-feature-title">/ultrareview</span>

77 <span className="digest-feature-pill">v2.1.111</span>

78 </div>

79 

80 <p className="digest-feature-lede">Revisão abrangente de código na nuvem. Ultrareview distribui sua branch em revisores paralelos no Claude Code na web, executa uma passagem de crítica adversarial sobre cada descoberta e retorna um relatório de descobertas verificadas enquanto seu terminal permanece livre. Chame-o sem argumentos para revisar sua branch atual, ou passe um número de PR para buscar e revisar esse PR. O diálogo de inicialização agora mostra um diffstat para que você saiba o que está sendo enviado antes de confirmar.</p>

81 

82 <p className="digest-feature-try">Revise a branch em que você está:</p>

83 

84 ```text Claude Code theme={null}

85 > /ultrareview

86 ```

87 

88 <p className="digest-feature-try">Ou aponte para um PR:</p>

89 

90 ```text Claude Code theme={null}

91 > /ultrareview 1234

92 ```

93 

94 <a className="digest-feature-link" href="/pt/docs/ultrareview">Guia de Ultrareview</a>

95</div>

96 

97<div className="digest-feature">

98 <div className="digest-feature-header">

99 <span className="digest-feature-title">Binários nativos</span>

100 <span className="digest-feature-pill">v2.1.113</span>

101 </div>

102 

103 <p className="digest-feature-lede">O CLI <code>claude</code> agora executa um binário nativo por plataforma em vez de JavaScript agrupado, portanto o comando <code>claude</code> instalado não invoca mais Node. O pacote npm puxa o binário correto através de uma dependência opcional como <code>@anthropic-ai/claude-code-darwin-arm64</code>, para que seu comando de instalação não mude. O instalador autônomo já enviou este binário; npm agora corresponde a ele.</p>

104 

105 <p className="digest-feature-try">Atualize e verifique o que você está executando:</p>

106 

107 ```bash theme={null}

108 claude update

109 claude --version

110 ```

111 

112 <a className="digest-feature-link" href="/pt/docs/setup">Guia de configuração</a>

113</div>

114 

115<div className="digest-wins">

116 <p className="digest-wins-title">Outras vitórias</p>

117 

118 <div className="digest-wins-grid">

119 <div><a href="/pt/docs/permission-modes#eliminate-prompts-with-auto-mode">Modo automático</a> agora está disponível para assinantes Max no Opus 4.7, e a flag <code>--enable-auto-mode</code> não é mais necessária</div>

120 <div><a href="/pt/docs/interactive-mode#session-recap">Recapitulação de sessão</a> mostra um resumo de uma linha do que aconteceu enquanto você estava ausente; execute <code>/recap</code> sob demanda ou desative-o em <code>/config</code></div>

121 <div>Novo comando <code>/tui</code> e configuração <code>tui</code> alternam entre renderização clássica e sem cintilação no meio da conversa; visualização de foco movida de <code>Ctrl+O</code> para seu próprio comando <code>/focus</code></div>

122 <div>Ferramenta de notificação push: com <a href="/pt/docs/remote-control">Controle Remoto</a> conectado e "Enviar quando Claude decidir" ativado, Claude pode fazer ping no seu telefone quando precisar de você</div>

123 <div>Plugins podem enviar observadores de fundo através de uma chave de manifesto de nível superior <code>monitors</code> que se arma automaticamente no início da sessão ou na invocação de skill</div>

124 <div>Opção "Automático (corresponder terminal)" em <code>/theme</code> segue o modo escuro/claro do seu terminal</div>

125 <div><code>/fewer-permission-prompts</code> verifica suas transcrições em busca de chamadas Bash e MCP comuns somente leitura e propõe uma lista de permissões para <code>.claude/settings.json</code></div>

126 <div>Claude agora pode descobrir e executar comandos integrados como <code>/init</code>, <code>/review</code> e <code>/security-review</code> através da ferramenta Skill</div>

127 <div>Hooks <code>PreCompact</code> podem bloquear compactação saindo com código 2 ou retornando <code>{"{"}"decision":"block"{"}"}</code></div>

128 <div><code>ENABLE\_PROMPT\_CACHING\_1H</code> opta por usuários de chave de API, Bedrock, Vertex e Foundry em TTL de cache de prompt de 1 hora</div>

129 <div>Configuração <code>sandbox.network.deniedDomains</code> recorta domínios específicos de um curinga <code>allowedDomains</code> mais amplo</div>

130 <div><code>/undo</code> agora é um alias para <code>/rewind</code>, e <code>/proactive</code> é um alias para <code>/loop</code></div>

131 <div>Permissões Bash endurecidas: regras de negação agora correspondem através de wrappers <code>env</code>/<code>sudo</code>/<code>watch</code>, e regras de permissão <code>Bash(find:\*)</code> não aprovam mais automaticamente <code>-exec</code> ou <code>-delete</code></div>

132 </div>

133</div>

134 

135[Changelog completo para v2.1.105–v2.1.113 →](/pt/changelog#2-1-105)

whats-new/2026-w17.md +113 −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 17 · 20–24 de abril de 2026

6 

7> /ultrareview abre como uma visualização de pesquisa, recapitulações automáticas de sessão quando você retorna a um terminal, temas de cores personalizados que você pode criar e enviar em plugins, e um Claude Code redesenhado na web.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/pt/docs/changelog#2-1-114">v2.1.114 → v2.1.119</a></span>

11 <span>4 recursos · 20–24 de abril</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">/ultrareview</span>

17 <span className="digest-feature-pill">visualização de pesquisa</span>

18 </div>

19 

20 <p className="digest-feature-lede">Agora em visualização de pesquisa pública. Ultrareview executa uma frota de agentes de caça a bugs na nuvem contra sua branch ou um PR, e os resultados chegam de volta ao CLI ou Desktop automaticamente. Execute antes de mesclar mudanças críticas, como autenticação ou migrações de dados.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/ultrareview.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0fb1271365d38f414ad155aeb8edb08e" data-path="images/whats-new/ultrareview.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Revise a branch em que você está:</p>

27 

28 ```text Claude Code theme={null}

29 > /ultrareview

30 ```

31 

32 <p className="digest-feature-try">Ou aponte para um PR:</p>

33 

34 ```text Claude Code theme={null}

35 > /ultrareview 1234

36 ```

37 

38 <a className="digest-feature-link" href="/pt/docs/ultrareview">Guia Ultrareview</a>

39</div>

40 

41<div className="digest-feature">

42 <div className="digest-feature-header">

43 <span className="digest-feature-title">Recapitulação de sessão</span>

44 <span className="digest-feature-pill">CLI</span>

45 </div>

46 

47 <p className="digest-feature-lede">Desvie o foco de uma sessão e volte para uma recapitulação de uma linha do que aconteceu enquanto você estava ausente. Útil para manter o fluxo enquanto executa várias sessões Claude simultaneamente.</p>

48 

49 <Frame>

50 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/session-recap.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0a8db1470bd0161a47efeb2f322af76f" data-path="images/whats-new/session-recap.mp4" />

51 </Frame>

52 

53 <p className="digest-feature-try">Gere uma recapitulação sob demanda ou desative a automática em <code>/config</code>:</p>

54 

55 ```text Claude Code theme={null}

56 > /recap

57 ```

58 

59 <a className="digest-feature-link" href="/pt/docs/interactive-mode#session-recap">Modo interativo: recapitulação de sessão</a>

60</div>

61 

62<div className="digest-feature">

63 <div className="digest-feature-header">

64 <span className="digest-feature-title">Temas personalizados</span>

65 <span className="digest-feature-pill">v2.1.118</span>

66 </div>

67 

68 <p className="digest-feature-lede">Crie e alterne entre temas de cores nomeados em <code>/theme</code>, ou edite manualmente arquivos JSON em <code>\~/.claude/themes/</code>. Cada tema escolhe uma predefinição base e substitui apenas os tokens que você se importa. Plugins também podem enviar temas.</p>

69 

70 <p className="digest-feature-try">Abra o seletor de tema e crie um novo:</p>

71 

72 ```text Claude Code theme={null}

73 > /theme

74 ```

75 

76 <a className="digest-feature-link" href="/pt/docs/terminal-config#create-a-custom-theme">Configuração de terminal: criar um tema personalizado</a>

77</div>

78 

79<div className="digest-feature">

80 <div className="digest-feature-header">

81 <span className="digest-feature-title">Claude Code na web</span>

82 <span className="digest-feature-pill">web</span>

83 </div>

84 

85 <p className="digest-feature-lede">Uma nova aparência para <a href="https://claude.ai/code">claude.ai/code</a> que corresponde ao aplicativo desktop redesenhado: barra lateral de sessões, layout de arrastar e soltar, e uma visualização de rotinas atualizada. Partes principais foram reconstruídas para respostas mais rápidas e uma experiência mais confiável.</p>

86 

87 <Frame>

88 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/web-redesign.jpeg?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=a2aca1b49e295b7337f5779038db8e2c" alt="Visão geral do redesenho do Claude Code na web: nova interface, velocidade e confiabilidade, trabalhe na web, mobile e CLI" width="1602" height="1610" data-path="images/whats-new/web-redesign.jpeg" />

89 </Frame>

90 

91 <a className="digest-feature-link" href="/pt/docs/claude-code-on-the-web">Claude Code na web</a>

92</div>

93 

94<div className="digest-wins">

95 <p className="digest-wins-title">Outras vitórias</p>

96 

97 <div className="digest-wins-grid">

98 <div><a href="/pt/docs/interactive-mode#vim-editor-mode">Modo visual Vim</a>: pressione <code>v</code> para seleção de caracteres ou <code>V</code> para seleção de linhas na entrada de prompt, com operadores e feedback visual</div>

99 <div>Hooks agora podem chamar ferramentas MCP diretamente via <a href="/pt/docs/hooks#mcp-tool-hook-fields"><code>type: "mcp\_tool"</code></a>, então um hook pode acessar um servidor já conectado sem gerar um processo</div>

100 <div><code>/cost</code> e <code>/stats</code> são mesclados em <a href="/pt/docs/commands"><code>/usage</code></a>; os nomes antigos ainda funcionam como atalhos de digitação que abrem a aba relevante</div>

101 <div>Mudanças em <code>/config</code> (tema, modo de editor, verbose e similares) agora persistem em <code>\~/.claude/settings.json</code> e seguem a mesma precedência projeto/local/política que outras <a href="/pt/docs/settings">configurações</a></div>

102 <div><a href="/pt/docs/sub-agents#fork-the-current-conversation">Subagentes bifurcados</a> podem ser ativados em compilações externas com <code>CLAUDE\_CODE\_FORK\_SUBAGENT=1</code>: uma bifurcação herda seu contexto de conversa completo em vez de começar do zero</div>

103 <div>O <a href="/pt/docs/model-config#adjust-effort-level">nível de esforço</a> padrão para assinantes Pro e Max em Opus 4.6 e Sonnet 4.6 agora é <code>high</code> (era <code>medium</code>)</div>

104 <div>Compilações nativas macOS e Linux substituem as ferramentas <code>Glob</code> e <code>Grep</code> por <code>bfs</code> e <code>ugrep</code> incorporados disponíveis através de Bash, para buscas mais rápidas sem uma rodada de ferramenta separada</div>

105 <div><code>--from-pr</code> agora aceita URLs de solicitação de mesclagem GitLab, solicitação de pull Bitbucket e PR do GitHub Enterprise além de github.com</div>

106 <div>Modo Auto: inclua <code>"\$defaults"</code> em <a href="/pt/docs/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, ou <code>environment</code></a> para adicionar regras personalizadas ao lado da lista integrada em vez de substituí-la</div>

107 <div>Novo comando <a href="/pt/docs/plugin-dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> cria tags git de lançamento para plugins com validação de versão</div>

108 <div>Sessões Opus 4.7 agora computam contra a janela de contexto nativa de 1M do modelo, corrigindo percentuais inflados de <code>/context</code> e autocompactação prematura</div>

109 <div><code>/resume</code> em sessões grandes é até 67% mais rápido e agora oferece resumir sessões grandes e obsoletas antes de relê-las</div>

110 </div>

111</div>

112 

113[Changelog completo para v2.1.114–v2.1.119 →](/pt/changelog#2-1-114)

zero-data-retention.md +66 −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# Retenção zero de dados

6 

7> Saiba mais sobre Retenção Zero de Dados (ZDR) para Claude Code no Claude for Enterprise, incluindo escopo, recursos desabilitados e como solicitar ativação.

8 

9Retenção Zero de Dados (ZDR) está disponível para Claude Code quando usado através do Claude for Enterprise. Quando ZDR está ativado, prompts e respostas do modelo geradas durante sessões do Claude Code são processadas em tempo real e não são armazenadas pela Anthropic após a resposta ser retornada, exceto quando necessário para cumprir a lei ou combater uso indevido.

10 

11ZDR no Claude for Enterprise oferece aos clientes empresariais a capacidade de usar Claude Code com retenção zero de dados e acesso a recursos administrativos:

12 

13* Controles de custo por usuário

14* Dashboard de [Analytics](/pt/analytics)

15* [Configurações gerenciadas pelo servidor](/pt/server-managed-settings)

16* Logs de auditoria

17 

18ZDR para Claude Code no Claude for Enterprise se aplica apenas à plataforma direta da Anthropic. Para implantações do Claude no Amazon Bedrock, Google Vertex AI ou Microsoft Foundry, consulte as políticas de retenção de dados dessas plataformas.

19 

20## Escopo do ZDR

21 

22ZDR cobre inferência do Claude Code no Claude for Enterprise.

23 

24<Warning>

25 ZDR é ativado por organização. Cada nova organização requer que ZDR seja ativado separadamente pela sua equipe de conta da Anthropic. ZDR não se aplica automaticamente a novas organizações criadas sob a mesma conta. Entre em contato com sua equipe de conta para ativar ZDR para qualquer nova organização.

26</Warning>

27 

28### O que ZDR cobre

29 

30ZDR cobre chamadas de inferência do modelo feitas através do Claude Code no Claude for Enterprise. Quando você usa Claude Code em seu terminal, os prompts que você envia e as respostas que Claude gera não são retidas pela Anthropic. Isso se aplica independentemente de qual modelo Claude é usado.

31 

32### O que ZDR não cobre

33 

34ZDR não se estende aos seguintes itens, mesmo para organizações com ZDR ativado. Esses recursos seguem [políticas padrão de retenção de dados](/pt/data-usage#data-retention):

35 

36| Recurso | Detalhes |

37| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

38| Chat no claude.ai | Conversas de chat através da interface web do Claude for Enterprise não são cobertas por ZDR. |

39| Cowork | Sessões de Cowork não são cobertas por ZDR. |

40| Claude Code Analytics | Não armazena prompts ou respostas do modelo, mas coleta metadados de produtividade como emails de conta e estatísticas de uso. Métricas de contribuição não estão disponíveis para organizações ZDR; o [dashboard de analytics](/pt/analytics) mostra apenas métricas de uso. |

41| Gerenciamento de usuários e assentos | Dados administrativos como emails de conta e atribuições de assentos são retidos sob políticas padrão. |

42| Integrações de terceiros | Dados processados por ferramentas de terceiros, MCP servers ou outras integrações externas não são cobertos por ZDR. Revise as práticas de tratamento de dados desses serviços independentemente. |

43 

44## Recursos desabilitados sob ZDR

45 

46Quando ZDR está ativado para uma organização do Claude Code no Claude for Enterprise, certos recursos que requerem armazenamento de prompts ou conclusões são automaticamente desabilitados no nível do backend:

47 

48| Recurso | Motivo |

49| -------------------------------------------------------------------- | --------------------------------------------------------------------- |

50| [Claude Code na Web](/pt/claude-code-on-the-web) | Requer armazenamento no servidor do histórico de conversas. |

51| [Sessões remotas](/pt/desktop#remote-sessions) do aplicativo Desktop | Requer dados de sessão persistentes que incluem prompts e conclusões. |

52| Envio de feedback (`/feedback`) | Enviar feedback envia dados de conversas para a Anthropic. |

53 

54Esses recursos são bloqueados no backend independentemente da exibição no lado do cliente. Se você vir um recurso desabilitado no terminal do Claude Code durante a inicialização, tentar usá-lo retorna um erro indicando que as políticas da organização não permitem essa ação.

55 

56Recursos futuros também podem ser desabilitados se exigirem armazenamento de prompts ou conclusões.

57 

58## Retenção de dados para violações de política

59 

60Mesmo com ZDR ativado, a Anthropic pode reter dados quando exigido por lei ou para resolver violações da Política de Uso. Se uma sessão for sinalizada para uma violação de política, a Anthropic pode reter as entradas e saídas associadas por até 2 anos, consistente com a política ZDR padrão da Anthropic.

61 

62## Solicitar ZDR

63 

64Para solicitar ZDR para Claude Code no Claude for Enterprise, [entre em contato com vendas](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request) ou sua equipe de conta da Anthropic. Sua equipe de conta enviará a solicitação internamente, e a Anthropic revisará e ativará ZDR em sua organização após confirmar a elegibilidade. Todas as ações de ativação são registradas em log de auditoria.

65 

66Se você está usando ZDR para Claude Code através de chaves de API pay-as-you-go, você pode fazer a transição para Claude for Enterprise para ganhar acesso a recursos administrativos enquanto mantém ZDR para Claude Code. Entre em contato com sua equipe de conta para coordenar a migração.