What this read moved
1–19 of 19agent-sdk/typescript Changed · +4 / -4 lines
This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.
Nothing in the body moved in this read. What changed is above.
agent-sdk/user-input Changed · +7 / -7 lines
from line 60
6060
6161| Argument | Description |
6262| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
63| `toolName` | The name of the tool Claude wants to use (e.g., `"Bash"`, `"Write"`, `"Edit"`) |
63| `toolName` | The name of the tool Claude wants to use (for example, `"Bash"`, `"Write"`, `"Edit"`) |
6464| `input` | The parameters Claude is passing to the tool. Contents vary by tool. |
6565| `options` (TS) / `context` (Python) | Additional context including optional `suggestions` (proposed `PermissionUpdate` entries to avoid re-prompting) and a cancellation signal. In TypeScript, `signal` is an `AbortSignal`; in Python, the signal field is reserved for future use. See [`ToolPermissionContext`](/docs/en/agent-sdk/python#toolpermissioncontext) for Python. |
6666
from line 214
214214Beyond allowing or denying, you can modify the tool's input or provide context that helps Claude adjust its approach:
215215
216216* **Approve**: let the tool execute as Claude requested
217* **Approve with changes**: modify the input before execution (e.g., sanitize paths, add constraints)
217* **Approve with changes**: modify the input before execution (for example, sanitize paths, add constraints)
218218* **Approve and remember**: echo a suggested permission rule back so matching calls skip the prompt next time
219219* **Reject**: block the tool and tell Claude why
220220* **Suggest alternative**: block but guide Claude toward what the user wants instead
from line 500
500500 <Step title="Return answers to Claude">
501501 Build the `answers` object as a record where each key is the `question` text and each value is the selected option's `label`:
502502
503 | From the question object | Use as |
504 | ------------------------------------------------------------ | ------ |
505 | `question` field (e.g., `"How should I format the output?"`) | Key |
506 | Selected option's `label` field (e.g., `"Summary"`) | Value |
503 | From the question object | Use as |
504 | ------------------------------------------------------------------- | ------ |
505 | `question` field (for example, `"How should I format the output?"`) | Key |
506 | Selected option's `label` field (for example, `"Summary"`) | Value |
507507
508508 For multi-select questions, pass an array of labels or join them with `", "`. If you [support free-text input](#support-free-text-input), use the user's custom text as the value.
509509
from line 647
647647
6486481. **Route the request**: The `canUseTool` callback checks if the tool name is `"AskUserQuestion"` and routes to a dedicated handler
6496492. **Display questions**: The handler loops through the `questions` array and prints each question with numbered options
6503. **Collect input**: The user can enter a number to select an option, or type free text directly (e.g., "jquery", "i don't know")
6503. **Collect input**: The user can enter a number to select an option, or type free text directly (for example, "jquery", "i don't know")
6516514. **Map answers**: The code checks if input is numeric (uses the option's label) or free text (uses the text directly)
6526525. **Return to Claude**: The response includes both the original `questions` array and the `answers` mapping
653653
overview Changed · +6 / -6 lines
from line 18
1818 <Tab title="Native Install (Recommended)">
1919 **macOS, Linux, WSL:**
2020
21 ```bash theme={null}
21 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
2222 curl -fsSL https://claude.ai/install.sh | bash
2323 ```
2424
2525 **Windows PowerShell:**
2626
27 ```powershell theme={null}
27 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
2828 irm https://claude.ai/install.ps1 | iex
2929 ```
3030
3131 **Windows CMD:**
3232
33 ```batch theme={null}
33 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
3434 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
3535 ```
3636
from line 46
4646 </Tab>
4747
4848 <Tab title="Homebrew">
49 ```bash theme={null}
49 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
5050 brew install --cask claude-code
5151 ```
5252
from line 58
5858 </Tab>
5959
6060 <Tab title="WinGet">
61 ```powershell theme={null}
61 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
6262 winget install Anthropic.ClaudeCode
6363 ```
6464
from line 216
216216
217217Beyond the [Terminal](/docs/en/quickstart), [VS Code](/docs/en/vs-code), [JetBrains](/docs/en/jetbrains), [Desktop](/docs/en/desktop), and [Web](/docs/en/claude-code-on-the-web) surfaces above, Claude Code integrates with CI/CD, chat, and browser workflows:
218218
219| I want to... | Best option |
219| What I want to do | Best option |
220220| ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
221221| Continue a local session from my phone or another device | [Remote Control](/docs/en/remote-control) |
222222| Push events from Telegram, Discord, iMessage, or my own webhooks into a session | [Channels](/docs/en/channels) |
plugin-marketplaces Changed · +9 / -9 lines
from line 252
252252
253253Claude Code copies each installed plugin into the local versioned plugin cache at `~/.claude/plugins/cache`, unless the plugin loads in place. A [`command` source in link mode](#copy-mode-and-link-mode) loads in place, and so does a [relative path source](#relative-paths) in a marketplace added from a local directory. Claude Code also [installs the plugin's eligible Node.js package dependencies](/docs/en/plugins-reference#node-js-package-dependencies) into the cached copy. See [Plugin caching and file resolution](/docs/en/plugins-reference#plugin-caching-and-file-resolution) for how a plugin loaded in place from a local-directory marketplace picks up your edits.
254254
255| Source | Type | Fields | Notes |
256| ------------- | ------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
257| Relative path | `string` (e.g. `"./my-plugin"`) | none | Local directory within the marketplace repo. Must start with `./`, unless you write a [bare name under `metadata.pluginRoot`](#relative-paths). Claude Code resolves the path relative to the marketplace root, not the `.claude-plugin/` directory |
258| `github` | object | `repo`, `ref?`, `sha?` | |
259| `url` | object | `url`, `ref?`, `sha?` | Git URL source |
260| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Subdirectory within a git repo. Clones sparsely to minimize bandwidth for monorepos |
261| `npm` | object | `package`, `version?`, `registry?` | npm package, fetched with your npm client and unpacked without running install scripts |
262| `archive` | object | `url`, `sha256?` | Zip archive downloaded over HTTPS. Works without git or npm on the user's machine. Requires Claude Code v2.1.224 or later |
263| `command` | object | `command`, `timeout?`, `mode?` | Plugin directory produced by running a local command, re-run once per session to pick up changes. Requires Claude Code v2.1.229 or later |
255| Source | Type | Fields | Notes |
256| ------------- | --------------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
257| Relative path | `string` (for example, `"./my-plugin"`) | none | Local directory within the marketplace repo. Must start with `./`, unless you write a [bare name under `metadata.pluginRoot`](#relative-paths). Claude Code resolves the path relative to the marketplace root, not the `.claude-plugin/` directory |
258| `github` | object | `repo`, `ref?`, `sha?` | |
259| `url` | object | `url`, `ref?`, `sha?` | Git URL source |
260| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Subdirectory within a git repo. Clones sparsely to minimize bandwidth for monorepos |
261| `npm` | object | `package`, `version?`, `registry?` | npm package, fetched with your npm client and unpacked without running install scripts |
262| `archive` | object | `url`, `sha256?` | Zip archive downloaded over HTTPS. Works without git or npm on the user's machine. Requires Claude Code v2.1.224 or later |
263| `command` | object | `command`, `timeout?`, `mode?` | Plugin directory produced by running a local command, re-run once per session to pick up changes. Requires Claude Code v2.1.229 or later |
264264
265265<Note>
266266 **Marketplace sources vs plugin sources**: These are different concepts that control different things.
quickstart Changed · +6 / -6 lines
from line 25
2525 <Tab title="Native Install (Recommended)">
2626 **macOS, Linux, WSL:**
2727
28 ```bash theme={null}
28 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
2929 curl -fsSL https://claude.ai/install.sh | bash
3030 ```
3131
3232 **Windows PowerShell:**
3333
34 ```powershell theme={null}
34 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
3535 irm https://claude.ai/install.ps1 | iex
3636 ```
3737
3838 **Windows CMD:**
3939
40 ```batch theme={null}
40 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
4141 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
4242 ```
4343
from line 53
5353 </Tab>
5454
5555 <Tab title="Homebrew">
56 ```bash theme={null}
56 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
5757 brew install --cask claude-code
5858 ```
5959
from line 65
6565 </Tab>
6666
6767 <Tab title="WinGet">
68 ```powershell theme={null}
68 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}
6969 winget install Anthropic.ClaudeCode
7070 ```
7171
from line 347
347347
348348## Getting help
349349
350* **In Claude Code**: Type `/help` or ask "how do I..."
350* **In Claude Code**: Type `/help` or ask a "how do I" question
351351* **Documentation**: You're here! Browse other guides
352352* **Courses**: Take [Claude Code 101](https://academy.claude.com/courses/claude-code-101) and other free self-paced courses on [Claude Academy](https://academy.claude.com/)
353353* **Community**: Join our [Discord](https://www.anthropic.com/discord) for tips and support
self-hosted-environments-deploy Changed · +3 / -3 lines
from line 105
105105* **Let the runner configure git**: start the runner with `--configure-git` to have it write the same identity and commit-signing config that Anthropic-hosted sessions use
106106* **Ship git config in your image**: set identity and push credentials yourself, for example to commit under your own bot identity
107107
108Git version floors on the runner host: [`--configure-git`](#let-the-runner-configure-git) SSH commit signing requires Git 2.34 or newer, [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) requires 2.32 or newer, and resuming sessions from branches pushed by [`--push-outcome-on-release`](/docs/en/self-hosted-environments-reference#runner-cli-flags) requires 2.29 or newer. Git 2.24 is sufficient if you omit all three and manage git identity yourself.
108Git version floors on the runner host: [`--configure-git`](#let-the-runner-configure-git) SSH commit signing requires Git 2.34 or later, [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) requires 2.32 or later, and resuming sessions from branches pushed by [`--push-outcome-on-release`](/docs/en/self-hosted-environments-reference#runner-cli-flags) requires 2.29 or later. Git 2.24 is sufficient if you omit all three and manage git identity yourself.
109109
110110### Let the runner configure git
111111
from line 116
116116* `push.negotiate = true`, so git asks your git host which commits it already has before packing a push. Requires Claude Code v2.1.257 or later.
117117* `core.hooksPath` pointing at a runner-managed hooks directory. Its `commit-msg` and `prepare-commit-msg` hooks add a `Co-authored-by:` trailer for the session's creator to each commit, built from the email in [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/en/self-hosted-environments-configuration#wrapper-scripts) and omitted when that variable is unset. If your image already sets `core.hooksPath`, the runner leaves your setting in place, skips installing these hooks, and prints a `[runner:git]` warning.
118118
119Commit signing requires git 2.34 or newer; the runner checks at startup and exits with an error if your git is older. This flag doesn't configure push credentials, which you still provide in the image.
119Commit signing requires git 2.34 or later; the runner checks at startup and exits with an error if your git is older. This flag doesn't configure push credentials, which you still provide in the image.
120120
121121### Ship git config in your image
122122
from line 156
156156
157157Start the runner with `--use-anthropic-git-proxy`, or set `CLAUDE_RUNNER_USE_GIT_PROXY=1`, to have it clone through Anthropic's git proxy, authenticated with the session's own short-lived token. For ordinary user sessions, the proxy uses the GitHub or GitHub Enterprise OAuth token stored for the session creator; for bot and agent sessions, it uses your organization's GitHub App installation token. Either way, the runner image needs no git credentials at all: no SSH keys, no credential helper, no `.netrc`. This is the same auth path Anthropic-hosted environments use.
158158
159The proxy requires `--capacity 1` because the proxy URL is per-session, and git 2.32 or newer because older git ignores the configuration mechanism the proxy uses to isolate sessions from each other. The runner refuses to start if either requirement is unmet. Because the proxy fetches from Anthropic's side, your git host must be reachable from Anthropic infrastructure, the same requirement Anthropic-hosted sessions have; for a git host that's only routable inside your network, use a [`checkout` lifecycle hook](/docs/en/self-hosted-environments-configuration#checkout) instead. Each runner process handles one session at a time, so run more replicas for parallelism. When the proxy is enabled, `--git-host-rewrite` and `--git-ssh-rewrite` have no effect: the proxy URL points at `api.anthropic.com`, not your git host.
159The proxy requires `--capacity 1` because the proxy URL is per-session, and git 2.32 or later because older git ignores the configuration mechanism the proxy uses to isolate sessions from each other. The runner refuses to start if either requirement is unmet. Because the proxy fetches from Anthropic's side, your git host must be reachable from Anthropic infrastructure, the same requirement Anthropic-hosted sessions have; for a git host that's only routable inside your network, use a [`checkout` lifecycle hook](/docs/en/self-hosted-environments-configuration#checkout) instead. Each runner process handles one session at a time, so run more replicas for parallelism. When the proxy is enabled, `--git-host-rewrite` and `--git-ssh-rewrite` have no effect: the proxy URL points at `api.anthropic.com`, not your git host.
160160
161161The runner also reports the opt-in to Anthropic when it registers, printing `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)` at startup. Reporting the opt-in requires Claude Code v2.1.267 or later, and earlier versions accept the flag without reporting it or printing that line. Each session on an opted-in runner then uses either Anthropic-managed git or the per-session proxy URL. When a session uses the per-session proxy URL, the runner logs one `[runner:warn]` line saying so.
162162
vs-code Changed · +4 / -4 lines
from line 12
1212
1313Before installing, make sure you have:
1414
15* VS Code 1.94.0 or higher
15* VS Code 1.94.0 or later
1616* An Anthropic account: any paid Claude subscription (Pro, Max, Team, or Enterprise) or a Claude Console account works, and no API key is required. You'll [sign in](/docs/en/authentication#log-in-to-claude-code) with this account when you first open the extension. If you access Claude through a third-party provider like Amazon Bedrock or Google Cloud's Agent Platform, see [Use third-party providers](#use-third-party-providers) for setup instructions.
1717
1818<Tip>
from line 337
337337
338338## Automate browser tasks with Chrome
339339
340Connect Claude to your Chrome browser to test web apps, debug with console logs, and automate browser workflows without leaving VS Code. This requires the [Claude in Chrome extension](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) version 1.0.36 or higher.
340Connect Claude to your Chrome browser to test web apps, debug with console logs, and automate browser workflows without leaving VS Code. This requires the [Claude in Chrome extension](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) version 1.0.36 or later.
341341
342342Type `@browser` in the prompt box followed by what you want Claude to do:
343343
from line 559
559559
560560Replace `YOUR_GITHUB_PAT` with your personal access token. The `claude mcp add` command saves the configuration without validating credentials, so a placeholder value is accepted here but the server fails to connect later. To verify the connection, start a new conversation, type `/mcp`, and check that the server shows **Connected**. A server with bad credentials shows **Failed**.
561561
562Once configured, ask Claude to use the tools (e.g., "Review PR #456").
562Once configured, ask Claude to use the tools (for example, "Review PR #456").
563563
564564To find servers to connect, see [Find and build MCP servers](/docs/en/mcp#find-and-build-mcp-servers).
565565
from line 657
657657The Spark icon appears in the **Editor Toolbar** (top-right of editor) when you have a file open. If you don't see it:
658658
6596591. **Open a file**: The icon requires a file to be open. Having just a folder open isn't enough.
6602. **Check VS Code version**: Requires 1.94.0 or higher (Help → About)
6602. **Check VS Code version**: Requires 1.94.0 or later (Help → About)
6616613. **Restart VS Code**: Run "Developer: Reload Window" from the Command Palette
6626624. **Disable conflicting extensions**: Temporarily disable other AI extensions (Cline, Continue, etc.)
6636635. **Check workspace trust**: The extension doesn't work in Restricted Mode
agent-sdk/claude-code-features Changed · +1 / -1 lines
from line 282
282282
283283The Agent SDK gives you access to several ways to extend your agent's behavior. If you're unsure which to use, this table maps common goals to the right approach.
284284
285| You want to... | Use | SDK surface |
285| What you want to do | Use | SDK surface |
286286| :------------------------------------------------------------------------------------------------ | :-------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |
287287| Set project conventions your agent always follows | [CLAUDE.md](/docs/en/memory) | `settingSources: ["project"]` loads it automatically |
288288| Give the agent reference material it loads when relevant | [Skills](/docs/en/agent-sdk/skills) | `settingSources` + `skills` option |
agent-sdk/custom-tools Changed · +1 / -1 lines
from line 6
66
77## Quick reference
88
9| If you want to... | Do this |
9| What you want to do | Do this |
1010| :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
1111| Define a tool | Use [`@tool`](/docs/en/agent-sdk/python#tool) (Python) or [`tool()`](/docs/en/agent-sdk/typescript#tool) (TypeScript) with a name, description, schema, and handler. See [Create a custom tool](#create-a-custom-tool). |
1212| Register a tool with Claude | Wrap in `create_sdk_mcp_server` / `createSdkMcpServer` and pass to `mcpServers` in `query()`. See [Call a custom tool](#call-a-custom-tool). |
agent-sdk/python Changed · +2 / -2 lines
from line 1543
15431543| `error` | [`AssistantMessageError`](#assistantmessageerror) ` \| None` | Error type if the response encountered an error |
15441544| `usage` | `dict[str, Any] \| None` | Per-message token usage (same keys as [`ResultMessage.usage`](#resultmessage)) |
15451545| `message_id` | `str \| None` | API message ID. Multiple messages from one turn share the same ID |
1546| `stop_reason` | `str \| None` | Stop reason from the API (e.g. `end_turn`, `tool_use`) |
1546| `stop_reason` | `str \| None` | Stop reason from the API (for example, `end_turn`, `tool_use`) |
15471547| `session_id` | `str \| None` | ID of the session this message belongs to |
15481548| `uuid` | `str \| None` | Unique message identifier within the session transcript |
15491549
from line 3369
33693369| `allowManagedDomainsOnly` | `bool` | `False` | Managed-settings only: when set in managed settings, ignore `allowedDomains` and `WebFetch(domain:...)` allow rules from non-managed settings sources. Has no effect when set via SDK options |
33703370| `allowUnixSockets` | `list[str]` | `[]` | macOS only: Unix socket paths that processes can access, such as the Docker socket. Ignored on Linux |
33713371| `allowAllUnixSockets` | `bool` | `False` | Allow access to all Unix sockets |
3372| `allowLocalBinding` | `bool` | `False` | Allow processes to bind to local ports (e.g., for dev servers) |
3372| `allowLocalBinding` | `bool` | `False` | Allow processes to bind to local ports (for example, for dev servers) |
33733373| `allowMachLookup` | `list[str]` | `[]` | macOS only: XPC/Mach service names to allow. Supports a trailing wildcard |
33743374| `httpProxyPort` | `int` | `None` | HTTP proxy port for network requests |
33753375| `socksProxyPort` | `int` | `None` | SOCKS proxy port for network requests |
agent-sdk/quickstart Changed · +1 / -1 lines
from line 221
221221The message handling inside the loop filters for human-readable output. Without filtering, you'd see raw message objects including system initialization and internal state, which is useful for debugging but noisy otherwise.
222222
223223<Note>
224 This example uses streaming to show progress in real-time. If you don't need live output (e.g., for background jobs or CI pipelines), you can collect all messages at once. See [Streaming vs. single-turn mode](/docs/en/agent-sdk/streaming-vs-single-mode) for details.
224 This example uses streaming to show progress in real-time. If you don't need live output (for example, for background jobs or CI pipelines), you can collect all messages at once. See [Streaming vs. single-turn mode](/docs/en/agent-sdk/streaming-vs-single-mode) for details.
225225</Note>
226226
227227### Run your agent
agent-sdk/subagents Changed · +1 / -1 lines
from line 703
703703
704704If Claude completes tasks directly instead of delegating to your subagent:
705705
706* **Use explicit prompting**: mention the subagent by name in your prompt, for example "Use the code-reviewer agent to..."
706* **Use explicit prompting**: mention the subagent by name in your prompt, for example "Use the code-reviewer agent to check the authentication module"
707707* **Write a clear description**: explain exactly when to use the subagent so Claude can match tasks appropriately
708708
709709### Filesystem-based agents not loading
chrome Changed · +1 / -1 lines
from line 33
3333Before using Claude Code with Chrome, you need:
3434
3535* [Google Chrome](https://www.google.com/chrome/), [Microsoft Edge](https://www.microsoft.com/edge), or another Chromium-based browser such as Brave, Arc, Vivaldi, or Opera
36* [Claude in Chrome extension](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) version 1.0.36 or higher, available in the Chrome Web Store
36* [Claude in Chrome extension](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) version 1.0.36 or later, available in the Chrome Web Store
3737* [Claude Code](/docs/en/quickstart#step-1-install-claude-code)
3838* A direct Anthropic plan (Pro, Max, Team, or Enterprise)
3939
common-workflows Changed · +1 / -1 lines
from line 303
303303
304304 1. Drag and drop an image into the Claude Code window
305305 2. Copy an image and paste it into the CLI with `Ctrl+V`, or with [`Alt+V` on Windows and WSL](/docs/en/interactive-mode#general-controls)
306 3. Provide an image path to Claude. E.g., "Analyze this image: /path/to/your/image.png"
306 3. Provide an image path to Claude, for example "Analyze this image: /path/to/your/image.png"
307307 </Step>
308308
309309 <Step title="Ask Claude to analyze the image">
plugins-reference Changed · +1 / -1 lines
from line 1400
14001400| Hooks not firing | Script not executable | Run `chmod +x script.sh` |
14011401| MCP server fails | Missing `${CLAUDE_PLUGIN_ROOT}` | Use variable for all plugin paths |
14021402| Path errors | Absolute paths used | Make paths relative, starting with `./`; see [Path behavior rules](#path-behavior-rules), which cover the `skills` field's `"."` exception |
1403| LSP `Executable not found in $PATH` | Language server not installed | Install the binary (e.g., `npm install -g typescript-language-server typescript`) |
1403| LSP `Executable not found in $PATH` | Language server not installed | Install the binary (for example, `npm install -g typescript-language-server typescript`) |
14041404
14051405### Example error messages
14061406
self-hosted-environments-reference Changed · +1 / -1 lines
from line 49
4949| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | How long to wait for the Claude process to exit cleanly after a session ends, before force-killing it. Raise the value if the child's own `SessionEnd` hooks need more time. |
5050| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Release a session slot if the child hasn't signaled that it initialized within N minutes of spawn. Cleared by the child's init signal on the [activity channel](/docs/en/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), not by ordinary output, after which `--release-idle-session-min` takes over. `0` disables. |
5151| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Seed persisted trust for each session's repository paths so repo-committed `permissions.allow` and `additionalDirectories` are honored. Set `false` to drop repo-committed permission grants and configure allow rules in the host config's `settings.json` instead; repository-committed `sandbox.*` settings still apply either way, which is why the [repo-settings guard](/docs/en/self-hosted-environments-deploy#harden-your-deployment) scans them regardless of this flag. |
52| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone via the [Anthropic git proxy](/docs/en/self-hosted-environments-deploy#use-the-anthropic-git-proxy) instead of customer-managed git auth. Requires `--capacity 1` and git 2.32 or newer; the runner refuses to start otherwise. Supersedes the rewrite flags. |
52| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone via the [Anthropic git proxy](/docs/en/self-hosted-environments-deploy#use-the-anthropic-git-proxy) instead of customer-managed git auth. Requires `--capacity 1` and git 2.32 or later; the runner refuses to start otherwise. Supersedes the rewrite flags. |
5353
5454Most duration flags have a maximum, chosen to keep each timeout inside the runtime's 32-bit timer ceiling of roughly 24.85 days. The `--*-min` flags cap at 10080 minutes, 7 days; `--drain-grace-sec` at 604800 seconds, also 7 days; and `--drain-wait-sec` at 86400 seconds, 24 hours. `--session-stop-grace-sec` and `--post-session-hook-timeout-sec` are uncapped. Overrunning a cap behaves differently per surface:
5555
skills Changed · +2 / -2 lines
from line 734
734734When this skill runs:
735735
7367361. A new isolated context is created
7372. The subagent receives the skill content as its prompt ("Research \$ARGUMENTS thoroughly...")
7372. The subagent receives the skill content as its prompt (the "Research \$ARGUMENTS thoroughly" instructions)
7387383. The `agent` field determines the execution environment (model, tools, and permissions)
7397394. The subagent summarizes its results and returns them to your main conversation when it finishes
740740
from line 1082
10821082
10831083The Skills row in `/context` reports the size of the listing after the budget is applied, so it matches what the model receives. Before v2.1.196, the row counted the full text of every description and could show a value several times larger than the configured budget.
10841084
1085To raise the budget, set the [`skillListingBudgetFraction`](/docs/en/settings-reference#skilllistingbudgetfraction) setting (e.g. `0.02` = 2%) or the `SLASH_COMMAND_TOOL_CHAR_BUDGET` environment variable to a fixed character count. To free budget for other skills, set low-priority entries to `"name-only"` in [`skillOverrides`](#override-skill-visibility-from-settings) so they list without a description. You can also trim the `description` and `when_to_use` text at the source: put the key use case first, since each entry's combined text is capped at 1,536 characters regardless of budget. The cap is configurable with [`skillListingMaxDescChars`](/docs/en/settings-reference#skilllistingmaxdescchars).
1085To raise the budget, set the [`skillListingBudgetFraction`](/docs/en/settings-reference#skilllistingbudgetfraction) setting (for example, `0.02` = 2%) or the `SLASH_COMMAND_TOOL_CHAR_BUDGET` environment variable to a fixed character count. To free budget for other skills, set low-priority entries to `"name-only"` in [`skillOverrides`](#override-skill-visibility-from-settings) so they list without a description. You can also trim the `description` and `when_to_use` text at the source: put the key use case first, since each entry's combined text is capped at 1,536 characters regardless of budget. The cap is configurable with [`skillListingMaxDescChars`](/docs/en/settings-reference#skilllistingmaxdescchars).
10861086
10871087## Related resources
10881088
slack Changed · +1 / -1 lines
from line 17
1717
1818* **Bug investigation and fixes**: Ask Claude to investigate and fix bugs as soon as they're reported in Slack channels.
1919* **Quick code reviews and modifications**: Have Claude implement small features or refactor code based on team feedback.
20* **Collaborative debugging**: When team discussions provide crucial context (e.g., error reproductions or user reports), Claude can use that information to inform its debugging approach.
20* **Collaborative debugging**: When team discussions provide crucial context (for example, error reproductions or user reports), Claude can use that information to inform its debugging approach.
2121* **Parallel task execution**: Kick off coding tasks in Slack while you continue other work, receiving notifications when complete.
2222
2323## Prerequisites
statusline Changed · +1 / -1 lines
from line 68
6868
6969### Disable the status line
7070
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.
71Run `/statusline` and ask it to remove or clear your status line (for example, `/statusline delete`, `/statusline clear`, `/statusline remove it`). You can also manually delete the `statusLine` field from your settings.json.
7272
7373## Build a status line step by step
7474