Follow Discord
Sweep 09 Oct 2026 · 17:27Z Build v2.1.296 517 read Stable v2.1.287 Latest v2.1.296 Next v2.1.296 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · claude-code

One read of Claude Code CLIclaude-code-20261010T000702Z

12 pages moved out of 221 read.

Pages moved 12 significant first
Pages read 221 in this capture
Captured 00:07 UTC
Corpus hash de8f25b4a220 corpus-hash

What this read moved

1-12 of 12

claude-projects Changed · +12 / -6 lines

from line 239
239239 
240240Threads run in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) when the thread's model supports it, so most tool calls run without asking you. When a thread needs your approval, the prompt is inside that thread and the thread waits until you answer it there. Telling Claude in the project conversation to go ahead doesn't reach it.
241241 
242Each approval covers that prompt, or the rest of that thread if you choose the broader option. To let every thread run certain commands without asking, or to block some, add [permission rules](/docs/en/permissions) to the repository's `.claude/settings.json`. Cloud threads apply them only in a project with one repository; see [What threads pick up from your repositories](#what-threads-pick-up-from-your-repositories). In a project with several repositories, no repository's permission rules reach a cloud thread, so you rely on auto mode and on the approvals you give inside each thread.
242Each approval covers that prompt, or the rest of that thread if you choose the broader option.
243243 
244To let every thread run certain commands without asking, or to block some, add [permission rules](/docs/en/permissions) to the repository's `.claude/settings.json`. Check that cloud threads in your project apply them:
245 
246* **One repository**: cloud threads apply the rules. See [What threads pick up from your repositories](#what-threads-pick-up-from-your-repositories).
247* **Several repositories, Anthropic-hosted environment**: no repository's permission rules reach a cloud thread, so you rely on auto mode and on the approvals you give inside each thread.
248* **Several repositories, self-hosted environment**: see [which repository's settings apply](/docs/en/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).
249 
244250### Run a thread on your own computer
245251 
246252When a task needs something only your computer has, such as a local database, a device emulator, or an API behind your VPN, ask Claude to run the thread for that task on your computer instead of in the cloud. When you ask in the project conversation, the thread is a Claude Code session in a folder on your machine, connected through [Remote Control](/docs/en/remote-control). The project's other threads keep running in the cloud. Compared with a cloud thread, a thread on your computer:
from line 337
331337 
332338### What threads pick up from your repositories
333339 
334Each cloud thread clones every repository in the project and loads `CLAUDE.md` and skills from all of them. Permission rules, hooks, and `env` come only from the `.claude/settings.json` in the directory the thread starts in: inside the repository when the project has one, and above the clones when it has several, where no repository's file is read for them.
340Each cloud thread clones every repository in the project and loads `CLAUDE.md` and skills from all of them. Permission rules, hooks, and `env` come only from the `.claude/settings.json` in the directory the thread starts in.
335341 
336342| In each repository | One repository | Several repositories |
337343| :- | :- | :- |
from line 344
338344| `CLAUDE.md` | Loaded when the thread starts | Loaded from every repository when the thread starts |
339345| Skills, agents, and commands under `.claude/` | Loaded | Loaded from every repository |
340346| Plugins enabled in `.claude/settings.json` | Not loaded. Add the plugin in **Project settings > Plugins** instead | Not loaded. Add the plugin in **Project settings > Plugins** instead |
341| Permission rules, hooks, and `env` defined in `.claude/settings.json` | Apply to the thread, except the `env` keys that [no cloud session honors](/docs/en/cloud-environments#what-carries-over-from-your-setup) | Don't apply |
347| Permission rules, hooks, and `env` defined in `.claude/settings.json` | Apply to the thread, except the `env` keys that [no cloud session honors](/docs/en/cloud-environments#what-carries-over-from-your-setup) | Don't apply in an Anthropic-hosted environment. For a self-hosted environment, see [which repository's settings apply](/docs/en/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |
342348 
343In a project with several repositories, each clone is attached to the thread as an [additional directory](/docs/en/memory#load-from-additional-directories) with `CLAUDE.md` loading turned on, which is why every repository's `CLAUDE.md` and skills load at start even though the thread starts above them. In such a project, put standing rules in project instructions and give threads environment variables through the [cloud environment](#choose-an-environment-for-threads).
349In a project with several repositories, put standing rules in project instructions and give threads environment variables through the [cloud environment](#choose-an-environment-for-threads).
344350 
345351### Choose an environment for threads
346352 
from line 358
352358 
353359Cloud threads don't have the skills, MCP servers, plugins, and tools installed only on your machine. A thread that Claude runs on your machine through [Remote Control](/docs/en/remote-control) uses what's installed there. To make each of these available to cloud threads:
354360 
355* Skills, subagents, and commands: commit them to a repository you added to the project, for example a skill at `.claude/skills/<skill-name>/SKILL.md`. Each cloud thread clones every repository in the project and loads `.claude/skills/`, `.claude/agents/`, and `.claude/commands/` from each of them, so a skill committed to one repository is available in every cloud thread. Cloud threads also load the skills you enable for your claude.ai account.
361* Skills, subagents, and commands: commit them to a repository you added to the project, for example a skill at `.claude/skills/<skill-name>/SKILL.md`. Each cloud thread clones every repository in the project and loads `.claude/skills/`, `.claude/agents/`, and `.claude/commands/` from each of them, so a skill committed to one repository is available in every cloud thread. Cloud threads also load the [skills you enable for your claude.ai account](/docs/en/skills#skills-in-cowork-and-cloud-sessions).
356362* Plugins: add them in **Project settings > Plugins**; they load into each new cloud thread. Plugins that a repository declares in its `.claude/settings.json` [don't load in cloud threads](/docs/en/cloud-environments#what-carries-over-from-your-setup).
357363* MCP servers: cloud threads get their MCP tools from the connectors on your claude.ai account, which are MCP servers you connect once at [claude.ai/customize/connectors](https://claude.ai/customize/connectors) or through the **Manage connectors** link in **Project settings > Environment**. Every cloud thread can use all of them with no per-project setup. The project conversation itself has no connectors, so send work that needs one as a task for a cloud thread. In a project with one repository, cloud threads also load MCP servers from that repository's [`.mcp.json`](/docs/en/cloud-environments#what-carries-over-from-your-setup). [How connectors reach Claude Code](/docs/en/mcp#how-connectors-reach-claude-code) lists the rules for cloud sessions and the settings that turn connectors off.
358364* Command-line tools and packages: install them in the environment's [setup script](/docs/en/cloud-environments#setup-scripts).

self-hosted-environments Changed · +5 / -3 lines

from line 112
112112The runner and its sessions make several kinds of outbound connection, and no inbound connectivity from Anthropic is required:
113113 
114114* **Control plane**: the runner polls `api.anthropic.com` for work and posts setup-progress and failure events, all outbound HTTPS. Polling doubles as the runner's heartbeat.
115* **SCM connector**: the optional orchestrator [SCM connector](/docs/en/self-hosted-environments-reference#scm-connector-flags) tunnel is the only WebSocket connection.
116* **Git**: the runner clones from and pushes to your git host over HTTPS or SSH, authenticated with credentials your deployment provides; [Configure git](/docs/en/self-hosted-environments-deploy#configure-git) covers the options, including per-session minted credentials and the [Anthropic git proxy](/docs/en/self-hosted-environments-deploy#use-the-anthropic-git-proxy), which routes git through `api.anthropic.com` instead.
117* **Session child**: the child Claude Code process holds the session's event stream to `api.anthropic.com`, and makes its own outbound calls for model inference and for git commands run during the session. See [Network requirements](/docs/en/self-hosted-environments-deploy#network-requirements) for the full egress list. The [diagram above](#how-self-hosted-environments-work) shows these paths, apart from the optional SCM connector.
115* **Git**: the runner clones from and pushes to your git host over HTTPS or SSH, authenticated with credentials your deployment provides. See [Configure git](/docs/en/self-hosted-environments-deploy#configure-git) for the options, including per-session minted credentials. With the [Anthropic git proxy](/docs/en/self-hosted-environments-deploy#use-the-anthropic-git-proxy), git traffic for repositories on github.com goes through `api.anthropic.com` instead.
116* **Session child**: the child Claude Code process holds the session's event stream to `api.anthropic.com`, and makes its own outbound calls for model inference and for git commands run during the session. In a session that uses [Anthropic-managed git](/docs/en/self-hosted-environments-deploy#use-the-anthropic-git-proxy), the child sends its `git` and `gh` traffic for github.com over a WebSocket connection it opens to `api.anthropic.com`.
117* **SCM connector**: the optional orchestrator [SCM connector](/docs/en/self-hosted-environments-reference#scm-connector-flags) isn't available, so its tunnel doesn't open. The tunnel is a WebSocket connection to `api.anthropic.com`.
118 
119See [Network requirements](/docs/en/self-hosted-environments-deploy#network-requirements) for the full egress list. The [diagram above](#how-self-hosted-environments-work) shows these paths, apart from the optional SCM connector and the Anthropic-managed git connection.
118120 
119121By default, model inference uses the Anthropic API. The control plane delivers the API endpoint to each session, and the session authenticates with an Anthropic-issued, session-scoped OAuth token. To send model requests to your own cloud account instead, see [Send model requests to Bedrock or Agent Platform](/docs/en/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform).
120122 

self-hosted-environments-configuration Changed · +122 / -28 lines

### Give a default to variables that can be unset #### Get git credentials in the hook #### When the hook fails #### Keep transient failures retryable in a shell hook ### Wait for MCP servers before the first turn

from line 25
2525| Variable | Description |
2626| :- | :- |
2727| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | The session JWT, prefixed `sk-ant-cc-`. Its `act` claim identifies the session creator, with the creator's email when the creating surface recorded it. The value is the token at spawn time; refreshes arrive over the child's stdin, so a wrapper sees only the initial value. See [Verify session identity](/docs/en/self-hosted-environments-identity). |
28| `CCR_SESSION_ACCOUNT_EMAIL` | The session creator's email, pre-extracted by the runner from the token's `act.email` claim without signature verification. Suitable for labelling, such as commit trailers. When the email gates credential issuance, verify the token and read the claim from it instead; see [Provision credentials scoped to the session creator](#provision-credentials-scoped-to-the-session-creator). Unset when the token carries no creator email. Treat as personally identifiable information. |
29| `CLAUDE_RUNNER_CLIENT_PLATFORM` | The client surface that created the session, such as `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli`, or `scheduled_trigger`. Anthropic records the value once at session creation, so the wrapper and every lifecycle hook see the same value. Use it for adoption analytics and labelling only, not as an authorization signal. Unset when the session has no recorded or recognized surface, so reference it as `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` under `set -u`. Requires Claude Code v2.1.229 or later. |
28| `CCR_SESSION_ACCOUNT_EMAIL` | The session creator's email, pre-extracted by the runner from the token's `act.email` claim without signature verification. Suitable for labelling, such as commit trailers. When the email gates credential issuance, verify the token and read the claim from it instead. See [Provision credentials scoped to the session creator](#provision-credentials-scoped-to-the-session-creator). Unset when the token carries no creator email, for example in sessions your organization's service identity creates. Treat as personally identifiable information. |
29| `CLAUDE_RUNNER_CLIENT_PLATFORM` | The client surface that created the session, such as `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli`, or `scheduled_trigger`. Anthropic records the value once at session creation, so the wrapper and every lifecycle hook see the same value. Use it for adoption analytics and labelling only, not as an authorization signal. Unset when the session has no recorded or recognized surface. Requires Claude Code v2.1.229 or later. |
3030| `CLAUDE_RUNNER_CLAUDE_BIN` | Absolute path to the runner's own Claude Code binary. End your wrapper with `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` to pass control to the pinned binary without hardcoding an install path. |
3131| `CLAUDE_CODE_REMOTE_SESSION_ID` | Session ID in the tagged `cse_...` form. This is the same session the [lifecycle hooks](#lifecycle-hooks) see as `CLAUDE_RUNNER_SESSION_ID` in `session_...` form; the UUID variables match across both, and substituting the `cse_` prefix with `session_` yields the ID shown in the session URL. |
3232| `CLAUDE_CODE_REMOTE_SESSION_UUID` | The same session ID in canonical UUID form, for systems that key on UUIDs. |
33| `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` | For a [Claude Tag](https://claude.com/docs/claude-tag/overview) session that belongs to one Slack thread, the link to that thread. Unset for other sessions, and can be unset for a thread session too. |
34| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | For a Claude Tag session that belongs to one Slack thread, that thread's Slack timestamp, such as `1700000000.000100`. Can be unset, and can be set when `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` isn't, so check each variable on its own. |
3335| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Absolute path to a per-session file holding the current session JWT, kept fresh across token refreshes. Shell subprocesses read it for their `Authorization` header when downloading attachments the user added to the session. `exec` preserves the variable automatically; a wrapper that rebuilds the child's environment must carry the variable over, or attachment downloads silently stop working. |
3436| `CLAUDE_CONFIG_DIR` | Per-session Claude config directory, written at session start from the snapshot of the runner host's config that the runner captures at startup; see [Permissions and tool approval](#permissions-and-tool-approval). Writes here are isolated to this session. The directory stays under `<base-dir>/_sessions/` after the session ends unless you start the runner with [`--remove-session-state`](/docs/en/self-hosted-environments-reference#runner-cli-flags); see [Reuse a pre-warmed checkout](/docs/en/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |
3537| `ANTHROPIC_BASE_URL` | The API base URL the child will use, delivered by the control plane per session and normally `https://api.anthropic.com`. Don't override it: the session's inference credential is an Anthropic-issued OAuth token that other providers don't accept. |
from line 39
3739 
3840The wrapper also inherits the rest of the child's managed environment, including any server-provided environment variables. `exec` propagates all of it automatically; if your wrapper spawns the child another way, forward the full environment.
3941 
42`CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` and `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` reach your wrapper or [`command` hook](#command). They also reach what the session runs, such as shell commands, git hooks, and Claude Code hooks. The `checkout`, `post-session`, and `spawn-runner` hooks don't receive them.
43 
44### Give a default to variables that can be unset
45 
46`CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL`, and `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` can each be unset. If your script uses `set -u`, Bash stops with `unbound variable` when it expands one that's unset, so expand them with a default, such as `${CCR_SESSION_ACCOUNT_EMAIL:-}`.
47 
48Wherever a shell expands the Slack thread link, take these precautions:
49 
50* **Quote it**: the link can contain characters a shell acts on, such as `?` and `&`, so quote the variable, as in `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`.
51* **Keep its value out of `eval` and `sh -c` strings**: don't substitute its value into a string that `eval` or `sh -c` runs, even inside quotes. Have that string reference the variable instead.
52 
4053### Keep stdin and file descriptor 3 attached
4154 
4255The child's stdin is the runner's control channel. Token rotations and session-end signals arrive on it. The runner also opens a pipe on file descriptor 3 and reads the child's activity signals from it to drive idle and startup timeouts. A plain `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` preserves both automatically.
4356 
44If your wrapper backgrounds the child with a bare `&`, it severs the child's stdin: the session looks healthy until the initial OAuth token's roughly 30-minute lifetime expires, then every API call fails with `401 authentication_error`. If your wrapper must background the child, for example to keep a teardown trap alive, save stdin on file descriptor 4 or higher and re-attach it explicitly:
57If your wrapper backgrounds the child with a bare `&`, it severs the child's stdin. The session looks healthy until the initial OAuth token's roughly 30-minute lifetime expires, and then every API call that uses the token fails with `401 authentication_error`. If your wrapper must background the child, for example to keep a teardown trap alive, save stdin on file descriptor 4 or higher and re-attach it explicitly:
4558 
4659```bash theme={null}
4760exec 4<&0
from line 64
5164wait "$CHILD"
5265```
5366 
54Don't close or reuse file descriptor 3 in the wrapper. Redirecting the child's stdout and stderr is fine.
67You can redirect the child's stdout. Keep file descriptor 3 and stderr attached to the runner:
5568 
69* **File descriptor 3**: carries the child's activity signals to the runner. Don't close it or reuse it in the wrapper.
70* **stderr**: when the wrapper or the child exits non-zero, the runner posts the last lines of stderr to the session and prints them in its own log. The session's user sees those lines, so don't print secrets to stderr, and remove `set -x` before you deploy the wrapper. If you redirect stderr, sessions still run, but the runner reports a failure with the exit code alone.
71 
5672### Pass the system prompt flags through
5773 
5874The system prompt and appended system prompt that Anthropic's control plane sends for a session reach your wrapper as file paths, not as inline text. The runner writes each prompt to a file in the session's config directory, `CLAUDE_CONFIG_DIR`, and passes its path in the arguments your wrapper receives, as [`--system-prompt-file <path>` or `--append-system-prompt-file <path>`](/docs/en/cli-reference#system-prompt-flags).
from line 108
92108 
93109### checkout
94110 
95Runs once per repository, in place of the runner's built-in clone and fetch. Use the hook to clone from a read-through mirror, seed a working tree from an archive, or apply per-session git auth. The runner sets these variables, and may set other `CLAUDE_RUNNER_` variables that the table doesn't list:
111Runs once per repository, in place of the runner's built-in clone and fetch. Use the hook to clone from a read-through mirror that you reach over HTTPS or SSH, seed a working tree from an archive, or apply per-session git auth. The runner sets these variables, and may set other `CLAUDE_RUNNER_` variables that the table doesn't list:
96112 
97113| Variable | Description |
98114| :- | :- |
99115| `CLAUDE_RUNNER_REPO_URL` | Repository URL to clone, after any `--git-host-rewrite` and `--git-ssh-rewrite` have been applied |
100| `CLAUDE_RUNNER_REPO_REF` | Revision to check out: branch, tag, or commit SHA as the session requested it. Empty means the repository's default branch. |
116| `CLAUDE_RUNNER_REPO_REF` | Revision to check out, as the session requested it: a branch, tag, commit SHA, or full reference name such as `refs/pull/<number>/head`. Empty means the repository's default branch. |
101117| `CLAUDE_RUNNER_CHECKOUT_PATH` | Absolute path where the working tree must be left |
102118| `CLAUDE_RUNNER_SESSION_ID` | Session ID in the tagged `session_...` form, for logging and correlation |
103119| `CLAUDE_RUNNER_SESSION_UUID` | The same session ID in canonical UUID form |
104120| `CLAUDE_RUNNER_API_BASE_URL` | Anthropic API base URL for session-scoped calls |
105| `CLAUDE_RUNNER_CLIENT_PLATFORM` | The client surface that created the session, such as `web_claude_ai`, `desktop_app`, or `ios`. Unset when the session has no recorded or recognized surface. |
121| `CLAUDE_RUNNER_CLIENT_PLATFORM` | The client surface that created the session, such as `web_claude_ai`, `desktop_app`, or `ios`. Unset when the session has no recorded or recognized surface, so reference it as `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` under `set -u`. Requires Claude Code v2.1.229 or later. |
106122| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | The session access token, for session-scoped API calls |
107123| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Git settings the runner fixes for the git your hook runs. [Git configuration inside lifecycle hooks](#git-configuration-inside-lifecycle-hooks) describes them. Requires Claude Code v2.1.280 or later. |
108124 
109The script must leave a working tree at `CLAUDE_RUNNER_CHECKOUT_PATH` checked out at the requested revision. Detached HEAD is fine; the runner creates the session's working branch on top. The runner verifies the path contains a `.git` afterwards; if your hook materializes a non-git source such as Perforce or an unpacked tarball, set `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` in the runner's environment to skip that check. Git-based flows such as working-branch creation and pushing results require a git checkout, so export outcomes from non-git trees with a [`post-session` hook](#post-session).
125The script must leave a working tree at `CLAUDE_RUNNER_CHECKOUT_PATH` checked out at the requested revision. A detached HEAD works, because the runner creates the session's working branch on top.
110126 
111The runner doesn't pass a git credential to the hook. Instead, mint a per-session clone credential from the session's identity: verify `CLAUDE_CODE_SESSION_ACCESS_TOKEN` with a standard JWT library against the JWKS endpoint under `CLAUDE_RUNNER_API_BASE_URL`, as described in [Verify the token from your service](/docs/en/self-hosted-environments-identity#verify-the-token-from-your-service), then have your credential service issue a short-lived clone credential for the identity in the token's `act` claim. `CLAUDE_RUNNER_CLAUDE_BIN` isn't set in the checkout-hook environment, so the `decode-token` subcommand isn't available here. Falling back to whatever git authentication the host already has, such as an SSH agent, credential helper, or `.netrc`, is also an option.
127After your hook returns, the runner verifies that `CLAUDE_RUNNER_CHECKOUT_PATH` contains a `.git`. If your hook materializes a non-git source such as Perforce or an unpacked tarball, set `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` in the runner's environment to skip that check. Git-based flows such as working-branch creation and pushing results require a git checkout, so export outcomes from non-git trees with a [`post-session` hook](#post-session).
112128 
113When the hook exits non-zero, or exits 0 without leaving a usable checkout behind, what the runner does depends on the repository:
129#### Get git credentials in the hook
114130 
115* **A repository the session pushes results to**: the runner fails the session, and on a non-zero exit surfaces the tail of the script's stderr to the user.
116* **A repository the session only reads from**, such as a repository added to a running session: the runner logs a `[runner:warn]` line with the failure detail, posts a `Skipped` step to the session, removes whatever the hook left at the checkout path, and continues with the remaining repositories. When the runner can't remove the path immediately, it retries the removal at session end. If skipping leaves the session with no repository at all, the runner fails the session anyway.
131The runner doesn't pass a git credential to the hook. The `decode-token` subcommand isn't available here either, because `CLAUDE_RUNNER_CLAUDE_BIN` isn't set in the checkout-hook environment. Mint a per-session clone credential from the session's identity instead, or fall back to the host's own git authentication:
117132 
118Before v2.1.228, the runner failed the session on a hook failure for any repository, so a read-only repository the hook couldn't serve failed the session again on every fresh runner the session resumed on.
133* **Per-session clone credential**: verify `CLAUDE_CODE_SESSION_ACCESS_TOKEN` with a standard JWT library against the JWKS endpoint under `CLAUDE_RUNNER_API_BASE_URL`, as described in [Verify the token from your service](/docs/en/self-hosted-environments-identity#verify-the-token-from-your-service). Then have your credential service issue a short-lived clone credential for the identity in the token's `act` claim. Key that credential on `act.sub`, and don't require `act.email`.
134* **Host git authentication**: use whatever git authentication the host already has, such as an SSH agent, credential helper, or `.netrc`.
119135 
120The runner removes the checkout path after the session ends.
136#### When the hook fails
121137 
138The hook fails when it exits non-zero, or exits 0 without leaving a usable checkout behind:
139 
140* **A repository the session pushes results to**: the runner fails the session, and on a non-zero exit surfaces the tail of the script's stderr to the user.
141* **A repository the session only reads from**, such as a repository added to a running session: the runner logs a `[runner:warn]` line with the failure detail, posts a `Skipped` step to the session, removes whatever the hook left at the checkout path, and continues with the remaining repositories. If skipping leaves the session with no repository at all, the runner fails the session anyway.
142 
143When the hook succeeds, the runner removes the checkout path after the session ends.
144 
122145### post-session
123146 
124147Runs once per session, after the Claude Code child has exited and before the runner tears the workspace down. This hook is your only chance to save uncommitted work: at `--capacity` above one, the runner deletes per-session worktrees right after the hook returns, and at `--capacity 1` the reused [canonical clone](/docs/en/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) is hard-reset when the next session starts, so uncommitted tracked changes don't survive on either path. Typical uses are pushing a snapshot branch of uncommitted changes, archiving logs, or emitting a session-ended event to your own systems.
from line 156
133156| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Colon-separated absolute paths of the session's working trees. Empty for zero-repo sessions. |
134157| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Path to the session's debug log, still on disk while the hook runs |
135158| `CLAUDE_RUNNER_API_BASE_URL` | Anthropic API base URL for session-scoped calls |
136| `CLAUDE_RUNNER_CLIENT_PLATFORM` | The client surface that created the session, such as `web_claude_ai`, `desktop_app`, or `ios`. Unset when the session has no recorded or recognized surface. Requires Claude Code v2.1.229 or later. |
159| `CLAUDE_RUNNER_CLIENT_PLATFORM` | The client surface that created the session, such as `web_claude_ai`, `desktop_app`, or `ios`. Unset when the session has no recorded or recognized surface, so reference it as `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` under `set -u`. Requires Claude Code v2.1.229 or later. |
137160| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | The session access token, for session-scoped API calls |
138161| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Git settings the runner fixes for the git your hook runs. [Git configuration inside lifecycle hooks](#git-configuration-inside-lifecycle-hooks) describes them. Requires Claude Code v2.1.280 or later. |
139162 
140163`CLAUDE_RUNNER_EXIT_REASON` takes one of four values:
141164 
142* `completed`: the session ended cleanly. The Claude Code process exited normally, or the session was archived or deleted while it was still running.
165* `completed`: the session ended cleanly. The Claude Code process exited normally, or exited by itself after the session was archived or deleted.
143166* `failed`: the Claude Code process crashed, or setup failed after it started.
144* `interrupted`: the runner stopped the session. It released the session to free the slot, the session timed out at startup, the server moved the session off this runner, the runner was draining, or the session outlasted its [`--kill-session-after-min`](/docs/en/self-hosted-environments-reference#runner-cli-flags) limit.
167* `interrupted`: the runner stopped the session, in one of these cases:
168 * The runner released the session to free the slot.
169 * The session timed out at startup.
170 * The server moved the session off this runner.
171 * The runner's poll noticed an archive or delete before the process exited.
172 * The runner was draining.
173 * The session outlasted its [`--kill-session-after-min`](/docs/en/self-hosted-environments-reference#runner-cli-flags) limit.
145174* `abandoned`: reserved for a session another runner claimed. The hook doesn't currently fire in that case.
146175 
147The [session lifecycle counters](/docs/en/self-hosted-environments-reference#session-lifecycle-counter-semantics) count a release, a startup timeout, and a server move as `completed` rather than `interrupted`, because the runner handed the slot back cleanly. Expect that difference if you compare hook receipts with the counters.
176If you compare hook receipts with the [session lifecycle counters](/docs/en/self-hosted-environments-reference#session-lifecycle-counter-semantics), expect some `interrupted` receipts to count as `completed` there. The counters count a release, a startup timeout, a server move, and an archive or delete that the runner's poll noticed first as `completed`, because the runner handed the slot back cleanly.
148177 
149178The hook's exit status never affects the session outcome; a failure is logged and ignored. The runner waits up to `--post-session-hook-timeout-sec`, 60 seconds by default, on every session end including runner shutdown. This example saves uncommitted work to a rescue branch:
150179 
from line 180
151180```bash theme={null}
152181#!/usr/bin/env bash
153182set -u
183export GIT_ALLOW_PROTOCOL=${GIT_ALLOW_PROTOCOL:-https:http:ssh}
154184IFS=':'
155185# -c overrides beat repo-local settings, blocking session-written fsmonitor,
156186# hook-path, and gpg-program config from executing code with the hook's
from line 200
170200done
171201```
172202 
203The `GIT_ALLOW_PROTOCOL` line in the script limits git to HTTPS, HTTP, and SSH remotes. If the runner's environment already sets a non-empty `GIT_ALLOW_PROTOCOL` list of its own, the script keeps that list.
204 
173205The hook pushes with whatever git credentials are available in its own environment on the runner host. Under the [no-credentials-in-the-image posture](/docs/en/self-hosted-environments-deploy#configure-git), including when the built-in clone goes through the Anthropic git proxy, there are none, so mint a short-lived push credential inside the hook before pushing: exchange the session token the hook receives in `CLAUDE_CODE_SESSION_ACCESS_TOKEN` with your own token service, verifying it as [Verify session identity](/docs/en/self-hosted-environments-identity) describes. When the hook holds a credential the session didn't, replace `origin` with an operator-supplied URL and pass `-c credential.helper=` plus your own helper. [Git configuration inside lifecycle hooks](#git-configuration-inside-lifecycle-hooks) describes what session-written configuration can still affect.
174206 
175207#### Hook timing when the runner releases a session
from line 268
236268| `CLAUDE_RUNNER_ORDER_ID` | Opaque idempotency key, unique per spawn request and safe for Kubernetes resource names. Use only the order ID as your provisioner's dedup key. |
237269| `CLAUDE_RUNNER_SESSION_ID` | The session this request is for. It repeats on every re-request for the session, so use it for logging and routing, not as a dedup key. Empty for pre-warming requests, which boot a standby runner ahead of any specific session when [`--min-idle`](/docs/en/self-hosted-environments-reference#orchestrator-cli-flags) is set, so don't assume the variable is set. |
238270| `CLAUDE_RUNNER_SESSION_UUID` | The same session ID in canonical UUID form. Empty for pre-warming requests. |
239| `CLAUDE_RUNNER_ATTEMPT` | How many spawn requests this session has had. `0` for pre-warming requests. |
271| `CLAUDE_RUNNER_ATTEMPT` | A per-session counter to use for logging. It isn't a retry count or a request count. `0` for pre-warming requests, though a request for a session can carry `0` too. |
240272| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Server time from the poll response's HTTP `Date` header. When the hook verifies the work-order JWT's `exp`, compare against this value instead of the local clock to tolerate skew. Empty when the gateway omitted the header. |
241273| `CLAUDE_RUNNER_POOL_ID` | The ID of the environment the new runner should join, in `ccpool_...` form |
242274| `CLAUDE_RUNNER_ACCOUNT_ID` | Tagged ID of the account that enqueued the session, for per-account routing, quota, or chargeback. Empty when unavailable, and always empty for Claude Tag channel sessions, which no account enqueues. |
243275| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Email of the account that enqueued the session. Empty when unavailable. Treat the email as personally identifiable information and don't log it. |
244276| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL of the session's first git source, for routing to a runner with that repository pre-warmed. Empty when the session has no git sources. |
245| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Revision of the session's first git source: branch, SHA, or tag. Empty when unspecified. |
277| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Revision of the session's first git source: branch, SHA, tag, or full reference name. Empty when unspecified. |
246278| `CLAUDE_RUNNER_REPO_SOURCES` | JSON array of `{url, revision}` for all the session's git sources, for hooks that route on a secondary repository. Empty when there are no sources. |
247279| `CLAUDE_RUNNER_CORRELATION_ID` | The correlation ID supplied at session create, echoed back so the hook can map this work order to the request that created the session. Empty when the session has none. |
248280| `CLAUDE_RUNNER_CLIENT_PLATFORM` | The client surface that created the session, such as `web_claude_ai`, `desktop_app`, `ios`, or `scheduled_trigger`, for adoption analytics. Unset when the session has no recorded or recognized surface, and for pre-warming requests; check it with `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, which stays safe under `set -u`. |
from line 286
254286* **Use `--capacity 1` on spawned runners**: a session-bound work order registers exactly one runner bound to that session, so a higher capacity adds slots that never receive work, and the runner logs a warning at startup.
255287* **Pre-warming work orders register unbound**: the standby runner isn't bound to a session and claims queued work like a fixed-fleet runner.
256288 
257The contract has four provisioner-agnostic rules:
289The contract has four rules, whichever platform your hook provisions on:
258290 
2592911. **Be idempotent on `CLAUDE_RUNNER_ORDER_ID`.** Redelivery of the same request must spawn at most one runner. Derive a deterministic resource name from the order ID and let your platform reject the duplicate. Don't key on `CLAUDE_RUNNER_SESSION_ID` instead. Every re-request for a session carries the same session ID with a new order ID, so a workload named or deduplicated by the session ID is created once and never again for that session.
2602922. **Don't retry the workload.** One order ID means at most one created workload. If the runner never registers, Anthropic re-requests with a fresh order ID after `--expected-spawn-seconds`.
2613. **Use the exit-code contract.** Exit 0 means submitted. Exit 1 means retryable failure; the session backs off and is re-offered. Exit 2 or higher means non-retryable; the session is blocked from spawning again until an [Owner](/docs/en/cloud-environments#organization-shared-environments) selects **Retry** on it in the environment's **Activity** tab. On non-zero exit, the tail of the hook's stderr appears there as the failure reason, so write the actionable error to stderr and never secrets. For a pre-warming request there is no session to fail: the orchestrator logs a non-zero exit locally only, and the server re-requests the spawn after the lease.
2624. **Set `--expected-spawn-seconds` to at least your p99 boot time.** This is the server-side lease. All orchestrator replicas must use the same value.
2933. **Use the exit-code contract.** Exit with the status that matches the outcome:
263294 
295 * **Exit 0**: submitted.
296 * **Exit 1**: retryable failure. The session backs off and is re-offered.
297 * **Exit 2 or higher**: non-retryable failure. The session is blocked from spawning again until a user sends it a new message or an [Owner](/docs/en/cloud-environments#organization-shared-environments) selects **Retry** on it in the environment's **Activity** tab.
298 
299 On non-zero exit, the tail of the hook's stderr appears in the **Activity** tab as the failure reason, so write the actionable error to stderr and never write secrets there. In a shell hook, [keep transient failures retryable](#keep-transient-failures-retryable-in-a-shell-hook).
300 
301 A pre-warming request has no session to fail: the orchestrator logs a non-zero exit locally only, and the server re-requests the spawn after the `--expected-spawn-seconds` lease expires.
3024. **Set `--expected-spawn-seconds` to at least your p99 time from spawn request to runner registration.** Measure from when the orchestrator receives the spawn request, and include any wait for capacity on your platform as well as boot time. This value is the server-side lease, and the work order expires with it, so a runner whose workload takes longer can't register. All orchestrator replicas must use the same value.
303 
264304Everything the hook writes to stdout or stderr appears in the orchestrator's log with credentials automatically redacted. If sessions stay queued, check the orchestrator's `/healthz` body for queue counts, then open your environment's **Activity** tab on the [**Cloud environments** admin page](https://claude.ai/admin-settings/cloud-environments): expand a failed session there for its spawn error, and select **Retry** to re-request it.
265305 
266306A session that stays queued with no spawn error in the **Activity** tab can mean the hook is keyed on the session ID. To confirm, check whether your platform has a workload for that session's first spawn request and none for the re-requests. If so, key the workload on `CLAUDE_RUNNER_ORDER_ID` instead.
267307 
308#### Keep transient failures retryable in a shell hook
309 
310In a shell hook that uses `set -e`, a failure that a retry could have cleared can block the session. The hook stops at the failing command and exits with that command's own status, and the orchestrator applies the exit-code contract to that status. Many failures return a status of 2 or higher, such as `127` when a command isn't installed and `22` from `curl --fail` on an HTTP error, so they block the session at its first failure.
311 
312A session the hook has already blocked stays blocked until a user sends it a new message or an [Owner](/docs/en/cloud-environments#organization-shared-environments) selects **Retry** on it in the environment's **Activity** tab.
313 
314To turn such a failure into exit 1 instead, put these lines directly below the hook's `#!` line, above anything that can fail:
315 
316```bash theme={null}
317set -e
318PERMANENT=; permanent() { printf '%s\n' "$*" >&2; PERMANENT=1; exit 2; }
319trap 'rc=$?; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT
320```
321 
322These lines change how the rest of the hook behaves, so check it for each of these patterns after you add them:
323 
324* **Bare `exit 2` or higher**: with the trap set, it becomes exit 1. For an error that no retry can fix, call `permanent` with the reason instead, such as `permanent "namespace claude-runners does not exist"`. Call it in the main shell, not inside `$( )`, `( )`, or a pipe.
325* **`exec`**: don't start the hook's last command with `exec`, because `exec` replaces the shell and the trap doesn't run.
326* **Second `EXIT` trap**: a second `trap ... EXIT` replaces the first, so merge the two into a single trap. Put your cleanup commands directly after `rc=$?;` and end each with `|| true;`. Cleanup then runs on failure as well as on success, and a failing cleanup command doesn't set the hook's exit status. This merged trap shows the shape, with `your-cleanup-command` standing in for your own:
327 
328 ```bash theme={null}
329 trap 'rc=$?; your-cleanup-command || true; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT
330 ```
331* **Commands that are allowed to fail**: if the hook didn't use `set -e` before, it now stops at the first command that returns non-zero, such as a lookup that finds nothing or a duplicate submit that your platform rejects. If the hook acts on the result, make that command the condition of an `if`. If it ignores the result, follow the command with `|| true`.
332 
333To confirm the trap works, add a line directly below the `trap` line that calls a command that doesn't exist, such as `no-such-command`. Run the hook file from your shell and check that `echo $?` prints `1`, then remove the line.
334 
268335## Send model requests to Bedrock or Agent Platform
269336 
270337If your organization needs model requests to go through its own AWS or Google Cloud account, configure the runner for [Amazon Bedrock](/docs/en/amazon-bedrock) or [Google Cloud's Agent Platform, formerly Vertex AI](/docs/en/google-vertex-ai). Every session that runner starts then calls the model in your cloud account, with your cloud credentials. Without this configuration, sessions send model requests to the Anthropic API.
from line 416
349416A session that sends model requests to Amazon Bedrock or Google Cloud's Agent Platform differs from a session on the Anthropic API in these ways:
350417 
351418* **Policy from claude.ai**: [server-managed settings](/docs/en/server-managed-settings) don't reach these sessions. Neither do the organization policies an Owner sets in Claude Code admin settings, so Claude Code doesn't enforce them inside the session. Put the rules you rely on in the runner image's [managed settings file](/docs/en/managed-settings#delivery-mechanisms).
419* **Account skills**: these sessions don't download the skills enabled for a person's claude.ai account. See [How each session's config is assembled](#how-each-session’s-config-is-assembled).
352420* **Files**: files that people attach to a session in claude.ai or the mobile or desktop app don't reach it, and Claude can't send files back with the [`SendUserFile` tool](/docs/en/tools-reference). Put input files in the repository or on the runner instead.
353* **Model selection**: Anthropic's control plane sends each session's model, and when a session starts without one, Claude Code uses its default for the provider. The runner removes `ANTHROPIC_MODEL` and `ANTHROPIC_DEFAULT_MODEL` from the environment it passes to sessions. The provider pages' examples set `ANTHROPIC_MODEL`, but in the runner's environment neither variable has any effect. The per-family variables in Pin model versions for [Amazon Bedrock](/docs/en/amazon-bedrock#4-pin-model-versions) and [Agent Platform](/docs/en/google-vertex-ai#5-pin-model-versions) do reach sessions. They decide what an alias such as `opus` resolves to, not what a full model ID resolves to.
421* **Model selection**: Anthropic's control plane sends each session's model, and when a session starts without one, Claude Code uses its default for the provider. You can't choose the model with `ANTHROPIC_MODEL` or `ANTHROPIC_DEFAULT_MODEL` in the runner's environment, but you can pin what an alias resolves to:
422 * **`ANTHROPIC_MODEL` and `ANTHROPIC_DEFAULT_MODEL`**: the runner removes them from the environment it passes to sessions, even though the provider pages' examples set `ANTHROPIC_MODEL`.
423 * **Per-family pinning variables**: the variables in Pin model versions for [Amazon Bedrock](/docs/en/amazon-bedrock#4-pin-model-versions) and [Agent Platform](/docs/en/google-vertex-ai#5-pin-model-versions) do reach sessions. They decide what an alias such as `opus` resolves to, not what a full model ID resolves to.
354424* **Models your account doesn't serve**: a session can fail on a message with an error that names the model. Enable the models your developers can choose, the background model described in Pin model versions, and the classifier model that [auto mode](/docs/en/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) uses. On Amazon Bedrock, allow each of them in your policy.
355425* **Web search and fast mode**: [web search](/docs/en/tools-reference#websearch-tool-behavior) isn't available on Amazon Bedrock, and [fast mode](/docs/en/fast-mode) isn't available on either provider. For other capabilities that differ by provider, see [CLI capabilities that vary by provider](/docs/en/feature-availability#cli-capabilities-that-vary-by-provider).
356426 
from line 447
377447 
378448Sessions inherit the runner's environment, so set [`ENABLE_TOOL_SEARCH`](/docs/en/mcp#scale-with-mcp-tool-search) there to control MCP tool search for every session a runner spawns; the MCP page covers the values.
379449 
450<a id="connection-timing" />
451 
452### Wait for MCP servers before the first turn
453 
454A self-hosted session waits briefly for MCP servers that are still connecting, at two separate points. A server that misses a wait has its tools missing when the first turn starts, and they become available later with no action on your part. The two waits are:
455 
456* **Session startup**: before the tool list is first taken, the session waits up to 5 seconds by default for an HTTP or SSE server whose entry sets [`alwaysLoad: true`](/docs/en/mcp#exempt-a-server-from-deferral), or for all servers when you set [`MCP_CONNECTION_NONBLOCKING=0`](/docs/en/env-vars) in the runner's environment. HTTP and SSE servers otherwise connect in the background. While the session waits here, it's slower to initialize. [`MCP_CONNECT_TIMEOUT_MS`](/docs/en/env-vars) changes the 5-second default.
457* **First turn**: after the message arrives, the first turn waits up to 2 seconds for stdio servers that are still connecting. While the session waits here, the first reply is slower. To change how long this wait lasts, set [`CLAUDE_CODE_MCP_STARTUP_WAIT_MS`](/docs/en/env-vars) in the runner's environment. It doesn't change which servers the wait covers. Requires Claude Code v2.1.274 or later.
458 
459`claude mcp add` has no `alwaysLoad` flag. To set the key, add the server with `claude mcp add-json` instead, which takes it in the server's JSON and writes it to `.claude.json`. In your Dockerfile:
460 
461```dockerfile theme={null}
462RUN claude mcp add-json core '{"type":"http","url":"https://mcp.example.com/mcp","alwaysLoad":true}' --scope user
463```
464 
465If a server's tools don't appear on later turns either, check whether the server reached the session at all, as [MCP servers](#mcp-servers) describes.
466 
380467### Turn off built-in session tools
381468 
382469Anthropic's control plane attaches its own MCP server, named Claude Code Remote, to cloud sessions. Claude uses the server's tools to schedule [routines](/docs/en/routines), start and steer other cloud sessions, attach more repositories, and follow pull request activity.
from line 616
529616 
530617Set `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` to seed from a different path, or point it at an empty directory to disable seeding.
531618 
532Repository-committed `.claude/settings.json` layers on top as project settings. In a session with several repositories, [at most one repository's file takes effect](#repository-settings-in-sessions-with-several-repositories). Sessions also read [`managed-settings.json`](/docs/en/settings#where-settings-live) from the standard system path in your runner image. Whether its keys apply alongside [server-managed settings](/docs/en/server-managed-settings) follows [how Claude Code combines managed sources](/docs/en/managed-settings#how-claude-code-combines-managed-sources): by default, when your organization delivers any server-managed keys, sessions ignore the runner image's file apart from the [keys Claude Code reads from every admin source](/docs/en/managed-settings#keys-read-from-every-admin-source), such as the `env` block, the sandbox locks, the sandbox binary paths, and `forceRemoteSettingsRefresh`. See [settings precedence](/docs/en/settings#settings-precedence).
619Sessions also read these settings files:
533620 
621* **Project settings**: a repository-committed `.claude/settings.json` layers on top of the user-level baseline. In a session with several repositories, [at most one repository's file takes effect](#repository-settings-in-sessions-with-several-repositories).
622* **Managed settings**: sessions read [`managed-settings.json`](/docs/en/settings#where-settings-live) from the standard system path in your runner image. For whether its keys apply alongside [server-managed settings](/docs/en/server-managed-settings), see [how Claude Code combines managed sources](/docs/en/managed-settings#how-claude-code-combines-managed-sources).
623 
624For the order these sources apply in, see [settings precedence](/docs/en/settings#settings-precedence).
625 
534626When Anthropic's control plane supplies a session with [Claude Code hooks](/docs/en/hooks), the runner installs them alongside, not over, your own configuration. Requires Claude Code v2.1.229 or later.
535627 
536628* **Where they land**: the runner writes each supplied hook script to a reserved `hooks/.ccr-launcher/` subdirectory of the session's config directory and registers the scripts in a separate settings file it passes to the session with `--settings`, leaving the seeded `settings.json` and your own scripts at `hooks/<name>` untouched. The runner recreates the reserved subdirectory for each session and doesn't seed host content at `~/.claude/hooks/.ccr-launcher/` into sessions.
537629* **Who authors them**: the control plane populates the scripts from fixed constants in its own deployment, never from per-session or third-party input.
538630* **What still governs them**: hooks delivered through `--settings` enter the ordinary merged hook configuration, not the managed tier, so your managed settings still apply. `disableAllHooks` disables them, and they are not among the categories [`allowManagedHooksOnly`](/docs/en/settings-reference#allowmanagedhooksonly) keeps loaded.
631 
632When a person starts their own session, Claude Code also downloads the [skills enabled for their claude.ai account](/docs/en/skills#skills-in-cowork-and-cloud-sessions) into that session's config directory. A [routine](/docs/en/routines) run doesn't get its owner's skills, and a session that [sends model requests to Bedrock or Agent Platform](#send-model-requests-to-bedrock-or-agent-platform) doesn't download any. For a skill those sessions need, commit it to the repository's `.claude/skills/` or add it to your runner image.
539633 
540634Outside [Claude Tag](https://claude.com/docs/claude-tag/overview) sessions, a session in a self-hosted environment runs with [auto memory](/docs/en/memory#auto-memory) off by default. For instructions that should carry across sessions, use the `CLAUDE.md` in your runner image or in the repository.
541635 

self-hosted-environments-deploy Changed · +129 / -20 lines

#### Turn the Anthropic git proxy on #### How Anthropic serves git for a session #### Turn the Anthropic git proxy off

from line 14
1414 
1515* **Ephemeral, per-session containers**: run each runner process in a fresh container or VM that's destroyed when the process exits, with `--capacity 1` and the default `--drain-grace-sec 0` so each container serves exactly one session. At a higher capacity, or with a positive drain grace, one container serves multiple sessions from the same [locked owner](/docs/en/self-hosted-environments#key-concepts); see [Runner lifecycle](/docs/en/self-hosted-environments#runner-lifecycle). Don't reuse a filesystem between runner restarts, except in the deliberate [pre-warmed checkout](#reuse-a-pre-warmed-checkout) setup, and never across owners.
1616 * <span id="processes-a-stopped-session-leaves" />When the runner stops a session, it sends no signal to a process still running after its shell command exited, such as a service that daemonized. Destroying the container or VM ends that process.
17* **No broad credentials in the image**: don't include long-lived SSH keys, cloud-provider credentials, or personal access tokens that grant more than a session needs. Mint credentials used during a session, such as push or API tokens, per session from your [wrapper script](/docs/en/self-hosted-environments-configuration#wrapper-scripts). For the initial clone, which happens before the wrapper runs, use a [`checkout` lifecycle hook](/docs/en/self-hosted-environments-configuration#checkout) or [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy); see [Configure git](#configure-git).
17* **No broad credentials in the image**: don't include long-lived SSH keys, cloud-provider credentials, or personal access tokens that grant more than a session needs. Mint credentials used during a session, such as push or API tokens, per session from your [wrapper script](/docs/en/self-hosted-environments-configuration#wrapper-scripts). The initial clone happens before the wrapper runs, so handle it with a [`checkout` lifecycle hook](/docs/en/self-hosted-environments-configuration#checkout), or with [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) when all of a session's repositories are on github.com. For both, see [Configure git](#configure-git).
18* **Keep the host's GitHub credentials away from sessions**: Claude can use any GitHub credential a session can read, with whatever access that credential grants. Keep the runner host's own broadly scoped GitHub credentials out of anything a session can read. Such a credential can be a personal access token, the token `gh auth login` saves for your account, or a `GH_TOKEN` in the runner's environment.
19 * **With [Anthropic-managed git](#use-the-anthropic-git-proxy)**: with such a credential, Claude reaches GitHub directly instead of through Anthropic-managed git.
20 * **Without Anthropic-managed git**: a clone credential can stay in the image if you scope it as tightly as [Ship git config in your image](#ship-git-config-in-your-image) describes.
1821* **Keep the environment secret off session-running hosts**: the environment secret can register runners and pick up any session queued on the environment. On a fixed fleet it lives on every runner host, where any session's code can read the secret file. Prefer [on-demand runners](/docs/en/self-hosted-environments-configuration#on-demand-runners), where the secret stays on the orchestrator host, which never runs user code, and each runner receives a single-use work order that registers exactly one runner. On a fixed fleet, treat the environment-secret file as readable by every session and rotate the secret after any suspected session compromise.
1922* **Default-deny network egress**: restrict runner and session container outbound traffic at your own network boundary on every environment; [Default-deny egress](#default-deny-egress) covers what to allow and why.
2023* **Least-privilege host IAM**: the compute identity attached to the runner host, such as an instance profile or node service account, should grant only what the runner itself needs. Sessions should obtain their own credentials through your wrapper script rather than inheriting the host's.
from line 39
3639 The guard runs regardless of [`--trust-workspace`](/docs/en/self-hosted-environments-reference#runner-cli-flags), and doesn't cover repository hooks, `.mcp.json`, or Bash rules; see [Permissions and tool approval](/docs/en/self-hosted-environments-configuration#permissions-and-tool-approval) for where those grants belong.
3740 
3841<Note>
39 Your organization's IP allowlist doesn't cover self-hosted runner traffic by default. Don't rely on it as a network control for runner or session traffic; apply default-deny egress at your own network boundary instead, and contact your Anthropic account team if you want IP-allowlist enforcement for your organization.
42 If your organization has [IP allowlisting](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) enabled, add the public egress addresses of your runners and session containers to the allowlist before you start them. If you run [on-demand runners](/docs/en/self-hosted-environments-configuration#on-demand-runners), add the orchestrator host's address too. Don't rely on the allowlist as a network control for runner or session traffic. Apply default-deny egress at your own network boundary instead.
4043</Note>
4144 
4245## Network requirements
from line 50
4750 
4851| Host | Port | Used for |
4952| :- | :- | :- |
50| `api.anthropic.com` | 443, HTTPS; WSS for the SCM connector only | Runner control plane and session streaming, model inference, feature flags, product analytics, [JWKS](/docs/en/self-hosted-environments-identity) key fetches, commit signing, the git proxy when `--use-anthropic-git-proxy` is set, and the orchestrator's [SCM connector](/docs/en/self-hosted-environments-reference#scm-connector-flags) tunnel when `--scm-connector-host` is set |
51| Your git host, such as `github.com` or your GitHub Enterprise host | 443 or 22 | Cloning and pushing repositories. Not needed if the runner uses `--use-anthropic-git-proxy`, which routes git traffic through `api.anthropic.com`. |
53| `api.anthropic.com` | 443, HTTPS; WSS for [Anthropic-managed git](#use-the-anthropic-git-proxy) | Runner control plane and session streaming, model inference, feature flags, product analytics, [JWKS](/docs/en/self-hosted-environments-identity) key fetches, commit signing, and Anthropic-managed git when `--use-anthropic-git-proxy` is set |
54| Your git host, such as `github.com` or your GitHub Enterprise host | 443 or 22 | Cloning and pushing repositories on each git host the runner's sessions use. On a runner that uses [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), see [when the `github.com` path is still needed](#github-com-egress-with-the-anthropic-git-proxy). |
5255 
56<span id="github-com-egress-with-the-anthropic-git-proxy" />A runner that uses [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) routes its `github.com` git traffic through `api.anthropic.com`, so it doesn't need the git host path for `github.com`. It still needs that path if you set `--push-outcome-on-release` or push from a `post-session` hook.
57 
5358Whether these hosts are needed depends on your configuration:
5459 
5560| Host | Port | When required |
from line 68
6368| `browser-intake-us5-datadoghq.com` | 443 | Anthropic error-report uploads, sent only when [error reporting](/docs/en/data-usage#telemetry-services) is enabled for the session's account. Suppressed by `DISABLE_ERROR_REPORTING=1` or `DISABLE_TELEMETRY=1`. |
6469| Your cloud provider's endpoints for model requests, model lookups, and renewing credentials, such as `bedrock-runtime.us-east-1.amazonaws.com` or `aiplatform.googleapis.com` | 443 | Only when the runner [sends model requests to Amazon Bedrock or Google Cloud's Agent Platform](/docs/en/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) |
6570 
66The runner doesn't reach `statsig.anthropic.com`, `*.sentry.io`, `claude.ai`, or `platform.claude.com`. These hosts appear in some older enterprise network checklists, but you don't need to allowlist them for runner or session traffic: feature-flag fetches go to `api.anthropic.com`, and the runner authenticates with the environment secret rather than interactive OAuth. Two host-side flows do reach `claude.ai`, so run them from a host whose egress allows it rather than widening session-container egress: the one-line installer fetches `install.sh` from `claude.ai` at install time, and interactive `claude auth login`, which the [guided setup](/docs/en/self-hosted-environments-quickstart#set-up-an-environment-and-runner), `doctor`'s signed-in mode, and [CI dispatch](/docs/en/self-hosted-environments-testing#authenticate-from-ci) use, signs in through `claude.ai`, `claude.com`, and `platform.claude.com`. `mcp-proxy.anthropic.com` isn't required either: self-hosted sessions don't use it, and delivery of your organization's claude.ai connectors to sessions, when enabled for your organization, routes through `api.anthropic.com`. See [MCP servers](/docs/en/self-hosted-environments-configuration#mcp-servers).
71You don't need to allowlist these hosts for runner or session traffic:
6772 
73* **`statsig.anthropic.com`, `*.sentry.io`, `claude.ai`, and `platform.claude.com`**: these hosts appear in some older enterprise network checklists, but the runner doesn't reach them. Feature-flag fetches go to `api.anthropic.com`, and the runner authenticates with the environment secret rather than interactive OAuth.
74* **`mcp-proxy.anthropic.com`**: self-hosted sessions don't use it. When connector delivery is enabled for your organization, your organization's claude.ai connectors reach sessions through `api.anthropic.com`. See [MCP servers](/docs/en/self-hosted-environments-configuration#mcp-servers).
75 
76These host-side flows do reach `claude.ai`, so run them from a host whose egress allows it rather than widening session-container egress:
77 
78* **The one-line installer**: fetches `install.sh` from `claude.ai` at install time.
79* **Interactive `claude auth login`**: signs in through `claude.ai`, `claude.com`, and `platform.claude.com`. The [guided setup](/docs/en/self-hosted-environments-quickstart#run-the-guided-setup), `doctor`'s signed-in mode, and [CI dispatch](/docs/en/self-hosted-environments-testing#authenticate-from-ci) use it. The browser you sign in with also loads the claude.ai sign-in page's browser checks from `hcaptcha.com`, `*.hcaptcha.com`, and `challenges.cloudflare.com`.
80 
6881### Default-deny egress
6982 
7083Deploy runner and session containers in a network segment or namespace whose outbound traffic is limited to the hosts in the [network requirements table](#network-requirements), your git host, and the specific internal services sessions need to reach. The product can't verify or enforce this, so apply it at your own network boundary on every environment. Session code is model-directed and can attempt connections to arbitrary hosts; default-deny egress at the network layer bounds where those attempts can land. This applies regardless of permission mode: the default pre-approved tool set already includes `Bash`, so shell egress runs without a prompt even without [auto mode](/docs/en/self-hosted-environments-configuration#permissions-and-tool-approval).
from line 120
107120* **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
108121* **Ship git config in your image**: set identity and push credentials yourself, for example to commit under your own bot identity
109122 
123For repositories on github.com, you can also start the runner with [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), or set `CLAUDE_RUNNER_USE_GIT_PROXY=1`, to ask Anthropic to serve git for the runner's sessions.
124 
110125Git 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.
111126 
112127### Let the runner configure git
from line 131
116131* `user.name = Claude` and `user.email = [email protected]`, matching Anthropic-hosted sessions
117132* SSH-format commit and tag signing, routed through a runner-managed shim that signs each commit via Anthropic's signing service using the session's own credentials. Signatures are verifiable on GitHub against Anthropic's published SSH signing key.
118133* `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.
119* `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.
134* `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. The trailer is 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` and the runner doesn't use [Anthropic-managed git](#use-the-anthropic-git-proxy), the runner keeps your setting, skips installing these hooks, and prints a `[runner:git]` warning.
120135 
121136Commit 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.
122137 
123138On a runner on v2.1.280 or later, commits you make from a `checkout` or `post-session` lifecycle hook are signed as the session too, without the `Co-authored-by:` trailer. [Git configuration inside lifecycle hooks](/docs/en/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks) describes the git settings the runner fixes inside those hooks.
124139 
140With or without `--configure-git`, Claude Code instructs Claude to end its commit messages with a `Claude-Session: <url>` trailer and its pull request descriptions with the session's URL. To omit both, set [`attribution.sessionUrl`](/docs/en/settings-reference#attribution-sessionurl) to `false` in the runner host's [`~/.claude/settings.json`](/docs/en/self-hosted-environments-configuration#how-each-session’s-config-is-assembled), then restart the runner.
141 
125142### Ship git config in your image
126143 
127144Git identity is required for any commit. Set it system-wide in your Dockerfile so the config applies regardless of which user the runner process runs as:
from line 177
160177 
161178### Use the Anthropic git proxy
162179 
163Start 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.
180With the Anthropic git proxy, also called Anthropic-managed git, the runner image needs no SSH keys, credential helper, `.netrc`, or other git credentials for the session itself. Instead, the runner asks Anthropic to serve git for its sessions. For a user's session that Anthropic serves, the runner's clone and the session's own fetches and pushes go through Anthropic, which uses the GitHub OAuth token stored for the session's creator. [How Anthropic serves git for a session](#how-anthropic-serves-git-for-a-session) covers bot and agent sessions.
164181 
165The 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.
182The git proxy is off unless you [turn it on](#turn-the-anthropic-git-proxy-on). A runner that reaches your git host with its own credentials doesn't need it, and its git works with any git host.
166183 
184In exchange, the git proxy limits what the runner supports and changes what it needs:
185 
186* **github.com only**: Anthropic serves a session only when all of its repositories are on github.com, and the git proxy doesn't support GitHub Enterprise Server yet. On a runner with the git proxy, a session with a repository on another git host [fails to start](#when-anthropic-doesnt-serve-a-session).
187* **Connected GitHub accounts**: the person who created a user session must have connected GitHub on claude.ai, or the session [doesn't start](#creator-has-no-github-connection).
188* **`--capacity 1`**: the git proxy requires one session per runner process, so run more replicas for parallelism. [Turn the Anthropic git proxy on](#turn-the-anthropic-git-proxy-on) lists the requirements.
189* **Replaced global git config**: the runner [deletes and replaces the global git config](#git-proxy-replaces-global-git-config) of the user it runs as. Run it as a dedicated user or in a container.
190* **Host credentials for host pushes**: the runner's [`--push-outcome-on-release`](/docs/en/self-hosted-environments-reference#runner-cli-flags) push and any push your [`post-session` hook](/docs/en/self-hosted-environments-configuration#post-session) makes still use the runner host's own git credentials and its [network path to `github.com`](#github-com-egress-with-the-anthropic-git-proxy). For those credentials, see [Ship git config in your image](#ship-git-config-in-your-image).
191* **Per-session decision**: Anthropic decides for each session on the runner whether to serve its git, and a session it doesn't serve fails to start. [When sessions fail to start on a runner with the git proxy](#when-anthropic-doesnt-serve-a-session) covers the causes.
192 
193<span id="git-proxy-replaces-global-git-config" />
194 
167195<Warning>
196 With `--use-anthropic-git-proxy` set, the runner deletes and replaces the global git config of the user it runs as, and keeps no backup. It does this at startup and before each session. A login or credential helper you kept there is lost. Settings that [`--configure-git`](#let-the-runner-configure-git) writes survive. Run the runner as a dedicated user or in a container, never as your own user.
197</Warning>
198 
199Keep git settings that aren't secret, such as identity and `safe.directory`, in the system git configuration.
200 
201#### Turn the Anthropic git proxy on
202 
203Before you start the runner with `--use-anthropic-git-proxy`, confirm that the runner host meets each of these requirements. The runner refuses to start when the capacity or git requirement is unmet:
204 
205* **Claude Code v2.1.267 or later**: earlier versions accept the flag but don't report the request for Anthropic to serve git or print the `Registering as opted in` line, so Anthropic doesn't serve their sessions.
206* **`--capacity 1`, the default**: each runner process handles one session at a time, so run more replicas for parallelism.
207* **Git 2.32 or later**: older git ignores the per-session git configuration that the runner sets up for the git proxy.
208 
209<Warning>
168210 The [Kubernetes](#kubernetes) and [Docker Compose](#docker-compose) recipes on this page use `--capacity 4`. If you add `--use-anthropic-git-proxy` or `CLAUDE_RUNNER_USE_GIT_PROXY=1` to one of them without changing the capacity to `1`, the runner exits at startup every time your orchestrator restarts it. Set `--capacity 1` and run more replicas for parallelism. [When the runner exits](#when-the-runner-exits) shows the line the runner prints.
169211</Warning>
170212 
171The 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.
213To turn the git proxy on, add `--use-anthropic-git-proxy` to the runner's command, or set `CLAUDE_RUNNER_USE_GIT_PROXY=1` in the runner's environment. This command, run in a shell on the runner host, starts the [quickstart](/docs/en/self-hosted-environments-quickstart#set-up-manually)'s runner with the git proxy on:
172214 
215```bash theme={null}
216claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>' --use-anthropic-git-proxy
217```
218 
219At startup, the runner prints `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)`. Anthropic then decides for each session on that runner whether to serve its git. For each session it serves, the runner logs a `[runner:session]` line containing `governed git ACTIVE`. If a session fails to start instead, see [When sessions fail to start on a runner with the git proxy](#when-anthropic-doesnt-serve-a-session).
220 
221#### How Anthropic serves git for a session
222 
223For a session that Anthropic serves, the runner's clone and the session's own fetches and pushes go through Anthropic, authenticated with the session's own short-lived token:
224 
225* **User sessions**: Anthropic uses the GitHub OAuth token stored for the session's creator.
226* **Bot and agent sessions**: Anthropic uses your organization's GitHub App installation token.
227* **URL rewrites**: `--git-host-rewrite` and `--git-ssh-rewrite` have no effect on a repository that the git proxy serves.
228 
229<h4 id="when-anthropic-doesnt-serve-a-session">
230 When sessions fail to start on a runner with the git proxy
231</h4>
232 
233On a runner started with `--use-anthropic-git-proxy`, a session fails to start when Anthropic doesn't serve its git. Look in the runner's log for a git error that names an `api.anthropic.com` address containing `/git_proxy/`.
234 
235For each session, a runner on Claude Code v2.1.267 or later also logs either a `[runner:session]` line containing `governed git ACTIVE` when Anthropic serves the session's git, or one `[runner:warn]` line containing `the server withheld Anthropic-managed git for this session` when it doesn't. Find the line you're seeing among these cases:
236 
237* **Neither `governed git ACTIVE` nor the `withheld` line**: a runner older than Claude Code v2.1.267 logs neither line, and Anthropic doesn't serve its sessions. Update the runner to v2.1.267 or later by following [Pin the version](#pin-the-version).
238* **The `withheld` line**: Anthropic didn't serve the session. A runner that worked with the git proxy before can fail this way with no change on your side.
239 * **A repository isn't on github.com**: a session with even one repository on another git host, such as GitHub Enterprise Server, isn't served, including its github.com repositories. [Turn the Anthropic git proxy off](#turn-the-anthropic-git-proxy-off) for that environment's runners.
240 * **Every repository is on github.com**: report the failure to [your Anthropic account team](#report-an-issue) with the session ID from the `withheld` line. Anthropic records the reason on its side.
241* **A line containing `remote: access denied by the git proxy`**: a session that Anthropic serves can still be refused, for example when organization policy denies git access for the session, or the session isn't authorized for the repository. The runner's log then shows a line containing `remote: access denied by the git proxy`, and the rest of that line says why.
242* <span id="creator-has-no-github-connection" />**`GitHub authentication required`**: this appears when the session's creator has no working GitHub connection on claude.ai. The session's clone fails, and the git error reads `GitHub authentication required. Please reconnect your GitHub account.` Ask that person to connect or reconnect GitHub in their claude.ai settings.
243 
244After you fix the cause, start the failed sessions again.
245 
246#### Turn the Anthropic git proxy off
247 
248If sessions in an environment use a repository on a git host other than github.com, such as GitHub Enterprise Server, turn `--use-anthropic-git-proxy` off for that environment's runners.
249 
250<Steps>
251 <Step title="Remove the flag">
252 Remove `--use-anthropic-git-proxy` from the runner's command. If you set `CLAUDE_RUNNER_USE_GIT_PROXY` in the runner's environment, such as a pod spec or a Compose file, remove it there. In a shell, unset it:
253 
254 ```bash theme={null}
255 unset CLAUDE_RUNNER_USE_GIT_PROXY
256 ```
257 </Step>
258 
259 <Step title="Give the runner git credentials">
260 Provide credentials that work without a prompt for every git host the runners' sessions use, github.com included. Any credential that was in the runner user's global git config is gone, because the runner deleted that config while `--use-anthropic-git-proxy` was set. [Ship credentials in your image](#ship-git-config-in-your-image) or use a [`checkout` lifecycle hook](/docs/en/self-hosted-environments-configuration#checkout).
261 </Step>
262 
263 <Step title="Open the network path">
264 Allow the runner to reach each git host the runners' sessions use on port 443 or 22. See the git host row in [Network requirements](#network-requirements).
265 </Step>
266 
267 <Step title="Restart the runners">
268 Restart the runners so that they register without the git proxy. Then start each failed session again.
269 </Step>
270</Steps>
271 
173272#### GitHub API access without the GitHub CLI
174273 
175274If your runner image doesn't include the GitHub CLI, Claude Code can provide a built-in `gh`, so Claude can still open pull requests, comment, and read CI results. The built-in `gh` is for runners that use Anthropic-managed git. It supports one command, `gh api`, which calls GitHub's REST API. Requires Claude Code v2.1.287 or later in the runner image.
from line 331
232331```dockerfile theme={null}
233332FROM debian:bookworm-slim
234333ARG CLAUDE_CODE_VERSION
235RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client \
334RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq \
236335 && rm -rf /var/lib/apt/lists/*
237336RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \
238337 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude
from line 443
344443kubectl create namespace claude-runners
345444```
346445 
347Create the backing Secret from a local file holding the value you copied in the admin UI's [**Copy environment key** step](/docs/en/self-hosted-environments-quickstart#set-up-an-environment-and-runner), so the secret never appears in your shell history. Run `(umask 077 && cat > ./environment-secret)`, paste the secret, press Enter, then Ctrl-D. Then create the Secret and delete the file:
446Create the backing Secret from a local file holding the value you copied in the admin UI's [**Copy environment key** step](/docs/en/self-hosted-environments-quickstart#set-up-manually), so the secret never appears in your shell history. Run `(umask 077 && cat > ./environment-secret)`, paste the secret, press Enter, then Ctrl-D. Then create the Secret and delete the file:
348447 
349448```bash theme={null}
350449kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret
from line 545
446545 
447546## Reuse a pre-warmed checkout
448547 
449For large repositories, the clone can dominate session startup. At `--capacity 1` with no [`checkout` hook](/docs/en/self-hosted-environments-configuration#checkout), the runner keeps one canonical clone per repository at `<base-dir>/<repo-owner>/<repo>` and reuses it across sessions: it fetches the requested ref, detaches `HEAD`, and resets hard to it, which is near-instant when little has changed. To skip the cold clone, supply the clone in one of two ways:
548For large repositories, the clone can dominate session startup. To skip the cold clone, supply a clone yourself at the path where the runner keeps its own. With no [`checkout` hook](/docs/en/self-hosted-environments-configuration#checkout), the runner keeps one canonical clone per repository at `<base-dir>/<repo-owner>/<repo>` and reuses it across sessions:
450549 
550* **At `--capacity 1`**: the runner fetches the requested ref, detaches `HEAD`, and resets hard to it, which is near-instant when little has changed.
551* **At a `--capacity` above one**: the runner fetches into that clone, then checks out a separate worktree from it for each session. A pre-warmed clone saves the download but not the checkout.
552 
553Supply the clone in the image or on a persistent volume:
554 
451555* **Clone in the image**: build the clone into your runner image at that path. Every fresh container then starts with the warm clone without reusing a disk.
452556* **Clone on a persistent volume**: on runners you pre-lock to one user's account with [`--lock-to-account`](/docs/en/self-hosted-environments-reference#runner-cli-flags), point `--base-dir` at a persistent volume, so the disk only ever serves that account. A pre-locked runner never picks up Claude Tag channel sessions, so this option doesn't apply to runners that serve them.
453557 
from line 558
454558What the reuse path does and doesn't guarantee:
455559 
456560* **Any clone shape works**: a full, shallow, or single-branch clone at the path is used as-is. The runner never passes `--depth` when fetching into an existing clone, so a full pre-warm keeps its full history and a shallow one stays shallow. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, or a number; default 50) controls only the cold clone the runner makes when no clone exists yet.
457* **Tracked changes reset, untracked files persist**: each session starts from a hard reset that wipes the previous session's tracked modifications, but the runner never runs `git clean`, so untracked files from the locked owner's earlier sessions stay in the tree.
561* **Tracked changes reset, untracked files persist**: at `--capacity 1`, each session starts from a hard reset that wipes the previous session's tracked modifications, but the runner never runs `git clean`, so untracked files from the locked owner's earlier sessions stay in the tree.
458562* **Per-session directories persist too**: alongside the checkout, the runner creates per-session entries under `<base-dir>/_sessions/` for every session it runs. The session's Claude config directory holds a local copy of the conversation transcript. Next to it sit the session's uploaded files, when the session has any. The session directory sits there too: it holds any per-session worktrees and `checkout` hook checkouts while the session runs, and it keeps whatever else Claude wrote in it.
459563 
460564 By default the runner leaves these in place when the session ends, so on a disk that outlives the runner process they accumulate. Every session runs as the runner's own user, so any later session that disk serves can read them. If you keep a persistent `--base-dir`, size the volume for that growth. The same applies to any setup that restarts the runner on the same filesystem, including the [Docker Compose recipe](#docker-compose).
from line 570
466570 
467571Each session's child Claude Code process runs the runner's own binary, and the runner turns off auto-update inside the sessions it spawns, so every session runs the version you installed on the host or built into the image. A host-level update takes effect the next time the runner starts.
468572 
469A model your sessions use can require a newer Claude Code version than the one they run. The server then rejects requests for that model with [Claude Code does not support this model](/docs/en/errors#claude-code-does-not-support-this-model). Before you pin a version, check [the Claude Code versions that models require](/docs/en/model-config#available-models) for every model your sessions use.
573Choose which version your sessions run and when it changes:
470574 
575* **Before you pin a version**: check [the Claude Code versions that models require](/docs/en/model-config#available-models) for every model your sessions use. If a model requires a newer version than the one your sessions run, the server rejects requests for that model with [Claude Code does not support this model](/docs/en/errors#claude-code-does-not-support-this-model).
471576* **To hold a fleet on one version**: build the image with a pinned version, or on a bare host install a specific version and [disable auto-updates](/docs/en/setup#disable-auto-updates)
472* **To upgrade**: install the newer version or rebuild the image, then restart the runners
577* **To upgrade a fixed fleet**: read the [changelog](/docs/en/changelog) entries between your version and the one you're installing, then install the newer version or rebuild the image and restart the runners
578* **To upgrade on-demand runners**: read the [changelog](/docs/en/changelog) entries between your version and the one you're installing, then change the image your [`spawn-runner` hook](/docs/en/self-hosted-environments-configuration#the-spawn-runner-hook) starts. Each new runner gets the new version. A runner that's already up, including a standby runner that [`--min-idle`](/docs/en/self-hosted-environments-reference#orchestrator-cli-flags) started, keeps its version until it exits. Don't restart it, because its work order is single-use.
473579* **Plugins**: plugin marketplaces don't auto-update either; set `FORCE_AUTOUPDATE_PLUGINS=1` in the runner's environment to let plugins auto-update while the binary stays pinned
474580 
475581## Scale the fleet
from line 620
514620### Additional limitations
515621 
516622* **Resumed sessions lose unpushed work**: a fresh runner clones the repository again from its starting branch, so work the session hadn't pushed is gone.
517 * **To keep committed work**: set [`--push-outcome-on-release`](/docs/en/self-hosted-environments-reference#runner-cli-flags). The runner then makes a best-effort push of the session's outcome branches before it releases, and the resumed session starts from those commits. Uncommitted changes are still lost.
623 * **To keep committed work**: set [`--push-outcome-on-release`](/docs/en/self-hosted-environments-reference#runner-cli-flags) on every runner in the environment, because a runner without the flag resumes the session from its starting branch. A runner with the flag makes a best-effort push of the session's outcome branches before it releases, and the resumed session starts from those commits. The push uses the runner host's own git credentials, including on a runner that uses [Anthropic-managed git](#use-the-anthropic-git-proxy). Uncommitted changes are still lost.
624 * **With a `checkout` hook**: repositories checked out via a [`checkout` lifecycle hook](/docs/en/self-hosted-environments-configuration#checkout) aren't pushed. Snapshot those from the [`post-session` hook](/docs/en/self-hosted-environments-configuration#post-session) instead.
518625 * **Before enabling the flag**: restrict who can push to `claude/*` refs on the source remote. On resume, the runner fetches the previously pushed branch without verifying who pushed it.
519626* **A repository added mid-session can fail to clone**: Claude clones it with `git clone` over HTTPS. On a runner without [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), the clone fails with a git authentication error if nothing on the host can read the repository. Where you can, select every repository the session needs when you create it.
520627* **Some connectors don't appear in self-hosted sessions**: a connector you haven't yet connected in claude.ai Settings isn't listed in a self-hosted session, and the session won't prompt you to connect it. Connect it in Settings first, then start a fresh session. Adding a connector to an already-running session also doesn't make its tools available to Claude; start a fresh session to pick up a newly added connector.
from line 643
536643* **Runner doesn't appear in the environment**: confirm the host can reach `api.anthropic.com` over HTTPS, the environment secret is current, and the host clock is within five minutes of real time; larger skew causes authentication to fail. The runner logs `[runner:fatal]` with the rejection reason on auth failure.
537644* **Runner exits at startup with `cannot create or write to base directory`**: the runner can't create or write to `--base-dir`, which defaults to `/workspace`. Fix the directory's ownership or point `--base-dir` at a writable path, as described in [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). If the runner instead logs `[runner:fatal]` saying the base directory check timed out, the directory is on a hung NFS or CSI mount. Check mount health rather than permissions. The runner prints both of these startup failures to stderr before it opens `--log-file`, so look for them in the terminal or your platform's container logs rather than the log file. Before v2.1.225, the runner didn't check the base directory at startup, and this misconfiguration failed sessions after pickup instead.
538645* **Sessions stay queued**: every online runner may be locked to a different owner. Check each runner's `claude_code_self_hosted_runner_locked_account` [metric](/docs/en/self-hosted-environments-reference#prometheus-metrics) or the `locked_account` field of its `[runner:health]` log line to see who holds it. Both show the owner's email only after the runner has been issued a session token carrying an `act.email` claim, which a Claude Tag agent's sessions never do. Without the claim, the runner emits no `locked_account` series and logs `locked_account=yes`, which tells you the runner is locked but not to which owner. Add replicas, or wait for an existing runner to drain and restart. If the environment uses on-demand runners, check the orchestrator instead; see [On-demand runners](/docs/en/self-hosted-environments-configuration#on-demand-runners).
539* **Sessions fail immediately after pickup**: open the session in claude.ai/code to see the error. The most common causes are missing [git credentials](#configure-git) in the runner image and build tools that aren't installed. An unwritable base directory stops the runner at startup instead of failing sessions. See the **Runner exits at startup with `cannot create or write to base directory`** entry in this list.
646* **Sessions fail immediately after pickup**: open the session in claude.ai/code to see the error. The most common causes are missing [git credentials](#configure-git) in the runner image and build tools that aren't installed. On a runner started with `--use-anthropic-git-proxy`, see [When sessions fail to start on a runner with the git proxy](#when-anthropic-doesnt-serve-a-session). An unwritable base directory stops the runner at startup instead of failing sessions. See the **Runner exits at startup with `cannot create or write to base directory`** entry in this list.
647* **Sessions fail to start on a runner that set `--use-anthropic-git-proxy`**: look in the runner's log for `access denied by the git proxy`, or for a git error that names an `api.anthropic.com` address containing `/git_proxy/`. To tell whether Anthropic served the session and fix the cause, see [When sessions fail to start on a runner with the git proxy](#when-anthropic-doesnt-serve-a-session).
540648* **Sessions can't reach the network through an authenticating egress proxy**: when the source you set with [`--proxy-authorization-command` or `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) fails, times out after 30 seconds, or yields an empty value, the runner answers that connection `502 Bad Gateway` and logs why. The runner redacts the command's stderr in that log and never logs the header value. With `--proxy-authorization-command`, run the command yourself on the host to confirm it prints the whole header value on stdout. If the runner instead exits at startup with `could not start the proxy-authorization listener`, it couldn't open its loopback listener.
541649* **Runner logs `Poll failed` lines containing `rejecting the malformed poll response`**: the runner received a work-poll response whose body isn't the queue's expected JSON, most often because something between the runner and `api.anthropic.com`, such as an intercepting proxy or a captive portal, answered with its own page. The runner rejects the response, counts it under the `transport` kind of the `claude_code_self_hosted_runner_poll_errors_total` [metric](/docs/en/self-hosted-environments-reference#prometheus-metrics), and retries on the failed-poll schedule described in [Session lifecycle](/docs/en/self-hosted-environments#session-lifecycle). The runner keeps serving its live sessions. Configure the proxy to pass responses from `api.anthropic.com` through unaltered. Before v2.1.246, the runner read such a response as an empty work queue, which could end its live sessions or make it exit.
542650* **A session's branch no longer exists on the remote**: for a git source the session only reads from, the runner skips that source and continues on the remaining ones. For the source the session pushes results to, a deleted branch, typically because it was merged and auto-deleted, fails the session with an error naming the repository and branch and asking you to restore the branch and retry. The runner fails the session with the same error when skipping would leave it with no repository at all. Before v2.1.228, such a session started in an empty directory.
from line 654
546654 
547655 The access check runs again each time the session starts on a runner, so once the runner's git identity has read access, the next start clones the repository. Before v2.1.274, each of these refusals failed the session start.
548656* **Sessions take minutes to start**: the initial clone usually dominates. Watch the `claude_code_self_hosted_runner_session_init_duration_seconds` [metric](/docs/en/self-hosted-environments-reference#prometheus-metrics) to confirm, and cut the clone with a [pre-warmed checkout](#reuse-a-pre-warmed-checkout) or a smaller `CLAUDE_RUNNER_FETCH_DEPTH`.
549* **Turns fail with a 401**: each session authenticates model calls with the short-lived [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/en/self-hosted-environments-configuration#wrapper-scripts) that the runner fetches from Anthropic and rotates over the session's stdin. When a turn ends with a 401 or 403 from the model API, the runner fetches a fresh token and passes it to the session. The failed turn isn't retried.
657* **Turns fail with a 401**: when a turn ends with a 401 or 403 from the Anthropic API, the runner fetches a fresh [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/en/self-hosted-environments-configuration#wrapper-scripts) from Anthropic and passes it to the session. The failed turn isn't retried. This token is short-lived, and the runner rotates it over the session's stdin.
550658 
551659 When a fetch fails, the runner logs an `inference_token refresh failed` line that says when it will retry, and it keeps retrying for as long as the session runs.
552660 
from line 673
565673 
566674* **A normal exit**: the runner finished its sessions and drained, reached its retire time, or was told to stop. Restart it so the environment has capacity again. [Runner lifecycle](/docs/en/self-hosted-environments#runner-lifecycle) describes these exits.
567675* **A failed start**: the runner can't start with the configuration or host it was given, so it exits seconds after it starts, and it exits the same way every time you restart it. Restarting it faster doesn't help. Someone needs to read its output and fix the cause.
676* **Lost contact**: a runner that can't reach Anthropic for longer than its [lease](/docs/en/self-hosted-environments#session-lifecycle), for example while its host sleeps, can be removed from the environment. When a removed runner reconnects, it exits. Its log can show a `[runner:fatal]` line that contains `runner record gone server-side` or, after a longer outage, [`poll auth failed`](/docs/en/self-hosted-environments-quickstart#set-up-an-environment-and-runner). The runner doesn't register again by itself, so restart it.
568677 
569678Configure your supervisor to restart the runner whenever it exits, to wait longer between restarts when the runner keeps exiting right after it starts, and to tell someone when that keeps happening.
570679 

self-hosted-environments-quickstart Changed · +39 / -7 lines

### Run the guided setup ### Set up manually ### If the runner exits

from line 24
2424The runner host needs:
2525 
2626* A Linux or macOS host or container with outbound HTTPS to `api.anthropic.com`, to `claude.ai` and the download hosts it redirects to for the install step below, and to your git host for the clone; the [network requirements table](/docs/en/self-hosted-environments-deploy#network-requirements) has the full list. Windows isn't supported as a runner host; run the runner in a Linux container instead. Developer workstations aren't affected, since sessions start from claude.ai in a browser.
27* A repository for the test session: a public one, or one this host can already clone by its HTTPS URL without being asked for credentials.
2728* A clock synchronized to real time, for example with NTP. Authentication fails when the clock is more than five minutes off; see [Troubleshooting](/docs/en/self-hosted-environments-deploy#troubleshooting).
2829 
2930### Software on the runner host
from line 44
4344 
4445## Set up an environment and runner
4546 
46Claude Code includes a guided setup: an interactive Claude Code session that walks you through creating the environment in the admin UI, starts a local runner with the secret file you save, confirms that the runner registers, and writes a cheat sheet to `./runner-setup/CHEAT-SHEET.md`. Run it on a machine where you've signed in with `claude auth login` using an account that holds an Owner role; it isn't available with API keys or third-party model providers. On hosts where an interactive session isn't possible, use the manual steps below instead. Confirm the [version check](#software-on-the-runner-host) passed first: on versions older than 2.1.224, this command starts an ordinary Claude session with the words as the prompt instead of the guided setup. To start the guided setup, run the setup subcommand and follow the prompts:
47Use either the [guided setup](#run-the-guided-setup) or the [manual steps](#set-up-manually). The guided setup is a single command that starts an interactive Claude Code session and walks you through the rest. Use the manual steps instead on a host where an interactive session isn't possible. Also use them when someone who holds the Owner role created the environment and handed you its secret, since the guided setup needs an Owner sign-in.
4748 
49### Run the guided setup
50 
51The guided setup walks you through creating the environment in the admin UI, starts a local runner with the secret file you save, confirms that the runner registers, and writes a cheat sheet to `./runner-setup/CHEAT-SHEET.md`. Before you run it, confirm your sign-in and version:
52 
53* **Sign-in**: run it on a machine where you've signed in with `claude auth login` using an account that holds an Owner role. With only an API key or a third-party model provider, the session starts but its organization checks fail.
54* **Version**: confirm the [version check](#software-on-the-runner-host) passed. On versions older than 2.1.224, the setup command starts a Claude session with the words as the prompt instead of the guided setup.
55 
56To start the guided setup, run the setup subcommand in your shell and follow the prompts:
57 
4858```bash theme={null}
4959claude self-hosted-runner setup
5060```
5161 
52To set up manually instead:
62The setup doesn't start a test session itself: it tells you to start one at claude.ai/code. The setup's last step stops the runner it started. If you leave the setup before that step, the runner keeps running. To keep going after the last step, start the runner again in your shell with the command in `./runner-setup/CHEAT-SHEET.md`, then [route a session to the environment](#route-a-session).
5363 
64### Set up manually
65 
66Create the environment on claude.ai, start the runner from a terminal on the host, then return to claude.ai to confirm the runner appears and route a session to it. If someone who holds the Owner role already created the environment and handed you its secret, start at step 2.
67 
5468<Steps>
5569 <Step title="Create an environment">
5670 Go to the [**Cloud environments** page](https://claude.ai/admin-settings/cloud-environments) in admin settings. Under **Self-hosted environments**, select **New**, name the environment, and select **Create**. On the wizard's second step, select **Copy environment key** to copy the environment secret, which the admin UI labels an environment key. claude.ai shows the secret once, and you can't retrieve it later; it expires 365 days after creation. The environment's `ccpool_...` ID stays visible in its detail dialog; you'll need it for the `aud` check in [token verification](/docs/en/self-hosted-environments-identity) and for dispatching [test sessions from CI](/docs/en/self-hosted-environments-testing#run-the-test-loop).
from line 73
5973 </Step>
6074 
6175 <Step title="Start a runner">
62 Create the secret directory. This step and the next need root for the `/etc/claude` path; any path the runner process can read works, so adjust both commands and the `--environment-secret-file` value together if you use a different one.
76 Create the secret directory. This command and the next use `/etc/claude`, which needs root, and the secret file they create is readable only by the user who runs them. If the runner will run as another user, it exits with `error: Failed to read environment secret file <path> (EACCES: permission denied, open '<path>')`. In that case, run both commands as the runner's user with a directory that user can write to in place of `/etc/claude`, and pass the same path to `--environment-secret-file`. Any path the runner process can read works.
6377 
6478 ```bash theme={null}
6579 mkdir -p /etc/claude
from line 89
7589 
7690 If the runner can't create or write to the path, it exits at startup with an error naming the directory instead of registering. See [Troubleshooting](/docs/en/self-hosted-environments-deploy#troubleshooting).
7791 
78 Then start the runner with `--environment-secret-file` and `--base-dir`. The runner registers with your environment and begins polling for work. If the runner exits, restart it by hand. Production deployments run the runner under an orchestrator that restarts exited runners, normally with a fresh filesystem per restart; [Reuse a pre-warmed checkout](/docs/en/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) covers the supported persistent-disk setup.
92 Then start the runner with `--environment-secret-file` and `--base-dir`:
7993 
8094 ```bash theme={null}
8195 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'
8296 ```
97 
98 The runner logs `Registered: runner_id=<runner-id>` once it has registered with your environment, then begins polling for work. If the runner exits later, restart it yourself. See [If the runner exits](#if-the-runner-exits) for when that happens.
8399 </Step>
84100 
85101 <Step title="Verify the runner appears">
86 Return to the [**Cloud environments** page](https://claude.ai/admin-settings/cloud-environments). Your environment's status changes from **No runners deployed** to **Healthy** within a few seconds of the runner starting; open the environment and select **Activity** to see the runner itself.
102 Return to the [**Cloud environments** page](https://claude.ai/admin-settings/cloud-environments). Your environment's status changes from **No runners deployed** to **Healthy** within a few seconds of the runner starting; open the environment and select **Activity** to see the runner itself. If you don't have access to the admin page, the `Registered: runner_id=<runner-id>` line in the runner's log from the previous step gives you the same signal.
87103 </Step>
88104 
89105 <Step title="Route a session to the environment">
90 Start a session at claude.ai/code and select your environment from the environment picker, where self-hosted environments appear alongside Anthropic-hosted ones. The runner clones with whatever git credentials the host already has, so pick a repository this host can already clone, or a public one; credential options for private repositories in production are on [Configure git](/docs/en/self-hosted-environments-deploy#configure-git). The next available runner picks up the queued session and logs `Picked up session <session-id>` along with its active count and capacity, so you can confirm from the runner's own output which host took the session. Watch the session work and read Claude's replies at [claude.ai/code](https://claude.ai/code). If the session sits queued instead, see [Troubleshooting](/docs/en/self-hosted-environments-deploy#troubleshooting).
106 <span id="route-a-session" />Start a session at claude.ai/code and select your environment from the environment picker, where self-hosted environments appear alongside Anthropic-hosted ones. For the repository, pick the one from the [prerequisites](#host-and-network): a public repository, or one this host can already clone. The runner clones with whatever git credentials the host already has.
107 
108 The next available runner picks up the queued session and logs `Picked up session <session-id>` along with its active count and capacity, so you can confirm from the runner's own output which host took the session. Watch the session work and read Claude's replies at [claude.ai/code](https://claude.ai/code).
109 
110 If the session doesn't start working, match what you see:
111 
112 * **The session sits queued**: see [Troubleshooting](/docs/en/self-hosted-environments-deploy#troubleshooting).
113 * **The session fails to start with a git error**: the error appears in the session and in the runner's log. If it includes git's `could not read Username for` followed by your git host's URL, the runner had no HTTPS credentials for that host. See [Configure git](/docs/en/self-hosted-environments-deploy#configure-git), which also covers credential options for private repositories in production.
91114 </Step>
92115</Steps>
93116 
94The runner exits by design once its active sessions finish; see [Runner lifecycle](/docs/en/self-hosted-environments#runner-lifecycle). For production, deploy it under an orchestrator that restarts it on exit and waits longer between restarts when the runner keeps exiting right after it starts. See [Deploy to production](/docs/en/self-hosted-environments-deploy) and [When the runner exits](/docs/en/self-hosted-environments-deploy#when-the-runner-exits).
117### If the runner exits
118 
119If the runner exits during this quickstart, start it again with the same command. The runner can exit on its own:
120 
121* **Sessions finished**: the log shows `[runner:exit] account workload drained — exiting`. The runner exits by design once its active sessions finish. See [Runner lifecycle](/docs/en/self-hosted-environments#runner-lifecycle).
122* **Lost contact**: the log shows a `[runner:fatal]` line with `runner record gone server-side` or with `poll auth failed`. If the runner loses contact with Anthropic for a while, for example because the host sleeps, it can exit when it next reaches Anthropic.
123 
124A finished turn doesn't end your test session. After the first turn the session is still attached and the runner is still up, so you can [send the session a follow-up message](#send-a-follow-up-message-to-a-running-session) without restarting the runner first.
125 
126For production, deploy the runner under an orchestrator that restarts it on exit and waits longer between restarts when the runner keeps exiting right after it starts. See [Deploy to production](/docs/en/self-hosted-environments-deploy) and [When the runner exits](/docs/en/self-hosted-environments-deploy#when-the-runner-exits).
95127 
96128## Send a follow-up message to a running session
97129 

self-hosted-environments-reference Changed · +24 / -6 lines

### Auto mode rule lists

from line 46
4646| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Release a session slot after N minutes of inactivity once a turn finishes or the session waits for the user's action. A session that's still mid-turn, including one holding a never-finishing background task or an approval requested from inside a running tool call, doesn't count as idle; pair with `--kill-session-after-min` as the hard backstop. After a session's background task finishes, the runner considers the session busy until the follow-up turn that reads the result starts, for at most the [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings) window. Until the runner receives a shutdown signal or reaches its retire time, a release that leaves the runner with no active sessions starts the same exit path as a normal drain, governed by `--drain-grace-sec`. After a first signal you deferred with [`--defer-shutdown-max-min`](/docs/en/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), the runner exits as soon as a release leaves it holding no sessions. `0` disables. |
4747| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Remove a session's per-session directories under `<base-dir>/_sessions/` when the session ends on this runner, whatever the outcome. [Reuse a pre-warmed checkout](/docs/en/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) describes what they hold and who can read them when they stay. The removal is best-effort: the per-session directories stay in place when the runner is killed or reaches its drain deadline before cleanup runs. With the flag on, a failed or interrupted session's debug log isn't kept on disk. Requires Claude Code v2.1.268 or later. |
4848| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Retire the runner at an absolute Unix timestamp in seconds, for infrastructure that kills the runner at a known time; [Runner lifecycle](/docs/en/self-hosted-environments#runner-lifecycle) describes the release sequence and how to size the margin. Values before 2001 or after the year 5138 are rejected by the flag and ignored by the environment variable. |
49| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Which of the [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) classifier rule lists that the control plane sends with a session may reach that session: `all`, `no-allow`, or `none`. See [Auto mode rule lists](#auto-mode-rule-lists) for what each value applies. An invalid value stops the runner at startup. Requires Claude Code v2.1.295 or later. |
4950| `--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. |
50| `--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. |
51| `--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. Cloning happens before spawn, so clone time doesn't count. 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. |
5152| `--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 later; the runner refuses to start otherwise. Supersedes the rewrite flags. |
53| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone repositories on github.com 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. |
5354 
5455Most 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:
5556 
from line 57
5657* **Flag**: startup fails with an error.
5758* **Environment variable**: the runner clamps the value to the timer ceiling rather than rejecting it.
5859 
60### Auto mode rule lists
61 
62`--server-auto-mode-lists` lets you decide which [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) classifier rules from outside the runner reach the sessions on your runners. Anthropic's control plane can send rule lists with a session and ask the runner to apply them. Some entries may be rules an admin of your organization wrote. The lists are `environment`, `soft_deny`, and `allow`:
63 
64* **`environment`**: an entry can make the classifier allow more as well as less.
65* **`soft_deny`**: an entry blocks an action unless the user explicitly asked for it or an `allow` exception applies.
66* **`allow`**: the exceptions to `soft_deny` entries.
67 
68The flag's value picks which lists the runner applies:
69 
70* **`no-allow`**: the default. Applies `environment` and `soft_deny` and withholds `allow`. An `environment` entry can still make the classifier allow more, so the default doesn't rule out every loosening.
71* **`all`**: applies all three lists.
72* **`none`**: applies none of them. Pick `none` to rule out every loosening from these lists. It also drops the `soft_deny` restrictions.
73 
74No runner setting makes the control plane ask the runner to apply the lists. When it doesn't ask, sessions receive no list whatever you set. To see which happened, start the runner with `--log-level debug`. For each session the runner then logs a line containing `the server asked this runner to apply`, or one containing `the server did not ask this runner to apply the auto mode lists it sends`.
75 
5976## Orchestrator CLI flags
6077 
6178The `self-hosted-runner orchestrator` subcommand, which spawns [on-demand runners](/docs/en/self-hosted-environments-configuration#on-demand-runners), accepts `--api-url`, `--environment-secret-file`, `--hooks-dir`, `--health-port`, and `--log-level` with the same defaults as the runner and, where the runner's flag has one, the same environment variable, except that `--hooks-dir` is required and must contain a `spawn-runner` hook. It also takes its own flags:
from line 81
6481| :- | :- | :- |
6582| `--hook-concurrency <n>` | `4` | Maximum `spawn-runner` hooks running in parallel. Also caps how many spawn requests are claimed per poll. |
6683| `--hook-timeout <sec>` | `60` | Terminate the hook's process tree after this many seconds. The timeout plus its 5-second kill grace must stay below `--expected-spawn-seconds`; the orchestrator enforces this at startup. |
67| `--expected-spawn-seconds <sec>` | `120` | Expected p99 boot time for spawned runners, in the server-enforced range 10 to 3600. Sent on every poll as the server-side lease; if no runner registers before it elapses, the session is re-offered with a fresh order ID. All replicas must share this value. |
84| `--expected-spawn-seconds <sec>` | `120` | Expected p99 time from when the orchestrator receives a spawn request to when the runner registers, including any wait for capacity on your platform. The server enforces a range of 10 to 3600. Sent on every poll as the server-side lease: if no runner registers before it elapses, the session is re-offered with a fresh order ID. All replicas must share this value. |
6885| `--min-idle <n>` | `0` | Keep at least N idle session slots free by spawning standby runners proactively. `0` disables pre-warming. Pair with the runner's `--exit-if-unused-min` so surplus standby runners reclaim themselves. |
6986| `--debug-dir <path>` | unset | Write each spawn request's work order and hook stderr to disk. Debug only; never set in production. |
7087 
from line 113
96113| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Cap on how long the runner counts a session as busy for the `--drain-wait-sec` drain after a turn finishes, while the session's process reports the turn's end to Anthropic. `0` or an unusable value falls back to the default, so the hold can't be turned off. Requires Claude Code v2.1.275 or later. |
97114| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | How long the runner waits for the OS to deliver `SIGKILL` to a child stuck in uninterruptible I/O before exiting itself. Floored at `--post-session-hook-timeout-sec` plus 15 seconds, and 30 more when `--push-outcome-on-release` is set, so the effective minimum is 75 seconds at defaults. |
98115| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Git fetch depth for fresh clones. Set a positive integer, or `full` or `0` for a complete fetch. Repositories already present in the workspace keep their existing depth. |
116| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | How long in milliseconds, per attempt, a git fetch may wait for its first data while the git server's own progress numbers keep rising, as when the server prepares the pack for a large repository. `0` or `off` turns the wait off: such a fetch is then cut off after two minutes without data. Any other whole number is clamped to between `120000` and `1800000`, 2 to 30 minutes. Requires Claude Code v2.1.295 or later. |
99117| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | unset | When `1`, skip the `.git` presence check after a `checkout` hook runs. Set this when your hook materializes a non-git source. |
100118| `FORCE_AUTOUPDATE_PLUGINS` | unset | When `1`, let plugin marketplaces auto-update even though the binary is pinned |
101119| `CLAUDE_CODE_DISABLE_ARTIFACT` | unset | When `1`, disable the Artifact tool in sessions regardless of the organization's admin setting, and drop the `*.frame.claudeusercontent.com` egress requirement |
from line 178
160178| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Cumulative PollSpawnHints failures by kind: `transport`, `timeout`, `5xx`, `429`, or `4xx`. All five series are present from process start; alert on `rate(...[5m]) > 0`. |
161179| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Spawn requests claimable right now |
162180| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Spawn requests in retry backoff after a retryable hook failure |
163| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Spawn requests blocked until an Owner retries them from the environment's **Activity** tab; alert if above zero |
181| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Sessions blocked from spawning. Each stays blocked until a user sends it a new message or an Owner retries it from the environment's **Activity** tab. The count can stay above zero after you fix the cause. Alert if above zero. |
164182| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Total sessions waiting on a runner for this environment. Environment-wide aggregate, identical on every orchestrator instance: use `MAX` rather than `SUM` across instances. |
165183| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Sessions currently assigned to an alive runner in this environment. Environment-wide aggregate, identical on every orchestrator instance: use `MAX` rather than `SUM` across instances. |
166184| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Cumulative `spawn-runner` hook outcomes: `ok`, `retryable`, `non_retryable`. Counts orchestrator hook invocations, not session children the runners spawn: not comparable to `sessions_started_total`, since capacity above one, warm pools, and runners spawned again for the same session all diverge the two. |
from line 285
267285 for: 1m
268286 labels: {severity: critical}
269287 annotations:
270 summary: "{{ $value }} sessions circuit-broken — spawn-runner hook is repeatedly non-retryable; fix infra then retry from the Activity tab"
288 summary: "Sessions blocked from spawning: {{ $value }}. Read each one's error in the Activity tab, fix the cause, then select Retry"
271289 - alert: ClaudeOrchestratorPollErrors
272290 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0
273291 for: 2m
from line 316
298316 
299317Before v2.1.260, the runner terminated every session that reached its `--kill-session-after-min` limit and counted it in `sessions_interrupted_total`.
300318 
301The [`post-session` hook](/docs/en/self-hosted-environments-configuration#post-session)'s `CLAUDE_RUNNER_EXIT_REASON` classifies clean handoffs differently. The hook reports a release, a startup timeout, and a server deassign as `interrupted`, because the runner stopped the child. These counters record the same events as `completed`, because the slot was handed back cleanly.
319The [`post-session` hook](/docs/en/self-hosted-environments-configuration#post-session)'s `CLAUDE_RUNNER_EXIT_REASON` classifies clean handoffs differently. The hook reports these as `interrupted`, because the runner stopped the child: a release, a startup timeout, a server deassign, and an archive or delete that the poll noticed first. These counters record the same events as `completed`, because the slot was handed back cleanly.
302320 
303321If you reconcile hook receipts against `sessions_completed_total` directly, you undercount completions. Use the hook for per-session guarantees and the counters for aggregate rates.
304322 

self-hosted-environments-testing Changed · +14 / -4 lines

from line 75
7575 
7676The `--environment` and `--ref` dispatch flags require Claude Code v2.1.224 or later on the machine that runs the script, the same floor as the runner itself. With the hook in place and a runner started on this host, the test script:
7777 
781. Creates a session on the test environment with `claude -p "<prompt>" --environment <environment-id> --output-format json`, run from a git checkout so the CLI can auto-detect the repository from the `origin` remote. The optional `--ref <branch>` bases the session's checkout on a named ref instead of local HEAD. The command creates the session, prints one line of JSON containing `session_id`, and exits without waiting for Claude's reply.
781. Creates a session on the test environment with `claude -p "<prompt>" --environment <environment-id> --output-format json`. Run the command from a git checkout so the CLI can auto-detect the repository from the `origin` remote. The optional `--ref <branch>` bases the session's checkout on a named ref instead of local HEAD. The command exits without waiting for Claude's reply. What it prints tells your script the outcome:
79 * **Session created**: one line of JSON such as `{"ok":true,"session_id":"session_...","title":"...","url":"...","pool_id":"..."}`
80 * **Session creation failed**: the line `{"ok":false,"error":"..."}`, and the command exits with status 1
81 * **Some earlier errors**, such as cloud sessions being unavailable for your organization or a missing prompt: the error on stderr with no JSON line, and the command exits with status 1
79822. Waits for the reply to appear in `$E2E_REPLY_DIR/<session_id>.txt`, written by the Stop hook on the runner once the turn completes.
80833. Sends a follow-up with `claude -p "<message>" --cloud <session_id> --output-format json` (see [Send a follow-up message to a running session](/docs/en/claude-code-on-the-web#send-follow-ups-from-the-cli)), which posts a user event to the existing session and exits.
81844. Waits for the follow-up's reply the same way as step 2.
from line 91
8891 
8992## Example script
9093 
91The script below runs the full loop against `$CLAUDE_TEST_ENVIRONMENT_ID`, your test environment's `ccpool_...` ID, shown in the environment's detail dialog on the admin page or returned by the [create-environment call](#create-a-dedicated-test-environment), and asserts on a sentinel phrase in each reply. Run it from a git checkout of the repository you want the session to work in, after starting a runner on this host with the capture hook installed and `E2E_REPLY_DIR` exported. First sign in with a claude.ai account on the machine that runs the script, as [Authenticate from CI](#authenticate-from-ci) describes. Without that sign-in, the first dispatch fails with an error such as `Unable to get organization UUID for cloud session creation`.
94The example script runs on the same machine as the test runner. Before you run it, prepare that machine:
9295 
96* **Repository checkout**: run the script from a git checkout of the repository you want the session to work in.
97* **Runner**: start a runner on this host with the capture hook installed and `E2E_REPLY_DIR` exported.
98* **Sign-in**: sign in with a claude.ai account on the machine that runs the script, as [Authenticate from CI](#authenticate-from-ci) describes.
99* **Environment ID**: set `CLAUDE_TEST_ENVIRONMENT_ID` to your test environment's `ccpool_...` ID, shown in the environment's detail dialog on the admin page or returned by the [create-environment call](#create-a-dedicated-test-environment).
100 
101The script below runs the full loop against `$CLAUDE_TEST_ENVIRONMENT_ID` and asserts on a sentinel phrase in each reply.
102 
93103```bash theme={null}
94104#!/usr/bin/env bash
95105# End-to-end test against a self-hosted environment, using Stop-hook read-back.
from line 146
136146TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"
137147EXPECT1="ok: custom tools are reachable"
138148create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \
139 --ref "$TEST_REPO_REF" --output-format json)
149 --ref "$TEST_REPO_REF" --output-format json < /dev/null)
140150echo "create: $create_json"
141151SESSION_ID=$(jq -er '.session_id' <<<"$create_json")
142152 
from line 157
147157# 3. Post a follow-up via the CLI.
148158TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"
149159EXPECT2="ok: follow-up delivered"
150followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json)
160followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json < /dev/null)
151161echo "followup: $followup_json"
152162jq -e '.ok == true' <<<"$followup_json" >/dev/null
153163 

claude-tag Changed · +2 / -2 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.

from line 1
1<!DOCTYPE html><html lang="en" class="inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark" data-banner-state="visible" data-assistant-state="closed" data-page-mode="none" data-current-path="/"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/><link rel="preload" href="/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/docs/_next/static/media/PaperMono_Variable.p.4fb029ee.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/1fyDNLAICe3KG6rB/logo/light.svg?fit=max&amp;auto=format&amp;n=1fyDNLAICe3KG6rB&amp;q=85&amp;s=e870c19cb781d8a7c7b7d19de53b0a10"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/1fyDNLAICe3KG6rB/logo/dark.svg?fit=max&amp;auto=format&amp;n=1fyDNLAICe3KG6rB&amp;q=85&amp;s=80cc0b06d8fd9aeefec8acb226de6866"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/5JFKyLlO7sHMMf5J/images/claude-tag/logo/clay-spark.svg?fit=max&amp;auto=format&amp;n=5JFKyLlO7sHMMf5J&amp;q=85&amp;s=032101c39ca3b1af9f72fc4af8e60d12"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/5JFKyLlO7sHMMf5J/images/claude-tag/illustrations/Hand-Key.svg?fit=max&amp;auto=format&amp;n=5JFKyLlO7sHMMf5J&amp;q=85&amp;s=1b7a9675728f971bc7a4663c7f1ea599"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/5JFKyLlO7sHMMf5J/images/claude-tag/illustrations/Hand-NodePair.svg?fit=max&amp;auto=format&amp;n=5JFKyLlO7sHMMf5J&amp;q=85&amp;s=c64df4c6d27a6da752aa32c9e0622781"/><link rel="stylesheet" href="/docs/_next/static/chunks/1ddb69276dca9f27.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" data-precedence="next"/><link rel="stylesheet" href="/docs/_next/static/chunks/3c9b5f741727f3e1.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" data-precedence="next"/><style data-precedence="base-ui:low" data-href="base-ui-disable-scrollbar">.base-ui-disable-scrollbar{scrollbar-width:none}.base-ui-disable-scrollbar::-webkit-scrollbar{display:none}</style><link rel="preload" as="script" fetchPriority="low" href="/docs/_next/static/chunks/3fcb76f539c93820.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF"/><script src="/docs/_next/static/chunks/44795504c795ca32.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/d91476ec7cc44407.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/b730549587248be7.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/24e694217c6c6750.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/turbopack-e0450ec94f280202.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/0ff6177de280ba78.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/cca0190f4304f860.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/039bc0429cecf5cc.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/ee80be541c5b0811.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><title>Work with Claude Tag - Claude.ai Documentation</title><meta name="description" content="Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user."/><meta name="application-name" content="Claude.ai Documentation"/><meta name="generator" content="Mintlify"/><meta name="msapplication-config" content="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/browserconfig.xml"/><meta name="apple-mobile-web-app-title" content="Claude.ai Documentation"/><meta name="msapplication-TileColor" content="#0E0E0E"/><link rel="canonical" href="https://claude.com/docs/claude-tag/overview"/><link rel="alternate" type="application/xml" href="/docs/sitemap.xml"/><link rel="alternate" type="text/markdown" href="/docs/claude-tag/overview.md"/><meta property="og:title" content="Work with Claude Tag - Claude.ai Documentation"/><meta property="og:description" content="Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user."/><meta property="og:url" content="https://claude.com/docs/claude-tag/overview"/><meta property="og:site_name" content="Claude.ai Documentation"/><meta property="og:image" content="https://claude-ai.mintlify.app/_mintlify/api/og/v2?division=+&amp;title=Work+with+Claude+Tag&amp;description=Claude+Tag+puts+Claude+in+your+Slack+channels+with+admin-governed+access.+See+what+to+hand+it%2C+how+setup+works%2C+and+where+to+start+as+an+admin+or+end+user.&amp;theme=6f9b6bab2d50cee40d7f721c&amp;signature=dfec9fe4dcc74f7175c92715c4f3a03f6dbb5085061caae643b7c8f841431e60"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Work with Claude Tag - Claude.ai Documentation"/><meta name="twitter:description" content="Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user."/><meta name="twitter:image" content="https://claude-ai.mintlify.app/_mintlify/api/og/v2?division=+&amp;title=Work+with+Claude+Tag&amp;description=Claude+Tag+puts+Claude+in+your+Slack+channels+with+admin-governed+access.+See+what+to+hand+it%2C+how+setup+works%2C+and+where+to+start+as+an+admin+or+end+user.&amp;theme=6f9b6bab2d50cee40d7f721c&amp;signature=dfec9fe4dcc74f7175c92715c4f3a03f6dbb5085061caae643b7c8f841431e60"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/android-chrome-192x192.png" type="image/png" sizes="192x192" media="(prefers-color-scheme: light)"/><link rel="apple-touch-icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/apple-touch-icon.png" type="image/png" sizes="180x180"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon-16x16.png" type="image/png" sizes="16x16" media="(prefers-color-scheme: light)"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon-32x32.png" type="image/png" sizes="32x32" media="(prefers-color-scheme: light)"/><link rel="shortcut icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon.ico" type="image/x-icon" media="(prefers-color-scheme: light)"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/android-chrome-192x192.png" type="image/png" sizes="192x192" media="(prefers-color-scheme: dark)"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon-16x16.png" type="image/png" sizes="16x16" media="(prefers-color-scheme: dark)"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon-32x32.png" type="image/png" sizes="32x32" media="(prefers-color-scheme: dark)"/><link rel="shortcut icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon.ico" type="image/x-icon" media="(prefers-color-scheme: dark)"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><script type="text/javascript">!function(){var b="/docs";
1<!DOCTYPE html><html lang="en" class="inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark" data-banner-state="visible" data-assistant-state="closed" data-page-mode="none" data-current-path="/"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/><link rel="preload" href="/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/docs/_next/static/media/PaperMono_Variable.p.4fb029ee.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/1fyDNLAICe3KG6rB/logo/light.svg?fit=max&amp;auto=format&amp;n=1fyDNLAICe3KG6rB&amp;q=85&amp;s=e870c19cb781d8a7c7b7d19de53b0a10"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/1fyDNLAICe3KG6rB/logo/dark.svg?fit=max&amp;auto=format&amp;n=1fyDNLAICe3KG6rB&amp;q=85&amp;s=80cc0b06d8fd9aeefec8acb226de6866"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/5JFKyLlO7sHMMf5J/images/claude-tag/logo/clay-spark.svg?fit=max&amp;auto=format&amp;n=5JFKyLlO7sHMMf5J&amp;q=85&amp;s=032101c39ca3b1af9f72fc4af8e60d12"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/5JFKyLlO7sHMMf5J/images/claude-tag/illustrations/Hand-Key.svg?fit=max&amp;auto=format&amp;n=5JFKyLlO7sHMMf5J&amp;q=85&amp;s=1b7a9675728f971bc7a4663c7f1ea599"/><link rel="preload" as="image" href="https://mintcdn.com/claude-ai/5JFKyLlO7sHMMf5J/images/claude-tag/illustrations/Hand-NodePair.svg?fit=max&amp;auto=format&amp;n=5JFKyLlO7sHMMf5J&amp;q=85&amp;s=c64df4c6d27a6da752aa32c9e0622781"/><link rel="stylesheet" href="/docs/_next/static/chunks/1ddb69276dca9f27.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" data-precedence="next"/><link rel="stylesheet" href="/docs/_next/static/chunks/3c9b5f741727f3e1.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" data-precedence="next"/><style data-precedence="base-ui:low" data-href="base-ui-disable-scrollbar">.base-ui-disable-scrollbar{scrollbar-width:none}.base-ui-disable-scrollbar::-webkit-scrollbar{display:none}</style><link rel="preload" as="script" fetchPriority="low" href="/docs/_next/static/chunks/3fcb76f539c93820.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF"/><script src="/docs/_next/static/chunks/44795504c795ca32.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/d91476ec7cc44407.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/b730549587248be7.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/24e694217c6c6750.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/turbopack-e0450ec94f280202.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/0ff6177de280ba78.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/cca0190f4304f860.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/039bc0429cecf5cc.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><script src="/docs/_next/static/chunks/ee80be541c5b0811.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" async=""></script><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>Work with Claude Tag - Claude.ai Documentation</title><meta name="description" content="Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user."/><meta name="application-name" content="Claude.ai Documentation"/><meta name="generator" content="Mintlify"/><meta name="msapplication-config" content="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/browserconfig.xml"/><meta name="apple-mobile-web-app-title" content="Claude.ai Documentation"/><meta name="msapplication-TileColor" content="#0E0E0E"/><link rel="canonical" href="https://claude.com/docs/claude-tag/overview"/><link rel="alternate" type="application/xml" href="/docs/sitemap.xml"/><link rel="alternate" type="text/markdown" href="/docs/claude-tag/overview.md"/><meta property="og:title" content="Work with Claude Tag - Claude.ai Documentation"/><meta property="og:description" content="Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user."/><meta property="og:url" content="https://claude.com/docs/claude-tag/overview"/><meta property="og:site_name" content="Claude.ai Documentation"/><meta property="og:image" content="https://claude-ai.mintlify.app/_mintlify/api/og/v2?division=+&amp;title=Work+with+Claude+Tag&amp;description=Claude+Tag+puts+Claude+in+your+Slack+channels+with+admin-governed+access.+See+what+to+hand+it%2C+how+setup+works%2C+and+where+to+start+as+an+admin+or+end+user.&amp;theme=6f9b6bab2d50cee40d7f721c&amp;signature=dfec9fe4dcc74f7175c92715c4f3a03f6dbb5085061caae643b7c8f841431e60"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Work with Claude Tag - Claude.ai Documentation"/><meta name="twitter:description" content="Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user."/><meta name="twitter:image" content="https://claude-ai.mintlify.app/_mintlify/api/og/v2?division=+&amp;title=Work+with+Claude+Tag&amp;description=Claude+Tag+puts+Claude+in+your+Slack+channels+with+admin-governed+access.+See+what+to+hand+it%2C+how+setup+works%2C+and+where+to+start+as+an+admin+or+end+user.&amp;theme=6f9b6bab2d50cee40d7f721c&amp;signature=dfec9fe4dcc74f7175c92715c4f3a03f6dbb5085061caae643b7c8f841431e60"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/android-chrome-192x192.png" type="image/png" sizes="192x192" media="(prefers-color-scheme: light)"/><link rel="apple-touch-icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/apple-touch-icon.png" type="image/png" sizes="180x180"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon-16x16.png" type="image/png" sizes="16x16" media="(prefers-color-scheme: light)"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon-32x32.png" type="image/png" sizes="32x32" media="(prefers-color-scheme: light)"/><link rel="shortcut icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon.ico" type="image/x-icon" media="(prefers-color-scheme: light)"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/android-chrome-192x192.png" type="image/png" sizes="192x192" media="(prefers-color-scheme: dark)"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon-16x16.png" type="image/png" sizes="16x16" media="(prefers-color-scheme: dark)"/><link rel="icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon-32x32.png" type="image/png" sizes="32x32" media="(prefers-color-scheme: dark)"/><link rel="shortcut icon" href="/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon.ico" type="image/x-icon" media="(prefers-color-scheme: dark)"/><script type="text/javascript">!function(){var b="/docs";
22function a(p){if(p==null)return"/";p=""+p;if(""===p)return"/";return"/"===p.charAt(0)?p:"/"+p}
33function u(p){if(p==null)return p;p=""+p;if(!p||p.charAt(p.length-1)==="/")return p.slice(0,-1);return p}
44function i(p){if(p==null)return p;p=""+p;if(6<=p.length&&p.substring(p.length-6)==="/index")return p.substring(0,p.length-6);if("index"===p)return"";return p}
from line 2977
29772977<div class="tm-strip"><div class="tm-strip-head"><p class="tm-strip-title">Security review</p><a class="link tm-strip-all" href="/docs/claude-tag/concepts/security-and-data">Security and data handling</a></div><p>The security model, what admins can and can’t restrict, audit trails, and network requirements.</p></div>
29782978<h2 class="flex whitespace-pre-wrap group font-semibold" id="where-to-start-with-claude-tag"><div class="absolute" tabindex="-1"><a href="#where-to-start-with-claude-tag" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Where to start with Claude Tag</span></h2>
29792979<div class="columns prose dark:prose-invert grid max-w-none gap-4 sm:grid-cols-[repeat(var(--cols),minmax(0,1fr))] @2xl/columns-container:grid-cols-[repeat(var(--cols),minmax(0,1fr))] @[0px]/columns-container:grid-cols-1 card-group dark:prose-dark gap-y-0 sm:grid-cols-[repeat(var(--cols),minmax(0,1fr))]!" style="--cols:2"><div class="card block font-normal group relative my-2 ring-2 ring-transparent rounded-2xl bg-white dark:bg-background-dark border border-gray-950/10 dark:border-white/10 overflow-hidden w-full cursor-pointer hover:border-primary! dark:hover:border-primary-light!" aria-labelledby="_R_1hpbb9qnpfb39p7b9snpfiutb_" tabindex="0" role="link"><div class="px-6 py-5 relative flex items-center gap-x-4" data-component-part="card-content-container"><div class="absolute text-gray-400 dark:text-gray-500 group-hover:text-primary dark:group-hover:text-primary-light top-5 right-5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="m-0.5 size-3 shrink-0"><path d="M14.25 3.75L3.75525 14.2446" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.71301 3.75H14.2499V13.2869" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div><div aria-hidden="true" class="size-6 fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100 [&amp;&gt;svg]:size-6" data-component-part="card-icon"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-6 m-0! shrink-0 bg-primary dark:bg-primary-light" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/gear.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/gear.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></div><div class="w-full"><h2 id="_R_1hpbb9qnpfb39p7b9snpfiutb_" class="not-prose font-semibold text-base text-gray-800 dark:text-white" contentEditable="false" data-component-part="card-title">Set up Claude Tag</h2><div id="_R_1hpbb9qnpfb39p7b9snpfiutbH1_" class="prose font-normal text-base text-gray-600 dark:text-gray-400 leading-6 mt-0" data-component-part="card-content"><span data-as="p">Admins: pair your Slack workspace and launch</span></div></div></div></div><div class="card block font-normal group relative my-2 ring-2 ring-transparent rounded-2xl bg-white dark:bg-background-dark border border-gray-950/10 dark:border-white/10 overflow-hidden w-full cursor-pointer hover:border-primary! dark:hover:border-primary-light!" aria-labelledby="_R_2hpbb9qnpfb39p7b9snpfiutb_" tabindex="0" role="link"><div class="px-6 py-5 relative flex items-center gap-x-4" data-component-part="card-content-container"><div class="absolute text-gray-400 dark:text-gray-500 group-hover:text-primary dark:group-hover:text-primary-light top-5 right-5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="m-0.5 size-3 shrink-0"><path d="M14.25 3.75L3.75525 14.2446" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.71301 3.75H14.2499V13.2869" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div><div aria-hidden="true" class="size-6 fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100 [&amp;&gt;svg]:size-6" data-component-part="card-icon"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-6 m-0! shrink-0 bg-primary dark:bg-primary-light" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/paper-plane.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/paper-plane.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></div><div class="w-full"><h2 id="_R_2hpbb9qnpfb39p7b9snpfiutb_" class="not-prose font-semibold text-base text-gray-800 dark:text-white" contentEditable="false" data-component-part="card-title">Hand Claude Tag your first task</h2><div id="_R_2hpbb9qnpfb39p7b9snpfiutbH1_" class="prose font-normal text-base text-gray-600 dark:text-gray-400 leading-6 mt-0" data-component-part="card-content"><span data-as="p">It’s already in your channel: send your first message</span></div></div></div></div><div class="card block font-normal group relative my-2 ring-2 ring-transparent rounded-2xl bg-white dark:bg-background-dark border border-gray-950/10 dark:border-white/10 overflow-hidden w-full cursor-pointer hover:border-primary! dark:hover:border-primary-light!" aria-labelledby="_R_3hpbb9qnpfb39p7b9snpfiutb_" tabindex="0" role="link"><div class="px-6 py-5 relative flex items-center gap-x-4" data-component-part="card-content-container"><div class="absolute text-gray-400 dark:text-gray-500 group-hover:text-primary dark:group-hover:text-primary-light top-5 right-5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="m-0.5 size-3 shrink-0"><path d="M14.25 3.75L3.75525 14.2446" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.71301 3.75H14.2499V13.2869" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div><div aria-hidden="true" class="size-6 fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100 [&amp;&gt;svg]:size-6" data-component-part="card-icon"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-6 m-0! shrink-0 bg-primary dark:bg-primary-light" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/diagram-project.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/diagram-project.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></div><div class="w-full"><h2 id="_R_3hpbb9qnpfb39p7b9snpfiutb_" class="not-prose font-semibold text-base text-gray-800 dark:text-white" contentEditable="false" data-component-part="card-title">How Claude Tag works</h2><div id="_R_3hpbb9qnpfb39p7b9snpfiutbH1_" class="prose font-normal text-base text-gray-600 dark:text-gray-400 leading-6 mt-0" data-component-part="card-content"><span data-as="p">The session model, what it can read, and how memory follows places</span></div></div></div></div><div class="card block font-normal group relative my-2 ring-2 ring-transparent rounded-2xl bg-white dark:bg-background-dark border border-gray-950/10 dark:border-white/10 overflow-hidden w-full cursor-pointer hover:border-primary! dark:hover:border-primary-light!" aria-labelledby="_R_4hpbb9qnpfb39p7b9snpfiutb_" tabindex="0" role="link"><div class="px-6 py-5 relative flex items-center gap-x-4" data-component-part="card-content-container"><div class="absolute text-gray-400 dark:text-gray-500 group-hover:text-primary dark:group-hover:text-primary-light top-5 right-5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="m-0.5 size-3 shrink-0"><path d="M14.25 3.75L3.75525 14.2446" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.71301 3.75H14.2499V13.2869" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div><div aria-hidden="true" class="size-6 fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100 [&amp;&gt;svg]:size-6" data-component-part="card-icon"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-6 m-0! shrink-0 bg-primary dark:bg-primary-light" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/list.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/list.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></div><div class="w-full"><h2 id="_R_4hpbb9qnpfb39p7b9snpfiutb_" class="not-prose font-semibold text-base text-gray-800 dark:text-white" contentEditable="false" data-component-part="card-title">Use case library</h2><div id="_R_4hpbb9qnpfb39p7b9snpfiutbH1_" class="prose font-normal text-base text-gray-600 dark:text-gray-400 leading-6 mt-0" data-component-part="card-content"><span data-as="p">Prompts to paste, by team and connection</span></div></div></div></div></div></div><div class="feedback-toolbar pb-16 w-full flex flex-col gap-y-8"><div class="flex flex-row flex-wrap gap-4 items-center justify-between"><p class="inline-block text-sm text-gray-600 dark:text-gray-400 whitespace-nowrap">Was this page helpful?</p><div class="flex flex-wrap grow gap-3 items-center justify-end"><div class="flex gap-3 items-center"><button id="feedback-thumbs-up" class="px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-current"><path d="M5.25 7.494C5.25 7.014 5.423 6.55 5.736 6.187L10 1.25C10.854 1.677 11.25 2.678 10.92 3.574L9.75 6.75H14.152C15.465 6.75 16.421 7.993 16.085 9.262L14.894 13.762C14.662 14.639 13.868 15.25 12.961 15.25H7.25C6.145 15.25 5.25 14.355 5.25 13.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.25 6.75H2.75C2.19772 6.75 1.75 7.19772 1.75 7.75V14.25C1.75 14.8023 2.19772 15.25 2.75 15.25H4.25C4.80228 15.25 5.25 14.8023 5.25 14.25V7.75C5.25 7.19772 4.80228 6.75 4.25 6.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><small class="text-sm font-normal leading-4">Yes</small></button><button id="feedback-thumbs-down" class="px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-current"><path d="M5.25 10.506C5.25 10.986 5.423 11.45 5.736 11.813L10 16.75C10.854 16.323 11.25 15.322 10.92 14.426L9.75 11.25H14.152C15.465 11.25 16.421 10.007 16.085 8.738L14.894 4.238C14.662 3.361 13.868 2.75 12.961 2.75H7.25C6.145 2.75 5.25 3.645 5.25 4.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.25 2.75H2.75C2.19772 2.75 1.75 3.19772 1.75 3.75V10.25C1.75 10.8023 2.19772 11.25 2.75 11.25H4.25C4.80228 11.25 5.25 10.8023 5.25 10.25V3.75C5.25 3.19772 4.80228 2.75 4.25 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><small class="text-sm font-normal leading-4">No</small></button></div><div class="flex gap-3"></div></div></div></div><nav id="pagination" aria-label="Pagination" class="px-0.5 flex items-center gap-6 text-sm font-semibold text-gray-700 dark:text-gray-200"><a rel="next" aria-label="Next: How Claude Tag works" data-component-part="pagination-next" class="group flex items-center min-w-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light gap-3 rounded-sm ml-auto pagination-next" href="/docs/claude-tag/concepts/how-it-works"><div class="truncate group-hover:text-gray-900 dark:group-hover:text-white" data-component-part="pagination-title">How Claude Tag works</div><svg viewBox="0 0 3 6" aria-hidden="true" data-component-part="pagination-chevron" class="h-1.5 shrink-0 stroke-gray-400 overflow-visible group-hover:stroke-gray-600 dark:group-hover:stroke-gray-300 rotate-180"><path d="M3 0L0 3L3 6" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></nav><div data-assistant-bar="" class="left-0 right-0 sticky bottom-0 w-full overflow-hidden z-20 pointer-events-none print:hidden"><div class="chat-assistant-floating-input w-full group/assistant-bar relative translate-y-[100px] opacity-0"><div class="relative pb-4 sm:pb-6 max-w-2xl mx-auto"><div class="flex flex-col w-full rounded-2xl pointer-events-auto bg-background-light dark:bg-background-dark border border-gray-200 dark:border-white/10 focus-within:border-primary dark:focus-within:border-primary-light transition-colors"><div class="relative flex items-end"><textarea id="chat-assistant-textarea" aria-label="Ask a question..." autoComplete="off" placeholder="Ask a question..." class="chat-assistant-input w-full bg-transparent border-0 peer/input text-gray-900 dark:text-gray-100 placeholder-gray-600 dark:placeholder-gray-300 outline-hidden! focus:outline-hidden! focus:ring-0 py-2.5 pl-3.5 pr-10 font-bodyWeight text-sm" style="resize:none"></textarea><button class="chat-assistant-send-button flex justify-center items-center rounded-full p-1 size-6 bg-primary/30 dark:bg-primary-dark/30 absolute right-2.5 bottom-2" aria-label="Send message" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-white dark:text-white"><path d="M9.0 1.5754L8.9999 16.4171" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.2563 8.319L8.9999 1.5754L15.7435 8.3191" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div></div></div></div></div></main></div><footer id="footer" class="advanced-footer flex flex-col items-center mx-auto border-t border-gray-100 dark:border-gray-800/50 peer-[.is-custom]:hidden! peer-[.is-custom]:sm:hidden! peer-[.is-custom]:md:hidden! peer-[.is-custom]:lg:hidden! peer-[.is-custom]:xl:hidden!"><div class="flex w-full flex-col gap-12 justify-between px-8 py-16 md:py-20 lg:py-28 max-w-246 z-20"><div class="flex flex-col md:flex-row gap-8 justify-between min-h-19"><div class="flex md:flex-col justify-between items-center md:items-start min-w-16 md:min-w-20 lg:min-w-48 md:gap-y-24"><a class="select-none" style="-webkit-touch-callout:none" href="/docs"><span class="sr-only">Claude.ai Documentation<!-- --> home page</span><img class="nav-logo w-auto relative object-contain shrink-0 block dark:hidden max-w-48 h-[26px]" src="https://mintcdn.com/claude-ai/1fyDNLAICe3KG6rB/logo/light.svg?fit=max&amp;auto=format&amp;n=1fyDNLAICe3KG6rB&amp;q=85&amp;s=e870c19cb781d8a7c7b7d19de53b0a10" alt="light logo"/><img class="nav-logo w-auto relative object-contain shrink-0 hidden dark:block max-w-48 h-[26px]" src="https://mintcdn.com/claude-ai/1fyDNLAICe3KG6rB/logo/dark.svg?fit=max&amp;auto=format&amp;n=1fyDNLAICe3KG6rB&amp;q=85&amp;s=80cc0b06d8fd9aeefec8acb226de6866" alt="dark logo"/></a><div class="gap-4 min-w-[140px] max-w-[492px] flex-wrap h-fit flex justify-end md:justify-start"><a href="https://x.com/AnthropicAI" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">x</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/x-twitter.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/x-twitter.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://www.linkedin.com/company/anthropicresearch" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">linkedin</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/linkedin.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/linkedin.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a></div></div><div class="flex flex-col sm:grid max-md:grid-cols-2! gap-8 flex-1" style="grid-template-columns:repeat(4, minmax(0, 1fr))"><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Company</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/company" target="_blank" rel="noreferrer">Anthropic</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/careers" target="_blank" rel="noreferrer">Careers</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/economic-futures" target="_blank" rel="noreferrer">Economic Futures</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/research" target="_blank" rel="noreferrer">Research</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/news" target="_blank" rel="noreferrer">News</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://trust.anthropic.com/" target="_blank" rel="noreferrer">Trust center</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/transparency" target="_blank" rel="noreferrer">Transparency</a></div></div><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Help and security</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/supported-countries" target="_blank" rel="noreferrer">Availability</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://status.anthropic.com/" target="_blank" rel="noreferrer">Status</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://support.claude.com/" target="_blank" rel="noreferrer">Support center</a></div></div><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Learn</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://academy.claude.com/" target="_blank" rel="noreferrer">Courses</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://claude.com/partners/mcp" target="_blank" rel="noreferrer">MCP connectors</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.claude.com/customers" target="_blank" rel="noreferrer">Customer stories</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/engineering" target="_blank" rel="noreferrer">Engineering blog</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/events" target="_blank" rel="noreferrer">Events</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://claude.com/partners/powered-by-claude" target="_blank" rel="noreferrer">Powered by Claude</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://claude.com/partners/services" target="_blank" rel="noreferrer">Service partners</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://claude.com/programs/startups" target="_blank" rel="noreferrer">Startups program</a></div></div><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Terms and policies</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/legal/privacy" target="_blank" rel="noreferrer">Privacy policy</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/responsible-disclosure-policy" target="_blank" rel="noreferrer">Disclosure policy</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/legal/aup" target="_blank" rel="noreferrer">Usage policy</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/legal/commercial-terms" target="_blank" rel="noreferrer">Commercial terms</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://www.anthropic.com/legal/consumer-terms" target="_blank" rel="noreferrer">Consumer terms</a></div></div></div></div></div></footer><!--$--><!--/$--></div><!--$?--><template id="B:0"></template><!--/$--></div></div><script>requestAnimationFrame(function(){$RT=performance.now()});</script><script src="/docs/_next/static/chunks/3fcb76f539c93820.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF" id="_R_" async=""></script><div hidden id="S:0"><div data-assistant-sheet-container="" class="sticky shrink-0 z-22 bg-background-light dark:bg-background-dark mt-(--banner-height,0px) top-(--banner-height,0px) h-[calc(100vh-var(--banner-height,0px))] max-lg:hidden print:hidden" style="width:var(--assistant-sheet-width, 0px);overflow:hidden"><div class="absolute left-0 top-0 bottom-0 w-px z-10 cursor-col-resize after:content-[&quot;&quot;] after:absolute after:inset-y-0 after:-inset-x-2 after:select-none bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"></div><div id="chat-assistant-sheet" class="flex flex-col overflow-hidden shrink-0 relative h-full bg-background-light dark:bg-background-dark chat-assistant-sheet" aria-hidden="true"><div class="w-full flex flex-col flex-1 min-h-0 lg:pt-3"><div class="chat-assistant-sheet-header flex items-center justify-between pb-3 px-4"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-5 text-primary dark:text-primary-light shrink-0" aria-hidden="true"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="font-medium text-gray-900 dark:text-gray-100">Assistant</span></div><div class="flex items-center gap-1"><button class="group hover:bg-gray-100 dark:hover:bg-white/10 p-1.5 rounded-lg" aria-label="Maximize assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4 sm:size-3.5 text-gray-500 group-hover:text-gray-700 dark:group-hover:text-gray-300 shrink-0"><path d="M10.75 2.75H15.25V7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M15.25 2.75L10.75 7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 10.75V15.25H7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 15.25L7.25 10.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button class="group hover:bg-gray-100 dark:hover:bg-white/10 p-1.5 rounded-lg" aria-label="Close assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-[20px] sm:size-4 text-gray-500 group-hover:text-gray-700 dark:group-hover:text-gray-300 shrink-0"><path d="M14 4L4 14" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4 4L14 14" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div id="chat-content" class="chat-assistant-sheet-content flex flex-col-reverse flex-1 overflow-y-auto relative px-5 min-h-0"><div class="grow"></div><div class="h-full flex flex-col justify-between"><div class="mt-4 flex flex-col items-center text-sm"><div class="mx-8 text-center text-gray-400 dark:text-gray-600 text-xs chat-assistant-disclaimer-text">Responses are generated using AI and may contain mistakes.</div></div></div></div><div class="px-4 pb-4 shrink-0"><div class=""><div class="flex flex-col w-full rounded-2xl pointer-events-auto bg-background-light dark:bg-background-dark border border-gray-200 dark:border-white/10 focus-within:border-primary dark:focus-within:border-primary-light transition-colors"><div class="relative flex items-end"><textarea id="chat-assistant-textarea" aria-label="Ask a question..." autoComplete="off" placeholder="Ask a question..." class="chat-assistant-input w-full bg-transparent border-0 peer/input text-gray-900 dark:text-gray-100 placeholder-gray-600 dark:placeholder-gray-300 outline-hidden! focus:outline-hidden! focus:ring-0 py-2.5 pl-3.5 pr-10 font-bodyWeight text-sm pb-0!" style="resize:none" rows="2"></textarea></div><div class="flex items-center justify-between px-2 pb-2"><input type="file" accept="image/*,.pdf,.js,.jsx,.ts,.tsx,.mjs,.cjs,.md,.mdx,.json,.html,.css,.py,.csv,.txt,.yaml,.yml,.xml,.sql,.sh,.bash,.zsh,.graphql,.gql,.toml,.env,.go,.rs,.rb,.java,.kt,.swift,.c,.cpp,.cc,.h,.hpp,.cs,.php,.dart,.lua,.r,.scala,.ini,.cfg,.conf,.log,.dockerfile,.makefile,.gitignore" multiple="" class="hidden"/><button type="button" class="p-1 rounded-lg text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 hover:bg-gray-100 dark:hover:bg-white/10" aria-label="Add attachment"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3.5 shrink-0"><path d="M7.75 5V11.75C7.75 12.578 8.422 13.25 9.25 13.25C10.078 13.25 10.75 12.578 10.75 11.75V4.75C10.75 3.093 9.407 1.75 7.75 1.75C6.093 1.75 4.75 3.093 4.75 4.75V11.75C4.75 14.235 6.765 16.25 9.25 16.25C11.735 16.25 13.75 14.235 13.75 11.75V5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button class="chat-assistant-send-button flex justify-center items-center rounded-full p-1 size-6 bg-primary/30 dark:bg-primary-dark/30" aria-label="Send message" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-white dark:text-white"><path d="M9.0 1.5754L8.9999 16.4171" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.2563 8.319L8.9999 1.5754L15.7435 8.3191" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div></div></div></div></div></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
2980$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\nb:I[168027,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n:HL[\"/docs/_next/static/chunks/1ddb69276dca9f27.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"style\"]\n:HL[\"/docs/_next/static/chunks/3c9b5f741727f3e1.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"style\"]\n:HL[\"/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/docs/_next/static/media/PaperMono_Variable.p.4fb029ee.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"4i_7bawE4T1atzoNOddtb\",\"p\":\"/docs\",\"c\":[\"\",\"_sites\",\"claude-ai\",\"claude-tag\",\"overview\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"%5Fsites\",{\"children\":[[\"subdomain\",\"claude-ai\",\"d\"],{\"children\":[\"(multitenant)\",{\"children\":[[\"slug\",\"claude-tag/overview\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/1ddb69276dca9f27.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/3c9b5f741727f3e1.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"suppressHydrationWarning\":true,\"lang\":\"en\",\"className\":\"inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark\",\"data-banner-state\":\"visible\",\"data-assistant-state\":\"closed\",\"data-page-mode\":\"none\",\"data-current-path\":\"/\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){var b=\\\"/docs\\\";\\nfunction a(p){if(p==null)return\\\"/\\\";p=\\\"\\\"+p;if(\\\"\\\"===p)return\\\"/\\\";return\\\"/\\\"===p.charAt(0)?p:\\\"/\\\"+p}\\nfunction u(p){if(p==null)return p;p=\\\"\\\"+p;if(!p||p.charAt(p.length-1)===\\\"/\\\")return p.slice(0,-1);return p}\\nfunction i(p){if(p==null)return p;p=\\\"\\\"+p;if(6\u003c=p.length\u0026\u0026p.substring(p.length-6)===\\\"/index\\\")return p.substring(0,p.length-6);if(\\\"index\\\"===p)return\\\"\\\";return p}\\nvar p=(location.pathname||\\\"\\\").split(\\\"?\\\")[0].split(\\\"#\\\")[0]||\\\"\\\";\\nif(b)if(p===b)p=\\\"\\\";else if(0===p.indexOf(b+\\\"/\\\"))p=p.substring(b.length);\\np=a(p);p=u(p);p=i(p);p=\\\"\\\"===p||\\\"index\\\"===p?\\\"/\\\":a(p);\\ndocument.documentElement.setAttribute(\\\"data-current-path\\\",p);\\n}();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(() =\u003e {\\n const isIOS =\\n /iP(hone|ad|od)/.test(navigator.userAgent) ||\\n (/Macintosh/.test(navigator.userAgent) \u0026\u0026 navigator.maxTouchPoints \u003e 1);\\n if (!isIOS) return;\\n const apply = () =\u003e {\\n for (const meta of document.querySelectorAll('meta[name=\\\"viewport\\\"]')) {\\n const content = meta.getAttribute('content') || '';\\n if (!content.includes('maximum-scale')) {\\n meta.setAttribute('content', content + ', maximum-scale=1');\\n }\\n }\\n };\\n apply();\\n new MutationObserver(apply).observe(document.head, {\\n childList: true,\\n subtree: true,\\n attributes: true,\\n attributeFilter: ['content'],\\n });\\n})();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){\\nfunction read(){try{\\nvar e=performance.getEntriesByType?performance.getEntriesByType(\\\"navigation\\\"):[];\\nvar st=(e[0]\u0026\u0026e[0].serverTiming)||[];\\nvar g={};\\nfor(var i=0;i\u003cst.length;i++){var n=st[i].name,d=st[i].description;if(!d)continue;try{d=decodeURIComponent(d)}catch(x){}\\nif(n===\\\"country\\\")g.country=d;else if(n===\\\"region\\\")g.region=d;else if(n===\\\"continent\\\")g.continent=d;}\\nvar w=window;w.mintlify=w.mintlify||{};w.mintlify.geo=g;\\n}catch(x){}}\\nread();document.addEventListener(\\\"DOMContentLoaded\\\",read);\\n}();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){try{\\nvar w=window;w.mintlify=w.mintlify||{};\\nvar q=w.mintlify.__apiPlaygroundInputsQueue;\\nif(!Array.isArray(q)){q=[];w.mintlify.__apiPlaygroundInputsQueue=q;}\\nw.mintlify.api=w.mintlify.api||{};\\nw.mintlify.api.playground=w.mintlify.api.playground||{};\\nif(typeof w.mintlify.api.playground.setServerVariables!==\\\"function\\\"){\\nw.mintlify.api.playground.setServerVariables=function(v){q.push({type:\\\"set\\\",variables:v});};\\n}\\nif(typeof w.mintlify.api.playground.clearServerVariables!==\\\"function\\\"){\\nw.mintlify.api.playground.clearServerVariables=function(){q.push({type:\\\"clear\\\"});};\\n}\\n}catch(e){}}();\"}}],\"$L2\",\"$L3\",false]}],\"$L4\"]}]]}],{\"children\":[\"%5Fsites\",\"$L5\",{\"children\":[[\"subdomain\",\"claude-ai\",\"d\"],\"$L6\",{\"children\":[\"(multitenant)\",\"$L7\",{\"children\":[[\"slug\",\"claude-tag/overview\",\"oc\"],\"$L8\",{\"children\":[\"__PAGE__\",\"$L9\",{},null,false]},null,false]},null,false]},null,false]},null,false]},null,false],\"$La\",false]],\"m\":\"$undefined\",\"G\":[\"$b\",[\"$Lc\",\"$Ld\"]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"e:I[667786,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"MintlifyApiPlaygroundInputsInit\"]\nf:I[339756,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n10:I[556357,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/0ff6177de280ba78.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n11:I[837457,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"12:I[894587,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"ThemeProvider\"]\n"])</script><script>self.__next_f.push([1,"13:I[152823,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"ColorVariables\"]\n"])</script><script>self.__next_f.push([1,"14:I[531961,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"FontScript\"]\n"])</script><script>self.__next_f.push([1,"15:I[649328,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"RoundedVariables\"]\n"])</script><script>self.__next_f.push([1,"16:I[702910,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/cca0190f4304f860.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"RecommendedPagesList\"]\n17:I[570420,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"DataCurrentPathUpdater\"]\n18:I[172816,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"MintlifyNavigateEvents\"]\n19:I[341175,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/039bc0429cecf5cc.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n1c:I[897367,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"OutletBoundary\"]\n1e:I[711533,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"AsyncMetadataOutlet\"]\n20:I[897367,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add9"])</script><script>self.__next_f.push([1,"3a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"ViewportBoundary\"]\n22:I[897367,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"MetadataBoundary\"]\n23:\"$Sreact.suspense\"\n2:[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){\\nif(typeof CSS===\\\"undefined\\\"||!(\\\"registerProperty\\\" in CSS))return;\\nif(CSS.supports\u0026\u0026CSS.supports(\\\"-webkit-backdrop-filter:none\\\"))return;\\nvar n=[\\\"--scroll-area-overflow-x-start\\\",\\\"--scroll-area-overflow-x-end\\\",\\\"--scroll-area-overflow-y-start\\\",\\\"--scroll-area-overflow-y-end\\\"];\\nvar d={\\\"syntax\\\":\\\"\u003clength\u003e\\\",\\\"inherits\\\":false,\\\"initialValue\\\":\\\"0px\\\"};\\nfor(var i=0;i\u003cn.length;i++){try{CSS.registerProperty({name:n[i],syntax:d.syntax,inherits:d.inherits,initialValue:d.initialValue})}catch(e){}}\\n})();\"}}]\n"])</script><script>self.__next_f.push([1,"3:[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(a,b){try{let c=document.getElementById(\\\"banner\\\")?.innerText;if(c){for(let d=0;d\u003clocalStorage.length;d++){let e=localStorage.key(d);if(e?.endsWith(a)\u0026\u0026localStorage.getItem(e)===c)return void document.documentElement.setAttribute(b,\\\"hidden\\\")}document.documentElement.setAttribute(b,\\\"visible\\\");return}for(let c=0;c\u003clocalStorage.length;c++){let d=localStorage.key(c);if(d?.endsWith(a)\u0026\u0026localStorage.getItem(d))return void document.documentElement.setAttribute(b,\\\"hidden\\\")}document.documentElement.setAttribute(b,\\\"visible\\\")}catch(a){document.documentElement.setAttribute(b,\\\"hidden\\\")}})(\\n \\\"bannerDismissed\\\",\\n \\\"data-banner-state\\\",\\n)\"}}]\n"])</script><script>self.__next_f.push([1,"4:[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[[\"$\",\"$Le\",null,{}],false,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$10\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/0ff6177de280ba78.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}]],\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L12\",null,{\"children\":[[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}],[\"$\",\"$L15\",null,{}],[\"$\",\"style\",null,{\"children\":\":root {\\n --primary: 17 120 102;\\n --primary-light: 74 222 128;\\n --primary-dark: 22 101 52;\\n --background-light: 255 255 255;\\n --background-dark: 15 17 23;\\n}\"}],[\"$\",\"main\",null,{\"className\":\"h-screen bg-background-light dark:bg-background-dark text-left\",\"children\":[\"$\",\"article\",null,{\"className\":\"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-xl px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary\",\"children\":[\"Error \",404]}],[\"$\",\"h1\",null,{\"className\":\"font-semibold mb-3 text-3xl\",\"children\":\"Page not found!\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-gray-600 dark:text-gray-400 mb-6\",\"children\":\"We couldn't find the page.\"}],[\"$\",\"$L16\",null,{}]]}]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],false,[\"$\",\"$L17\",null,{}],[\"$\",\"$L18\",null,{}]]}]\n"])</script><script>self.__next_f.push([1,"5:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$19\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/039bc0429cecf5cc.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}]],\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L12\",null,{\"children\":[[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}],[\"$\",\"$L15\",null,{}],[\"$\",\"style\",null,{\"children\":\":root {\\n --primary: 17 120 102;\\n --primary-light: 74 222 128;\\n --primary-dark: 22 101 52;\\n --background-light: 255 255 255;\\n --background-dark: 15 17 23;\\n}\"}],[\"$\",\"main\",null,{\"className\":\"h-screen bg-background-light dark:bg-background-dark text-left\",\"children\":[\"$\",\"article\",null,{\"className\":\"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-xl px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary\",\"children\":[\"Error \",404]}],[\"$\",\"h1\",null,{\"className\":\"font-semibold mb-3 text-3xl\",\"children\":\"Page not found!\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-gray-600 dark:text-gray-400 mb-6\",\"children\":\"We couldn't find the page.\"}],[\"$\",\"$L16\",null,{}]]}]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-11\",{\"src\":\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-12\",{\"src\":\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-13\",{\"src\":\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-14\",{\"src\":\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-15\",{\"src\":\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-16\",{\"src\":\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-17\",{\"src\":\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-18\",{\"src\":\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L1a\"]}]\n"])</script><script>self.__next_f.push([1,"8:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"9:[\"$\",\"$1\",\"c\",{\"children\":[\"$L1b\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L1c\",null,{\"children\":[\"$L1d\",[\"$\",\"$L1e\",null,{\"promise\":\"$@1f\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"a:[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L20\",null,{\"children\":\"$L21\"}],null],[\"$\",\"$L22\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$23\",null,{\"fallback\":null,\"children\":\"$L24\"}]}]}]]}]\nc:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/1ddb69276dca9f27.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\nd:[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/3c9b5f741727f3e1.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"21:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover\"}]]\n1d:null\n"])</script><script>self.__next_f.push([1,"1f:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Work with Claude Tag - Claude.ai Documentation\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Claude.ai Documentation\"}],[\"$\",\"meta\",\"3\",{\"name\":\"generator\",\"content\":\"Mintlify\"}],[\"$\",\"meta\",\"4\",{\"name\":\"msapplication-config\",\"content\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/browserconfig.xml\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Claude.ai Documentation\"}],[\"$\",\"meta\",\"6\",{\"name\":\"msapplication-TileColor\",\"content\":\"#0E0E0E\"}],[\"$\",\"link\",\"7\",{\"rel\":\"canonical\",\"href\":\"https://claude.com/docs/claude-tag/overview\"}],[\"$\",\"link\",\"8\",{\"rel\":\"alternate\",\"type\":\"application/xml\",\"href\":\"/docs/sitemap.xml\"}],[\"$\",\"link\",\"9\",{\"rel\":\"alternate\",\"type\":\"text/markdown\",\"href\":\"/docs/claude-tag/overview.md\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:title\",\"content\":\"Work with Claude Tag - Claude.ai Documentation\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:description\",\"content\":\"Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user.\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:url\",\"content\":\"https://claude.com/docs/claude-tag/overview\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:site_name\",\"content\":\"Claude.ai Documentation\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://claude-ai.mintlify.app/_mintlify/api/og/v2?division=+\u0026title=Work+with+Claude+Tag\u0026description=Claude+Tag+puts+Claude+in+your+Slack+channels+with+admin-governed+access.+See+what+to+hand+it%2C+how+setup+works%2C+and+where+to+start+as+an+admin+or+end+user.\u0026theme=6f9b6bab2d50cee40d7f721c\u0026signature=dfec9fe4dcc74f7175c92715c4f3a03f6dbb5085061caae643b7c8f841431e60\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:title\",\"content\":\"Work with Claude Tag - Claude.ai Documentation\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:description\",\"content\":\"Claude Tag puts Claude in your Slack channels with admin-governed access. See what to hand it, how setup works, and where to start as an admin or end user.\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image\",\"content\":\"https://claude-ai.mintlify.app/_mintlify/api/og/v2?division=+\u0026title=Work+with+Claude+Tag\u0026description=Claude+Tag+puts+Claude+in+your+Slack+channels+with+admin-governed+access.+See+what+to+hand+it%2C+how+setup+works%2C+and+where+to+start+as+an+admin+or+end+user.\u0026theme=6f9b6bab2d50cee40d7f721c\u0026signature=dfec9fe4dcc74f7175c92715c4f3a03f6dbb5085061caae643b7c8f841431e60\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"24\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/android-chrome-192x192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"link\",\"25\",{\"rel\":\"apple-touch-icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/apple-touch-icon.png\",\"type\":\"image/png\",\"sizes\":\"180x180\",\"media\":\"$undefined\"}],[\"$\",\"link\",\"26\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon-16x16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"link\",\"27\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon-32x32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"media\":\"(prefers-color-scheme: light)\"}],\"$L25\",\"$L26\",\"$L27\",\"$L28\",\"$L29\",\"$L2a\"],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"24:\"$1f:metadata\"\n"])</script><script>self.__next_f.push([1,"2b:I[27201,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"IconMark\"]\n25:[\"$\",\"link\",\"28\",{\"rel\":\"shortcut icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"$undefined\",\"media\":\"(prefers-color-scheme: light)\"}]\n26:[\"$\",\"link\",\"29\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/android-chrome-192x192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\",\"media\":\"(prefers-color-scheme: dark)\"}]\n27:[\"$\",\"link\",\"30\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon-16x16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"media\":\"(prefers-color-scheme: dark)\"}]\n28:[\"$\",\"link\",\"31\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon-32x32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"media\":\"(prefers-color-scheme: dark)\"}]\n29:[\"$\",\"link\",\"32\",{\"rel\":\"shortcut icon\",\"href\":\"/docs/_mintlify/favicons/claude-ai/zHw4o4W7dZma2XXV/_generated/favicon-dark/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"$undefined\",\"media\":\"(prefers-color-scheme: dark)\"}]\n2a:[\"$\",\"$L2b\",\"33\",{}]\n"])</script><script>self.__next_f.push([1,"2c:I[707934,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"WebMcpRegistration\"]\n"])</script><script>self.__next_f.push([1,"2d:I[590280,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"LivePreviewProvider\"]\n"])</script><script>self.__next_f.push([1,"2e:I[973254,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"LivePreviewFavicon\"]\n"])</script><script>self.__next_f.push([1,"2f:I[197336,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"30:I[91557,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"AuthProvider\"]\n"])</script><script>self.__next_f.push([1,"31:I[91557,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6
2980$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\nb:I[168027,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n:HL[\"/docs/_next/static/chunks/1ddb69276dca9f27.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"style\"]\n:HL[\"/docs/_next/static/chunks/3c9b5f741727f3e1.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"style\"]\n:HL[\"/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/docs/_next/static/media/PaperMono_Variable.p.4fb029ee.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"4i_7bawE4T1atzoNOddtb\",\"p\":\"/docs\",\"c\":[\"\",\"_sites\",\"claude-ai\",\"claude-tag\",\"overview\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"%5Fsites\",{\"children\":[[\"subdomain\",\"claude-ai\",\"d\"],{\"children\":[\"(multitenant)\",{\"children\":[[\"slug\",\"claude-tag/overview\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/1ddb69276dca9f27.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/3c9b5f741727f3e1.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"suppressHydrationWarning\":true,\"lang\":\"en\",\"className\":\"inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark\",\"data-banner-state\":\"visible\",\"data-assistant-state\":\"closed\",\"data-page-mode\":\"none\",\"data-current-path\":\"/\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){var b=\\\"/docs\\\";\\nfunction a(p){if(p==null)return\\\"/\\\";p=\\\"\\\"+p;if(\\\"\\\"===p)return\\\"/\\\";return\\\"/\\\"===p.charAt(0)?p:\\\"/\\\"+p}\\nfunction u(p){if(p==null)return p;p=\\\"\\\"+p;if(!p||p.charAt(p.length-1)===\\\"/\\\")return p.slice(0,-1);return p}\\nfunction i(p){if(p==null)return p;p=\\\"\\\"+p;if(6\u003c=p.length\u0026\u0026p.substring(p.length-6)===\\\"/index\\\")return p.substring(0,p.length-6);if(\\\"index\\\"===p)return\\\"\\\";return p}\\nvar p=(location.pathname||\\\"\\\").split(\\\"?\\\")[0].split(\\\"#\\\")[0]||\\\"\\\";\\nif(b)if(p===b)p=\\\"\\\";else if(0===p.indexOf(b+\\\"/\\\"))p=p.substring(b.length);\\np=a(p);p=u(p);p=i(p);p=\\\"\\\"===p||\\\"index\\\"===p?\\\"/\\\":a(p);\\ndocument.documentElement.setAttribute(\\\"data-current-path\\\",p);\\n}();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(() =\u003e {\\n const isIOS =\\n /iP(hone|ad|od)/.test(navigator.userAgent) ||\\n (/Macintosh/.test(navigator.userAgent) \u0026\u0026 navigator.maxTouchPoints \u003e 1);\\n if (!isIOS) return;\\n const apply = () =\u003e {\\n for (const meta of document.querySelectorAll('meta[name=\\\"viewport\\\"]')) {\\n const content = meta.getAttribute('content') || '';\\n if (!content.includes('maximum-scale')) {\\n meta.setAttribute('content', content + ', maximum-scale=1');\\n }\\n }\\n };\\n apply();\\n new MutationObserver(apply).observe(document.head, {\\n childList: true,\\n subtree: true,\\n attributes: true,\\n attributeFilter: ['content'],\\n });\\n})();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){\\nfunction read(){try{\\nvar e=performance.getEntriesByType?performance.getEntriesByType(\\\"navigation\\\"):[];\\nvar st=(e[0]\u0026\u0026e[0].serverTiming)||[];\\nvar g={};\\nfor(var i=0;i\u003cst.length;i++){var n=st[i].name,d=st[i].description;if(!d)continue;try{d=decodeURIComponent(d)}catch(x){}\\nif(n===\\\"country\\\")g.country=d;else if(n===\\\"region\\\")g.region=d;else if(n===\\\"continent\\\")g.continent=d;}\\nvar w=window;w.mintlify=w.mintlify||{};w.mintlify.geo=g;\\n}catch(x){}}\\nread();document.addEventListener(\\\"DOMContentLoaded\\\",read);\\n}();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){try{\\nvar w=window;w.mintlify=w.mintlify||{};\\nvar q=w.mintlify.__apiPlaygroundInputsQueue;\\nif(!Array.isArray(q)){q=[];w.mintlify.__apiPlaygroundInputsQueue=q;}\\nw.mintlify.api=w.mintlify.api||{};\\nw.mintlify.api.playground=w.mintlify.api.playground||{};\\nif(typeof w.mintlify.api.playground.setServerVariables!==\\\"function\\\"){\\nw.mintlify.api.playground.setServerVariables=function(v){q.push({type:\\\"set\\\",variables:v});};\\n}\\nif(typeof w.mintlify.api.playground.clearServerVariables!==\\\"function\\\"){\\nw.mintlify.api.playground.clearServerVariables=function(){q.push({type:\\\"clear\\\"});};\\n}\\n}catch(e){}}();\"}}],\"$L2\",\"$L3\",false]}],\"$L4\"]}]]}],{\"children\":[\"%5Fsites\",\"$L5\",{\"children\":[[\"subdomain\",\"claude-ai\",\"d\"],\"$L6\",{\"children\":[\"(multitenant)\",\"$L7\",{\"children\":[[\"slug\",\"claude-tag/overview\",\"oc\"],\"$L8\",{\"children\":[\"__PAGE__\",\"$L9\",{},null,false]},null,false]},null,false]},null,false]},null,false]},null,false],\"$La\",false]],\"m\":\"$undefined\",\"G\":[\"$b\",[\"$Lc\",\"$Ld\"]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"e:I[667786,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"MintlifyApiPlaygroundInputsInit\"]\nf:I[339756,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n10:I[556357,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/0ff6177de280ba78.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n11:I[837457,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"12:I[894587,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"ThemeProvider\"]\n"])</script><script>self.__next_f.push([1,"13:I[152823,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"ColorVariables\"]\n"])</script><script>self.__next_f.push([1,"14:I[531961,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"FontScript\"]\n"])</script><script>self.__next_f.push([1,"15:I[649328,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"RoundedVariables\"]\n"])</script><script>self.__next_f.push([1,"16:I[702910,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/cca0190f4304f860.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"RecommendedPagesList\"]\n17:I[570420,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"DataCurrentPathUpdater\"]\n18:I[172816,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"MintlifyNavigateEvents\"]\n19:I[341175,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/039bc0429cecf5cc.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n1c:I[897367,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"OutletBoundary\"]\n1e:I[711533,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"AsyncMetadataOutlet\"]\n20:I[897367,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add9"])</script><script>self.__next_f.push([1,"3a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"ViewportBoundary\"]\n22:I[897367,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"MetadataBoundary\"]\n23:\"$Sreact.suspense\"\n2:[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){\\nif(typeof CSS===\\\"undefined\\\"||!(\\\"registerProperty\\\" in CSS))return;\\nif(CSS.supports\u0026\u0026CSS.supports(\\\"-webkit-backdrop-filter:none\\\"))return;\\nvar n=[\\\"--scroll-area-overflow-x-start\\\",\\\"--scroll-area-overflow-x-end\\\",\\\"--scroll-area-overflow-y-start\\\",\\\"--scroll-area-overflow-y-end\\\"];\\nvar d={\\\"syntax\\\":\\\"\u003clength\u003e\\\",\\\"inherits\\\":false,\\\"initialValue\\\":\\\"0px\\\"};\\nfor(var i=0;i\u003cn.length;i++){try{CSS.registerProperty({name:n[i],syntax:d.syntax,inherits:d.inherits,initialValue:d.initialValue})}catch(e){}}\\n})();\"}}]\n"])</script><script>self.__next_f.push([1,"3:[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(a,b){try{let c=document.getElementById(\\\"banner\\\")?.innerText;if(c){for(let d=0;d\u003clocalStorage.length;d++){let e=localStorage.key(d);if(e?.endsWith(a)\u0026\u0026localStorage.getItem(e)===c)return void document.documentElement.setAttribute(b,\\\"hidden\\\")}document.documentElement.setAttribute(b,\\\"visible\\\");return}for(let c=0;c\u003clocalStorage.length;c++){let d=localStorage.key(c);if(d?.endsWith(a)\u0026\u0026localStorage.getItem(d))return void document.documentElement.setAttribute(b,\\\"hidden\\\")}document.documentElement.setAttribute(b,\\\"visible\\\")}catch(a){document.documentElement.setAttribute(b,\\\"hidden\\\")}})(\\n \\\"bannerDismissed\\\",\\n \\\"data-banner-state\\\",\\n)\"}}]\n"])</script><script>self.__next_f.push([1,"4:[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[[\"$\",\"$Le\",null,{}],false,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$10\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/0ff6177de280ba78.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}]],\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L12\",null,{\"children\":[[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}],[\"$\",\"$L15\",null,{}],[\"$\",\"style\",null,{\"children\":\":root {\\n --primary: 17 120 102;\\n --primary-light: 74 222 128;\\n --primary-dark: 22 101 52;\\n --background-light: 255 255 255;\\n --background-dark: 15 17 23;\\n}\"}],[\"$\",\"main\",null,{\"className\":\"h-screen bg-background-light dark:bg-background-dark text-left\",\"children\":[\"$\",\"article\",null,{\"className\":\"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-xl px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary\",\"children\":[\"Error \",404]}],[\"$\",\"h1\",null,{\"className\":\"font-semibold mb-3 text-3xl\",\"children\":\"Page not found!\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-gray-600 dark:text-gray-400 mb-6\",\"children\":\"We couldn't find the page.\"}],[\"$\",\"$L16\",null,{}]]}]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],false,[\"$\",\"$L17\",null,{}],[\"$\",\"$L18\",null,{}]]}]\n"])</script><script>self.__next_f.push([1,"5:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$19\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/039bc0429cecf5cc.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true}]],\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L12\",null,{\"children\":[[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}],[\"$\",\"$L15\",null,{}],[\"$\",\"style\",null,{\"children\":\":root {\\n --primary: 17 120 102;\\n --primary-light: 74 222 128;\\n --primary-dark: 22 101 52;\\n --background-light: 255 255 255;\\n --background-dark: 15 17 23;\\n}\"}],[\"$\",\"main\",null,{\"className\":\"h-screen bg-background-light dark:bg-background-dark text-left\",\"children\":[\"$\",\"article\",null,{\"className\":\"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-xl px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary\",\"children\":[\"Error \",404]}],[\"$\",\"h1\",null,{\"className\":\"font-semibold mb-3 text-3xl\",\"children\":\"Page not found!\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-gray-600 dark:text-gray-400 mb-6\",\"children\":\"We couldn't find the page.\"}],[\"$\",\"$L16\",null,{}]]}]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-11\",{\"src\":\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-12\",{\"src\":\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-13\",{\"src\":\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-14\",{\"src\":\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-15\",{\"src\":\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-16\",{\"src\":\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-17\",{\"src\":\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-18\",{\"src\":\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L1a\"]}]\n"])</script><script>self.__next_f.push([1,"8:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"9:[\"$\",\"$1\",\"c\",{\"children\":[\"$L1b\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L1c\",null,{\"children\":[\"$L1d\",[\"$\",\"$L1e\",null,{\"promise\":\"$@1f\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"a:[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L20\",null,{\"children\":\"$L21\"}],null],[\"$\",\"$L22\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$23\",null,{\"fallback\":null,\"children\":\"$L24\"}]}]}]]}]\nc:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/1ddb69276dca9f27.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\nd:[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/3c9b5f741727f3e1.css?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"21:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover\"}]]\n1d:null\n"])</script><script>self.__next_f.push([1,"25:I[707934,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"WebMcpRegistration\"]\n"])</script><script>self.__next_f.push([1,"26:I[590280,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"LivePreviewProvider\"]\n"])</script><script>self.__next_f.push([1,"27:I[973254,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"LivePreviewFavicon\"]\n"])</script><script>self.__next_f.push([1,"28:I[197336,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"29:I[91557,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"AuthProvider\"]\n"])</script><script>self.__next_f.push([1,"2a:I[91557,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"DeploymentMetadataProvider\"]\n"])</script><script>self.__next_f.push([1,"2b:I[91557,[\"/docs/_next/static/chunks/0ea0e179f06dc225.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c70be5d549af7392.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/668c7518d8d566b4.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/038935af0bc6ba8a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/220c6b0923b000f8.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/627c3e90ba983d93.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\",\"/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_6HGMckihw8AB4WCBDR61t7yeE9kF\"],\"DocsConfigProvider\"]\n"])</script><script>self.__next_f.push([1,"1a:[null,[\"$\",\"$L25\",null,{\"subdomain\":\"claude-ai\",\"siteName\":\"Claude.ai Documentation\"}],[\"$\",\"$L26\",null,{\"isLivePreviewRoute\":false,\"children\":[[\"$\",\"$L27\",null,{}],[\"$\",\"$L12\",null,{\"appearance\":\"$undefined\",\"codeblockTheme\":\"system\",\"children\":[[\"$\",\"blockquote\",null,{\"className\":\"sr-only\",\"data-agent-docs-index\":true,\"aria-hidden\":\"true\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Documentation Index\"}],[\"$\",\"p\",null,{\"children\":[\"Fetch the complete documentation index at:\",\" \",[\"$\",\"a\",null,{\"href\":\"/docs/llms.txt\",\"tabIndex\":-1,\"children\":\"/docs/llms.txt\"}]]}],[\"$\",\"p\",null,{\"children\":\"Use this file to discover all available pages before exploring further.\"}]]}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root{--banner-height:0px!important}\"}}],null,null,[\"$\",\"script\",null,{\"id\":\"_mintlify-banner-script\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function i(a,b,c,d,e){try{let f,g,h=[];try{h=window.location.pathname.split(\\\"/\\\").filter(a=\u003e\\\"\\\"!==a\u0026\u0026\\\"global\\\"!==a).slice(0,2)}catch{h=[]}let i=h.find(a=\u003ec.includes(a)),j=[];for(let c of(i?j.push(i):j.push(b),j.push(\\\"global\\\"),j)){if(!c)continue;let b=a[c];if(b?.content){f=b.content,g=c;break}}if(!f)return void document.documentElement.setAttribute(d,\\\"hidden\\\");let k=!0,l=0;for(;l\u003clocalStorage.length;){let a=localStorage.key(l);if(l++,!a?.endsWith(e))continue;let b=localStorage.getItem(a);if(b\u0026\u0026b===f){k=!1;break}g\u0026\u0026(a.startsWith(`lang:${g}_`)||!a.startsWith(\\\"lang:\\\"))\u0026\u0026(localStorage.removeItem(a),l--)}document.documentElement.setAttribute(d,k?\\\"visible\\\":\\\"hidden\\\")}catch(a){console.error(a),document.documentElement.setAttribute(d,\\\"hidden\\\")}})(\\n {},\\n \\\"en\\\",\\n [],\\n \\\"data-banner-state\\\",\\n \\\"bannerDismissed\\\",\\n)\"},\"suppressHydrationWarning\":true}],[\"$\",\"$L28\",null,{\"appId\":\"$undefined\",\"autoBoot\":true,\"children\":[\"$\",\"$L29\",null,{\"value\":{\"auth\":\"$undefined\",\"userAuth\":\"$undefined\"},\"children\":[\"$\",\"$L2a\",null,{\"value\":{\"subdomain\":\"claude-ai\",\"hasAudioNarration\":false,\"actualSubdomain\":\"claude-ai\",\"customDomains\":[\"claude.com\"],\"gitSource\":{\"type\":\"github\",\"owner\":\"anthropics\",\"repo\":\"claude-ai-docs\",\"deployBranch\":\"main\",\"contentDirectory\":\"\",\"isPrivate\":true,\"mountPath\":\"\",\"label\":\"\"},\"chroma\":{\"liveDeploymentHistoryId\":\"6ac964f010a5746bc964092f\",\"collectionId\":\"8f12593f-d407-4ade-98ab-1934768b6fcd\",\"schemaVersion\":\"v3\",\"latestBuiltDeploymentHistoryId\":\"6ac964f010a5746bc964092f\"},\"feedback\":{\"thumbs\":true},\"entitlements\":{\"AI_CHAT\":{\"status\":\"ENABLED\"},\"REMOVE_BRANDING\":{\"status\":\"ENABLED\"},\"CONTEXTUAL_FEEDBACK\":{\"status\":\"ENABLED\"},\"CODE_SNIPPET_FEEDBACK\":{\"status\":\"ENABLED\"},\"WEB_MCP\":{\"status\":\"ENABLED\"},\"NARRATION\":{\"status\":\"ENABLED\"}},\"buildId\":\"6ac964f010a5746bc964092f\",\"clientVersion\":\"0.0.3797\",\"preview\":\"$undefined\",\"searchFilter

cloud-environments Changed · +1 / -1 lines

from line 280
280280| Plugins and marketplaces declared in your repo's `.claude/settings.json` | No | A cloud session doesn't install the plugins a repository turns on under [`enabledPlugins`](/docs/en/settings-reference#enabledplugins), including ones from the marketplaces it lists under [`extraKnownMarketplaces`](/docs/en/settings-reference#extraknownmarketplaces) |
281281| Your organization's [server-managed settings](/docs/en/server-managed-settings) | Yes, except in [Claude Tag](https://claude.com/docs/claude-tag/overview) sessions | Fetched from Anthropic's servers when the session starts. See [Surface coverage](/docs/en/model-config#surface-coverage) for how `availableModels` is enforced in cloud sessions. Settings deployed to your device through MDM or managed settings files don't apply, because the session runs on an Anthropic-managed VM; in a [self-hosted environment](/docs/en/self-hosted-environments), sessions also read the managed settings file in the runner image, per [how Claude Code combines managed sources](/docs/en/managed-settings#how-claude-code-combines-managed-sources) |
282282| Your user `~/.claude/CLAUDE.md` | No | Lives on your machine, not in the repo. See [Add personal preferences without committing to the repo](#add-personal-preferences-without-committing-to-the-repo) |
283| Your user `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | No | Live on your machine, not in the repo. Commit them to the repo's `.claude/` directory instead. Cloud sessions automatically load skills you enable on claude.ai |
283| Your user `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | No | Live on your machine, not in the repo. Commit them to the repo's `.claude/` directory instead. Cloud sessions automatically load [skills you enable on claude.ai](/docs/en/skills#skills-in-cowork-and-cloud-sessions) |
284284| Plugins enabled only in your user settings | No | User-scoped `enabledPlugins` lives in `~/.claude/settings.json` on your machine |
285285| MCP servers you added with `claude mcp add` at the default local scope or the user scope | No | Those write to `~/.claude.json` on your machine, not the repo. Add the server with `claude mcp add --scope project`, which writes the repo's [`.mcp.json`](/docs/en/mcp#project-scope), and commit that file. A session with one repository loads it |
286286| Transport variables in your repo's `.claude/settings.json` `env` block, such as `NODE_EXTRA_CA_CERTS` and the [mTLS client certificate variables](/docs/en/network-config#mtls-authentication) | No | The hosting environment manages the session's API connection, so Claude Code ignores these keys and notes each ignored key in the session's debug log |

headless Changed · +1 / -1 lines

from line 266
266266 
267267When a `--plugin-dir` directory or archive itself fails to load, its `plugin_errors` entry includes the resolved absolute path as `path`. Use it to tell which of several `--plugin-dir` values failed. The `path` field requires Claude Code v2.1.283 or later.
268268 
269Use the MCP server fields the same way. When you pass [`--mcp-config`](/docs/en/cli-reference#cli-flags) with `-p`, Claude Code waits for still-pending servers before running the first turn, up to the [`MCP_TIMEOUT`](/docs/en/env-vars) startup timeout, 30 seconds by default. A remote server with a [cached tool list](/docs/en/agent-sdk/mcp#connection-timing) skips the wait, shows `pending` in `system/init`, and connects on its first tool call. The wait requires Claude Code v2.1.221 or later.
269Use the MCP server fields the same way. When you pass [`--mcp-config`](/docs/en/cli-reference#cli-flags) with `-p`, Claude Code waits for still-pending servers before running the first turn, up to the [`MCP_TIMEOUT`](/docs/en/env-vars) startup timeout, 30 seconds by default. A remote server with a [cached tool list](/docs/en/agent-sdk/mcp#connection-timing) skips the wait, shows `pending` in `system/init`, and connects on its first tool call. In a [self-hosted environment](/docs/en/self-hosted-environments-configuration#connection-timing), a shorter wait applies instead. The wait requires Claude Code v2.1.221 or later.
270270 
271271Claude Code validates each `--mcp-config` entry at startup and skips entries that fail validation, for example a `url` entry with no `type`. The run continues and exits cleanly, so check these fields to catch a server that never loaded:
272272 

self-hosted-environments-identity Changed · +3 / -1 lines

from line 179
179179 
180180Wrappers receive the absolute path to the runner's own binary in `CLAUDE_RUNNER_CLAUDE_BIN`; use that path rather than a PATH-resolved `claude` so the decode runs on the same binary the runner itself uses.
181181 
182Use `jq -re` rather than `jq -r` so a missing claim causes a non-zero exit. With `-r` alone, a missing claim prints the literal string `null` and exits zero, which silently passes a bad value downstream. Pass `--no-verify` to `decode-token` only for offline inspection where the JWKS endpoint is unreachable.
182Use `jq -re` rather than `jq -r` so a missing claim causes a non-zero exit. With `-r` alone, a missing claim prints the literal string `null` and exits zero, which silently passes a bad value downstream.
183 
184If `decode-token` can't fetch the keys from the JWKS endpoint or can't verify the token, it prints the reason to stderr, prints no claims, and exits with code 1. Pass `--no-verify` to `decode-token` only for offline inspection where the JWKS endpoint is unreachable.
183185 
184186## Claims reference
185187 

skills Changed · +1 / -1 lines

from line 215
215215 
216216If a skill exists only in `~/.claude/skills/` on your machine, Claude Code reports that the skill was not found when a [routine](/docs/en/routines) invokes it, because each routine run starts as a fresh cloud session. To make a personal skill available in these sessions:
217217 
218* For Cowork and cloud sessions, enable the skill for your claude.ai account.
218* For Cowork and cloud sessions, enable the skill for your claude.ai account. [Some sessions in a self-hosted environment](/docs/en/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) don't load your account's skills.
219219* For cloud sessions, you can instead commit the skill to the repository's `.claude/skills/`. Plugins declared in the repository's `.claude/settings.json` and plugins enabled only in your user settings [don't load in cloud sessions](/docs/en/cloud-environments#what-carries-over-from-your-setup).
220220 
221221[Desktop scheduled tasks](/docs/en/desktop-scheduled-tasks) run locally on your machine, so they do load `~/.claude/skills/`.
Feedback