SpyBara
Go Premium

Documentation 2026-04-27 21:20 UTC to 2026-04-28 21:21 UTC

35 files changed +1,285 −88. View all changes and history on the product overview
2026
Wed 29 21:21 Tue 28 21:21 Mon 27 21:20 Sun 26 04:08 Sat 25 21:10 Fri 24 18:11 Thu 23 18:19 Wed 22 21:15 Tue 21 21:14 Mon 20 21:14 Sat 18 18:09 Fri 17 21:13 Thu 16 21:13 Wed 15 18:20 Tue 14 21:14 Mon 13 21:14 Sat 11 00:11 Fri 10 21:09 Thu 9 21:14 Wed 8 21:13 Tue 7 21:14 Sat 4 18:05 Fri 3 21:07 Thu 2 21:08 Wed 1 21:12
Details

534 534 

535 Many teams use both: CLI for daily development, SDK for production. Workflows translate directly between them.535 Many teams use both: CLI for daily development, SDK for production. Workflows translate directly between them.

536 </Tab>536 </Tab>

537 

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

539 [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) is a hosted REST API: Anthropic runs the agent and the sandbox, and your application sends events and streams back results. The **Agent SDK** is a library that runs the agent loop inside your own process.

540 

541 | | Agent SDK | Managed Agents |

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

543 | **Runs in** | Your process, your infrastructure | Anthropic-managed infrastructure |

544 | **Interface** | Python or TypeScript library | REST API |

545 | **Agent works on** | Files on your infrastructure | A managed sandbox per session |

546 | **Session state** | JSONL on your filesystem | Anthropic-hosted event log |

547 | **Custom tools** | In-process Python or TypeScript functions | Claude triggers the tool; you execute and return results |

548 | **Best for** | Local prototyping, agents that work directly on your filesystem and services | Production agents without operating sandbox or session infrastructure, long-running and asynchronous sessions |

549 

550 A common path is to prototype with the Agent SDK locally, then move to Managed Agents for production.

551 </Tab>

537</Tabs>552</Tabs>

538 553 

539## Changelog554## Changelog

Details

1375 | {1375 | {

1376 hookEventName: "PostToolUse";1376 hookEventName: "PostToolUse";

1377 additionalContext?: string;1377 additionalContext?: string;

1378 updatedToolOutput?: unknown;

1379 /** @deprecated Use `updatedToolOutput`, which works for all tools. */

1378 updatedMCPToolOutput?: unknown;1380 updatedMCPToolOutput?: unknown;

1379 }1381 }

1380 | {1382 | {

Details

417 "Action": [417 "Action": [

418 "bedrock:InvokeModel",418 "bedrock:InvokeModel",

419 "bedrock:InvokeModelWithResponseStream",419 "bedrock:InvokeModelWithResponseStream",

420 "bedrock:ListInferenceProfiles"420 "bedrock:ListInferenceProfiles",

421 "bedrock:GetInferenceProfile"

421 ],422 ],

422 "Resource": [423 "Resource": [

423 "arn:aws:bedrock:*:*:inference-profile/*",424 "arn:aws:bedrock:*:*:inference-profile/*",


445 446 

446For more restrictive permissions, you can limit the Resource to specific inference profile ARNs.447For more restrictive permissions, you can limit the Resource to specific inference profile ARNs.

447 448 

449`bedrock:GetInferenceProfile` lets Claude Code resolve an [application inference profile ARN](#map-each-model-version-to-an-inference-profile) to its backing foundation model, which is used to select the correct request shape for that model.

450 

451If the token is missing this permission, Claude Code recovers automatically by retrying once with the alternate shape, so requests still succeed but each new model adds an extra round-trip. Granting the permission avoids the retry. This applies most often to `AWS_BEARER_TOKEN_BEDROCK` deployments, where the token's policy is typically narrower than a full IAM role.

452 

448For details, see [Bedrock IAM documentation](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html).453For details, see [Bedrock IAM documentation](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html).

449 454 

450<Note>455<Note>

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# Champion kit

6 

7> A playbook for engineers advocating Claude Code internally: what to share, how to answer questions, and how to grow adoption on your team.

8 

9This page is for individual engineers who are already using Claude Code and want to help their team adopt it. It covers what to share, how to answer the questions you will get, a thirty-day playbook, and responses to common concerns.

10 

11Adoption of a developer tool rarely happens because of a rollout announcement. It happens because someone on the team begins using the tool well, talks about it openly, and makes it easy for others to follow. The work you do as a champion has a disproportionate effect: every example you share shortens the learning curve for the engineers who come after you, and every question you answer in public turns one person's experience into something the whole team can build on. You are acting as a multiplier for your team, not a help desk, and this guide is structured to keep the role sustainable on those terms.

12 

13## The champion role

14 

15The role consists of three behaviors that reinforce one another.

16 

17| Behavior | What it looks like in practice | Why it matters |

18| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

19| Share what you discover | Post the prompts, screenshots, and small wins from your own work in the places your team already reads, such as an engineering channel, a standup thread, or a pull-request description. | Examples drawn from your own codebase are more persuasive than any external documentation, because colleagues can see exactly how the tool applies to the problems they share with you. |

20| Be the person people ask | When a colleague asks how you accomplished something, respond with the actual prompt you used so they can apply it directly to their own task. | A concrete, runnable example removes the gap between curiosity and a first successful use, which is where most adoption efforts stall. |

21| Grow the circle | Establish a small number of lightweight, recurring habits, such as a dedicated channel or a weekly thread, so that momentum continues even when your attention is elsewhere. | Adoption that depends on a single person is fragile. Adoption that is carried by shared habits continues to compound on its own. |

22 

23Most of this fits naturally inside the work you are already doing. The difference is a small amount of additional intention about where your discoveries are posted and how your answers travel.

24 

25### What this should cost you

26 

27Set expectations with yourself and with your lead. The activities below are intended to fit inside a normal working week, and the role should remain a multiplier on your existing work rather than an additional support responsibility.

28 

29| Activity | Time per week | Guidance |

30| --------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------ |

31| Posting wins and prompts | About 15 minutes | Capture these in the moment with a screenshot and one or two sentences; avoid turning them into formal write-ups. |

32| Answering questions in a shared channel | About 20 minutes | Answer publicly once, then link back to that answer when the question recurs. |

33| Hosting a weekly show-and-tell thread | About 5 minutes | You post the opening prompt; the team supplies the content. |

34| Optional pairing or walkthroughs | 0 to 30 minutes | Reserve this for colleagues who are genuinely blocked, and offer the [Quickstart](/en/quickstart) link before scheduling time. |

35 

36## Share what you discover

37 

38Your own experience is the most persuasive material your colleagues will encounter, because it is specific to the codebase, workflows, and problems you all share. Documentation tells people what is possible; your posts show them what is actually working in your environment.

39 

40### What is worth sharing

41 

42The most useful posts describe a technique a colleague can reuse tomorrow rather than an outcome that is already complete. Techniques compound as they spread through a team; status updates do not.

43 

44Examples of reusable techniques:

45 

46* "I learned that @-mentioning a directory works. Pointing it at `@src/components/` and asking which were missing tests surfaced two I had overlooked."

47* "Plan mode (`Shift+Tab`) shows exactly which files will be touched before any edit is made, which is why I am comfortable using it on shared code."

48* "I configured a Stop hook so I receive a desktop notification when a long task completes. Configuration is in the thread."

49* "Running `/init` generates a `CLAUDE.md` from the repository so the assistant stops re-asking about our conventions."

50 

51### Where to share it

52 

53Post wherever your team already reads. The goal is to place examples in the path of normal work rather than to create a destination.

54 

55| Location | Best suited for | Recommended format |

56| ----------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |

57| A `#claude-code` or general engineering channel | Discoveries, prompts, and "today I learned" moments | A screenshot accompanied by one or two sentences of context |

58| Pull-request descriptions | Demonstrating the approach on real code that reviewers are already reading | A single line such as "Claude and I did this refactor; happy to walk through the approach." |

59| Standups or weekly written updates | Normalizing usage with leads and skip-level managers | One sentence describing one concrete outcome |

60| Team wiki or internal documentation | Durable patterns, custom skills, and `CLAUDE.md` examples | A short page, linked from the channel topic so it remains discoverable |

61 

62### The format that works

63 

64A screenshot accompanied by a single line of context, or a brief before-and-after description, is generally the right level of detail. Keep each post short enough that someone scrolling past still absorbs the point. A long write-up tends to be saved for later and forgotten, whereas a short post with a screenshot tends to be copied and tried.

65 

66The example posts below illustrate tone and length; adapt them rather than copying verbatim.

67 

68```text theme={null}

69Learned today that @-mentioning a directory works. I pointed it at

70@src/components/ and asked which components were missing tests, and it

71surfaced two I had forgotten about.

72```

73 

74```text theme={null}

75I configured a Stop hook so I receive a desktop notification when a long

76task completes. I started a refactor, stepped away, and was notified when

77it finished. Configuration is in the thread.

78```

79 

80```text theme={null}

81Plan mode is the reason I am comfortable using this on code that matters.

82Press Shift+Tab until you see "plan"; it lays out exactly which files it

83intends to touch before changing anything.

84```

85 

86## Be the person people ask

87 

88Once you have shared a few examples, questions will follow. This is where the champion role has the greatest leverage, because a good answer to one person frequently unblocks several others who are watching the same channel.

89 

90### Answer with a prompt rather than an explanation

91 

92When a colleague asks how you accomplished something, the most useful response is the prompt you actually used. They will learn more from running that prompt against their own problem than from any description you could write, and it gives them something they can act on immediately.

93 

94```text theme={null}

95Colleague: How did you get it to find that race condition?

96 

97Champion: I asked, "The test in @tests/scheduler.test.ts is flaky, figure

98out why," and it traced two unjoined promises in the scheduler. Try the

99same phrasing on your test.

100```

101 

102### Point at the feature rather than the documentation

103 

104A response such as "Try plan mode, press `Shift+Tab` until you see it" is more useful in the moment than a link to the documentation. If the person needs more depth later they will find it on their own; right now they need the single thing that unblocks them.

105 

106### Questions you are likely to hear

107 

108| Question | Suggested response | Follow-up resource |

109| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |

110| "What should I try it on first?" | Recommend a real but contained task, ideally a bug or chore the person has been postponing because it is tedious rather than difficult. | [Common workflows](/en/common-workflows) |

111| "How do I trust it with my code?" | Introduce plan mode: pressing `Shift+Tab` cycles into it, Claude proposes exactly what it intends to change, and nothing is modified until the user approves. | [Permissions](/en/permissions) |

112| "Is the setup worth the effort?" | Installation takes roughly two minutes, runs in the terminal, and requires no IDE extension. Running `/init` once is sufficient to begin working. | [Quickstart](/en/quickstart) |

113| "It produced an incorrect result." | Encourage them to provide the failure back to Claude. Pasting the error message or failing test is far more effective than rephrasing the original request. | [Common workflows](/en/common-workflows) |

114| "It does not understand our codebase conventions." | Suggest running `/init` to generate a `CLAUDE.md` file, then adding the team's conventions, test commands, and any directories that should be avoided. | [Memory](/en/memory) |

115| "Is this just autocomplete?" | Offer a brief demonstration in which Claude explains an unfamiliar file, traces a bug across services, or drafts a migration plan. These tasks require reasoning across the repository rather than completing a single line. | A two-minute live demonstration |

116| "What about security and data handling?" | Refer this question to your administrator. Your organization's deployment and data-handling policy is already configured, and champions should not improvise this answer. | [Security](/en/security) · [Data usage](/en/data-usage) |

117 

118## Grow the circle

119 

120The objective is not to build a program or to own a rollout. It is to establish a small number of lightweight habits that allow momentum to continue after you have stopped actively driving it. When questions in the channel are being answered by people other than you, the role has done its job.

121 

122### Patterns that tend to work

123 

124| Pattern | How to run it | Effort required |

125| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |

126| A dedicated channel | Create a `#claude-code` channel (or a recurring thread in an existing one), pin the [Quickstart](/en/quickstart) link and one strong example, and answer questions publicly so each answer benefits everyone watching. | About five minutes to set up, then ambient |

127| A weekly show-and-tell thread | Each Friday, post "What did Claude help you with this week?" No preparation, slides, or meeting are required; screenshots and short descriptions are sufficient. | About two minutes per week |

128| Share a custom skill | Post your most useful `.claude/skills/<name>/SKILL.md` file, for example a `/ship` skill that runs tests and lint before committing, with a one-line description. Because skills are plain Markdown, colleagues can adopt them immediately. | About five minutes per skill |

129| Generate a setup guide from your own usage | Run `/team-onboarding` in a project you have spent real time in. Claude scans your recent sessions, commands, and MCP servers, then produces a guide a new teammate can paste as their first message to replay your setup. Pin it in the channel. | About two minutes |

130| Pair on a first task | Offer a single fifteen-minute pairing session to anyone getting started. One successful outcome on their own code is more persuasive than any presentation. | About fifteen minutes per person |

131| Identify the next champion | The colleague who asks you the most questions is usually ready to take on this role. Forward them this page and divide the channel responsibilities between you. | Negligible |

132 

133### Thirty-day playbook

134 

135If a loose plan is helpful, the sequence below reflects what tends to work across most teams. Adjust freely to fit your context.

136 

137<Steps>

138 <Step title="Week 1: Seed the channel">

139 Create the channel, pin the [Quickstart](/en/quickstart), and post two or three of your own examples with the prompts included.

140 

141 **Signal that it is working:** a few colleagues react or reply, and at least one question is asked in the channel.

142 </Step>

143 

144 <Step title="Week 2: Start the rhythm">

145 Start the weekly show-and-tell thread, answer every question publicly, and share one custom skill or `CLAUDE.md` snippet.

146 

147 **Signal that it is working:** someone other than you posts an example of their own.

148 </Step>

149 

150 <Step title="Week 3: Pair and consolidate">

151 Offer two or three short pairing sessions and consolidate the most common questions and answers into a pinned FAQ message.

152 

153 **Signal that it is working:** you see repeat usage, with the same colleagues returning rather than trying once and stopping.

154 </Step>

155 

156 <Step title="Week 4: Hand off">

157 Identify a second champion and share a brief summary of what is working and what is not with your lead or administrator.

158 

159 **Signal that it is working:** questions in the channel are being answered by people other than you.

160 </Step>

161</Steps>

162 

163### When someone wants to go deeper

164 

165You are the warm introduction rather than the onboarding program. When a colleague moves past "should I try this" into "how do I become effective with it," point them to the [Quickstart](/en/quickstart) and [Common workflows](/en/common-workflows) pages. They contain short sections covering the features that are genuinely useful but difficult to discover on your own.

166 

167## Respond to common concerns

168 

169Healthy skepticism is expected; engineers should be cautious about tools that touch their code. The most effective response is rarely to argue the general case. Instead, acknowledge the concern, offer a brief reframe, and propose one concrete demonstration on the person's own code. Most concerns are resolved by a single successful experience.

170 

171| Concern | Suggested response | Evidence to offer |

172| --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |

173| "I am faster without it." | That is likely true for code the person writes routinely. Suggest trying it on the work they tend to avoid: legacy files, unfamiliar services, or test scaffolding, where the leverage is highest. | Time one tedious task both ways and compare. |

174| "I do not trust AI to touch production code." | Agree that no change should land unread. Plan mode combined with normal diff review means nothing is applied that the engineer has not inspected, the same standard as any pull request. | Demonstrate plan mode on a real file. |

175| "It will make junior engineers weaker." | Used well, it is an effective explainer. Encourage junior engineers to ask Claude to explain a file and its call sites before asking it to change anything. | Run "Explain @file and where it is called from" together. |

176| "I tried it once and it hallucinated." | This is usually a context problem rather than a model problem. @-mentioning the relevant files, running `/init`, and providing the actual error output typically resolves it. | Re-run their original prompt with proper `@`-context. |

177| "We do not have time to learn another tool." | Claude Code is a terminal command rather than a platform. If it does not return value within the first session, it is reasonable to set it aside. | A two-minute install followed by one real bug. |

178 

179## Quick-reference sheet

180 

181The techniques below are the ones that most reliably move someone from a first trial to daily use. Pin this table in a channel or share it on its own.

182 

183| Technique | How to apply it |

184| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

185| Provide the right context | Use `@file` or `@directory/` references, or paste the error or log output directly. Supplying relevant context is more effective than elaborate prompting. |

186| Review the plan before the edit | Press `Shift+Tab` to enter plan mode. Claude will describe the intended changes for your approval before executing them. |

187| Teach it your repository | Run `/init` to generate a `CLAUDE.md` file, then add your conventions, test commands, and any directories that should not be modified. See [Memory](/en/memory). |

188| Reuse a workflow | Save a `SKILL.md` file in `.claude/skills/<name>/` to create a `/name` skill that the entire team can use. See [Skills](/en/skills). |

189| Stay informed during long tasks | Configure a Stop hook to receive a desktop notification when a long-running task completes. See [Hooks](/en/hooks-guide). |

190| Recover from an incorrect result | Rather than rephrasing the request, paste the failing test or stack trace back to Claude and ask it to address that specific failure. |

191| Keep edits surgical | Ask for a diff, or specify "only change X." Claude respects scope when scope is stated. |

192 

193<Tip>

194 Claude Code is updated frequently. Verify version-specific details against the [documentation home page](/en/overview) before distributing this material internally.

195</Tip>

Details

787* **Rate limits**: Claude Code on the web shares rate limits with all other Claude and Claude Code usage within your account. Running multiple tasks in parallel consumes more rate limits proportionately. There is no separate compute charge for the cloud VM.787* **Rate limits**: Claude Code on the web shares rate limits with all other Claude and Claude Code usage within your account. Running multiple tasks in parallel consumes more rate limits proportionately. There is no separate compute charge for the cloud VM.

788* **Repository authentication**: you can only move sessions from web to local when you are authenticated to the same account788* **Repository authentication**: you can only move sessions from web to local when you are authenticated to the same account

789* **Platform restrictions**: repository cloning and pull request creation require GitHub. Self-hosted [GitHub Enterprise Server](/en/github-enterprise-server) instances are supported for Team and Enterprise plans. GitLab, Bitbucket, and other non-GitHub repositories can be sent to cloud sessions as a [local bundle](#send-local-repositories-without-github), but the session can't push results back to the remote789* **Platform restrictions**: repository cloning and pull request creation require GitHub. Self-hosted [GitHub Enterprise Server](/en/github-enterprise-server) instances are supported for Team and Enterprise plans. GitLab, Bitbucket, and other non-GitHub repositories can be sent to cloud sessions as a [local bundle](#send-local-repositories-without-github), but the session can't push results back to the remote

790* **Organization IP allowlist**: cloud sessions call the Anthropic API from Anthropic-managed infrastructure, not your network. If your organization has [IP allowlisting](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) enabled, every cloud session fails with an authentication error. The same applies to [Code Review](/en/code-review) and [Routines](/en/routines). Contact [Anthropic support](https://support.claude.com/) to exempt Anthropic-hosted services from your organization's IP allowlist.

790 791 

791## Related resources792## Related resources

792 793 

Details

11You can start sessions, pipe content, resume conversations, and manage updates with these commands:11You can start sessions, pipe content, resume conversations, and manage updates with these commands:

12 12 

13| Command | Description | Example |13| Command | Description | Example |

14| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------- |14| :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

15| `claude` | Start interactive session | `claude` |15| `claude` | Start interactive session | `claude` |

16| `claude "query"` | Start interactive session with initial prompt | `claude "explain this project"` |16| `claude "query"` | Start interactive session with initial prompt | `claude "explain this project"` |

17| `claude -p "query"` | Query via SDK, then exit | `claude -p "explain this function"` |17| `claude -p "query"` | Query via SDK, then exit | `claude -p "explain this function"` |


30| `claude plugin` | Manage Claude Code [plugins](/en/plugins). Alias: `claude plugins`. See [plugin reference](/en/plugins-reference#cli-commands-reference) for subcommands | `claude plugin install code-review@claude-plugins-official` |30| `claude plugin` | Manage Claude Code [plugins](/en/plugins). Alias: `claude plugins`. See [plugin reference](/en/plugins-reference#cli-commands-reference) for subcommands | `claude plugin install code-review@claude-plugins-official` |

31| `claude remote-control` | Start a [Remote Control](/en/remote-control) server to control Claude Code from Claude.ai or the Claude app. Runs in server mode (no local interactive session). See [Server mode flags](/en/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |31| `claude remote-control` | Start a [Remote Control](/en/remote-control) server to control Claude Code from Claude.ai or the Claude app. Runs in server mode (no local interactive session). See [Server mode flags](/en/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |

32| `claude setup-token` | Generate a long-lived OAuth token for CI and scripts. Prints the token to the terminal without saving it. Requires a Claude subscription. See [Generate a long-lived token](/en/authentication#generate-a-long-lived-token) | `claude setup-token` |32| `claude setup-token` | Generate a long-lived OAuth token for CI and scripts. Prints the token to the terminal without saving it. Requires a Claude subscription. See [Generate a long-lived token](/en/authentication#generate-a-long-lived-token) | `claude setup-token` |

33| `claude ultrareview [target]` | Run [ultrareview](/en/ultrareview#run-ultrareview-non-interactively) non-interactively. Prints findings to stdout and exits 0 on success or 1 on failure. Use `--json` for the raw payload and `--timeout <minutes>` to override the 30-minute default | `claude ultrareview 1234 --json` |

33 34 

34If you mistype a subcommand, Claude Code suggests the closest match and exits without starting a session. For example, `claude udpate` prints `Did you mean claude update?`.35If you mistype a subcommand, Claude Code suggests the closest match and exits without starting a session. For example, `claude udpate` prints `Did you mean claude update?`.

35 36 

communications-kit.md +525 −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# Communications kit

6 

7> Launch announcements, drip-campaign messages, and FAQ responses for rolling Claude Code out to your engineering organization.

8 

9This page is for administrators and engineering leads rolling Claude Code out to a team. It provides copy-ready launch announcements, a tips-and-tricks drip campaign, and one-line FAQ responses for the questions you will be asked most.

10 

11<Note>

12 Treat everything here as draft copy, not finished copy. Rewrite each message in your organization's voice, swap the example tasks for real bugs and modules from your own codebase, and replace the `[bracketed placeholders]` before sending. The announcements that drive adoption are the ones that read like someone at your company wrote them.

13</Note>

14 

15## Launch communications

16 

17One announcement in two formats, plus two optional variants. Pick whichever fits your rollout and rewrite it from there.

18 

19### Before you send

20 

21Work through this checklist before the announcement goes out. Each item closes a gap that otherwise turns into a launch-day support thread.

22 

23| Item | Why it matters |

24| ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- |

25| `#claude-code` channel created and linked in the message | Gives questions one place to land |

26| Install command tested on at least one machine in your environment | Catches proxy or firewall issues before everyone hits them at once |

27| Security and data-handling link ready ([Data usage](/en/data-usage) or your internal equivalent) | "Where does my code go?" will be the first reply |

28| One concrete first task chosen, a real bug or file in your codebase | Generic examples don't convert; "fix the flaky test in `auth_test.go`" does |

29| A named owner for the channel for the first 48 hours | Unanswered launch-day questions kill momentum |

30| A C-suite sponsor lined up to send or co-sign the announcement | Exec-sent launches consistently see higher first-week adoption than admin-sent ones |

31 

32### The announcement

33 

34Use this as your standard org-wide rollout message. It covers what Claude Code is, gives a two-minute install path, hands readers one concrete task to try, and answers "where does my code go?" before anyone has to ask.

35 

36<Tabs>

37 <Tab title="Email">

38 ```text theme={null}

39 Subject: Claude Code is live for [Engineering / your team]

40 

41 Team,

42 

43 As of today you have access to Claude Code, an AI coding agent that runs in

44 your terminal, reads your actual codebase, and works through real tasks end

45 to end: debugging, refactors, tests, PRs. It is not autocomplete and it is

46 not a chat window. It edits files, runs your commands, and asks permission

47 before anything risky.

48 

49 Get running in two minutes:

50 

51 curl -fsSL https://claude.ai/install.sh | bash

52 cd <your-repo>

53 claude

54 

55 Then run /init once. Claude reads your project and writes a CLAUDE.md with

56 your build commands and conventions, so you stop re-explaining the basics.

57 

58 Then try one of these on the repo you are already in:

59 

60 - "The test in [file] is flaky. Figure out why and fix it"

61 - "Walk me through how [module] handles [X]"

62 - "Look at my working diff and tell me what's risky before I push"

63 

64 Where your code goes: Claude Code runs in your terminal and talks directly

65 to Anthropic's API, with no third-party servers in the loop. It asks before

66 editing files or running commands. Under our Enterprise agreement, Anthropic

67 does not use your code or prompts to train its models.

68 Details: https://code.claude.com/docs/en/data-usage

69 https://code.claude.com/docs/en/security

70 

71 Where to go with questions: #claude-code. [Owner name] is watching it

72 this week.

73 

74 - [Name]

75 

76 P.S. Prefer your editor? There is a VS Code extension and a JetBrains

77 plugin. Same agent, no terminal required.

78 ```

79 </Tab>

80 

81 <Tab title="Slack or Teams">

82 ```markdown theme={null}

83 🚀 *Claude Code is live for [team]*

84 

85 AI coding agent, runs in your terminal, reads your repo, does real work:

86 bugs, refactors, tests, PRs. Asks before it touches anything.

87 

88 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`

89 

90 *First thing to try* → run `/init`, then: "the test in [file] is flaky,

91 figure out why and fix it."

92 

93 🔒 Runs in your terminal, talks only to Anthropic's API. Under our

94 Enterprise plan your code and prompts are not used to train models.

95 Data usage → https://code.claude.com/docs/en/data-usage

96 

97 📚 Quickstart · VS Code · Free 1-hr course

98 https://code.claude.com/docs/en/quickstart

99 https://code.claude.com/docs/en/vs-code

100 https://anthropic.skilljar.com/claude-code-in-action

101 

102 Questions → this thread. [Owner] is on point.

103 ```

104 </Tab>

105</Tabs>

106 

107### Executive sponsor variant

108 

109Send this from your sponsoring executive, such as the CTO, CIO, or SVP Engineering, under their name and from their account. Launches that go out under an exec's name consistently see higher open rates and faster first-week activation than the same message from an admin or tooling team. It signals a company priority rather than an optional experiment.

110 

111This version is deliberately stripped to one ask: install it and run it on one real task. The exec's job is to make the ask land; the standard announcement and `#claude-code` handle the how.

112 

113<Tabs>

114 <Tab title="Email">

115 ```text theme={null}

116 Subject: One thing I'd like every engineer to try this week

117 

118 Team,

119 

120 We have turned on Claude Code for all of engineering. It is an AI agent

121 that works directly in your terminal, on your actual codebase, and the

122 early results from teams already using it are strong enough that I want

123 everyone on it this week.

124 

125 I am asking for ten minutes:

126 

127 curl -fsSL https://claude.ai/install.sh | bash

128 cd <your-repo>

129 claude

130 

131 Then hand it one real task: the bug you have been putting off, or "walk me

132 through how [module] works."

133 

134 That is the whole ask. [Owner name] and team are in #claude-code for

135 anything you hit along the way.

136 

137 - [Exec Name]

138 [Title]

139 ```

140 </Tab>

141 

142 <Tab title="Slack or Teams">

143 ```markdown theme={null}

144 📣 *From [Exec Name]: one thing to try this week*

145 

146 We have turned on *Claude Code* for all of engineering. Early results are

147 strong enough that I am asking everyone to give it ten minutes on real

148 work this week.

149 

150 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` →

151 `claude` → hand it one real task.

152 

153 That's it. Questions → #claude-code.

154 ```

155 </Tab>

156</Tabs>

157 

158### Pilot group variant

159 

160Use for a phased rollout. Send to the pilot cohort only.

161 

162```text theme={null}

163Subject: You're in the Claude Code pilot

164 

165[Name / team],

166 

167You are in the first wave of Claude Code at [company]. We picked this group

168because you will put it on real problems and tell us the truth about it.

169 

170The ask: use it on at least one real task this week, then drop a note in

171#claude-code-pilot covering what worked, what was annoying, and what

172surprised you. That feedback decides how we roll it out to everyone else.

173 

174[Continue with "Get running in two minutes" from the standard announcement]

175 

176One extra thing for pilots: on your first multi-file change, press Shift+Tab

177until you see "plan". Claude will lay out exactly what it intends to do

178before it touches a file. It is the fastest way to calibrate how much to

179trust it.

180```

181 

182### Champion recruitment DM

183 

184After launch, DM the two or three people who are most active in `#claude-code`.

185 

186```text theme={null}

187Hey [name], your #claude-code posts are doing more for adoption than my

188announcement did. A couple of people told me your [thread / screenshot]

189was why they actually tried it.

190 

191Want to make that semi-official? Low lift: mostly keep posting what you

192are posting, plus first crack at new features and a direct line to the

193Anthropic team. I can share a short playbook if you're in.

194```

195 

196## Tips and tricks campaign

197 

198Ready-to-paste Slack or Teams messages designed to drive feature activation after launch. Each follows the same pattern: a hook, the payoff, a "try it now" prompt, and a docs link. Drip them one or two a week in `#claude-code`, or pick the handful that match your team's gaps. They stand alone with no required order.

199 

200Copy the message body from each block directly into Slack or Teams. Replace `[bracketed placeholders]` before sending.

201 

202### Get started

203 

204**Choosing the right model**

205 

206```markdown theme={null}

207🎯 *Tip: Match the model to the moment*

208 

209Using Opus to fix a typo burns compute. Using Haiku for a 12-file refactor

210is asking for a re-do.

211 

212Claude Code runs on the same models as the Claude app, and you can switch

213mid-session. *Sonnet* is the workhorse default for everyday feature work,

214bugs, tests, and reviews. Reach for *Opus* on large refactors, gnarly

215debugging, or anything high-stakes. Drop to *Haiku* for quick questions,

216formatting, and mechanical edits where speed wins.

217 

218*Try it now:* type `/model` and pick Sonnet if you haven't already. It is

219the right default for most tasks.

220 

221📖 Model configuration → https://code.claude.com/docs/en/model-config

222```

223 

224| Model | Best for |

225| ------ | ----------------------------------------------------------------------------------------- |

226| Opus | Large-scale refactors, complex debugging, architecture decisions, high-stakes changes |

227| Sonnet | Everyday feature work, bug fixes, tests, documentation, code review. Recommended default. |

228| Haiku | Quick questions, formatting, mechanical edits, rapid iteration |

229 

230**Quick wins to try first**

231 

232```markdown theme={null}

233🚀 *Tip: Three things to try in your first 10 minutes*

234 

235Installed Claude Code but not sure what to actually ask it? Start with the

236stuff that has been bugging you all week.

237 

238 - Fix something annoying: "the test in [file] is flaky, figure out why"

239 - Get oriented in code you didn't write: "walk me through how [module] works"

240 - Sanity-check before you push: "look at my working diff and tell me what

241 looks risky"

242 

243None of these need setup. Just `cd` into your repo and run `claude`.

244 

245*Try it now:* pick the bug you have been avoiding and paste the error

246message in.

247 

248📖 Quickstart → https://code.claude.com/docs/en/quickstart

249```

250 

251### Project memory

252 

253**`/init` and CLAUDE.md**

254 

255```markdown theme={null}

256📁 *Tip: Stop re-explaining your repo every session*

257 

258Telling Claude "we use pnpm, not npm" for the fifth time? There is a

259one-time fix.

260 

261Run `/init` once per repo. Claude reads your project structure and writes a

262CLAUDE.md file with your build commands, architecture, and conventions.

263Every future session in that repo starts from this file automatically. Keep

264it under two screens. It is a cheat sheet, not documentation.

265 

266*Try it now:* open your main repo, run `claude`, type `/init`. Thirty

267seconds, pays off every session after.

268 

269📖 CLAUDE.md and project memory → https://code.claude.com/docs/en/memory

270```

271 

272**@-references**

273 

274```markdown theme={null}

275📎 *Tip: Stop pasting file contents into the chat*

276 

277Copying 200 lines of a component into your prompt so Claude can "see" it?

278You don't have to.

279 

280Type `@` then a file path. Claude pulls the file directly into context.

281Works for whole directories too.

282 

283> the styles in @src/components/Button.tsx look off, check against

284> @docs/design-system.md

285 

286*Try it now:* type `@` then Tab. Autocomplete shows you every file in reach.

287 

288📖 Referencing files → https://code.claude.com/docs/en/common-workflows

289```

290 

291### Control and safety

292 

293**Permission modes**

294 

295```markdown theme={null}

296🛡️ *Tip: One keystroke between "look but don't touch" and "just do it"*

297 

298Sometimes you want Claude to ask before every edit. Sometimes you just want

299it to ship. You shouldn't have to pick one forever.

300 

301*Shift+Tab* cycles through how much leash Claude gets: *default* asks before

302risky stuff, *acceptEdits* lets file edits and common filesystem commands

303flow through while still checking before other shell commands, and *plan*

304proposes changes for your approval before anything is touched. Plan mode is

305the trust-builder, so start there for anything touching multiple files.

306 

307*Try it now:* on your next refactor, hit Shift+Tab until you see "plan",

308then describe the change. You'll get a full proposal before a single file

309moves.

310 

311📖 Permission modes → https://code.claude.com/docs/en/permissions

312```

313 

314**Checkpointing and `/rewind`**

315 

316```markdown theme={null}

317⏪ *Tip: There is an undo button for the whole conversation*

318 

319Claude went down the wrong path three turns ago and now you're untangling

320it? You don't have to fix forward.

321 

322`/rewind` rolls back to an earlier point in the conversation, including the

323file changes Claude made along the way. Checkpointing is automatic; you

324don't set anything up.

325 

326*Try it now:* press *Esc* twice to open the rewind menu, or type `/rewind`.

327Pick the point before things went sideways.

328 

329📖 Checkpointing → https://code.claude.com/docs/en/checkpointing

330```

331 

332### Connect your tools

333 

334**MCP connectors**

335 

336```markdown theme={null}

337🔌 *Tip: Let Claude read your issue tracker so you don't have to paste tickets*

338 

339Copy-pasting Jira tickets into the terminal feels like a step backward.

340It is.

341 

342One config file (`.mcp.json` at your project root) wires Claude into GitHub,

343Jira, Linear, or whatever tracker you use. Then "what's the top-priority

344issue assigned to me?" and "go ahead and fix it" happen in the same

345conversation.

346 

347*Try it now:* ask Claude "set up an MCP connector for [GitHub/Jira/Linear]

348in this repo". It will write the config for you.

349 

350📖 MCP connectors → https://code.claude.com/docs/en/mcp

351```

352 

353### Automate your workflows

354 

355**Skills**

356 

357```markdown theme={null}

358⚡ *Tip: Turn that prompt you keep retyping into a command*

359 

360Typed "summarize what I worked on today from git log, format it for standup"

361three times this week? That's a slash command waiting to happen.

362 

363A SKILL.md file in `.claude/skills/<name>/` becomes a reusable prompt; type

364`/name` to run it. Make one the second time you type a multi-step prompt

365you've typed before. Easiest path: ask Claude to make it for you.

366 

367*Try it now:* type "make me a /standup skill that summarizes what I worked

368on today from git log", then run `/standup` tomorrow morning.

369 

370📖 Skills → https://code.claude.com/docs/en/skills

371```

372 

373**Hooks**

374 

375```markdown theme={null}

376🔔 *Tip: Get pinged when your refactor finishes*

377 

378Sitting at your desk watching Claude work through a long task? You've got

379better things to do for those eight minutes.

380 

381Hooks are shell commands that fire on Claude Code events. A Stop hook that

382sends a desktop notification means you can kick off a long refactor, walk

383away, and get pinged the moment it's done.

384 

385*Try it now:* ask Claude "add a Stop hook that sends a desktop notification

386when you finish". It will write the script and wire it up.

387 

388📖 Hooks guide → https://code.claude.com/docs/en/hooks-guide

389```

390 

391### Day-to-day development

392 

393**Screenshots and images**

394 

395```markdown theme={null}

396📸 *Tip: Stop describing the error dialog. Just show it.*

397 

398Typing out "there's a red box that says something about a null reference

399and it's pointing at line 47-ish"? Screenshot it.

400 

401Drag a screenshot straight into the terminal and Claude sees it: error

402dialogs, UI mockups, whiteboard photos, Figma exports. *Ctrl+V* pastes from

403clipboard (use Ctrl+V on macOS too, not Cmd+V).

404 

405*Try it now:* next time something visual breaks, screenshot it and paste it

406right into the prompt. Then just type "what's wrong here?"

407 

408📖 Working with images → https://code.claude.com/docs/en/common-workflows

409```

410 

411**Git workflows**

412 

413```markdown theme={null}

414🌿 *Tip: Hand off the whole git ceremony*

415 

416The fix took 5 minutes. The commit message, branch, and PR description

417took 15. That ratio is wrong.

418 

419Claude handles the full git flow: commits with conventional messages,

420branches, PRs with proper summaries. One ask: "fix the off-by-one, commit

421with a conventional commit message, and open a PR." Reviewing someone

422else's work? Paste the PR URL and ask Claude to walk you through the diff.

423 

424*Try it now:* after your next fix, instead of switching to your git client,

425just type "commit this with a good message and open a PR".

426 

427📖 Creating pull requests → https://code.claude.com/docs/en/common-workflows

428```

429 

430### Share and scale

431 

432**Plugins**

433 

434```markdown theme={null}

435📦 *Tip: Someone probably already built that skill*

436 

437About to spend an hour building a `/deploy` command? Check if it

438already exists.

439 

440Skills get bundled and shared as plugins. `/plugin` browses what's

441available and installs in one step. Five minutes of browsing can save an

442hour of building.

443 

444*Try it now:* type `/plugin` and scroll through. You'll find at least one

445thing you didn't know you wanted.

446 

447📖 Plugins → https://code.claude.com/docs/en/plugins

448```

449 

450### Security and admin

451 

452**Security architecture**

453 

454```markdown theme={null}

455🔐 *Tip: The answer to "is this safe?" for the next time you're asked*

456 

457Someone on your team is going to ask "wait, where does my code go?"

458Here's the short version you can paste.

459 

460Permission-first by design. Every file edit, shell command, and external

461call is gated by your approval. The CLI runs in your terminal and talks

462directly to Anthropic's API, with no third-party servers, and supports

463optional OS-level sandboxing for shell commands. Under our Enterprise plan,

464Anthropic does not use your code or prompts to train its models.

465 

466*Try it now:* save these two links for the next time the question comes up.

467They answer most security-review questions.

468 

469📖 https://code.claude.com/docs/en/security

470📖 https://code.claude.com/docs/en/data-usage

471```

472 

473**Best practices**

474 

475```markdown theme={null}

476✅ *Tip: The 4 habits that separate "tried it once" from "use it daily"*

477 

478Most people who bounce off Claude Code skipped one of these. Most people

479who stick did all four in week one.

480 

481 - Start in plan mode for anything touching multiple files

482 - Run /init early; context compounds

483 - Review diffs before committing; Claude can be confidently wrong

484 - Verify changes that touch critical paths; treat it like a sharp

485 junior, not an oracle

486 

487*Try it now:* if you've only done one or two of these, pick the one you're

488missing and do it on your next task. Post what changed in #claude-code.

489 

490📖 Best practices → https://code.claude.com/docs/en/best-practices

491```

492 

493## Quick reference

494 

495### FAQ responses

496 

497One-line replies for the questions you will be asked most.

498 

499| Question | Response |

500| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

501| "Does it work in VS Code?" | Yes. There is a VS Code extension and a JetBrains plugin with the same features, embedded in your editor. [VS Code →](/en/vs-code) |

502| "Do I have to configure anything first?" | No. Install, then run `claude` in any repo. Run `/init` once and you're set. [Quickstart →](/en/quickstart) |

503| "Where does my code go?" | The CLI runs in your terminal and sends context to Anthropic's API for inference, with no third-party servers. Under your Enterprise plan, your code and prompts are not used to train models. [Data usage →](/en/data-usage) |

504| "Can it see my whole repo?" | It reads what you give it access to. File reads inside your working directory don't prompt; permission prompts gate edits, shell commands, and anything outside that directory. [Permissions →](/en/permissions) |

505| "How is this different from Copilot?" | Copilot autocompletes lines. Claude Code is an agent that reads files, runs commands, and makes multi-file edits. [Overview →](/en/overview) |

506| "What should I try first?" | A bug you've been putting off because it's tedious. "The test in \[file] is flaky, figure out why." [Quickstart →](/en/quickstart) |

507 

508### Prompt templates

509 

510Share these starter prompts with engineers who have installed but aren't sure what to ask. Each one is phrased the way it would be typed into a real session; replace the bracketed pieces with files from your own repo.

511 

512| Task | Prompt |

513| -------------------- | ---------------------------------------------------------------------------- |

514| Fix a bug | "the tests in \[file] are failing, figure out why and fix it" |

515| Understand code | "walk me through how \[module] works, then tell me where the entry point is" |

516| Safe refactor | "refactor \[module] to \[goal], use plan mode so I can review first" |

517| Write tests | "write tests for \[file] that cover the edge cases around \[scenario]" |

518| Review before commit | "look at my working diff and tell me what looks risky" |

519| Open a PR | "fix \[issue], write a conventional commit, and open a PR with a summary" |

520| Make a skill | "make me a /ship skill that runs tests and lint before commit" |

521| Debug a stack trace | "here's the stack trace, find the root cause, don't just paper over it" |

522 

523<Tip>

524 Claude Code ships frequently. Verify version-specific details against the [documentation home page](/en/overview) before distributing internally.

525</Tip>

data-usage.md +9 −1

Details

25 25 

26### Session quality surveys26### Session quality surveys

27 27 

28When you see the "How is Claude doing this session?" prompt in Claude Code, responding to this survey (including selecting "Dismiss"), only your numeric rating (1, 2, 3, or dismiss) is recorded. We do not collect or store any conversation transcripts, inputs, outputs, or other session data as part of this survey. Unlike thumbs up/down feedback or `/feedback` reports, this session quality survey is a simple product satisfaction metric. Your responses to this survey do not impact your data training preferences and cannot be used to train our AI models.28When you see the "How is Claude doing this session?" prompt in Claude Code, responding to this survey, including selecting "Dismiss", records only your rating. We do not collect or store any conversation transcripts, inputs, outputs, or other session data as part of the rating prompt itself. Unlike thumbs up/down feedback or `/feedback` reports, this session quality survey is a simple product satisfaction metric.

29 

30After the rating prompt, you may see a separate follow-up asking "Can Anthropic look at your session transcript to help us improve Claude Code?". This is an optional second step distinct from the rating:

31 

32* **Yes**: uploads your conversation transcript, any subagent transcripts, and the raw session log file from disk to Anthropic. Known API key and token patterns are redacted before upload. Source code, file contents, and other conversation content are uploaded as-is. Shared transcripts are retained for up to 6 months.

33* **No**: declines without sending anything

34* **Don't ask again**: declines and stops this follow-up from appearing in future sessions

35 

36Nothing is uploaded unless you explicitly select **Yes**. Organizations with [zero data retention](/en/zero-data-retention), or where product feedback is disabled by organization policy, never see this follow-up. Your responses to this survey, including session transcripts submitted after the rating prompt, do not impact your data training preferences and cannot be used to train our AI models.

29 37 

30To disable these surveys, set `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. The survey is also disabled when `DISABLE_TELEMETRY` or `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` is set. To control frequency instead of disabling, set [`feedbackSurveyRate`](/en/settings#available-settings) in your settings file to a probability between `0` and `1`.38To disable these surveys, set `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. The survey is also disabled when `DISABLE_TELEMETRY` or `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` is set. To control frequency instead of disabling, set [`feedbackSurveyRate`](/en/settings#available-settings) in your settings file to a probability between `0` and `1`.

31 39 

env-vars.md +3 −2

Details

56| `CLAUDE_CODE_ACCESSIBILITY` | Set to `1` to keep the native terminal cursor visible and disable the inverted-text cursor indicator. Allows screen magnifiers like macOS Zoom to track cursor position |56| `CLAUDE_CODE_ACCESSIBILITY` | Set to `1` to keep the native terminal cursor visible and disable the inverted-text cursor indicator. Allows screen magnifiers like macOS Zoom to track cursor position |

57| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Set to `1` to load memory files from directories specified with `--add-dir`. Loads `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, and `CLAUDE.local.md`. By default, additional directories do not load memory files |57| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Set to `1` to load memory files from directories specified with `--add-dir`. Loads `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, and `CLAUDE.local.md`. By default, additional directories do not load memory files |

58| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval in milliseconds at which credentials should be refreshed (when using [`apiKeyHelper`](/en/settings#available-settings)) |58| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval in milliseconds at which credentials should be refreshed (when using [`apiKeyHelper`](/en/settings#available-settings)) |

59| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Set to `0` to omit the attribution block (client version and prompt fingerprint) from the start of the system prompt. Disabling it improves prompt-cache hit rates when routing through an [LLM gateway](/en/llm-gateway). Anthropic API caching is unaffected |

59| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Set the context capacity in tokens used for auto-compaction calculations. Defaults to the model's context window: 200K for standard models or 1M for [extended context](/en/model-config#extended-context) models. Use a lower value like `500000` on a 1M model to treat the window as 500K for compaction purposes. The value is capped at the model's actual context window. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` is applied as a percentage of this value. Setting this variable decouples the compaction threshold from the status line's `used_percentage`, which always uses the model's full context window |60| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Set the context capacity in tokens used for auto-compaction calculations. Defaults to the model's context window: 200K for standard models or 1M for [extended context](/en/model-config#extended-context) models. Use a lower value like `500000` on a 1M model to treat the window as 500K for compaction purposes. The value is capped at the model's actual context window. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` is applied as a percentage of this value. Setting this variable decouples the compaction threshold from the status line's `used_percentage`, which always uses the model's full context window |

60| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Override automatic [IDE connection](/en/vs-code). By default, Claude Code connects automatically when launched inside a supported IDE's integrated terminal. Set to `false` to prevent this. Set to `true` to force a connection attempt when auto-detection fails, such as when tmux obscures the parent terminal |61| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Override automatic [IDE connection](/en/vs-code). By default, Claude Code connects automatically when launched inside a supported IDE's integrated terminal. Set to `false` to prevent this. Set to `true` to force a connection attempt when auto-detection fails, such as when tmux obscures the parent terminal |

61| `CLAUDE_CODE_CERT_STORE` | Comma-separated list of CA certificate sources for TLS connections. `bundled` is the Mozilla CA set shipped with Claude Code. `system` is the operating system trust store. Default is `bundled,system`. The native binary distribution is required for system store integration. On the Node.js runtime, only the bundled set is used regardless of this value |62| `CLAUDE_CODE_CERT_STORE` | Comma-separated list of CA certificate sources for TLS connections. `bundled` is the Mozilla CA set shipped with Claude Code. `system` is the operating system trust store. Default is `bundled,system`. The native binary distribution is required for system store integration. On the Node.js runtime, only the bundled set is used regardless of this value |


94| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Time in milliseconds to wait after the query loop becomes idle before automatically exiting. Useful for automated workflows and scripts using SDK mode |95| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Time in milliseconds to wait after the query loop becomes idle before automatically exiting. Useful for automated workflows and scripts using SDK mode |

95| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Set to `1` to enable [agent teams](/en/agent-teams). Agent teams are experimental and disabled by default |96| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Set to `1` to enable [agent teams](/en/agent-teams). Agent teams are experimental and disabled by default |

96| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Override the default token limit for file reads. Useful when you need to read larger files in full |97| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Override the default token limit for file reads. Useful when you need to read larger files in full |

97| `CLAUDE_CODE_FORK_SUBAGENT` | Set to `1` to enable [forked subagents](/en/sub-agents#fork-the-current-conversation). A forked subagent inherits the full conversation context from the main session instead of starting fresh. When enabled, `/fork` spawns a forked subagent rather than acting as an alias for [`/branch`](/en/commands), and all subagent spawns run in the background. Interactive mode only |98| `CLAUDE_CODE_FORK_SUBAGENT` | Set to `1` to enable [forked subagents](/en/sub-agents#fork-the-current-conversation). A forked subagent inherits the full conversation context from the main session instead of starting fresh. When enabled, `/fork` spawns a forked subagent rather than acting as an alias for [`/branch`](/en/commands), and all subagent spawns run in the background. Works in interactive mode and via the SDK or `claude -p` |

98| `CLAUDE_CODE_GIT_BASH_PATH` | Windows only: path to the Git Bash executable (`bash.exe`). Use when Git Bash is installed but not in your PATH. See [Windows setup](/en/setup#set-up-on-windows) |99| `CLAUDE_CODE_GIT_BASH_PATH` | Windows only: path to the Git Bash executable (`bash.exe`). Use when Git Bash is installed but not in your PATH. See [Windows setup](/en/setup#set-up-on-windows) |

99| `CLAUDE_CODE_GLOB_HIDDEN` | Set to `false` to exclude dotfiles from results when Claude invokes the [Glob tool](/en/tools-reference). Included by default. Does not affect `@` file autocomplete, `ls`, Grep, or Read |100| `CLAUDE_CODE_GLOB_HIDDEN` | Set to `false` to exclude dotfiles from results when Claude invokes the [Glob tool](/en/tools-reference). Included by default. Does not affect `@` file autocomplete, `ls`, Grep, or Read |

100| `CLAUDE_CODE_GLOB_NO_IGNORE` | Set to `false` to make the [Glob tool](/en/tools-reference) respect `.gitignore` patterns. By default, Glob returns all matching files including gitignored ones. Does not affect `@` file autocomplete, which has its own [`respectGitignore` setting](/en/settings#available-settings) |101| `CLAUDE_CODE_GLOB_NO_IGNORE` | Set to `false` to make the [Glob tool](/en/tools-reference) respect `.gitignore` patterns. By default, Glob returns all matching files including gitignored ones. Does not affect `@` file autocomplete, which has its own [`respectGitignore` setting](/en/settings#available-settings) |


130| `CLAUDE_CODE_SHELL` | Override automatic shell detection. Useful when your login shell differs from your preferred working shell (for example, `bash` vs `zsh`) |131| `CLAUDE_CODE_SHELL` | Override automatic shell detection. Useful when your login shell differs from your preferred working shell (for example, `bash` vs `zsh`) |

131| `CLAUDE_CODE_SHELL_PREFIX` | Command prefix to wrap all bash commands (for example, for logging or auditing). Example: `/path/to/logger.sh` will execute `/path/to/logger.sh <command>` |132| `CLAUDE_CODE_SHELL_PREFIX` | Command prefix to wrap all bash commands (for example, for logging or auditing). Example: `/path/to/logger.sh` will execute `/path/to/logger.sh <command>` |

132| `CLAUDE_CODE_SIMPLE` | Set to `1` to run with a minimal system prompt and only the Bash, file read, and file edit tools. MCP tools from `--mcp-config` are still available. Disables auto-discovery of hooks, skills, plugins, MCP servers, auto memory, and CLAUDE.md. The [`--bare`](/en/headless#start-faster-with-bare-mode) CLI flag sets this |133| `CLAUDE_CODE_SIMPLE` | Set to `1` to run with a minimal system prompt and only the Bash, file read, and file edit tools. MCP tools from `--mcp-config` are still available. Disables auto-discovery of hooks, skills, plugins, MCP servers, auto memory, and CLAUDE.md. The [`--bare`](/en/headless#start-faster-with-bare-mode) CLI flag sets this |

133| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Set to `1` to use the minimal system prompt and collapsed tool descriptions from `CLAUDE_CODE_SIMPLE` without the other simple-mode changes. The full tool set, hooks, MCP servers, and CLAUDE.md discovery remain enabled |134| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Set to `1` to use a shorter system prompt and abbreviated tool descriptions on Opus 4.7. Has no effect on other models. The full tool set, hooks, MCP servers, and CLAUDE.md discovery remain enabled |

134| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Skip AWS authentication for Bedrock (for example, when using an LLM gateway) |135| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Skip AWS authentication for Bedrock (for example, when using an LLM gateway) |

135| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Skip Azure authentication for Microsoft Foundry (for example, when using an LLM gateway) |136| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Skip Azure authentication for Microsoft Foundry (for example, when using an LLM gateway) |

136| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Skip AWS authentication for Bedrock Mantle (for example, when using an LLM gateway) |137| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Skip AWS authentication for Bedrock Mantle (for example, when using an LLM gateway) |

fullscreen.md +4 −2

Details

134 134 

135Mouse capture is the most common friction point, especially over SSH or inside tmux. When Claude Code captures mouse events, your terminal's native copy-on-select stops working. The selection you make with click-and-drag exists inside Claude Code, not in your terminal's selection buffer, so tmux copy mode, Kitty hints, and similar tools don't see it.135Mouse capture is the most common friction point, especially over SSH or inside tmux. When Claude Code captures mouse events, your terminal's native copy-on-select stops working. The selection you make with click-and-drag exists inside Claude Code, not in your terminal's selection buffer, so tmux copy mode, Kitty hints, and similar tools don't see it.

136 136 

137Claude Code tries to write the selection to your clipboard, but the path it uses depends on your setup. Inside tmux it writes to the tmux paste buffer. Over SSH it falls back to OSC 52 escape sequences, which some terminals block by default. Claude Code prints a toast after each copy telling you which path it used.137Claude Code tries to write the selection to your clipboard, but the path it uses depends on your setup. Inside tmux it writes to the tmux paste buffer. Over SSH it falls back to OSC 52 escape sequences, which some terminals block by default. iTerm2 blocks them until you turn on Settings → General → Selection → Applications in terminal may access clipboard. Claude Code prints a toast after each copy telling you which path it used.

138 138 

139If you rely on your terminal's native selection, set `CLAUDE_CODE_DISABLE_MOUSE=1` to opt out of mouse capture while keeping the flicker-free rendering and flat memory:139For a one-off native selection, hold your terminal's bypass modifier while you click and drag: `Option` in iTerm2, or `Shift` in most Linux and Windows terminals. The modifier tells your terminal to handle the selection itself instead of forwarding mouse events to Claude Code, so `Cmd+C` and your terminal's other copy shortcuts work on it.

140 

141If you rely on native selection all the time, set `CLAUDE_CODE_DISABLE_MOUSE=1` to opt out of mouse capture while keeping the flicker-free rendering and flat memory:

140 142 

141```bash theme={null}143```bash theme={null}

142CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude144CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

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# Glossary

6 

7> Definitions for Claude Code terminology. Learn what agentic loop, compaction, CLAUDE.md, hooks, subagents, MCP, and other core concepts mean.

8 

9This glossary defines Claude Code terminology. Each entry links to the page where the concept is covered in depth. For model-level concepts like tokens, temperature, and RAG, see the [platform glossary](https://platform.claude.com/docs/en/about-claude/glossary).

10 

11## A

12 

13### Agent teams

14 

15Multiple independent Claude Code sessions coordinated by a team lead, with a shared task list and peer-to-peer messaging. Unlike [subagents](#subagent), which run within a single session and report only to the parent, teammates each have their own context window and you can interact with any of them directly. Agent teams are experimental and must be enabled by setting `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

16 

17Learn more: [Run agent teams](/en/agent-teams)

18 

19### Agentic coding

20 

21A workflow where the AI can read files, run commands, and make changes autonomously while you watch, redirect, or step away, as opposed to chat-based assistants that only respond with text you must apply yourself. Claude Code is agentic because it has [tools](#tool) that let it act, not just advise.

22 

23Learn more: [How Claude Code works](/en/how-claude-code-works)

24 

25### Agentic harness

26 

27The tools, context management, and execution environment that turn a language model into a capable coding agent. Claude Code is the harness; Claude is the model inside it. The harness supplies file access, shell execution, permission gating, memory loading, and the loop that chains actions together.

28 

29Learn more: [How Claude Code works](/en/how-claude-code-works)

30 

31### Agentic loop

32 

33The cycle Claude works through for every task: gather context, take action, verify results, and repeat until done. Each tool use returns information that informs the next step. You can interrupt the loop at any point to redirect. Most extension points, including [hooks](#hook), [skills](#skill), and [MCP](#mcp-model-context-protocol), plug into specific phases of this loop.

34 

35Learn more: [How Claude Code works](/en/how-claude-code-works#the-agentic-loop)

36 

37### Auto memory

38 

39Notes Claude writes for itself based on your corrections and preferences, stored per git repository under `~/.claude/projects/`. All worktrees of the same repository share one auto memory directory. The first 200 lines or 25 KB of the `MEMORY.md` index loads at the start of every session. Auto memory is the Claude-written counterpart to [CLAUDE.md](#claude-md), which you write.

40 

41Learn more: [Auto memory](/en/memory#auto-memory)

42 

43### Auto mode

44 

45A [permission mode](#permission-mode) where a separate classifier model reviews each action in the background instead of showing you approval prompts. The classifier blocks scope escalation, untrusted infrastructure, and [prompt injection](#prompt-injection). It never sees tool results, so injected instructions cannot influence its decisions. Auto mode is a research preview available on Max, Team, Enterprise, and API plans.

46 

47Learn more: [Eliminate prompts with auto mode](/en/permission-modes#eliminate-prompts-with-auto-mode)

48 

49## B

50 

51### Bare mode

52 

53A startup flag, `--bare`, that skips auto-discovery of hooks, skills, plugins, MCP servers, auto memory, and CLAUDE.md. Only flags you pass explicitly take effect. Recommended for CI and scripted calls where you need identical behavior across machines regardless of local configuration.

54 

55Learn more: [Start faster with bare mode](/en/headless#start-faster-with-bare-mode)

56 

57### Bundled skills

58 

59Prompt-based playbooks included with Claude Code, such as `/batch`, `/simplify`, `/debug`, and `/loop`. Unlike built-in commands, which execute fixed logic, bundled skills give Claude a detailed prompt and let it orchestrate the work, so they can spawn agents, read files, and adapt to your codebase.

60 

61Learn more: [Bundled skills](/en/skills#bundled-skills)

62 

63## C

64 

65### Channel

66 

67An [MCP server](#mcp-model-context-protocol) that pushes events into your running session so Claude can react to things that happen while you're away from the terminal. Channels can be two-way: Claude reads an inbound event and replies back through the same channel. Telegram, Discord, and iMessage are included in the research preview.

68 

69Learn more: [Channels](/en/channels)

70 

71### Checkpoint

72 

73An automatic snapshot of your code captured before each edit Claude makes. Press `Esc` twice or run `/rewind` to restore code, conversation, or both to an earlier point. Checkpoints are local to the session, separate from git, and don't track changes made through the Bash tool.

74 

75Learn more: [Checkpointing](/en/checkpointing)

76 

77### `.claude` directory

78 

79The directory where Claude Code reads project-scoped configuration: settings, hooks, skills, subagents, rules, and auto memory. A project has `.claude/` at its root; your user-level defaults are at `~/.claude/`.

80 

81Learn more: [The `.claude` directory](/en/claude-directory)

82 

83### CLAUDE.md

84 

85A markdown file of persistent instructions you write for Claude, loaded at the start of every session as a user message after the system prompt. Put project conventions, architecture notes, and "always do X" rules here. CLAUDE.md survives [compaction](#compaction) and is re-read fresh from disk afterward.

86 

87You can place CLAUDE.md at project scope in `./CLAUDE.md` or `./.claude/CLAUDE.md`, at user scope in `~/.claude/CLAUDE.md`, or as [managed policy](#managed-settings) for your organization. More specific locations take precedence.

88 

89Learn more: [CLAUDE.md files](/en/memory#claude-md-files)

90 

91### Command

92 

93A reusable instruction you invoke by typing `/name` in the prompt. Built-in commands such as `/clear`, `/model`, and `/compact` control the session. You can define your own commands as files in `.claude/commands/`, or install them from a [plugin](#plugin). [Skills](#skill) are the recommended way to package multi-step commands.

94 

95Learn more: [Commands](/en/commands) · [Skills](/en/skills)

96 

97### Compaction

98 

99Automatic summarization of your conversation when the [context window](#context-window) approaches its limit. Older tool outputs are cleared first, then the conversation is summarized. Project-root CLAUDE.md and auto memory survive compaction and reload from disk; instructions given only in conversation may be lost. Run `/compact` to trigger manually, optionally with a focus like `/compact focus on the API changes`.

100 

101Learn more: [What survives compaction](/en/context-window#what-survives-compaction) · [When context fills up](/en/how-claude-code-works#when-context-fills-up)

102 

103### Context window

104 

105The working memory for a session, holding conversation history, file contents, command outputs, CLAUDE.md, auto memory, loaded skills, and system instructions. As you work, context fills up until [compaction](#compaction) summarizes it. Run `/context` to see what's using space. For the underlying model concept, see the [platform glossary](https://platform.claude.com/docs/en/about-claude/glossary#context-window).

106 

107Learn more: [Explore the context window](/en/context-window)

108 

109## D

110 

111### Dispatch

112 

113A phone-initiated task router that spawns a Claude Code session in the Desktop app when you send a coding task from the Claude mobile app. Your prompt routes to the right tool automatically. Available on Pro and Max plans.

114 

115Learn more: [Sessions from Dispatch](/en/desktop#sessions-from-dispatch)

116 

117## E

118 

119### Effort level

120 

121A setting that controls how much of the adaptive-reasoning thinking budget Claude uses on each turn. Higher effort means more thinking tokens and deeper reasoning; lower effort is faster and cheaper. Effort is supported on Opus 4.7, Opus 4.6, and Sonnet 4.6.

122 

123Learn more: [Adjust effort level](/en/model-config#adjust-effort-level)

124 

125### Extended thinking

126 

127Visible step-by-step reasoning the model performs before responding. You can cap thinking tokens with `MAX_THINKING_TOKENS` or adjust the [effort level](#effort-level). Thinking appears in gray italic text in the terminal.

128 

129Learn more: [Use extended thinking](/en/common-workflows#use-extended-thinking-thinking-mode)

130 

131## H

132 

133### Hook

134 

135A user-defined handler that executes automatically at a specific point in Claude Code's lifecycle, such as before a tool runs, after a file edit, or at session start. Handlers can be a shell command, HTTP endpoint, MCP tool, LLM prompt, or subagent. Hooks are deterministic: they fire at fixed lifecycle points rather than at the model's discretion.

136 

137A hook configuration has three levels:

138 

139* **Hook event**: the lifecycle point

140* **Matcher**: filters which events fire it

141* **Hook handler**: what runs

142 

143Learn more: [Get started with hooks](/en/hooks-guide) · [Hooks reference](/en/hooks)

144 

145## M

146 

147### Managed settings

148 

149A settings file enforced org-wide by IT or DevOps, placed at an OS-level path outside `~/.claude`. Users cannot override or exclude managed settings. Use this for security policies, compliance requirements, or standardized tooling across a fleet.

150 

151Learn more: [Server-managed settings](/en/server-managed-settings)

152 

153### MCP (Model Context Protocol)

154 

155An open standard for connecting AI tools to external data sources and services. MCP servers give Claude new tools for Slack, Jira, databases, browsers, and hundreds of other integrations. You connect servers via `/mcp` or by adding them to `.mcp.json`. For the protocol itself, see the [platform glossary](https://platform.claude.com/docs/en/about-claude/glossary#mcp-model-context-protocol).

156 

157Learn more: [Model Context Protocol](/en/mcp)

158 

159### MCP Tool Search

160 

161A context-saving mechanism that defers MCP tool schemas until needed. Only tool names load at startup; Claude fetches the full schema on demand when it decides to use a specific tool. This keeps idle MCP servers from consuming much context.

162 

163Learn more: [Scale with MCP Tool Search](/en/mcp#scale-with-mcp-tool-search)

164 

165## N

166 

167### Non-interactive mode

168 

169A mode that executes a single prompt and exits without a conversational session, invoked with `-p` or `--print`. Used for CI, scripts, and piping. The [Agent SDK](/en/agent-sdk/overview) is the Python and TypeScript equivalent. Formerly called headless mode.

170 

171Learn more: [Run Claude Code programmatically](/en/headless)

172 

173## O

174 

175### Output style

176 

177A configuration that modifies Claude's system prompt to change response behavior, tone, or format. Output styles turn off the software-engineering-specific parts of the default system prompt, unlike [CLAUDE.md](#claude-md) which is delivered as a user message following the system prompt. Built-in styles include Default, Explanatory, and Learning.

178 

179Learn more: [Output styles](/en/output-styles)

180 

181## P

182 

183### Permission mode

184 

185The baseline approval behavior for the session. Cycle with `Shift+Tab` in the CLI or use the mode selector in VS Code, Desktop, and claude.ai. Available modes are `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, and `bypassPermissions`.

186 

187Learn more: [Choose a permission mode](/en/permission-modes)

188 

189### Permission rule

190 

191A settings entry that allows, asks about, or denies a tool invocation based on the tool name and argument pattern. Rules are evaluated deny→ask→allow, first match wins. Permission rules are fine-grained controls layered on top of the broader [permission mode](#permission-mode).

192 

193Learn more: [Configure permissions](/en/permissions)

194 

195### Plan mode

196 

197A [permission mode](#permission-mode) where Claude researches and proposes changes without editing your source files. It can read, search, and run exploration commands, then presents a plan for approval before touching anything. Enter plan mode with `/plan` or by pressing `Shift+Tab`.

198 

199Learn more: [Analyze before you edit with plan mode](/en/permission-modes#analyze-before-you-edit-with-plan-mode)

200 

201### Plugin

202 

203A bundle of skills, hooks, subagents, and MCP servers packaged as a single installable unit. Plugin skills are namespaced as `plugin-name:skill-name` so multiple plugins coexist. Distribute plugins across teams via a [marketplace](/en/plugin-marketplaces).

204 

205Learn more: [Plugins](/en/plugins)

206 

207### Project trust

208 

209A one-time dialog accepting a directory before Claude Code loads its configuration. Trust gates auto-installation of marketplace plugins and execution of project-defined hooks. Trusting a directory means its `.claude/settings.json`, `.mcp.json`, and other config files take effect.

210 

211Learn more: [The `.claude` directory](/en/claude-directory)

212 

213### Prompt injection

214 

215Hostile instructions embedded in a file, web page, or tool result that attempt to redirect Claude toward actions you never asked for. Claude Code's defenses include the permission system, command blocklists, and trust verification. [Auto mode](#auto-mode) adds a server-side probe that scans tool results for suspicious content and a classifier that never sees tool results, so injected text cannot influence its approval decisions.

216 

217Learn more: [Protect against prompt injection](/en/security#protect-against-prompt-injection)

218 

219## R

220 

221### Remote Control

222 

223A way to continue a local Claude Code session from your phone or browser via claude.ai. Your code stays on your machine; only the UI is remote. Different from Claude Code on the web, which runs in a cloud sandbox.

224 

225Learn more: [Remote Control](/en/remote-control)

226 

227### Rules

228 

229Modular instruction files in `.claude/rules/` that load alongside CLAUDE.md. A rule can be path-scoped with YAML `paths:` frontmatter so it only loads when Claude reads a matching file, keeping context lean until it's relevant.

230 

231Learn more: [Organize rules with `.claude/rules/`](/en/memory#organize-rules-with-claude/rules/)

232 

233## S

234 

235### Sandboxing

236 

237OS-level filesystem and network isolation for the Bash tool. Commands run inside a boundary you define upfront, so Claude can work freely within it without per-command approval prompts. Sandboxing is a separate layer from [permission rules](#permission-rule).

238 

239Learn more: [Sandboxing](/en/sandboxing)

240 

241### Session

242 

243A conversation tied to your current directory, with its own independent [context window](#context-window). Sessions can be resumed with `claude -c`, forked with `--fork-session` to preserve history under a new session ID, or run in parallel across terminals. Running `/clear` starts a new session; the previous one stays stored and is available via `/resume`. Each session's transcript is stored under `~/.claude/projects/`.

244 

245Learn more: [Work with sessions](/en/how-claude-code-works#work-with-sessions)

246 

247### Settings layers

248 

249The hierarchy Claude Code reads configuration from, in precedence order from highest to lowest: [managed policy](#managed-settings), command-line arguments, local settings at `.claude/settings.local.json`, project settings at `.claude/settings.json`, then user settings at `~/.claude/settings.json`. Arrays merge across layers; scalars at a higher layer override lower ones.

250 

251Learn more: [Settings files](/en/settings#settings-files)

252 

253### Skill

254 

255A `SKILL.md` file containing instructions, knowledge, or a workflow that Claude adds to its toolkit. Claude loads a skill automatically when relevant, or you invoke it directly with `/skill-name`. Skills follow the Agent Skills open standard; Claude Code extends it with invocation control and subagent execution.

256 

257Skills are the recommended successor to custom commands. A file at `.claude/commands/deploy.md` and one at `.claude/skills/deploy/SKILL.md` both create `/deploy` and work the same way; existing command files continue to work.

258 

259Learn more: [Extend Claude with skills](/en/skills)

260 

261### Subagent

262 

263A specialized AI assistant that runs in its own context window with a custom system prompt, specific tool access, and independent permissions. It works on a delegated task and returns a summary to the main conversation. Use subagents to keep large explorations out of your primary context or to run parallel research. Different from [agent teams](#agent-teams), where each agent is a full independent session you can talk to directly.

264 

265Built-in subagents include Explore, Plan, and general-purpose.

266 

267Learn more: [Create custom subagents](/en/sub-agents)

268 

269### Surface

270 

271Any place you access Claude Code: the CLI, VS Code, JetBrains, Desktop, or claude.ai. All surfaces share the same engine, so your CLAUDE.md, settings, and skills work the same way across them. Slack and the Chrome extension are integrations that connect to a surface rather than surfaces themselves.

272 

273Learn more: [Platforms and integrations](/en/platforms)

274 

275## T

276 

277### Teleport

278 

279A command, `/teleport`, that pulls a cloud Claude Code session into your local terminal. Claude fetches the branch, loads the conversation history, and resumes from the web session's last state. The reverse direction is `--remote`, which sends a local task to run on the web.

280 

281Learn more: [From web to terminal](/en/claude-code-on-the-web#from-web-to-terminal)

282 

283### Tool

284 

285An action Claude can take: read a file, edit code, run a shell command, search the web, spawn a subagent. Tools are what make Claude Code agentic. Without them, Claude can only respond with text. Each tool use returns a result that informs Claude's next decision in the [agentic loop](#agentic-loop).

286 

287Learn more: [Tools available to Claude](/en/tools-reference)

288 

289## W

290 

291### Worktree isolation

292 

293An isolation mode that runs Claude in a separate git worktree under `.claude/worktrees/`, enabled with the `-w` flag or `isolation: worktree` in subagent config. Changes stay on a separate branch in a separate directory, so parallel agents don't overwrite each other's files.

294 

295Learn more: [Run parallel sessions with git worktrees](/en/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees)

296 

297***

298 

299## Deprecated and renamed terms

300 

301These terms appear in older docs, blog posts, and community content. Use the current name when searching this 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 |

Details

263 263 

264For more information, see [Google Cloud authentication documentation](https://cloud.google.com/docs/authentication).264For more information, see [Google Cloud authentication documentation](https://cloud.google.com/docs/authentication).

265 265 

266Claude Code v2.1.121 or later supports [X.509 certificate-based Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation-with-x509-certificates) through the same Application Default Credentials chain. Set `GOOGLE_APPLICATION_CREDENTIALS` to the path of your credential configuration file.

267 

266<Note>268<Note>

267 When authenticating, Claude Code will automatically use the project ID from the `ANTHROPIC_VERTEX_PROJECT_ID` environment variable. To override this, set one of these environment variables: `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT`, or `GOOGLE_APPLICATION_CREDENTIALS`.269 When authenticating, Claude Code will automatically use the project ID from the `ANTHROPIC_VERTEX_PROJECT_ID` environment variable. To override this, set one of these environment variables: `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT`, or `GOOGLE_APPLICATION_CREDENTIALS`.

268</Note>270</Note>

hooks.md +71 −31

Details

655{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }655{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

656```656```

657 657 

658#### Add context for Claude

659 

660The `additionalContext` field passes a string from your hook into Claude's context window. Claude Code wraps the string in a system reminder and inserts it into the conversation at the point where the hook fired. Claude reads the reminder on the next model request, but it does not appear as a chat message in the interface.

661 

662Return `additionalContext` inside `hookSpecificOutput` alongside the event name:

663 

664```json theme={null}

665{

666 "hookSpecificOutput": {

667 "hookEventName": "PostToolUse",

668 "additionalContext": "This file is generated. Edit src/schema.ts and run `bun generate` instead."

669 }

670}

671```

672 

673Where the reminder appears depends on the event:

674 

675* [SessionStart](#sessionstart) and [SubagentStart](#subagentstart): at the start of the conversation, before the first prompt

676* [UserPromptSubmit](#userpromptsubmit) and [UserPromptExpansion](#userpromptexpansion): alongside the submitted prompt

677* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure), and [PostToolBatch](#posttoolbatch): next to the tool result

678 

679When several hooks return `additionalContext` for the same event, Claude receives all of the values. If a value exceeds 10,000 characters, Claude Code writes the full text to a file in the session directory and passes Claude the file path with a short preview instead.

680 

681Use `additionalContext` for information Claude should know about the current state of your environment or the operation that just ran:

682 

683* **Environment state**: the current branch, deployment target, or active feature flags

684* **Conditional project rules**: which test command applies to the file just edited, which directories are read-only in this worktree

685* **External data**: open issues assigned to you, recent CI results, content fetched from an internal service

686 

687For instructions that never change, prefer [CLAUDE.md](/en/memory). It loads without running a script and is the standard place for static project conventions.

688 

689Write the text as factual statements rather than imperative system instructions. Phrasing such as "The deployment target is production" or "This repo uses `bun test`" reads as project information. Text framed as out-of-band system commands can trigger Claude's prompt-injection defenses, which causes Claude to surface the text to you instead of treating it as context.

690 

691Once injected, the text is saved in the session transcript. For mid-session events like `PostToolUse` or `UserPromptSubmit`, resuming with `--continue` or `--resume` replays the saved text rather than re-running the hook for past turns, so values like timestamps or commit SHAs become stale on resume. `SessionStart` hooks run again on resume with `source` set to `"resume"`, so they can refresh their context.

692 

658#### Decision control693#### Decision control

659 694 

660Not every event supports blocking or controlling behavior through JSON. The events that do each use a different set of fields to express that decision. Use this table as a quick reference before writing a hook:695Not every event supports blocking or controlling behavior through JSON. The events that do each use a different set of fields to express that decision. Use this table as a quick reference before writing a hook:


759Any text your hook script prints to stdout is added as context for Claude. In addition to the [JSON output fields](#json-output) available to all hooks, you can return these event-specific fields:794Any text your hook script prints to stdout is added as context for Claude. In addition to the [JSON output fields](#json-output) available to all hooks, you can return these event-specific fields:

760 795 

761| Field | Description |796| Field | Description |

762| :------------------ | :------------------------------------------------------------------------ |797| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

763| `additionalContext` | String added to Claude's context. Multiple hooks' values are concatenated |798| `additionalContext` | String added to Claude's context at the start of the conversation, before the first prompt. See [Add context for Claude](#add-context-for-claude) for how the text is delivered and what to put in it |

764 799 

765```json theme={null}800```json theme={null}

766{801{

767 "hookSpecificOutput": {802 "hookSpecificOutput": {

768 "hookEventName": "SessionStart",803 "hookEventName": "SessionStart",

769 "additionalContext": "My additional context here"804 "additionalContext": "Current branch: feat/auth-refactor\nUncommitted changes: src/auth.ts, src/login.tsx\nActive issue: #4211 Migrate to OAuth2"

770 }805 }

771}806}

772```807```

773 808 

809Since plain stdout already reaches Claude for this event, a hook that only loads context can print to stdout directly without building JSON. Use the JSON form when you need to combine context with other fields such as `suppressOutput`.

810 

774#### Persist environment variables811#### Persist environment variables

775 812 

776SessionStart hooks have access to the `CLAUDE_ENV_FILE` environment variable, which provides a file path where you can persist environment variables for subsequent Bash commands.813SessionStart hooks have access to the `CLAUDE_ENV_FILE` environment variable, which provides a file path where you can persist environment variables for subsequent Bash commands.


884To block a prompt, return a JSON object with `decision` set to `"block"`:921To block a prompt, return a JSON object with `decision` set to `"block"`:

885 922 

886| Field | Description |923| Field | Description |

887| :------------------ | :----------------------------------------------------------------------------------------------------------------- |924| :------------------ | :--------------------------------------------------------------------------------------------------------------------- |

888| `decision` | `"block"` prevents the prompt from being processed and erases it from context. Omit to allow the prompt to proceed |925| `decision` | `"block"` prevents the prompt from being processed and erases it from context. Omit to allow the prompt to proceed |

889| `reason` | Shown to the user when `decision` is `"block"`. Not added to context |926| `reason` | Shown to the user when `decision` is `"block"`. Not added to context |

890| `additionalContext` | String added to Claude's context |927| `additionalContext` | String added to Claude's context alongside the submitted prompt. See [Add context for Claude](#add-context-for-claude) |

891| `sessionTitle` | Sets the session title, same effect as `/rename`. Use to name sessions automatically based on the prompt content |928| `sessionTitle` | Sets the session title, same effect as `/rename`. Use to name sessions automatically based on the prompt content |

892 929 

893```json theme={null}930```json theme={null}


939`UserPromptExpansion` hooks can block the expansion or add context. All [JSON output fields](#json-output) are available.976`UserPromptExpansion` hooks can block the expansion or add context. All [JSON output fields](#json-output) are available.

940 977 

941| Field | Description |978| Field | Description |

942| :------------------ | :------------------------------------------------------------------------------- |979| :------------------ | :-------------------------------------------------------------------------------------------------------------------- |

943| `decision` | `"block"` prevents the slash command from expanding. Omit to allow it to proceed |980| `decision` | `"block"` prevents the slash command from expanding. Omit to allow it to proceed |

944| `reason` | Shown to the user when `decision` is `"block"` |981| `reason` | Shown to the user when `decision` is `"block"` |

945| `additionalContext` | String added to Claude's context alongside the expanded prompt |982| `additionalContext` | String added to Claude's context alongside the expanded prompt. See [Add context for Claude](#add-context-for-claude) |

946 983 

947```json theme={null}984```json theme={null}

948{985{


1076| `permissionDecision` | `"allow"` skips the permission prompt. `"deny"` prevents the tool call. `"ask"` prompts the user to confirm. `"defer"` exits gracefully so the tool can be resumed later. [Deny and ask rules](/en/permissions#manage-permissions) are still evaluated regardless of what the hook returns |1113| `permissionDecision` | `"allow"` skips the permission prompt. `"deny"` prevents the tool call. `"ask"` prompts the user to confirm. `"defer"` exits gracefully so the tool can be resumed later. [Deny and ask rules](/en/permissions#manage-permissions) are still evaluated regardless of what the hook returns |

1077| `permissionDecisionReason` | For `"allow"` and `"ask"`, shown to the user but not Claude. For `"deny"`, shown to Claude. For `"defer"`, ignored |1114| `permissionDecisionReason` | For `"allow"` and `"ask"`, shown to the user but not Claude. For `"deny"`, shown to Claude. For `"defer"`, ignored |

1078| `updatedInput` | Modifies the tool's input parameters before execution. Replaces the entire input object, so include unchanged fields alongside modified ones. Combine with `"allow"` to auto-approve, or `"ask"` to show the modified input to the user. For `"defer"`, ignored |1115| `updatedInput` | Modifies the tool's input parameters before execution. Replaces the entire input object, so include unchanged fields alongside modified ones. Combine with `"allow"` to auto-approve, or `"ask"` to show the modified input to the user. For `"defer"`, ignored |

1079| `additionalContext` | String added to Claude's context before the tool executes. For `"defer"`, ignored |1116| `additionalContext` | String added to Claude's context alongside the tool result. Ignored when `permissionDecision` is `"defer"`. See [Add context for Claude](#add-context-for-claude) |

1080 1117 

1081When multiple PreToolUse hooks return different decisions, precedence is `deny` > `defer` > `ask` > `allow`.1118When multiple PreToolUse hooks return different decisions, precedence is `deny` > `defer` > `ask` > `allow`.

1082 1119 


1272`PostToolUse` hooks can provide feedback to Claude after tool execution. In addition to the [JSON output fields](#json-output) available to all hooks, your hook script can return these event-specific fields:1309`PostToolUse` hooks can provide feedback to Claude after tool execution. In addition to the [JSON output fields](#json-output) available to all hooks, your hook script can return these event-specific fields:

1273 1310 

1274| Field | Description |1311| Field | Description |

1275| :--------------------- | :----------------------------------------------------------------------------------------- |1312| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------- |

1276| `decision` | `"block"` prompts Claude with the `reason`. Omit to allow the action to proceed |1313| `decision` | `"block"` prompts Claude with the `reason`. Omit to allow the action to proceed |

1277| `reason` | Explanation shown to Claude when `decision` is `"block"` |1314| `reason` | Explanation shown to Claude when `decision` is `"block"` |

1278| `additionalContext` | Additional context for Claude to consider |1315| `additionalContext` | String added to Claude's context alongside the tool result. See [Add context for Claude](#add-context-for-claude) |

1279| `updatedMCPToolOutput` | For [MCP tools](#match-mcp-tools) only: replaces the tool's output with the provided value |1316| `updatedToolOutput` | Replaces the tool's output with the provided value before it is sent to Claude. The value must match the tool's output shape |

1317| `updatedMCPToolOutput` | Replaces the output for [MCP tools](#match-mcp-tools) only. Prefer `updatedToolOutput`, which works for all tools |

1318 

1319The example below replaces the output of a `Bash` call. The replacement value matches the `Bash` tool's output shape:

1280 1320 

1281```json theme={null}1321```json theme={null}

1282{1322{

1283 "decision": "block",

1284 "reason": "Explanation for decision",

1285 "hookSpecificOutput": {1323 "hookSpecificOutput": {

1286 "hookEventName": "PostToolUse",1324 "hookEventName": "PostToolUse",

1287 "additionalContext": "Additional information for Claude"1325 "additionalContext": "Additional information for Claude",

1326 "updatedToolOutput": {

1327 "stdout": "[redacted]",

1328 "stderr": "",

1329 "interrupted": false,

1330 "isImage": false

1331 }

1288 }1332 }

1289}1333}

1290```1334```

1291 1335 

1336<Warning>

1337 `updatedToolOutput` only changes what Claude sees. The tool has already run by the time the hook fires, so any files written, commands executed, or network requests sent have already taken effect. Telemetry such as OpenTelemetry tool spans and analytics events also captures the original output before the hook runs. To prevent or modify a tool call before it runs, use a [PreToolUse](#pretooluse) hook instead.

1338 

1339 The replacement value must match the tool's output shape. Built-in tools return structured objects rather than plain strings. For example, `Bash` returns an object with `stdout`, `stderr`, `interrupted`, and `isImage` fields. For built-in tools, a value that does not match the tool's output schema is ignored and the original output is used. MCP tool output is passed through without schema validation. Stripping error details that Claude needs can cause it to proceed on a false assumption.

1340</Warning>

1341 

1292### PostToolUseFailure1342### PostToolUseFailure

1293 1343 

1294Runs when a tool execution fails. This event fires for tool calls that throw errors or return failure results. Use this to log failures, send alerts, or provide corrective feedback to Claude.1344Runs when a tool execution fails. This event fires for tool calls that throw errors or return failure results. Use this to log failures, send alerts, or provide corrective feedback to Claude.


1329`PostToolUseFailure` hooks can provide context to Claude after a tool failure. In addition to the [JSON output fields](#json-output) available to all hooks, your hook script can return these event-specific fields:1379`PostToolUseFailure` hooks can provide context to Claude after a tool failure. In addition to the [JSON output fields](#json-output) available to all hooks, your hook script can return these event-specific fields:

1330 1380 

1331| Field | Description |1381| Field | Description |

1332| :------------------ | :------------------------------------------------------------ |1382| :------------------ | :---------------------------------------------------------------------------------------------------------- |

1333| `additionalContext` | Additional context for Claude to consider alongside the error |1383| `additionalContext` | String added to Claude's context alongside the error. See [Add context for Claude](#add-context-for-claude) |

1334 1384 

1335```json theme={null}1385```json theme={null}

1336{1386{


1384`PostToolBatch` hooks can inject context for Claude. In addition to the [JSON output fields](#json-output) available to all hooks, your hook script can return these event-specific fields:1434`PostToolBatch` hooks can inject context for Claude. In addition to the [JSON output fields](#json-output) available to all hooks, your hook script can return these event-specific fields:

1385 1435 

1386| Field | Description |1436| Field | Description |

1387| :------------------ | :------------------------------------------------------ |1437| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1388| `additionalContext` | Context string injected once before the next model call |1438| `additionalContext` | Context string injected once before the next model call. See [Add context for Claude](#add-context-for-claude) for delivery details, what to put in it, and how resumed sessions handle past values |

1389 1439 

1390```json theme={null}1440```json theme={null}

1391{1441{


1396}1446}

1397```1447```

1398 1448 

1399<Note>

1400 Injected `additionalContext` is persisted to the session transcript. On `--continue` or `--resume`, the saved text is replayed from disk and the hook does not re-run for past turns. Prefer static context such as conventions or file-type guidance over dynamic values like timestamps or the current commit SHA, since those become stale on resume.

1401 

1402 Frame the context as factual information rather than imperative system instructions. Text written as out-of-band system commands can trigger Claude's prompt-injection defenses, which surfaces the injection to the user instead of acting on it.

1403</Note>

1404 

1405Returning `decision: "block"` or `continue: false` stops the agentic loop before the next model call.1449Returning `decision: "block"` or `continue: false` stops the agentic loop before the next model call.

1406 1450 

1407### PermissionDenied1451### PermissionDenied


1499}1543}

1500```1544```

1501 1545 

1502Notification hooks cannot block or modify notifications. In addition to the [JSON output fields](#json-output) available to all hooks, you can return `additionalContext` to add context to the conversation:1546Notification hooks cannot block or modify notifications. They are intended for side effects such as forwarding the notification to an external service. The [common JSON output fields](#json-output) such as `systemMessage` apply.

1503 

1504| Field | Description |

1505| :------------------ | :------------------------------- |

1506| `additionalContext` | String added to Claude's context |

1507 1547 

1508### SubagentStart1548### SubagentStart

1509 1549 


1527SubagentStart hooks cannot block subagent creation, but they can inject context into the subagent. In addition to the [JSON output fields](#json-output) available to all hooks, you can return:1567SubagentStart hooks cannot block subagent creation, but they can inject context into the subagent. In addition to the [JSON output fields](#json-output) available to all hooks, you can return:

1528 1568 

1529| Field | Description |1569| Field | Description |

1530| :------------------ | :------------------------------------- |1570| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------ |

1531| `additionalContext` | String added to the subagent's context |1571| `additionalContext` | String added to the subagent's context at the start of its conversation, before its first prompt. See [Add context for Claude](#add-context-for-claude) |

1532 1572 

1533```json theme={null}1573```json theme={null}

1534{1574{

Details

81| Shortcut | Description | Notes |81| Shortcut | Description | Notes |

82| :----------- | :---------------- | :------------------------------------------------------------ |82| :----------- | :---------------- | :------------------------------------------------------------ |

83| `/` at start | Command or skill | See [commands](#commands) and [skills](/en/skills) |83| `/` at start | Command or skill | See [commands](#commands) and [skills](/en/skills) |

84| `!` at start | Bash mode | Run commands directly and add execution output to the session |84| `!` at start | Shell mode | Run commands directly and add execution output to the session |

85| `@` | File path mention | Trigger file path autocomplete |85| `@` | File path mention | Trigger file path autocomplete |

86 86 

87### Transcript viewer87### Transcript viewer


259* Development servers259* Development servers

260* Long-running processes (docker, terraform)260* Long-running processes (docker, terraform)

261 261 

262### Bash mode with `!` prefix262### Shell mode with `!` prefix

263 263 

264Run bash commands directly without going through Claude by prefixing your input with `!`:264Run shell commands directly without going through Claude by prefixing your input with `!`:

265 265 

266```bash theme={null}266```bash theme={null}

267! npm test267! npm test


269! ls -la269! ls -la

270```270```

271 271 

272Bash mode:272Shell mode:

273 273 

274* Adds the command and its output to the conversation context274* Adds the command and its output to the conversation context

275* Shows real-time progress and output275* Shows real-time progress and output


277* Does not require Claude to interpret or approve the command277* Does not require Claude to interpret or approve the command

278* Supports history-based autocomplete: type a partial command and press **Tab** to complete from previous `!` commands in the current project278* Supports history-based autocomplete: type a partial command and press **Tab** to complete from previous `!` commands in the current project

279* Exit with `Escape`, `Backspace`, or `Ctrl+U` on an empty prompt279* Exit with `Escape`, `Backspace`, or `Ctrl+U` on an empty prompt

280* Pasting text that starts with `!` into an empty prompt enters bash mode automatically, matching typed `!` behavior280* Pasting text that starts with `!` into an empty prompt enters shell mode automatically, matching typed `!` behavior

281 281 

282This is useful for quick shell operations while maintaining conversation context.282This is useful for quick shell operations while maintaining conversation context.

283 283 

llm-gateway.md +2 −0

Details

45| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |45| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

46| `X-Claude-Code-Session-Id` | A unique identifier for the current Claude Code session. Proxies can use this to aggregate all API requests from a single session without parsing the request body. |46| `X-Claude-Code-Session-Id` | A unique identifier for the current Claude Code session. Proxies can use this to aggregate all API requests from a single session without parsing the request body. |

47 47 

48Claude Code also prepends a short attribution block to the system prompt containing the client version and a fingerprint derived from the conversation. The Anthropic API strips this block before processing, so it does not affect first-party prompt caching. If your gateway implements its own prompt cache keyed on the full request body, set [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/en/env-vars) to omit it.

49 

48## Configuration50## Configuration

49 51 

50### Model selection52### Model selection

mcp.md +22 −0

Details

335 335 

336If an HTTP or SSE server disconnects mid-session, Claude Code automatically reconnects with exponential backoff: up to five attempts, starting at a one-second delay and doubling each time. The server appears as pending in `/mcp` while reconnection is in progress. After five failed attempts the server is marked as failed and you can retry manually from `/mcp`. Stdio servers are local processes and are not reconnected automatically.336If an HTTP or SSE server disconnects mid-session, Claude Code automatically reconnects with exponential backoff: up to five attempts, starting at a one-second delay and doubling each time. The server appears as pending in `/mcp` while reconnection is in progress. After five failed attempts the server is marked as failed and you can retry manually from `/mcp`. Stdio servers are local processes and are not reconnected automatically.

337 337 

338The same backoff applies when an HTTP or SSE server fails its initial connection at startup. As of v2.1.121, Claude Code retries the initial connection up to three times on transient errors such as a 5xx response, a connection refused, or a timeout, then marks the server as failed if it still cannot connect. Authentication and not-found errors are not retried because they require a configuration change to resolve.

339 

338### Push messages with channels340### Push messages with channels

339 341 

340An MCP server can also push messages directly into your session so Claude can react to external events like CI results, monitoring alerts, or chat messages. To enable this, your server declares the `claude/channel` capability and you opt it in with the `--channels` flag at startup. See [Channels](/en/channels) to use an officially supported channel, or [Channels reference](/en/channels-reference) to build your own.342An MCP server can also push messages directly into your session so Claude can react to external events like CI results, monitoring alerts, or chat messages. To enable this, your server declares the `claude/channel` capability and you opt it in with the `--channels` flag at startup. See [Channels](/en/channels) to use an officially supported channel, or [Channels reference](/en/channels-reference) to build your own.


1161}1163}

1162```1164```

1163 1165 

1166### Exempt a server from deferral

1167 

1168If a server's tools should always be visible to Claude without a search step, set `alwaysLoad` to `true` in that server's configuration. Every tool from that server then loads into context at session start regardless of the `ENABLE_TOOL_SEARCH` setting. Use this for a small number of tools that Claude needs on every turn, since each upfront tool consumes context that would otherwise be available for your conversation.

1169 

1170The following `.mcp.json` entry exempts one HTTP server while leaving other servers deferred:

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 

1184The `alwaysLoad` field is available on all server types and requires Claude Code v2.1.121 or later. An MCP server can also mark individual tools as always-loaded by including `"anthropic/alwaysLoad": true` in the tool's `_meta` object, which has the same effect for that tool only.

1185 

1164## Use MCP prompts as commands1186## Use MCP prompts as commands

1165 1187 

1166MCP servers can expose prompts that become available as commands in Claude Code.1188MCP servers can expose prompts that become available as commands in Claude Code.

Details

155**`claude_code.llm_request`**155**`claude_code.llm_request`**

156 156 

157| Attribute | Description | Gated by |157| Attribute | Description | Gated by |

158| ------------------------ | -------------------------------------------------------------------------------- | -------- |158| -------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -------- |

159| `model` | Model identifier | |159| `model` | Model identifier | |

160| `gen_ai.system` | Always `anthropic`. OpenTelemetry GenAI semantic convention | |160| `gen_ai.system` | Always `anthropic`. OpenTelemetry GenAI semantic convention | |

161| `gen_ai.request.model` | Same value as `model`. OpenTelemetry GenAI semantic convention | |161| `gen_ai.request.model` | Same value as `model`. OpenTelemetry GenAI semantic convention | |


176| `status_code` | HTTP status code when the request failed | |176| `status_code` | HTTP status code when the request failed | |

177| `error` | Error message when the request failed | |177| `error` | Error message when the request failed | |

178| `response.has_tool_call` | `true` when the response contained tool-use blocks | |178| `response.has_tool_call` | `true` when the response contained tool-use blocks | |

179| `stop_reason` | API response `stop_reason`, such as `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn`, or `refusal` | |

180| `gen_ai.response.finish_reasons` | Same value as `stop_reason`, wrapped in a string array. OpenTelemetry GenAI semantic convention | |

179 181 

180Each retry attempt is also recorded as a `gen_ai.request.attempt` span event with `attempt` and `client_request_id` attributes.182Each retry attempt is also recorded as a `gen_ai.request.attempt` span event with `attempt` and `client_request_id` attributes.

181 183 


226| `num_cancelled` | Count of hooks cancelled before completion | |228| `num_cancelled` | Count of hooks cancelled before completion | |

227 229 

228<Note>230<Note>

229 Additional content-bearing attributes such as `new_context`, `system_prompt_preview`, `tool_input`, and `response.model_output` are emitted only when detailed beta tracing is active. They are not part of the stable span schema.231 Additional content-bearing attributes such as `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input`, and `response.model_output` are emitted only when detailed beta tracing is active. They are not part of the stable span schema. `user_system_prompt` additionally requires `OTEL_LOG_USER_PROMPTS=1`. It carries only the system prompt text you provide via the `systemPrompt` SDK option or `--system-prompt` and `--append-system-prompt` flags, truncated at 60 KB, and is emitted once per session rather than per request.

230</Note>232</Note>

231 233 

232### Dynamic headers234### Dynamic headers

overview.md +1 −1

Details

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

677 **Native Windows setups require [Git for Windows](https://git-scm.com/downloads/win).** Install it first if you don't have it. WSL setups do not need it.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 678 

679 <Info>679 <Info>

680 Native installations automatically update in the background to keep you on the latest version.680 Native installations automatically update in the background to keep you on the latest version.

Details

114 114 

115When you uninstall the last plugin that constrains a dependency, the dependency is no longer held and resumes tracking its marketplace entry on the next update.115When you uninstall the last plugin that constrains a dependency, the dependency is no longer held and resumes tracking its marketplace entry on the next update.

116 116 

117## Remove orphaned auto-installed dependencies

118 

119Auto-installed dependencies stay on disk after the plugins that installed them are uninstalled, in case you reinstall a dependent plugin or want to keep using the dependency directly. To clean them up, run `claude plugin prune` to list the auto-installed dependencies that no longer have any installed plugin requiring them and remove them after a confirmation prompt. This requires Claude Code v2.1.121 or later.

120 

121```bash theme={null}

122claude plugin prune

123```

124 

125By default, prune operates at user scope. Use `--scope project` or `--scope local` to target a different scope. Pass `--dry-run` to list what would be removed without changing anything. Pass `-y` to skip the confirmation prompt. When stdin or stdout is not a terminal, prune lists the orphans and exits without removing them unless `-y` is passed.

126 

127To prune as part of an uninstall, pass `--prune` to `claude plugin uninstall`. After removing the named plugin, Claude Code scans for and removes any auto-installed dependencies that are now orphaned. Plugins you installed yourself are never pruned, only those installed automatically through another plugin's `dependencies` array.

128 

129For example, to uninstall `deploy-kit` and clean up the dependencies it leaves behind:

130 

131```bash theme={null}

132claude plugin uninstall deploy-kit --prune

133```

134 

117## Resolve dependency errors135## Resolve dependency errors

118 136 

119Dependency problems surface in `claude plugin list`, in the `/plugin` interface, and in `/doctor`. The affected plugin is disabled until you resolve the error. The most common errors and their fixes are listed below.137Dependency problems surface in `claude plugin list`, in the `/plugin` interface, and in `/doctor`. The affected plugin is disabled until you resolve the error. The most common errors and their fixes are listed below.

Details

175 175 

176| Field | Type | Description |176| Field | Type | Description |

177| :------------------------------------ | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |177| :------------------------------------ | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

178| `metadata.description` | string | Brief marketplace description |178| `$schema` | string | JSON Schema URL for editor autocomplete and validation. Claude Code ignores this field at load time. |

179| `metadata.version` | string | Marketplace version |179| `description` | string | Brief marketplace description |

180| `version` | string | Marketplace manifest version |

180| `metadata.pluginRoot` | string | Base directory prepended to relative plugin source paths (for example, `"./plugins"` lets you write `"source": "formatter"` instead of `"source": "./plugins/formatter"`) |181| `metadata.pluginRoot` | string | Base directory prepended to relative plugin source paths (for example, `"./plugins"` lets you write `"source": "formatter"` instead of `"source": "./plugins/formatter"`) |

181| `allowCrossMarketplaceDependenciesOn` | array | Other marketplaces that plugins in this marketplace may depend on. Dependencies from a marketplace not listed here are blocked at install. See [Depend on a plugin from another marketplace](/en/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |182| `allowCrossMarketplaceDependenciesOn` | array | Other marketplaces that plugins in this marketplace may depend on. Dependencies from a marketplace not listed here are blocked at install. See [Depend on a plugin from another marketplace](/en/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

182 183 

184`description` and `version` are also accepted under `metadata` for backward compatibility.

185 

183## Plugin entries186## Plugin entries

184 187 

185Each plugin entry in the `plugins` array describes a plugin and where to find it. You can include any field from the [plugin manifest schema](/en/plugins-reference#plugin-manifest-schema) (like `description`, `version`, `author`, `commands`, `hooks`, etc.), plus these marketplace-specific fields: `source`, `category`, `tags`, and `strict`.188Each plugin entry in the `plugins` array describes a plugin and where to find it. You can include any field from the [plugin manifest schema](/en/plugins-reference#plugin-manifest-schema) (like `description`, `version`, `author`, `commands`, `hooks`, etc.), plus these marketplace-specific fields: `source`, `category`, `tags`, and `strict`.


958**Warnings** (non-blocking):961**Warnings** (non-blocking):

959 962 

960* `Marketplace has no plugins defined`: add at least one plugin to the `plugins` array963* `Marketplace has no plugins defined`: add at least one plugin to the `plugins` array

961* `No marketplace description provided`: add `metadata.description` to help users understand your marketplace964* `No marketplace description provided`: add a top-level `description` to help users understand your marketplace

962* `Plugin name "x" is not kebab-case`: the plugin name contains uppercase letters, spaces, or special characters. Rename to lowercase letters, digits, and hyphens only (for example, `my-plugin`). Claude Code accepts other forms, but the Claude.ai marketplace sync rejects them.965* `Plugin name "x" is not kebab-case`: the plugin name contains uppercase letters, spaces, or special characters. Rename to lowercase letters, digits, and hyphens only (for example, `my-plugin`). Claude Code accepts other forms, but the Claude.ai marketplace sync rejects them.

963 966 

964### Plugin installation failures967### Plugin installation failures

plugins.md +1 −1

Details

3323. **Create or use a marketplace**: Distribute through [plugin marketplaces](/en/plugin-marketplaces) for installation3323. **Create or use a marketplace**: Distribute through [plugin marketplaces](/en/plugin-marketplaces) for installation

3334. **Test with others**: Have team members test the plugin before wider distribution3334. **Test with others**: Have team members test the plugin before wider distribution

334 334 

335Once your plugin is in a marketplace, others can install it using the instructions in [Discover and install plugins](/en/discover-plugins).335Once your plugin is in a marketplace, others can install it using the instructions in [Discover and install plugins](/en/discover-plugins). To keep a plugin internal to your team, host the marketplace in a [private repository](/en/plugin-marketplaces#private-repositories).

336 336 

337### Submit your plugin to the official marketplace337### Submit your plugin to the official marketplace

338 338 

Details

408### Metadata fields408### Metadata fields

409 409 

410| Field | Type | Description | Example |410| Field | Type | Description | Example |

411| :------------ | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------- |411| :------------ | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

412| `$schema` | string | JSON Schema URL for editor autocomplete and validation. Claude Code ignores this field at load time. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

412| `version` | string | Optional. Semantic version. Setting this pins the plugin to that version string, so users only receive updates when you bump it. If omitted, Claude Code falls back to the git commit SHA, so every commit is treated as a new version. If also set in the marketplace entry, `plugin.json` wins. See [Version management](#version-management). | `"2.1.0"` |413| `version` | string | Optional. Semantic version. Setting this pins the plugin to that version string, so users only receive updates when you bump it. If omitted, Claude Code falls back to the git commit SHA, so every commit is treated as a new version. If also set in the marketplace entry, `plugin.json` wins. See [Version management](#version-management). | `"2.1.0"` |

413| `description` | string | Brief explanation of plugin purpose | `"Deployment automation tools"` |414| `description` | string | Brief explanation of plugin purpose | `"Deployment automation tools"` |

414| `author` | object | Author information | `{"name": "Dev Team", "email": "dev@company.com"}` |415| `author` | object | Author information | `{"name": "Dev Team", "email": "dev@company.com"}` |


749**Options:**750**Options:**

750 751 

751| Option | Description | Default |752| Option | Description | Default |

752| :-------------------- | :---------------------------------------------------------------------------- | :------ |753| :-------------------- | :------------------------------------------------------------------------------------------------------- | :------ |

753| `-s, --scope <scope>` | Uninstall from scope: `user`, `project`, or `local` | `user` |754| `-s, --scope <scope>` | Uninstall from scope: `user`, `project`, or `local` | `user` |

754| `--keep-data` | Preserve the plugin's [persistent data directory](#persistent-data-directory) | |755| `--keep-data` | Preserve the plugin's [persistent data directory](#persistent-data-directory) | |

756| `--prune` | Also remove auto-installed dependencies that no other plugin requires. See [plugin prune](#plugin-prune) | |

757| `-y, --yes` | Skip the `--prune` confirmation prompt. Required when stdin is not a TTY | |

755| `-h, --help` | Display help for command | |758| `-h, --help` | Display help for command | |

756 759 

757**Aliases:** `remove`, `rm`760**Aliases:** `remove`, `rm`

758 761 

759By default, uninstalling from the last remaining scope also deletes the plugin's `${CLAUDE_PLUGIN_DATA}` directory. Use `--keep-data` to preserve it, for example when reinstalling after testing a new version.762By default, uninstalling from the last remaining scope also deletes the plugin's `${CLAUDE_PLUGIN_DATA}` directory. Use `--keep-data` to preserve it, for example when reinstalling after testing a new version.

760 763 

764### plugin prune

765 

766Remove auto-installed plugin dependencies that are no longer required by any installed plugin. Dependencies that Claude Code pulled in to satisfy another plugin's [`dependencies`](/en/plugin-dependencies) field are removed; plugins you installed directly are never touched.

767 

768```bash theme={null}

769claude plugin prune [options]

770```

771 

772**Options:**

773 

774| Option | Description | Default |

775| :-------------------- | :------------------------------------------------------------- | :------ |

776| `-s, --scope <scope>` | Prune at scope: `user`, `project`, or `local` | `user` |

777| `--dry-run` | List what would be removed without removing anything | |

778| `-y, --yes` | Skip the confirmation prompt. Required when stdin is not a TTY | |

779| `-h, --help` | Display help for command | |

780 

781**Aliases:** `autoremove`

782 

783The command lists orphaned dependencies and asks for confirmation before removing them. To remove a plugin and clean up its dependencies in one step, run `claude plugin uninstall <plugin> --prune`.

784 

785<Note>

786 `claude plugin prune` requires Claude Code v2.1.121 or later.

787</Note>

788 

761### plugin enable789### plugin enable

762 790 

763Enable a disabled plugin.791Enable a disabled plugin.

quickstart.md +1 −1

Details

571 571 

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

573 573 

574 **Native Windows setups require [Git for Windows](https://git-scm.com/downloads/win).** Install it first if you don't have it. WSL setups do not need it.574 [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.

575 575 

576 <Info>576 <Info>

577 Native installations automatically update in the background to keep you on the latest version.577 Native installations automatically update in the background to keep you on the latest version.

security.md +1 −1

Details

130If you discover a security vulnerability in Claude Code:130If you discover a security vulnerability in Claude Code:

131 131 

1321. Do not disclose it publicly1321. Do not disclose it publicly

1332. Report it through our [HackerOne program](https://hackerone.com/anthropic-vdp/reports/new?type=team\&report_type=vulnerability)1332. Report it through our [HackerOne program](https://hackerone.com/4f1f16ba-10d3-4d09-9ecc-c721aad90f24/embedded_submissions/new)

1343. Include detailed reproduction steps1343. Include detailed reproduction steps

1354. Allow time for us to address the issue before public disclosure1354. Allow time for us to address the issue before public disclosure

136 136 

Details

203Server-managed settings provide centralized policy enforcement, but they operate as a client-side control. On unmanaged devices, users with admin or sudo access can modify the Claude Code binary, filesystem, or network configuration.203Server-managed settings provide centralized policy enforcement, but they operate as a client-side control. On unmanaged devices, users with admin or sudo access can modify the Claude Code binary, filesystem, or network configuration.

204 204 

205| Scenario | Behavior |205| Scenario | Behavior |

206| :----------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |206| :--------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

207| User edits the cached settings file | Tampered file applies at startup, but correct settings restore on the next server fetch |207| User edits the cached settings file | Tampered file applies at startup, but correct settings restore on the next server fetch |

208| User deletes the cached settings file | First-launch behavior occurs: settings fetch asynchronously with a brief unenforced window |208| User deletes the cached settings file | First-launch behavior occurs: settings fetch asynchronously with a brief unenforced window |

209| API is unavailable | Cached settings apply if available, otherwise managed settings are not enforced until the next successful fetch. With `forceRemoteSettingsRefresh: true`, the CLI exits instead of continuing |209| API is unavailable | Cached settings apply if available, otherwise managed settings are not enforced until the next successful fetch. With `forceRemoteSettingsRefresh: true`, the CLI exits instead of continuing |

210| User authenticates with a different organization | Settings are not delivered for accounts outside the managed organization |210| User authenticates with a different organization | Settings are not delivered for accounts outside the managed organization |

211| User sets a non-default `ANTHROPIC_BASE_URL` | Server-managed settings are bypassed when using third-party API providers |211| User configures a [third-party model provider](#platform-availability) | Server-managed settings are bypassed. This includes setting `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, or a non-default `ANTHROPIC_BASE_URL` |

212 212 

213To detect runtime configuration changes, use [`ConfigChange` hooks](/en/hooks#configchange) to log modifications or block unauthorized changes before they take effect.213To detect runtime configuration changes, use [`ConfigChange` hooks](/en/hooks#configchange) to log modifications or block unauthorized changes before they take effect.

214 214 

setup.md +5 −5

Details

20 * Alpine Linux 3.19+20 * Alpine Linux 3.19+

21* **Hardware**: 4 GB+ RAM, x64 or ARM64 processor21* **Hardware**: 4 GB+ RAM, x64 or ARM64 processor

22* **Network**: internet connection required. See [network configuration](/en/network-config#network-access-requirements).22* **Network**: internet connection required. See [network configuration](/en/network-config#network-access-requirements).

23* **Shell**: Bash, Zsh, PowerShell, or CMD. Native Windows setups require [Git for Windows](https://git-scm.com/downloads/win). WSL setups do not.23* **Shell**: Bash, Zsh, PowerShell, or CMD. Native Windows setups recommend [Git for Windows](https://git-scm.com/downloads/win); PowerShell is used as a fallback when Git Bash is absent. WSL setups do not require Git for Windows.

24* **Location**: [Anthropic supported countries](https://www.anthropic.com/supported-countries)24* **Location**: [Anthropic supported countries](https://www.anthropic.com/supported-countries)

25 25 

26### Additional dependencies26### Additional dependencies


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

62 **Native Windows setups require [Git for Windows](https://git-scm.com/downloads/win).** Install it first if you don't have it. WSL setups do not need it.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 63 

64 <Info>64 <Info>

65 Native installations automatically update in the background to keep you on the latest version.65 Native installations automatically update in the background to keep you on the latest version.


104You can run Claude Code natively on Windows or inside WSL. Pick based on where your projects are located and which features you need:104You can run Claude Code natively on Windows or inside WSL. Pick based on where your projects are located and which features you need:

105 105 

106| Option | Requires | [Sandboxing](/en/sandboxing) | When to use |106| Option | Requires | [Sandboxing](/en/sandboxing) | When to use |

107| -------------- | ---------------------------------------------------- | ---------------------------- | ----------------------------------------------- |107| -------------- | ------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------- |

108| Native Windows | [Git for Windows](https://git-scm.com/downloads/win) | Not supported | Windows-native projects and tools |108| Native Windows | [Git for Windows](https://git-scm.com/downloads/win) recommended; PowerShell used if absent | Not supported | Windows-native projects and tools |

109| WSL 2 | WSL 2 enabled | Supported | Linux toolchains or sandboxed command execution |109| WSL 2 | WSL 2 enabled | Supported | Linux toolchains or sandboxed command execution |

110| WSL 1 | WSL 1 enabled | Not supported | If WSL 2 is unavailable |110| WSL 1 | WSL 1 enabled | Not supported | If WSL 2 is unavailable |

111 111 


115 115 

116Whether you install from PowerShell or CMD only affects which install command you run. Your prompt shows `PS C:\Users\YourName>` in PowerShell and `C:\Users\YourName>` without the `PS` in CMD. If you're new to the terminal, the [terminal guide](/en/terminal-guide#windows) walks through each step.116Whether you install from PowerShell or CMD only affects which install command you run. Your prompt shows `PS C:\Users\YourName>` in PowerShell and `C:\Users\YourName>` without the `PS` in CMD. If you're new to the terminal, the [terminal guide](/en/terminal-guide#windows) walks through each step.

117 117 

118After installation, launch `claude` from PowerShell, CMD, or Git Bash. Claude Code uses Git Bash internally to execute commands regardless of where you launched it. If Claude Code can't find your Git Bash installation, set the path in your [settings.json file](/en/settings):118After installation, launch `claude` from PowerShell, CMD, or Git Bash. When Git Bash is installed, Claude Code uses it internally to execute commands regardless of where you launched it. If Claude Code can't find your Git Bash installation, set the path in your [settings.json file](/en/settings):

119 119 

120```json theme={null}120```json theme={null}

121{121{

skills.md +1 −0

Details

215| `$N` | Shorthand for `$ARGUMENTS[N]`, such as `$0` for the first argument or `$1` for the second. |215| `$N` | Shorthand for `$ARGUMENTS[N]`, such as `$0` for the first argument or `$1` for the second. |

216| `$name` | Named argument declared in the [`arguments`](#frontmatter-reference) frontmatter list. Names map to positions in order, so with `arguments: [issue, branch]` the placeholder `$issue` expands to the first argument and `$branch` to the second. |216| `$name` | Named argument declared in the [`arguments`](#frontmatter-reference) frontmatter list. Names map to positions in order, so with `arguments: [issue, branch]` the placeholder `$issue` expands to the first argument and `$branch` to the second. |

217| `${CLAUDE_SESSION_ID}` | The current session ID. Useful for logging, creating session-specific files, or correlating skill output with sessions. |217| `${CLAUDE_SESSION_ID}` | The current session ID. Useful for logging, creating session-specific files, or correlating skill output with sessions. |

218| `${CLAUDE_EFFORT}` | The current effort level: `low`, `medium`, `high`, `xhigh`, or `max`. Use this to adapt skill instructions to the active effort setting. |

218| `${CLAUDE_SKILL_DIR}` | The directory containing the skill's `SKILL.md` file. For plugin skills, this is the skill's subdirectory within the plugin, not the plugin root. Use this in bash injection commands to reference scripts or files bundled with the skill, regardless of the current working directory. |219| `${CLAUDE_SKILL_DIR}` | The directory containing the skill's `SKILL.md` file. For plugin skills, this is the skill's subdirectory within the plugin, not the plugin root. Use this in bash injection commands to reference scripts or files bundled with the skill, regardless of the current working directory. |

219 220 

220Indexed arguments use shell-style quoting, so wrap multi-word values in quotes to pass them as a single argument. For example, `/my-skill "hello world" second` makes `$0` expand to `hello world` and `$1` to `second`. The `$ARGUMENTS` placeholder always expands to the full argument string as typed.221Indexed arguments use shell-style quoting, so wrap multi-word values in quotes to pass them as a single argument. For example, `/my-skill "hello world" second` makes `$0` expand to `hello world` and `$1` to `second`. The `$ARGUMENTS` placeholder always expands to the full argument string as typed.

statusline.md +2 −0

Details

64 64 

65The optional `refreshInterval` field re-runs your command every N seconds in addition to the [event-driven updates](#how-status-lines-work). The minimum is `1`. Set this when your status line shows time-based data such as a clock, or when background subagents change git state while the main session is idle. Leave it unset to run only on events.65The optional `refreshInterval` field re-runs your command every N seconds in addition to the [event-driven updates](#how-status-lines-work). The minimum is `1`. Set this when your status line shows time-based data such as a clock, or when background subagents change git state while the main session is idle. Leave it unset to run only on events.

66 66 

67The optional `hideVimModeIndicator` field suppresses the built-in `-- INSERT --` text below the prompt. Set this to `true` when your script renders [`vim.mode`](#available-data) itself, so the mode is not shown twice.

68 

67### Disable the status line69### Disable the status line

68 70 

69Run `/statusline` and ask it to remove or clear your status line (e.g., `/statusline delete`, `/statusline clear`, `/statusline remove it`). You can also manually delete the `statusLine` field from your settings.json.71Run `/statusline` and ask it to remove or clear your status line (e.g., `/statusline delete`, `/statusline clear`, `/statusline remove it`). You can also manually delete the `statusLine` field from your settings.json.

sub-agents.md +2 −2

Details

766## Fork the current conversation766## Fork the current conversation

767 767 

768<Note>768<Note>

769 Forked subagents are experimental and require Claude Code v2.1.117 or later. Behavior and configuration may change in future releases. Enable them by setting the [`CLAUDE_CODE_FORK_SUBAGENT`](/en/env-vars) environment variable to `1`.769 Forked subagents are experimental and require Claude Code v2.1.117 or later. Behavior and configuration may change in future releases. Enable them by setting the [`CLAUDE_CODE_FORK_SUBAGENT`](/en/env-vars) environment variable to `1`. The variable is honored in interactive mode and via the SDK or `claude -p`.

770</Note>770</Note>

771 771 

772A fork is a subagent that inherits the entire conversation so far instead of starting fresh. This drops the input isolation that subagents otherwise provide: a fork sees the same system prompt, tools, model, and message history as the main session, so you can hand it a side task without re-explaining the situation. The fork's own tool calls still stay out of your conversation and only its final result comes back, so your main context window stays clean. Use a fork when a named subagent would need too much background to be useful, or when you want to try several approaches in parallel from the same starting point.772A fork is a subagent that inherits the entire conversation so far instead of starting fresh. This drops the input isolation that subagents otherwise provide: a fork sees the same system prompt, tools, model, and message history as the main session, so you can hand it a side task without re-explaining the situation. The fork's own tool calls still stay out of your conversation and only its final result comes back, so your main context window stays clean. Use a fork when a named subagent would need too much background to be useful, or when you want to try several approaches in parallel from the same starting point.


814 814 

815### Limitations815### Limitations

816 816 

817Fork mode works only in interactive sessions. It is disabled in [non-interactive mode](/en/headless), which includes the Agent SDK. A fork cannot spawn further forks.817Setting `CLAUDE_CODE_FORK_SUBAGENT=1` enables fork mode in interactive sessions, [non-interactive mode](/en/headless), and the Agent SDK. A fork cannot spawn further forks.

818 818 

819## Example subagents819## Example subagents

820 820 

Details

48 48 

49 <Tab title="iTerm2">49 <Tab title="iTerm2">

50 Open Settings → Profiles → Keys → General and set Left Option key and Right Option key to "Esc+".50 Open Settings → Profiles → Keys → General and set Left Option key and Right Option key to "Esc+".

51 

52 Running `/terminal-setup` in iTerm2 enables "Applications in terminal may access clipboard" under Settings → General → Selection so the `/copy` command can write to your system clipboard. The command detects iTerm2 even when run from inside tmux. Restart iTerm2 for the change to take effect.

51 </Tab>53 </Tab>

52 54 

53 <Tab title="VS Code">55 <Tab title="VS Code">

Details

129 129 

130* PowerShell profiles are not loaded130* PowerShell profiles are not loaded

131* On Windows, sandboxing is not supported131* On Windows, sandboxing is not supported

132* On Windows, Git Bash is still required to start Claude Code

133 132 

134## Check which tools are available133## Check which tools are available

135 134 

troubleshooting.md +14 −21

Details

24| `Failed to fetch version` or can't reach download server | [Check network and proxy settings](#check-network-connectivity) |24| `Failed to fetch version` or can't reach download server | [Check network and proxy settings](#check-network-connectivity) |

25| `irm is not recognized` or `&& is not valid` | [Use the right command for your shell](#windows-wrong-install-command) |25| `irm is not recognized` or `&& is not valid` | [Use the right command for your shell](#windows-wrong-install-command) |

26| `'bash' is not recognized as the name of a cmdlet` | [Use the Windows installer command](#windows-wrong-install-command) |26| `'bash' is not recognized as the name of a cmdlet` | [Use the Windows installer command](#windows-wrong-install-command) |

27| `Claude Code on Windows requires git-bash` | [Install or configure Git Bash](#windows-claude-code-on-windows-requires-git-bash) |27| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [Install a shell](#windows-claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |

28| `Claude Code does not support 32-bit Windows` | [Open Windows PowerShell, not the x86 entry](#windows-claude-code-does-not-support-32-bit-windows) |28| `Claude Code does not support 32-bit Windows` | [Open Windows PowerShell, not the x86 entry](#windows-claude-code-does-not-support-32-bit-windows) |

29| `Error loading shared library` | [Wrong binary variant for your system](#linux-wrong-binary-variant-installed-musl/glibc-mismatch) |29| `Error loading shared library` | [Wrong binary variant for your system](#linux-wrong-binary-variant-installed-musl/glibc-mismatch) |

30| `Illegal instruction` on Linux | [Architecture mismatch](#illegal-instruction-on-linux) |30| `Illegal instruction` on Linux | [Architecture mismatch](#illegal-instruction-on-linux) |


454 454 

455Update Claude Desktop to the latest version to fix this issue.455Update Claude Desktop to the latest version to fix this issue.

456 456 

457### Windows: Claude Code on Windows requires git-bash457### Windows: "Claude Code on Windows requires either Git for Windows (for bash) or PowerShell"

458 458 

459Claude Code on native Windows needs [Git for Windows](https://git-scm.com/downloads/win), which includes Git Bash.459Claude Code on native Windows needs at least one shell: either [Git for Windows](https://git-scm.com/downloads/win) for Bash, or PowerShell. When neither is found, this error appears at startup. If only PowerShell is found, Claude Code uses the PowerShell tool instead of Bash.

460 460 

461**If Git is not installed**, download and install it from [git-scm.com/downloads/win](https://git-scm.com/downloads/win). During setup, select "Add to PATH." Restart your terminal after installing.461**If neither is installed**, install one:

462 462 

463**If Git is already installed** but Claude Code still can't find it, set the path in your [settings.json file](/en/settings):463* Git for Windows: download from [git-scm.com/downloads/win](https://git-scm.com/downloads/win). During setup, select "Add to PATH." Restart your terminal after installing.

464* PowerShell 7: download from [aka.ms/powershell](https://aka.ms/powershell).

465 

466**If Git is already installed** but Claude Code can't find it, set the path in your [settings.json file](/en/settings):

464 467 

465```json theme={null}468```json theme={null}

466{469{


517bash: line 142: 2238232 Illegal instruction "$binary_path" install ${TARGET:+"$TARGET"}520bash: line 142: 2238232 Illegal instruction "$binary_path" install ${TARGET:+"$TARGET"}

518```521```

519 522 

520**Solutions:**523**Verify your architecture**:

521 524 

5221. **Verify your architecture**:525```bash theme={null}

523 ```bash theme={null}526uname -m

524 uname -m527```

525 ```

526 `x86_64` means 64-bit Intel/AMD, `aarch64` means ARM64. If the binary doesn't match, [file a GitHub issue](https://github.com/anthropics/claude-code/issues) with the output.

527 528 

5282. **Try an alternative install method** while the architecture issue is resolved:529`x86_64` means 64-bit Intel/AMD, `aarch64` means ARM64. If the binary doesn't match, [file a GitHub issue](https://github.com/anthropics/claude-code/issues) with the output. Alternative install methods download the same architecture-specific binary and won't resolve this error.

529 ```bash theme={null}

530 brew install --cask claude-code

531 ```

532 530 

533### `dyld: cannot load` on macOS531### `dyld: cannot load` on macOS

534 532 


551 549 

5521. **Check your macOS version**: Claude Code requires macOS 13.0 or later. Open the Apple menu and select About This Mac to check your version.5501. **Check your macOS version**: Claude Code requires macOS 13.0 or later. Open the Apple menu and select About This Mac to check your version.

553 551 

5542. **Update macOS** if you're on an older version. The binary uses load commands that older macOS versions don't support.5522. **Update macOS** if you're on an older version. The binary uses load commands and system libraries that older macOS versions don't support. Alternative install methods like Homebrew download the same binary and won't resolve this error.

555 

5563. **Try Homebrew** as an alternative install method:

557 ```bash theme={null}

558 brew install --cask claude-code

559 ```

560 553 

561### Windows installation issues: errors in WSL554### Windows installation issues: errors in WSL

562 555 

ultrareview.md +22 −1

Details

54| Max | 3 free runs through May 5, 2026 | billed as [extra usage](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |54| Max | 3 free runs through May 5, 2026 | billed as [extra usage](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

55| Team and Enterprise | none | billed as [extra usage](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |55| Team and Enterprise | none | billed as [extra usage](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

56 56 

57Pro and Max subscribers receive three free ultrareview runs to try the feature. These three runs are a one-time allotment per account, do not refresh, and expire on May 5, 2026. After you use all three, or after the free run period ends, each review is billed to extra usage and typically costs \$5 to \$20 depending on the size of the change.57Pro and Max subscribers receive three free ultrareview runs to try the feature. These three runs are a one-time allotment per account, do not refresh, and expire on May 5, 2026. After you use all three, or after the free run period ends, each review is billed to extra usage and typically costs \$5 to \$20 depending on the size of the change. A run counts once the remote session starts, so a review that you stop early or that fails to complete still uses a free run. For a paid review, extra usage is billed only for the portion that ran.

58 58 

59Because ultrareview always bills as extra usage outside the free runs, your account or organization must have extra usage enabled before you can launch a paid review. If extra usage is not enabled, Claude Code blocks the launch and links you to the billing settings where you can turn it on. You can also run `/extra-usage` to check or change your current setting.59Because ultrareview always bills as extra usage outside the free runs, your account or organization must have extra usage enabled before you can launch a paid review. If extra usage is not enabled, Claude Code blocks the launch and links you to the billing settings where you can turn it on. You can also run `/extra-usage` to check or change your current setting.

60 60 


64 64 

65Use `/tasks` to see running and completed reviews, open the detail view for a review, or stop a review that is in progress. Stopping a review archives the cloud session, and partial findings are not returned. When the review finishes, the verified findings appear as a notification in your session. Each finding includes the file location and an explanation of the issue so you can ask Claude to fix it directly.65Use `/tasks` to see running and completed reviews, open the detail view for a review, or stop a review that is in progress. Stopping a review archives the cloud session, and partial findings are not returned. When the review finishes, the verified findings appear as a notification in your session. Each finding includes the file location and an explanation of the issue so you can ask Claude to fix it directly.

66 66 

67## Run ultrareview non-interactively

68 

69Use the `claude ultrareview` subcommand to start an ultrareview from CI or a script without an interactive session. The subcommand launches the same review as `/ultrareview`, blocks until the remote review finishes, prints the findings to stdout, and exits with code 0 on success or 1 on failure.

70 

71```bash theme={null}

72claude ultrareview

73claude ultrareview 1234

74claude ultrareview origin/main

75```

76 

77Without arguments, the subcommand reviews the diff between your current branch and the default branch. Pass a PR number to review a pull request, or pass a base branch to review the diff against that branch instead. Invoking the subcommand counts as consent for the billing and terms prompt that the interactive command shows.

78 

79Progress messages and the live session URL go to stderr so stdout stays parseable. Use these flags to control the output and timeout:

80 

81| Flag | Description |

82| --------------------- | ------------------------------------------------------------------- |

83| `--json` | Print the raw `bugs.json` payload instead of the formatted findings |

84| `--timeout <minutes>` | Maximum minutes to wait for the review to finish. Defaults to 30 |

85 

86Running `claude ultrareview` requires the same authentication and extra usage configuration as `/ultrareview`. The subcommand exits with code 0 when the review completes with or without findings, code 1 when the review fails to launch, the remote session errors, or the timeout elapses, and code 130 when interrupted with Ctrl-C. The remote review keeps running if you interrupt the subcommand; follow the session URL printed to stderr to watch it in the browser.

87 

67## How ultrareview compares to /review88## How ultrareview compares to /review

68 89 

69Both commands review code, but they target different stages of your workflow.90Both commands review code, but they target different stages of your workflow.

Details

87 87 

88## Change the dictation language88## Change the dictation language

89 89 

90Voice dictation uses the same [`language` setting](/en/settings) that controls Claude's response language. If that setting is empty, dictation defaults to English.90Voice dictation uses the same [`language` setting](/en/settings) that controls Claude's response language. If that setting is empty, dictation defaults to English. In the VS Code extension, if `language` is empty, dictation uses VS Code's `accessibility.voice.speechLanguage` setting before defaulting to English.

91 91 

92<Accordion title="Supported dictation languages">92<Accordion title="Supported dictation languages">

93 | Language | Code |93 | Language | Code |