Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 76 additions & 76 deletions content/.metadata.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions content/en/docs/claude-code/desktop-changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -844,7 +844,7 @@ Variables such as `PATH` and `CLAUDE_CONFIG_DIR` have their own instructions:
| [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/en/env-vars#variables) or [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/en/env-vars#variables) | Set it in [one of the places you'd set a variable for dev servers](#set-environment-variables-for-dev-servers), then quit and reopen Desktop |
| `API_TIMEOUT_MS`, `ANTHROPIC_BASE_URL`, or another variable Desktop sets itself | See [Environment variables Desktop sets itself](#environment-variables-desktop-sets-itself) |

On macOS or Linux, if you already set your variable with `export` in `~/.zshrc` or `~/.bashrc`, see [Exported variable missing or wrong in commands Claude runs](#exported-variable-missing-or-wrong-in-commands-claude-runs).
On macOS or Linux, if a variable you set with `export` is missing or wrong in a command Claude runs, see [Exported variable missing or wrong in commands Claude runs](#exported-variable-missing-or-wrong-in-commands-claude-runs).

#### Set environment variables for local sessions

Expand Down Expand Up @@ -908,7 +908,7 @@ If a command gets the wrong value, check whether you also set the variable in a

**4. Use a saved environment**

Add the variable to a [saved local environment](#set-environment-variables-for-local-sessions), then start a new session from that environment. For a variable such as `PATH` or `CLAUDE_CONFIG_DIR`, follow [its own instructions](#environment-variables-in-local-sessions) instead.
Add the variable to a [saved local environment](#set-environment-variables-for-local-sessions), then start a new session from that environment. For a variable such as `PATH`, `CLAUDE_CONFIG_DIR`, or `API_TIMEOUT_MS`, follow [its own instructions](#environment-variables-in-local-sessions) instead.

Before v2.1.304, Claude Code doesn't pass exported variables to commands, so [check which version the session runs](#claude-code-version-in-the-code-tab).

Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/claude-code/desktop.md
Original file line number Diff line number Diff line change
Expand Up @@ -844,7 +844,7 @@ Variables such as `PATH` and `CLAUDE_CONFIG_DIR` have their own instructions:
| [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/en/env-vars#variables) or [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/en/env-vars#variables) | Set it in [one of the places you'd set a variable for dev servers](#set-environment-variables-for-dev-servers), then quit and reopen Desktop |
| `API_TIMEOUT_MS`, `ANTHROPIC_BASE_URL`, or another variable Desktop sets itself | See [Environment variables Desktop sets itself](#environment-variables-desktop-sets-itself) |

On macOS or Linux, if you already set your variable with `export` in `~/.zshrc` or `~/.bashrc`, see [Exported variable missing or wrong in commands Claude runs](#exported-variable-missing-or-wrong-in-commands-claude-runs).
On macOS or Linux, if a variable you set with `export` is missing or wrong in a command Claude runs, see [Exported variable missing or wrong in commands Claude runs](#exported-variable-missing-or-wrong-in-commands-claude-runs).

#### Set environment variables for local sessions

Expand Down Expand Up @@ -908,7 +908,7 @@ If a command gets the wrong value, check whether you also set the variable in a

**4. Use a saved environment**

Add the variable to a [saved local environment](#set-environment-variables-for-local-sessions), then start a new session from that environment. For a variable such as `PATH` or `CLAUDE_CONFIG_DIR`, follow [its own instructions](#environment-variables-in-local-sessions) instead.
Add the variable to a [saved local environment](#set-environment-variables-for-local-sessions), then start a new session from that environment. For a variable such as `PATH`, `CLAUDE_CONFIG_DIR`, or `API_TIMEOUT_MS`, follow [its own instructions](#environment-variables-in-local-sessions) instead.

Before v2.1.304, Claude Code doesn't pass exported variables to commands, so [check which version the session runs](#claude-code-version-in-the-code-tab).

Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/claude-code/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ When an HTTP or SSE server's first connection fails with a transient error, such
Those retries don't apply in these cases:

* A stdio server's first connection. To try it again, see [Stdio servers that exit or fail to start](#stdio-servers-that-exit-or-fail-to-start)
* A WebSocket server's first connection
* A WebSocket server's first connection. To try it again in an interactive terminal session, select **Reconnect** from the server's menu in `/mcp`
* An authentication or not-found error, because it requires a configuration change to resolve. When a [`headersHelper`](#use-dynamic-headers-for-custom-authentication) is the server's only source of the `Authorization` header, Claude Code retries an authentication error anyway, because it re-runs the helper on each attempt and can pick up a fresh credential

#### Stdio servers that exit or fail to start
Expand All @@ -403,7 +403,7 @@ After a server connects, Claude Code sends it capability discovery requests such

#### Retry failed servers yourself

To retry every server that failed or needs authentication, run `/mcp reconnect all`. In the interactive terminal this requires Claude Code v2.1.284 or later, and earlier versions print `MCP server "all" not found` there.
To retry every server that failed or needs authentication, run `/mcp reconnect all` at the Claude Code prompt in an interactive terminal session. This requires Claude Code v2.1.284 or later. Earlier versions print `MCP server "all" not found`.

#### How Claude learns that a server failed

Expand Down
62 changes: 62 additions & 0 deletions content/en/docs/claude-code/self-hosted-environments-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,8 @@ spec:
interval: 30s
```

### Sample alert rules

These sample alert rules are a starting point; tune the thresholds for your fleet size:

```yaml theme={null}
Expand Down Expand Up @@ -304,6 +306,66 @@ groups:
summary: "Orchestrator {{ $labels.pod }}: >3 spawn-runner hook failures in 5m"
```

### Alert on lost runners and waiting sessions

On a [fixed fleet](https://code.claude.com/docs/en/self-hosted-environments-deploy.md#scale-the-fleet), load `ClaudeRunnersBelowFloor`. With [on-demand runners](https://code.claude.com/docs/en/self-hosted-environments-configuration.md#on-demand-runners), load `ClaudeOrchestratorSessionsWaiting` and `ClaudeOrchestratorQueueWaitHigh` instead.

#### Alert when a fixed fleet loses runners

`ClaudeRunnersBelowFloor` fires when fewer registered, scraped runners than the floor are left for 10 minutes:

```yaml theme={null}
groups:
# Fixed fleets only. With on-demand runners the count follows demand,
# so ClaudeRunnersBelowFloor would fire whenever demand is low.
- name: claude-code-self-hosted-fixed-fleet-capacity
rules:
- alert: ClaudeRunnersBelowFloor
expr: (count(claude_code_self_hosted_runner_info{namespace="claude-runners"}) or vector(0)) < 2
for: 10m
labels: {severity: critical, namespace: claude-runners}
annotations:
summary: "Runners registered and scraped: {{ $value }}, below the floor. Check the runner workloads first, then the scrape targets if all are running."
```

* **Floor**: set the `2` in `expr` to about half your replica count, rounded up. With three replicas keep `2`, and the alert fires when one runner or none is left.
* **Namespace**: replace `claude-runners` in the matcher and in `labels`, and copy the alert for each further namespace. If your targets have no `namespace` label, remove the matcher and the label, or the alert reads 0 and fires.
* **`ClaudeRunnerPollStale` and `ClaudeRunnerPollErrors`**: keep them loaded from the [sample alert rules](#sample-alert-rules), because `ClaudeRunnersBelowFloor` still counts a runner that can't poll

#### Alert when sessions wait for on-demand runners

`ClaudeOrchestratorSessionsWaiting` fires when the number of sessions waiting for a runner stays above 0 for 10 minutes. `ClaudeOrchestratorQueueWaitHigh` fires when over 1% of queue waits in the last 10 minutes exceeded 160 seconds, and that holds for 5 minutes:

```yaml theme={null}
groups:
# On-demand runners only. Needs no edit for the namespace.
- name: claude-code-self-hosted-on-demand-capacity
rules:
- alert: ClaudeOrchestratorSessionsWaiting
expr: |
max by (namespace) (
claude_code_self_hosted_orchestrator_pool_pending_sessions
and on (instance)
max_over_time(claude_code_self_hosted_orchestrator_connected[2m]) == 1
) > 0
for: 10m
labels: {severity: warning}
annotations:
summary: "Sessions waiting for a runner: {{ $value }}, above the threshold for 10 minutes. Check claude_code_self_hosted_orchestrator_spawn_hooks_total by result, then runner workloads that don't start."
- alert: ClaudeOrchestratorQueueWaitHigh
expr: |
histogram_quantile(0.99, sum by (namespace, le) (
rate(claude_code_self_hosted_orchestrator_session_queue_wait_seconds_bucket[10m])
)) > 160
for: 5m
labels: {severity: warning}
annotations:
summary: "Over 1% of queue waits in the last 10 minutes exceeded 160 seconds. Check whether ClaudeOrchestratorDisconnected is firing, then claude_code_self_hosted_orchestrator_spawn_hooks_total by result and claude_code_self_hosted_orchestrator_spawn_hook_duration_seconds."
```

* **Threshold**: if some session is always waiting, raise the `> 0` in `ClaudeOrchestratorSessionsWaiting` above the number you usually see
* **`ClaudeOrchestratorDisconnected`**: keep it loaded from the [sample alert rules](#sample-alert-rules), because `ClaudeOrchestratorSessionsWaiting` stops firing about 2 minutes after the last orchestrator in the namespace disconnects

### Pass through session-child metrics

Each session runs in its own child process with its own OpenTelemetry metrics; at `--capacity` above one, the runner rewrites how those child metrics are exposed. Setting `OTEL_METRICS_EXPORTER=prometheus` on the runner host and `CLAUDE_CODE_ENABLE_TELEMETRY=1` in the session's environment, for example from your [wrapper script](https://code.claude.com/docs/en/self-hosted-environments-configuration.md#wrapper-scripts) or the runner's own environment, which sessions inherit, re-exposes each child's counter and gauge instruments on the runner's own `/metrics` endpoint, alongside the runner's series. The runner rewrites the child's exporter to push over OTLP to a loopback-only receiver on the health port, tags each series with `session_id` and `client_platform` labels, and evicts a session's series when that session ends. Histograms don't pass through, and a child metric whose name would collide with the runner's own prefix is dropped.
Expand Down
7 changes: 6 additions & 1 deletion content/en/docs/claude-code/vs-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -1001,16 +1001,21 @@ If one formula shows as written while others near it are typeset, check it for t

### Dictation or the Web tab fails behind a TLS-inspecting proxy

When dictation or the Web tab fails with a certificate error such as `unable to get local issuer certificate`, set [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/en/network-config#custom-ca-certificates) in the `env` block of `~/.claude/settings.json`. Set it to the path of a PEM file with your proxy's root CA certificate, which your IT team can give you. That error text is on the microphone button or in the extension's logs:
When dictation or the Web tab fails with a certificate error such as `unable to get local issuer certificate`, set [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/en/network-config#custom-ca-certificates) in the `env` block of `~/.claude/settings.json`. Set it to the path of a PEM file with your proxy's root CA certificate, which your IT team can give you. The failure appears on the microphone button or Web tab, or in the logs:

* **Dictation**: the microphone button shows the error text after `Dictation error: WebSocket error:`.
* **Web tab**: the tab that lists [cloud sessions](#resume-cloud-sessions-from-claude-ai) shows `Remote server is not connected` without the error text. To read it in the logs:
1. Run **Claude Code: Show Logs** from the [Command Palette](#vs-code-commands-and-shortcuts) to open the `Claude VSCode` output channel.
2. Click **Reconnect** on the tab and wait until it stops showing `Connecting…`.
3. Search the channel for `Error fetching remote sessions:` or `Failed to fetch organization UUID:`, then read the error text after that prefix on the newest matching line.
* **Log warning**: a warning naming `an authority that Claude Code does not trust` reports a certificate error. Behind a TLS-inspecting proxy, set `NODE_EXTRA_CA_CERTS` in `env` in `~/.claude/settings.json`. Versions before v2.1.309 don't log this warning.

This fix requires extension version 2.1.307 or later, so update the extension first. Then set `NODE_EXTRA_CA_CERTS` to the certificate file's full path, written without `~`. For a Windows path, write each backslash twice in `settings.json`, as in `C:\\certs\\example-ca.pem`.

> [!NOTE]
>
> In a window connected to WSL, an SSH host, a dev container, or another system, save the certificate file and edit `~/.claude/settings.json` on that system, not on your local computer.

This example names a certificate file at the Linux or macOS path `/etc/ssl/certs/example-ca.pem`:

```json ~/.claude/settings.json theme={null}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ As a Primary Owner or Owner of a Team or Enterprise plan, you can manage the abi

2. Use the toggle to change the **Rate chats** setting for your organization:

![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2058292603/75752add0bed6a9f3ab217f01708/CleanShot%2B2026-02-12%2Bat%2B08_55_14-402x.png?expires=1792837800&amp;signature=24b5359e8f6ec08633f061b592cb8aba6ffadf7ccb83a2ef74d821f2525f9905&amp;req=diAiHst3n4dfWvMW1HO4zYGm8yUUE6%2FE085gFtEpvcTKngYmsdFDJPeByre2%0A1SkQ99BLnoOsVpNcAjA%3D%0A)
![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2058292603/75752add0bed6a9f3ab217f01708/CleanShot%2B2026-02-12%2Bat%2B08_55_14-402x.png?expires=1792852200&amp;signature=06822855b99af35b9b4a42e7eef7d7c91ba16d6a94566a5c2791822fdc2fbd2f&amp;req=diAiHst3n4dfWvMW1HO4zYGm8yUUFarO085gFtEpvcSBpypOuhkT51q9It9T%0AHU%2BEkOHFKBH7Pzbb5k4%3D%0A)

More information on how Anthropic collects, uses, and stores feedback data can be found in our Privacy Center: **[How long do you store my organization’s data?](https://privacy.claude.com/en/articles/7996866-how-long-do-you-store-my-organization-s-data)**
6 changes: 3 additions & 3 deletions content/support/10593882-share-and-unshare-chats.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ To unshare a chat:

Users on free, Pro, or Max plans can review a log of shared chats by navigating to **[Settings > Privacy](https://claude.ai/settings/data-privacy-controls)**. Find the **Privacy settings** section and click “Manage” next to **Shared chats:**

![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1921669913/7cc7be48cfc7a18f9f469d6cd83c/CleanShot+2026-01-08+at+10_20_43%402x.png?expires=1792837800&amp;signature=f389ade821a39052e3b03e61c4ffc99264f2094c6676550c37fa5aa69ed14c11&amp;req=dSklF894lIheWvMW1HO4zWn5HjEVYUJjc9cNIYuX0GHNa2tJ1T9gWJCebB76%0AfQJsnhEZJtZlnsJu4x0%3D%0A)
![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1921669913/7cc7be48cfc7a18f9f469d6cd83c/CleanShot+2026-01-08+at+10_20_43%402x.png?expires=1792852200&amp;signature=918729c4356ee36b8e577b5c750daea79714247011c60cce87521f91693a826a&amp;req=dSklF894lIheWvMW1HO4zWn5HjEVZ0dpc9cNIYuX0GFl1qFrj5yn5%2Bcojt6H%0AIcqersEKG0sAsOCcY%2Bg%3D%0A)

This will open a **Shared chats** modal listing the title, date shared, and link to each chat, allowing you to easily review and access all your previously-shared content. From here, you also have the option to click “Unshare” next to each listed chat to revoke access to the last snapshot you shared:

![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243810/e6fe1d262597446c7fe21dff9f10/AD_4nXdW-GhByF8uKV7fCq9lTbkVB91FglSL6TSyXAOUk_MLcTV9YsEMBMkm9rgm1oXqv0k3sJh1JhlzZP6tHVkKbDJJ71pDRRtM3aVNG64MDuKDIzgmknh-XDZdNa7biTsTdwGoPr5GRg?expires=1792837800&amp;signature=f2354761e6ed7133a82dfb7a8612e7e235a9fe12dd6c8de08d3f87a30de195b5&amp;req=dSYlEst6noleWfMW1HO4ze44eSVplxU2guvTv9woD7Zl1IzD04ld8S25ZTIT%0AAX5qX9DPzB7%2BjrPkrDI%3D%0A)
![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243810/e6fe1d262597446c7fe21dff9f10/AD_4nXdW-GhByF8uKV7fCq9lTbkVB91FglSL6TSyXAOUk_MLcTV9YsEMBMkm9rgm1oXqv0k3sJh1JhlzZP6tHVkKbDJJ71pDRRtM3aVNG64MDuKDIzgmknh-XDZdNa7biTsTdwGoPr5GRg?expires=1792852200&amp;signature=06a2fc6f200f128b07cda86d66fab0a4205d02f9afadf3f8c63c14e4604c50a1&amp;req=dSYlEst6noleWfMW1HO4ze44eSVpkRA8guvTv9woD7Za1CvCkJaIgnhXEbrZ%0ACtwdH32RjvgUrAnBfKo%3D%0A)

If you don’t have any shared chat snapshots, the **Shared chats** modal will show “No shared content found”:

![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243808/b025db8e598f0c88fb16d83d48d5/AD_4nXeUwCKnmFzzrjMHhfr5By4zk5pJlkEn3wbJ8-aNfu13Yl99IjBywpqPx9G07QRzpH1EwRY7uG7Q9m9fib98Gql1cIV7XwUCTzEgBNu79Ey8tCOS5CEVmwveIcEOxJ4fonBhe3g9MA?expires=1792837800&amp;signature=d1fee1e7f75956803f7bd2dee05a4d48840c7f7437f1657bda0a88410f815fba&amp;req=dSYlEst6nolfUfMW1HO4zdaFnMd8go65DeZsm0Gz1Hu6NdX5l4nt7CcbkWpP%0AjOZivYBwMzknxZaWcqQ%3D%0A)
![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243808/b025db8e598f0c88fb16d83d48d5/AD_4nXeUwCKnmFzzrjMHhfr5By4zk5pJlkEn3wbJ8-aNfu13Yl99IjBywpqPx9G07QRzpH1EwRY7uG7Q9m9fib98Gql1cIV7XwUCTzEgBNu79Ey8tCOS5CEVmwveIcEOxJ4fonBhe3g9MA?expires=1792852200&amp;signature=04722bb396db64604b30e59cddfd3c37cfa7d8887d0e423d9b678ec9b9e27548&amp;req=dSYlEst6nolfUfMW1HO4zdaFnMd8hIuzDeZsm0Gz1Ht%2FzSpMjTFkeboP7fK5%0AbShmmuayBAxgVAeFi%2FE%3D%0A)
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ This article provides information on how to enable the Claude LTI integration in

5. Click "Install" and refresh the course page.

![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1611422430/c8e0875feac1f2c7cb033be74fc9/AD_4nXfLU_bui3EXcCjQ0qm70HD97neqjGayKeDer_t76utlci8gZSUjYRhw6ZSOlDdqSEcwXBzd_shAh7pQEJ-8OoE0O21DM5coOgxmO_WD5hlwiuwtS2iYXcTavhIRyQT5zKFWvfn3NA?expires=1792837800&amp;signature=352bb8b82e7c86a17a639017a548daee98c043632a589cb77bc4191baed54db8&amp;req=dSYmF818n4VcWfMW1HO4zTEDa%2BkWmPSJEv2ojHLMylbO4Nzzsv%2BB5T6yGd68%0Af7fYUdK6qqyGfS8wrI0%3D%0A)
![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1611422430/c8e0875feac1f2c7cb033be74fc9/AD_4nXfLU_bui3EXcCjQ0qm70HD97neqjGayKeDer_t76utlci8gZSUjYRhw6ZSOlDdqSEcwXBzd_shAh7pQEJ-8OoE0O21DM5coOgxmO_WD5hlwiuwtS2iYXcTavhIRyQT5zKFWvfn3NA?expires=1792852200&amp;signature=e778c2a01234bd24607035cfb5efc3c3dc26c59f946fc7e5c62223cebe62180d&amp;req=dSYmF818n4VcWfMW1HO4zTEDa%2BkWnvGDEv2ojHLMylaVoBLgSSnPagMQCskQ%0ACqd9dzOTHFkIQHNXCBo%3D%0A)

## Turn on the Claude LTI Integration in Claude for Education organization settings

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

If you see the following pop-up when you log in to your Claude account, you’ll need to click the “Verify now” button to verify your payment method:

![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1631413861/42c3b13d7fc44a11a88ec2b9cd03/AD_4nXeMx8QXpeZZCkfAnVSwx8KZ9n4Vr2rvPdQddyE6ZNxch__F6ZqFs1G4ZmU52Wvb7gRlwRqquTLdw8IQv-gICDyP-MXqiQK_Oe7gX3SKsCKKt2IEpMx4qDeMeeZufMaJfv16XgOH5g?expires=1792837800&amp;signature=18ecbc8110c5a3fb7cfc6aeb5da633011d7147a235ab05d8e1b09b1c1db65100&amp;req=dSYkF81%2FnolZWPMW1HO4zf7%2BjUbm64f6n6MrEicvimDNsh0oXC9NJRC8y9az%0AKhfnYaGjA0HGibIaPsQ%3D%0A)
![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1631413861/42c3b13d7fc44a11a88ec2b9cd03/AD_4nXeMx8QXpeZZCkfAnVSwx8KZ9n4Vr2rvPdQddyE6ZNxch__F6ZqFs1G4ZmU52Wvb7gRlwRqquTLdw8IQv-gICDyP-MXqiQK_Oe7gX3SKsCKKt2IEpMx4qDeMeeZufMaJfv16XgOH5g?expires=1792852200&amp;signature=f63d559f089fea065c949a5e8ddedcad01f44101aae0d34462df5f3d8d45dcee&amp;req=dSYkF81%2FnolZWPMW1HO4zf7%2BjUbm7YLwn6MrEicvimAD28W2jFU5V5AJY396%0AmWcmw37fY0lS5ynOBCs%3D%0A)

## What happens if I click “Remind me later?”

Expand Down
Loading
Loading